Rocky8 에서 기본 저장소에는 mod_evasive 가 없는거 같다.
그래서, 여기저기 찾아보니 raven 저장소를 설치하면 된다고 한다.
- raven 저장소 설치
#dnf install https://pkgs.sysadmins.ws/el8/base/x86_64/raven-release-1.0-1.el8.noarch.rpm -y
- 확인
#yum repolist
raven Raven's RPM repo for el8-x86_64 - base
raven이 보이면 된다
- raven 저장소에서 mod_evasive 설치하기
#dnf --enablerepo=raven-extra install mod_evasive
- 설치확인
#ls /usr/lib64/httpd/modules/ | grep evasive
mod_evasive
- 설치가 잘 되었으니, 이제 설정을 해주면 된다.
#vi /etc/httpd/conf.d/mod_evasive.conf
DOSPageCount 5 #동일페이지 요청횟수, DOSPageInterval 에 설정된 초동안 동일 아이피에서 호출할 수 있는 수
DOSSiteCount 50 #기본값
DOSPageInterval 1 #기본값
DOSSiteInterval 1 #기본값
DOSBlockingPeriod 10 #기본값
DOSLogDir "/var/log/mod_evasive" #로그를 기록하는 디렉토리, 디렉토기 권한 apache에서 쓰기 가능하게 chown apache 권한 준다.
DOSWhitelist 127.0.0.1 192.168.0.* #이 부분도 중요하다. 이 IP들은 ddos 공격형태가 되더라도 접속 허용해주는 설정이다.
이 부분만 수정해 줬다.
다른 부분은 운영하는 사이트에 맞게 조절해주면 된다.
다만, 너무 값을 낮게 설정하게 되면, 정상적인 트래픽도 차단이 될 수 있으니,
적정한 수를 확인하면서 적용해 주도록 한다.
모두 적용을 했으면,
#systemctl restart httpd
적용이 잘 되고 있다면, 차단이 되었을때 httpd status에서도 볼 수 있다.
#systemctl status httpd
~~~
~~~
7월 10 14:41:18 svr133 mod_evasive[3269551]: Blacklisting address 112.223.109.114: possible DoS attack.
7월 10 14:43:32 svr133 mod_evasive[3269549]: Blacklisting address 39.119.233.194: possible DoS attack.
7월 10 14:50:42 svr133 mod_evasive[3269551]: Blacklisting address 210.124.191.225: possible DoS attack.
7월 10 14:51:07 svr133 mod_evasive[3269550]: Blacklisting address 221.150.189.139: possible DoS attack.
mod_evasive를 운영하다가 중지를 시키려면,
1. 설정값들을 크게 설정해 주거나, 비활성화(주석)
ㄴex) DOSPageCount 10000 또는 DOSBlockingPeriod 0 으로 해서 설정을 거의 무효화 하는 방식
ㄴex) mod_evasive.conf 에서 <IfModule mod_evasive20.c>~</IfModule> 블럭 전체를 주석처리하는 방식
2. 모듈을 삭제하거나
ㄴdnf remove mod_evasive -y
3. mod_evasive.conf 파일명을 변경 해줘도 된다.
ㄴmv mod_evasive.conf mod_evasive.conf.bak
4. mod_evasive 모듈 로드 되지 않게 하기
ㄴmod_evasive.conf 에서 주석처리해 준다.
ㄴ#LoadModule evasive20_module modules/mod_evasive.so
편하게 할 수 있는 방법으로 하면된다.
나라면, 파일명 바꾸는 식으로 하겠다.
변경을 했으면,
#systemctl restart httpd