>  기사  >  운영 및 유지보수  >  nginx에서 DDoS 공격을 방지하는 방법

nginx에서 DDoS 공격을 방지하는 방법

(*-*)浩
(*-*)浩원래의
2019-06-06 14:05:153736검색

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

nginx에서 DDoS 공격을 방지하는 방법

예를 들어프론트엔드는 Nginx인데, 주로 방어를 위해 nginx의 http_limit_conn과 http_limit_req 모듈을 사용합니다. ngx_http_limit_conn_module은 단일 IP의 연결 수를 제한할 수 있습니다. ngx_http_limit_req_module은 단일 IP의 초당 요청 수를 제한할 수 있습니다. 연결 및 요청 수를 제한하면 CC 공격을 비교적 효과적으로 방어할 수 있습니다.

구성 방법은 다음과 같습니다.

초당 요청 수를 제한합니다.
ngx_http_limit_req_module 모듈은 누출 버킷 원칙을 사용하여 단위 시간당 요청 수를 제한합니다. 한도를 초과하면 503 오류가 반환됩니다. 구성은 두 위치에서 설정해야 합니다.

nginx.conf의 http 섹션에서 트리거 조건을 정의합니다. 여러 조건이 있을 수 있습니다.
위치에서 트리거 조건이 충족될 때 nginx가 수행할 작업을 정의합니다.
For 예:

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    定义zone名字叫one,并为这个zone分配10M内存,用来存储会话(二进制远程地址),1m内存可以保存16000会话
rate=10r/s;     限制频率为每秒10个请求
burst=5         允许超过频率限制的请求数不多于5个,假设1、2、3、4秒请求为每秒9个,那么第5秒内请求15个是允许的,反之,如果第一秒内请求15个,会将5个请求放到第二秒,第二秒内超过10的请求直接503,类似多秒内平均速率限制。
nodelay         超过的请求不被延迟处理,设置后15个请求在1秒内处理。

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
                }
           }
     }

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

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

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