노무현 대통령 배너
Linux/Security2011. 6. 1. 15:40
fail2ban 은 로그파일을 검색해 iptables로 IP를 차단시켜주는 프로그램이다. 설치법은 널려있으니 찾아보시고...본 글에서 할건 sendmail 과 pop3 를 찝쩍대는 것들을 차단하는 설정이 되겠다. fail2ban 을 rpm으로 설치했다면 /etc/fail2ban 에 설정파일들이 있습니다. 필터는 /etc/fail2ban/filter.d 에 있을 것입니다. 설정파일은 /etc/fail2ban/jail.conf 되겠습니다!.[각주:1]

pop3의 로그파일 : /var/log/maillog[각주:2]

pop3로그 패턴을 보자면 

... pop3-login: Disconnected Inactivity [<HOST>]

요런 모양새. "Inactivity" 단어는 나올때도 있고 안나올때도 있으니....

/etc/fail2ban/filter.d/pop3.conf 파일에 아래내용을 적어 저장.

[Definition]

failregex = .* pop3-login:.*Disconnected.*\[<HOST>\].*

ignoreregex =


/etc/fail2ban/jail.conf 에 추가될 내용은

[pop3]

enabled = true

filter = pop3

action = iptables[name=pop3, port=pop3, protocol=tcp]

            sendmail-whois[name=pop3, dest=root, sender=fail2ban@mail.com]

logpath = /var/log/maillog

maxretry = 20

findtime = 1200

bantime = 1200


그런데 sendmail 까지 쓰다보니 smtp 포트도 찝쩍거리는 놈들이 아주 많다.
로그도 같은 /var/log/maillog 에 쌓이니 같이 몰아서 처리!!!! 그러면 jail.conf 내용이 좀 바뀐다. 바뀐내용은 저~밑에.

먼저 smtp 로 들어오는 잡것들의 패턴은 대충 

... lost input channel from [<HOST>] to MTA after data ...

... [<HOST>] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA ...

... [<HOST>] (may be forged) ...

... [<HOST>], reject.*... Relaying denied ...

요래요. 그걸 정규식으로 하면 아래 나오는 마지막 세줄이 그거!.

/etc/fail2ban/filter.d/fail2ban-mail.conf (이름을 변경해봤습니다. 그럴듯?하게)

[Definition]

failregex = .* pop3-login:.*Disconnected.*\[<HOST>\].*
                \[(?:::f{4,6}:)?(?P<host>[\w\-.^_]+)\] .*to MTA
                \[(?:::f{4,6}:)?(?P<host>[\w\-.^_]+)\] \(may be forged\)
                \[(?:::f{4,6}:)?(?P<host>[\w\-.^_]+)\], reject.*\.\.\. Relaying denied

 ignoreregex =


/etc/fail2ban/jail.conf 에 추가될 내용은

[sendmail]

enabled = true

filter = fail2ban-mail

action = iptables-multiport[name=mail, port="pop3,pop3s,imap,imaps,smtp", protocol=tcp]

            sendmail-whois[name=sendmail, dest=root, sender=fail2ban@mail.com]

logpath = /var/log/maillog

maxretry = 20

findtime = 1200

bantime = 1200


메일을 받고 싶지 않다면 "sendmail-whois[name=sendmail, dest=root, sender=fail2ban@mail.com]" 이것을 주석처리 혹은 삭제 .

마지막으로 추가한 설정을 적용

# fail2ban-client reload fail2ban-mail



예전에는 iptables 의 recent log 모듈을 이용했었는데 왜 날 들여보내주지 않는거니!!!

좌우당간 fail2ban 으로 바꾸고 나선 그런일이 싹 사라졌다.

  1. fail2ban.conf 는 fail2ban의 설정파일입니다?... [본문으로]
  2. 서버마다 틀리겠지만, 난 조기 [본문으로]
Posted by zestyx