nginx DDoS 공격 방지 설정
1. 초당 요청 수 제한
ngx_http_limit_req_모듈 모듈 은 누 출 통 원 리 를 통 해 단위 시간 내 요청 수 를 제한 하고 단위 시간 내 요청 수가 제한 을 초과 하면 503 오 류 를 되 돌려 줍 니 다.설정 은 두 곳 에서 설정 해 야 합 니 다:
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 。
2. IP 연결 수 제한
ngx_http_limit_conn_module 의 설정 방법 과 파라미터 와 httplimit_req 모듈 은 비슷 합 니 다. 매개 변수 가 적 고 간단 해 야 합 니 다.
http { limit_conn_zone $binary_remote_addr zone=addr:10m; // ... server { ... location /download/ { limit_conn addr 1; // 1 , 503 } } }
화이트 리스트 설정
http_limit_conn 과 httplimit_req 모듈 은 단일 ip 단위 시간 내 동시 다발 과 요청 수 를 제한 합 니 다. 그러나 Nginx 앞 에 lvs 나 haproxy 와 같은 부하 균형 이나 역방향 에이전트 가 있 으 면 nginx 는 부하 균형 에서 온 연결 이나 요청 을 가 져 옵 니 다. 이때 부하 균형 적 인 연결 과 요청 을 제한 하지 말고 geo 와 map 모듈 에 화이트 리스트 를 설정 해 야 합 니 다.
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;
geo 모듈 은 기본 값 이 1 인 변 수 를 정의 합 니 다. whiteiplist 는 ip 가 화이트 리스트 에 있 을 때 변 수 는 whiteiplist 의 값 이 0 이 고, 반대로 1 은 화이트 리스트 에 있 을 때 -- > whiteiplist = 0 -- > $limit = "-- > 10m 세 션 상태 (one 또는 addr) 에 저장 되 지 않 습 니 다.화이트 리스트 에 없습니다 -- > whiteiplist = 1 -- > $limit = 바 이 너 리 원 격 주소 -- > 10m 에 저 장 된 세 션 상태 에서 -- > 제한 을 받 습 니 다
테스트
ab 명령 으로 CC 공격 시 뮬 레이 션, httplimit_conn 과 httplimit_req 모듈 분리 테스트, http 주의limit_conn 모듈 은 처리 중인 요청 (이 요청 의 헤더 정보 가 완전히 읽 혔 음) 이 있 는 연결 만 집계 합 니 다.요청 이 완료 되 었 을 경우 연결 이 닫 히 지 않 았 을 때 집계 되 지 않 습 니 다.이 때 netstat 로 연결 수가 한 정 된 수량 을 초과 할 수 있 음 을 보고 막 히 지 않 습 니 다.
ab -n -c http://10.11.15.174/i.php
막 히 면 프론트 데스크 가 503 으로 돌아 가 고 nginx 의 errorlog 에서 다음 오류 로 그 를 볼 수 있 습 니 다: 연결 수 제한:
2015/01/28 14:20:26 [error] 4107#0: *65525 limiting connections by zone "addr", client: 10.11.15.161, server: , request: "GET /i.php?=PHPE9568F35-D428-11d2-A769-00AA001ACF42 HTTP/1.1", host: "10.11.15.174", referrer: "http://10.11.15.174/i.php"
제 한 된 요청 수:
2015/01/28 14:18:59 [error] 4095#0: *65240 limiting requests, excess: 5.772 by zone "one", client: 10.11.15.161, server: , request: "GET /i.php?=PHPE9568F34-D428-11d2-A769-00AA001ACF42 HTTP/1.1", host: "10.11.15.174", referrer: "http://10.11.15.174/i.php"
5. 기타 CC 방지 방법
1. Nginx 모듈 ModSecurity, httpguard、ngx_lua_waf
처음에 말 했 듯 이 항 DDOS 는 시스템 공학 으로 시스템 과 소프트웨어 설정 을 최적화 시 켜 소 규모 CC 공격 만 방어 할 수 있다. 대규모 공격, 4 층 데이터 공격, 혼합 공격 에 있어 대체적으로 시스템 과 응용 프로그램 이 끊 기지 않 고 대역 폭 이 꽉 찼 다.다음은 제 가 작업 중 에 사 용 했 던 디 도스 방어 방식 입 니 다.
결론: 공격 은 쉬 워 도 방 어 는 어렵다.7 층 은 방어 하기 쉽 고 4 층 은 방어 하기 어렵다.소형 은 막 을 수 있 고, 대형 은 돈 을 쓴다.
참고 글:http://nginx.org/en/docs/http/ngx_http_limit_req_module.htmlhttp://www.nginx.cn/446.htmlhttp://www.ttlsa.com/nginx/nginx-limited-connection-number-ngx_http_limit_conn_module-module/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
비용 할당 레이블을 지원하는 서비스 및 리소스Amazon FSx for Windows Amazon Lightsail Thing 단위 Amazon ECS tasks Amazon ECS services Amazon ECS task definitions Amazon...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.