nginx DDoS 공격 방지 설정

방어 DDOS 는 시스템 공학 으로 공격 의 종류 가 많 고 방어 의 원가 가 높 으 며 병목 이 많 으 며 방어 하기 시작 하면 수 동적 이 고 어 쩔 수 없다.DDOS 의 특징 은 분포 식 이 고 대역 폭 과 서비스 공격, 즉 4 층 데이터 공격 과 7 층 응용 공격 이다. 해당 하 는 방어 병목 은 4 층 이 대역 폭 에 있 고 7 층 은 구조 적 인 스루풋 에 있다.7 층 의 응용 공격 에 대해 우 리 는 설정 을 해서 방어 할 수 있다. 예 를 들 어 전단 은 Nginx 이 고 주로 nginx 의 http 를 사용한다.limit_conn 과 httplimit_req 모듈 로 방어 합 니 다.ngx_http_limit_conn_module 는 단일 IP 의 연결 수 를 제한 할 수 있 습 니 다. ngxhttp_limit_req_module 는 단일 IP 초당 요청 수 를 제한 할 수 있 으 며, 연결 수 와 요청 수 를 제한 함으로써 CC 공격 을 상대 적 으로 효과적으로 방어 할 수 있 습 니 다.다음은 설정 방법:
1. 초당 요청 수 제한
ngx_http_limit_req_모듈 모듈 은 누 출 통 원 리 를 통 해 단위 시간 내 요청 수 를 제한 하고 단위 시간 내 요청 수가 제한 을 초과 하면 503 오 류 를 되 돌려 줍 니 다.설정 은 두 곳 에서 설정 해 야 합 니 다:
  • ngix. conf 의 http 세그먼트 에서 트리거 조건 을 정의 합 니 다. 여러 조건
  • 이 있 을 수 있 습 니 다.
  • location 에서 트리거 조건 에 도달 할 때 nginx 가 실행 할 동작 을 정의 합 니 다
  • 예 를 들 면:
    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
  • ModSecurity 응용 층 WAF, 기능 이 강하 고 방어 할 수 있 는 공격 이 많 으 며 설정 이 복잡 합 니 다
  • ngx_lua_waf 기반 ngxlua 의 웹 응용 방화벽, 사용 이 간단 하고 고성능 과 경량급
  • http_guard openresty 기반
  • 2. 소프트웨어 + Iptables
  • fail2ban 은 로그 분석 을 통 해 iptables 차단 사용 여 부 를 판단 합 니 다
  • DDoS deflate 는 netstat 를 통 해 ip 연결 수 를 판단 하고 iptables 차단
  • 을 사용 합 니 다.
    처음에 말 했 듯 이 항 DDOS 는 시스템 공학 으로 시스템 과 소프트웨어 설정 을 최적화 시 켜 소 규모 CC 공격 만 방어 할 수 있다. 대규모 공격, 4 층 데이터 공격, 혼합 공격 에 있어 대체적으로 시스템 과 응용 프로그램 이 끊 기지 않 고 대역 폭 이 꽉 찼 다.다음은 제 가 작업 중 에 사 용 했 던 디 도스 방어 방식 입 니 다.
  • 고 방 서버 와 데이터 세척 이 있 는 ISP 는 보통 미국 과 한국 의 서버 이 고 일부 ISP 핵심 공급 업 체 는 데이터 세척 서비스 가 있 는데 예 를 들 어 홍콩 의 PCCW 등 이다.보통 10G 정도 의 소형 공격 을 방어 할 수 있다
  • 데이터 세척 서비스 예 를 들 어 akamai (prolexic), nexusguard 우 리 는 최대 80G 데이터 의 공격 을 받 아 성공 적 으로 세척 되 었 으 나 비용 이 매우 비싸다
  • .
  • CDN 예 를 들 어 블 루 뉴스 네트워크 숙 클 라 우 드 플 라 어 등 CDN 은 DDOS 의 분포 식 특징 에 따라 데이터 의 흐름 을 분산 시 키 는 동시에 사이트 에 가속 작용 을 하고 효과 가 좋 으 며 원가 가 상대 적 으로 낮다.

  • 결론: 공격 은 쉬 워 도 방 어 는 어렵다.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/
  • 본 고 는 리 눅 스 튜 토리 얼 네트워크
  • 에서 나 왔 다.

    좋은 웹페이지 즐겨찾기