DDOS 방어는 공격 유형이 다양하고 방어 비용이 높으며 병목 현상이 많습니다. DDOS의 특징은 분산되어 있으며 대역폭 및 서비스 공격, 즉 레이어 4 트래픽 공격과 레이어 7 애플리케이션 공격을 목표로 한다는 것입니다. 레이어 4의 해당 방어 병목 현상은 대역폭이며 레이어 7은 대부분 아키텍처의 처리량에 있습니다. . 레이어 7 애플리케이션 공격의 경우에도 이를 방어하기 위한 몇 가지 구성을 만들 수 있습니다.
예를 들어프론트엔드는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!