>운영 및 유지보수 >엔진스 >Nginx 리버스 프록시의 HTTP 요청 스니핑 방어 방법

Nginx 리버스 프록시의 HTTP 요청 스니핑 방어 방법

王林
王林원래의
2023-06-11 08:12:091704검색

인터넷이 발전함에 따라 웹 서버와 애플리케이션은 점점 더 복잡해지고 보안 공격도 점차 증가했습니다. Nginx는 웹 서버 및 로드 밸런싱 기술에서 가장 널리 사용되는 도구 중 하나입니다. Nginx의 역방향 프록시 메커니즘은 Nginx를 안정적인 애플리케이션 서버로 만들 수 있지만 이는 또한 널리 공격받는 대상이기도 합니다. 이 기사에서는 Nginx 리버스 프록시에서 HTTP 요청 스니핑 공격을 방어하는 방법을 살펴보겠습니다.

HTTP 요청 스니핑 공격이란 무엇인가요?

HTTP 요청 스니핑 공격은 일반적인 네트워크 공격 방법입니다. 공격자는 네트워크 데이터 패킷에서 HTTP 요청을 가로채서 데이터를 분석 및 처리하여 대상 사이트의 민감한 정보를 얻습니다. 즉, 공격자는 클라이언트가 서버로 보내는 HTTP 요청을 가로채서 헤더와 매개변수를 분석한다. 공격자는 이 정보를 분석하여 서버의 실제 IP 주소를 획득하고 실제 애플리케이션 서버를 추론하며 사용자 로그인 자격 증명, 비즈니스 데이터, 세션 식별 등을 포함할 수 있는 중요하고 민감한 데이터를 획득할 수 있습니다. HTTP 요청 스니핑 공격은 웹 애플리케이션의 취약점을 식별하고 이러한 취약점을 공격하는 데에도 사용될 수 있습니다.

Nginx 리버스 프록시의 HTTP 요청 스니핑 공격 방어 방법

1. HTTPS 프로토콜 활성화

HTTPS 프로토콜은 HTTP 요청 스니핑 공격을 효과적으로 방지할 수 있는 암호화된 통신 프로토콜입니다. HTTPS 프로토콜을 활성화하려면 유효한 SSL 인증서를 설치해야 합니다. 현재 가장 널리 사용되는 SSL 인증서에는 무료 Let's Encrypt 및 유료 Symantec, DigiCert 등이 있습니다. Nginx 역방향 프록시에서 HTTPS 프로토콜을 활성화하려면 다음 구성을 사용하면 됩니다.

server {
    listen 443;
    server_name example.com;
    ssl on;
    ssl_certificate /path/to/cert.crt;
    ssl_certificate_key /path/to/cert.key;

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

위 구성은 SSL 핸드셰이크 프로세스를 하이재킹하고 클라이언트가 암호화되지 않은 HTTP 프로토콜로 다운그레이드하도록 강제하여 공격을 활성화할 수 있습니다. SSL 스트리핑 공격을 수행하려면 Nginx 서버 구성에서 SSL 인증서 바인딩을 활성화해야 합니다.

server {
    listen 80;
    server_name example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /path/to/cert.crt;
    ssl_certificate_key /path/to/cert.key;

    if ($ssl_protocol = "") {
        return 403;
    }

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

2. HTTP 요청 헤더 설정

Nginx 서버에서 일부 HTTP 요청 헤더를 설정하면 HTTP 요청 스니핑 공격을 효과적으로 방지할 수 있습니다. HTTP 요청 헤더를 설정하려면 Nginx 서버 구성 파일을 수정해야 합니다. 일반적으로 Nginx 구성 파일의 http 블록에 다음 설정을 추가할 수 있습니다.

add_header X-Frame-Options SAMEORIGIN;
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options nosniff;

위 구성을 사용하면 브라우저의 CSP 정책을 더욱 안전하게 만들 수 있으며 브라우저에 메시지가 표시됩니다. HTML을 대신 다운로드해야 하기 때문에 응답을 구문 분석하지 마십시오. 그러나 공격자가 요청을 스니핑하는 것이 불가능하지는 않습니다.

3. 방화벽 및 웹 애플리케이션 방화벽 사용

방화벽 및 웹 애플리케이션 방화벽은 HTTP 요청 스니핑 공격을 탐지하고 방지하기 위해 요청을 검사하고 필터링할 수 있습니다. 방화벽은 다음과 같은 보안 강화 규칙을 활성화할 수 있습니다.

  • 클라이언트가 특정 IP 주소 또는 네트워크 액세스 서비스만 사용하도록 허용
  • 다른 HTTP 요청 헤더 또는 시간 제한이 있는 요청 차단

4. IP/포트 바인딩 사용

사용 IP/포트 바인딩은 스니핑 공격으로 인한 로드 밸런싱 실패를 방지하는 간단한 방법입니다. Nginx 서버 로드 밸런싱 구성에서 IP 주소를 사용하여 클라이언트 액세스를 제한하고 Nginx 서버의 특정 포트에 대한 클라이언트 액세스를 제한할 수도 있습니다. 예:

upstream backend {
    ip_hash;
    server backend1.example.com:80;
    server backend2.example.com:80;
}

server {
    listen 192.0.2.1:80;
    server_name example.com;
    location / {
        proxy_pass http://backend;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

위 구성에서는 클라이언트가 192.0.2.1만 통과하도록 할 수 있습니다. 80 포트를 사용하여 Nginx 서버에 액세스하므로 스니핑 공격을 효과적으로 방지할 수 있습니다.

요약

Nginx 역방향 프록시의 HTTP 요청 스니핑 공격은 일반적인 공격 방법으로, HTTPS 프로토콜 활성화, HTTP 요청 헤더 설정, 방화벽 및 웹 애플리케이션 방화벽 방화벽 및 IP/포트 바인딩 사용 등을 통해 달성할 수 있습니다. . 위의 방법은 애플리케이션의 보안을 향상시킬 수 있지만 실제 애플리케이션에서는 애플리케이션의 보안과 안정성을 보장하기 위해 애플리케이션의 실제 상황에 따라 보다 적절한 방어 방법을 선택해야 합니다.

위 내용은 Nginx 리버스 프록시의 HTTP 요청 스니핑 방어 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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