nginx ip 요청 횟수 및 병행 횟수 제한

21088 단어 NginxApache
어떤 IP 의 특정한 시간 대의 방문 횟수 를 제한 할 수 있 는 지 설정 하 는 것 은 골 치 아 픈 문제 입 니 다. 특히 악의 적 인 ddos 공격 에 직면 했 을 때.그 중에서 CC 공격 (Challenge Collapsar) 은 DDOS (분포 식 서비스 거부) 의 일종 이자 흔히 볼 수 있 는 사이트 공격 방법 이다. 공격 자 는 프 록 시 서버 나 육계 로 피해 호스트 에 대량의 패 킷 을 끊임없이 보 내 상대방 서버 자원 이 소 진 되 고 다운 될 때 까지 계속 사용 할 수 있다.cc 공격 은 일반적으로 제 한 된 ip 수 를 사용 하여 서버 에 데 이 터 를 자주 보 내 공격 의 목적 을 달성 하 는 것 입 니 다. nginx 는 Http LimitReqModule 과 Http LimitZone Module 설정 을 통 해 ip 이 같은 시간 대 에 접근 하 는 횟수 를 제한 하여 cc 공격 을 방지 할 수 있 습 니 다.HttpLimitReqModul 은 단위 시간 내 연결 수 를 제한 하 는 모듈 로 limit 을 사용 합 니 다.req_zone 과 limitreq 명령 배합 사용 제한.동시 접속 이 지 정 된 수량 을 초과 하면 503 오 류 를 되 돌려 줍 니 다.HttpLimitConnModul 은 단일 ip 의 병렬 연결 수 를 제한 하고 limit 을 사용 합 니 다.zone 과 limitconn 명령 이라는 두 모듈 의 차 이 는 한 동안 의 연결 수 에 대한 제한 이 고 후 자 는 같은 시간 에 대한 연결 수 에 대한 제한 이다.
    
HttpLimitReqModule 은 일정 시간 동안 같은 ip 접근 수 인 스 턴 스 를 제한 합 니 다.
http{
    ...

    #      allips limit_req_zone    session,   10M  ,     # $binary_remote_addr  key,          20 ,     #1M   16000   ,rete       ,     #           ,     30r/m     limit_req_zone $binary_remote_addr zone=allips:10m rate=20r/s;     ...     server{         ...         location {             ...             #   ip     20   ,   burst 5             #brust     ,   1 、2,3,4    19 ,             # 5     25      。             #      1  25   , 2   20     503  。             #nodelay,        ,             ,             # 1 25    ,5      2   ,             #  nodelay,25      1   。             limit_req zone=allips burst=5 nodelay;             ...         }         ...     }     ... }

 
HttpLimitZoneModule 제한 병렬 연결 수 인 스 턴 스
limit_zone 은 http 역할 영역 에서 만 정의 할 수 있 습 니 다. limitconn 은 http server location 역할 영역 에 정의 할 수 있 습 니 다.
http{
    ...

    #      one limit_zone,  10M     session,     # $binary_remote_addr  key     #nginx 1.18   limit_conn_zone   limit_conn     #     http        limit_conn_zone   one  $binary_remote_addr  10m;       ...     server{         ...         location {             ...            limit_conn one 20;          #                 #    ,       ,    ip    ,  500x2k            limit_rate 500k;                         ...         }         ...     }     ... }

 
nginx 화이트 리스트 설정
이상 의 설정 은 모든 ip 을 제한 합 니 다. 어떤 때 는 검색엔진 의 거미 나 자신 이 ip 을 테스트 하 는 것 을 제한 하고 싶 지 않 습 니 다. 특정한 화이트 리스트 ip 에 대해 서 는 geo 명령 을 통 해 이 루어 질 수 있 습 니 다.1.
http{
     geo $limited{
        default 1;         #google          64.233.160.0/19 0;         65.52.0.0/14 0;         66.102.0.0/20 0;         66.249.64.0/19 0;         72.14.192.0/18 0;         74.125.0.0/16 0;         209.85.128.0/17 0;         216.239.32.0/19 0;         #M$         64.4.0.0/18 0;         157.60.0.0/16 0;         157.54.0.0/15 0;         157.56.0.0/14 0;         207.46.0.0/16 0;         207.68.192.0/20 0;         207.68.128.0/18 0;         #yahoo         8.12.144.0/24 0;         66.196.64.0/18 0;         66.228.160.0/19 0;         67.195.0.0/16 0;         74.6.0.0/16 0;         68.142.192.0/18 0;         72.30.0.0/16 0;         209.191.64.0/18 0;         #My IPs         127.0.0.1/32 0;         123.456.0.0/28 0; #example for your server CIDR     

좋은 웹페이지 즐겨찾기