요청 유형에 따라 요청이 파이프되는 로드 밸런서 뒤에 두 개의 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를 다시 시작해야 합니다.