![Apache 대신 로드 밸런서를 사용하여 특정 IP의 트랜잭션을 제한합니다.](https://linux55.com/image/88192/Apache%20%EB%8C%80%EC%8B%A0%20%EB%A1%9C%EB%93%9C%20%EB%B0%B8%EB%9F%B0%EC%84%9C%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%8A%B9%EC%A0%95%20IP%EC%9D%98%20%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98%EC%9D%84%20%EC%A0%9C%ED%95%9C%ED%95%A9%EB%8B%88%EB%8B%A4..png)
요청 유형에 따라 요청이 파이프되는 로드 밸런서 뒤에 두 개의 Apache 인스턴스가 있습니다.
이제 내가 원하는 것은 특정 IP 주소로부터 너무 많은 트랜잭션을 받으면 몇 초 동안 해당 IP를 차단하고 너무 많은 요청을 보냈다는 응답을 클라이언트에 다시 보내는 것입니다.
이제 질문은: 내 인스턴스를 호출하는 대신 로드 밸런서에서 이 상황을 처리할 수 있는 방법이 있습니까?
Apache에서 이 문제를 어떻게 처리할 수 있나요? 저는 아파치 버전 2.2를 사용하고 있습니다.
답변1
Apache에서 mod_evasive를 설정하는 것이 좋습니다.
mod_evasive는 HTTP DoS 공격이나 무차별 대입 공격이 발생할 경우 회피 조치를 제공하는 Apache의 회피 정책 모듈입니다. 또한 탐지 및 네트워크 관리 도구로 설계되었으며 IPChain, 방화벽, 라우터 등과 통신하도록 쉽게 구성할 수 있습니다. mod_evasive는 현재 이메일 및 syslog 도구를 통해 남용을 보고합니다.
데비안에 설치하려면:
apt-get install libapache2-mod-evasive
그런 다음 mods-available/evasive.conf를 편집하세요. 귀하의 값은 서버에 있는 가상 호스트 수에 따라 달라질 수 있습니다.
<IfModule mod_evasive20.c>
DOSHashTableSize 2048
DOSPageCount 50 <---- visites to site in the given time
DOSSiteCount 500 <---- to pages
DOSPageInterval 2.0 <---- 2 seconds
DOSSiteInterval 1.0
DOSBlockingPeriod 600.0 <--- seconds
DOSLogDir /var/log/apache2/evasive
DOSWhitelist 127.0.0.1
DOSWhitelist x.x.x.*
</IfModule>
새 mod_evasive
구성을 활성화하려면 Apache를 다시 시작해야 합니다.