최근 회사와 개인 프로젝트에 지쳐 간만에 코딩을 쉬고 죽어가는 오래된 나의 서버를 접속해보았다.
그런데 이상하게도 서버가 굉장히 느린것 같아 습관처럼 여러 로그들을 살펴보았다.
그렇게 로그를 살펴보던중 가장 신경쓰이는 로그가 있었는데 그건 maillog 에 있는 postfix sasl 로그였다.
이 로그가 0.5초 단위로 아이피 약 60 군데정도에서 무작위로 찍히고 있었다.
이걸 발견한 시간은 새벽2시.. 피곤해서 일단 iptables 에 아이피들을 drop 시켰지만
여전히 로그는 멈추지 않았다. 해결하고 싶었지만 나이가 들었는지 잠을 못이기고 다음날을 기약했다.
다음날 다시 서버에 접속하고 구글링하여 찾은게 fail2ban 이였다. 하지만 내 서버에 이미 설치가 되어있었다.
아마 오래전 서버 세팅하면서 잡다한걸 다 깔았는데 그때 설치된 모양이다.
아무튼 그렇게 fail2ban을 통해 세팅하고 서비스 시작하고 나서야 무작위 접속을 막을 수 있었다. 이걸 막고나니
웹서버보단 DB 서버가 상당히 빨라졌다.
아무래도 내 메일서버 인증이 db에 연결되다보니 상당한 무리가 있었던것같다.
fail2ban 설치 및 설정의 경우 아래를 참고하면 된다.
# 설치
yum install -y fail2ban fail2ban-systemd whois
# 설치 후 iptables 를 이용할 경우 firewalld 설정파일을 삭제해야 한다.
rm -f /etc/fail2ban/jail.d/00-firewalld.conf
# fail2ban 설정디렉토리 접근
cd /etc/fail2ban/
# 개인 설정파일 생성
vi jail.local
# jail.local 에 들어갈 내용
[DEFAULT]
# 서비스 제외 아이피 설정
ignoreip = 127.0.0.1/8 192.168.201.0/24 192.168.123.0/24
# IP차단되는 시간(초단위) , -1 일경우 영구정지
bantime = 10800
# 탐지시간(초단위)
findtime = 600
# 탐지시간(findtime)에 따른 횟수
maxretry = 5
# 로그파일 변경 감지 방법, gamin, polling(기본), auto
backend = pooling
# 수신차단된 정보 데이터를 수신받을 메일주소
destemail =
# 수신차단된 정보 데이터 발송 메일주소
sender =
# 수신차단된 정보 데이터 발송시 사용될 프로그램
mta = sendmail
# 수신차단된 정보 데이터 발송시 whois 정보를 함께 보냄 (whois 설치되어있어야함)
action = %(action_mwl)s
# 아래설정들은 필요할 경우 jail.conf 파일 참고하여 enabled 로 설정을 추가하면된다.
[sshd]
enabled = true
port = ssh,22
[dovecot]
enabled = true
[postfix]
enabled = true
[postfix-sasl]
enabled = true
참고로 나같은 경우 bantime 설정이 10분이상 지속되지 않아 살펴보니 설정 중
아래와 같이 설정주석(#) 이 인라인으로 처리되어있어 발생된 문제였다.
bantime = 10800 # IP차단되는 시간(초단위) , -1 일경우 영구정지
fail2ban 의 경우 인라인 주석을 인정하지 않는다고 하니 참고하면된다.
# 참고사이트