>운영 및 유지보수 >엔진스 >Nginx 액세스 제한 및 보안 설정

Nginx 액세스 제한 및 보안 설정

WBOY
WBOY원래의
2023-06-10 18:33:114163검색

Nginx는 경량, 높은 동시성, 유연한 구성 등의 특성을 지닌 고성능 웹 서버이자 역방향 프록시로, 프로덕션 환경에서 널리 사용됩니다. 그러나 구축 과정이 상대적으로 간단하기 때문에 보안 문제가 여전히 남아 있으므로 Nginx에 대한 액세스 제한 및 보안 설정이 필요합니다.

1. 액세스 제한

  1. IP 제한

Nginx는 허용 및 거부 지시문을 구성하여 IP 주소 액세스를 제한할 수 있습니다. 예를 들어 특정 IP 주소만 Nginx에 액세스하도록 허용하려면 nginx.conf 파일에 다음 코드를 추가하면 됩니다.

location / {
    deny all;
    allow 192.168.1.100;
    allow 10.0.0.0/8;
    allow 172.16.0.0/12;
    allow 192.168.0.0/16;
}

위 코드 조각은 모든 요청을 거부한 다음 IP 주소 192.168.1.100, 10.0을 허용한다는 의미입니다. .0.0/8 순서대로, 172.16.0.0/12, 192.168.0.0/16 요청. 구성 파일의 http 지시어를 통해 전역 허용 및 거부 규칙을 설정할 수도 있습니다.

  1. User-Agent 제한사항

User-Agent는 브라우저와 같은 HTTP 클라이언트가 보내는 식별 문자열로, 방문자 자신인지 아니면 자동화된 프로그램인지 확인하는 데 사용할 수 있습니다. Nginx는 if 지시어와 $http_user_agent 변수를 구성하여 User-Agent를 제한할 수 있습니다. 예:

if ($http_user_agent ~* (wget|curl))
{
    return 403;
}

이 코드의 의미는 User-Agent에 wget 또는 컬 문자열이 포함되어 있으면 403 오류 코드가 반환된다는 것입니다. .

  1. Referer Limitation

Referer는 HTTP 요청 헤더의 필드로, 현재 요청의 소스 주소를 나타냅니다. Nginx는 if 지시어와 $http_referer 변수를 구성하여 리퍼러를 제한할 수 있습니다. 예:

if ($http_referer ~* (baidu.com|google.com))
{
    return 403;
}

이 코드의 의미는 리퍼러에 baidu.com 또는 google.com 문자열이 포함되어 있으면 403 오류 코드를 반환한다는 것입니다. .

2. 보안 설정

  1. HTTPS 보호

HTTPS는 데이터 전송 중에 SSL/TLS 암호화 알고리즘을 사용하므로 HTTP 프로토콜에 비해 웹 애플리케이션의 보안을 더 잘 보호할 수 있습니다. Nginx 구성 파일에 다음 코드를 추가하여 HTTPS를 활성화할 수 있습니다.

server {
    listen 443 ssl;
    ssl_certificate /path/to/cert.crt;
    ssl_certificate_key /path/to/cert.key;
    ...
}

여기서 ssl_certificatessl_certificate_key는 SSL 인증서와 개인 키를 사용하여 암호화 기능을 구현합니다. HTTPS 프로토콜. ssl_certificatessl_certificate_key会使用SSL证书和私钥来实现HTTPS协议的加密功能。

  1. 限制访问文件目录

Nginx默认情况下会将/etc/nginx/html下的所有文件和子目录暴露在网站根目录下,因此需要限制访问文件目录。可以在nginx.conf配置文件中添加如下代码来限制目录的访问:

location / {
    root /path/to/root;
    index index.html;
    autoindex off;
    location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 1d;
        add_header Cache-Control "public";
    }
}

上述代码的意思是将网站的根目录指向/path/to/root,关闭autoindex功能,限制了允许访问的文件类型,同时设置缓存策略。

  1. 安全日志

为了及时发现攻击行为,建议开启Nginx的日志记录功能。可以在nginx.conf配置文件中添加如下代码来记录访问日志:

http {
    access_log /var/log/nginx/access.log;
    ...
}

其中,access_log

파일 디렉터리에 대한 액세스 제한

Nginx는 기본적으로 /etc/nginx/html 아래의 모든 파일과 하위 디렉터리를 웹사이트 루트 디렉터리에 노출하므로 파일 디렉터리에 대한 액세스를 제한해야 합니다. nginx.conf 구성 파일에 다음 코드를 추가하여 디렉토리 액세스를 제한할 수 있습니다: 🎜rrreee🎜위 코드는 웹사이트의 루트 디렉토리를 /path/to/root로 지정하고, 자동 색인 기능을 끄고, 액세스가 허용되는 파일 형식도 설정합니다. 🎜🎜🎜보안 로그🎜🎜🎜적시에 공격을 탐지하려면 Nginx의 로깅 기능을 활성화하는 것이 좋습니다. nginx.conf 구성 파일에 다음 코드를 추가하여 액세스 로그를 기록할 수 있습니다. 🎜rrreee🎜 그 중 access_log는 Nginx 액세스 로그의 저장 경로입니다. 로그는 로컬 파일에 저장되거나 ELK와 같은 로그 분석 도구를 사용하여 분석될 수 있습니다. 🎜🎜요약🎜🎜Nginx 액세스 제한 및 보안 설정은 웹 애플리케이션 보안에 중요합니다. IP 제한, 사용자 에이전트 제한, 참조자 제한 등을 통해 액세스를 제한할 수 있습니다. 또한 HTTPS를 활성화하고 파일에 대한 액세스를 제한할 수도 있습니다. , 보안 로그 등을 사용하여 웹 애플리케이션의 보안을 향상시킵니다. 그러나 이러한 조치는 웹 애플리케이션의 보안을 향상시킬 수 있을 뿐 보안을 완전히 보장할 수는 없습니다. 따라서 웹 애플리케이션의 보안을 보장하려면 소프트웨어 버전을 정기적으로 업데이트하고 적시에 취약점을 패치하는 등의 조치가 필요합니다. 🎜

위 내용은 Nginx 액세스 제한 및 보안 설정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.