>  기사  >  운영 및 유지보수  >  nginx 리버스 프록시 이후 DDoS 공격을 방지하는 방법

nginx 리버스 프록시 이후 DDoS 공격을 방지하는 방법

(*-*)浩
(*-*)浩원래의
2019-07-15 11:14:305765검색

DDOS 방어는 공격 유형이 다양하고 방어 비용이 높으며 병목 현상이 많습니다. DDOS의 특징은 분산되어 있으며 대역폭 및 서비스 공격, 즉 레이어 4 트래픽 공격과 레이어 7 애플리케이션 공격을 목표로 한다는 것입니다. 레이어 4의 해당 방어 병목 현상은 대역폭이며 레이어 7은 대부분 아키텍처의 처리량에 있습니다. .

nginx 리버스 프록시 이후 DDoS 공격을 방지하는 방법

1. 초당 요청 수를 제한합니다.

ngx_http_limit_req_module 모듈은 누출 버킷 원칙을 사용하여 단위 시간당 요청 수를 제한합니다. 단위 시간당 요청 수가 한도를 초과하면 503 오류가 발생합니다. 반환됩니다.

구성은 두 곳에서 설정해야 합니다.

nginx.conf의 http 섹션에서 트리거 조건을 정의합니다. 여러 조건이 있을 수 있습니다.

트리거 조건이 충족될 때 nginx가 수행할 작업을 정의합니다. location

http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; //触发条件,所有访问ip 限制每秒10个请求    ...
    server {        ...
        location  ~ \.php$ {
            limit_req zone=one burst=5 nodelay;   //执行的动作,通过zone名字对应
               }
           }
     }

매개변수 설명:

$binary_remote_addr 바이너리 원격 주소

zone=one:10m 영역 이름을 1로 정의하고 이 영역에 세션을 저장하기 위해 10M 메모리를 할당합니다(바이너리 원격 주소는 1m 메모리 저장 가능). 16,000 세션

rate=10r/s; 제한 빈도는 초당 10개 요청입니다

burst=5 빈도 제한을 초과할 수 있는 요청 수는 5개를 넘지 않습니다. 1, 2, 3, 4초는 초당 9개이므로 빈도 제한을 초과하는 요청 수는 9개입니다. 5초에 15개의 요청이 허용됩니다. 반대로 처음 1초에 15개의 요청이 발생하면 5개의 요청이 발생합니다. 두 번째 초에 10을 초과하는 요청은 바로 503이 되며 이는 여러 초의 평균 속도 제한과 유사합니다.

nodelay 초과 요청은 지연되지 않으며 설정 후 1초 이내에 15개의 요청이 처리됩니다.

2. IP 연결 수 제한

ngx_http_limit_conn_module의 구성 방법 및 매개 변수는 http_limit_req 모듈과 매우 유사하며 매개 변수가 더 적고 훨씬 간단합니다

http {
    limit_conn_zone $binary_remote_addr zone=addr:10m; //触发条件    ...
    server {        ...
        location /download/ {
            limit_conn addr 1;    // 限制同一时间内1个连接,超出的连接返回503
                }
           }
     }

3. 화이트리스트 설정

http_limit_conn 및 http_limit_req 모듈은 단일을 제한합니다. IP 동시성 수와 단위 시간당 요청 수이지만, Nginx 앞에 lvs나 haproxy와 같은 로드 밸런싱이나 리버스 프록시가 있는 경우 nginx는 로드 밸런싱에서만 연결이나 요청을 받습니다. 로드 밸런싱 요청은 제한되어서는 안 됩니다. 요청하려면 지리 및 지도 모듈에 대한 화이트리스트를 설정해야 합니다.

geo $whiteiplist  {
        default 1;
        10.11.15.161 0;
    }
map $whiteiplist  $limit {
        1 $binary_remote_addr;
        0 "";
    }
limit_req_zone $limit zone=one:10m rate=10r/s;
limit_conn_zone $limit zone=addr:10m;

더 많은 Nginx 관련 기술 기사를 보려면 Nginx 사용법 튜토리얼 열을 방문하세요!

위 내용은 nginx 리버스 프록시 이후 DDoS 공격을 방지하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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