Fail2ban은 작업을 수행하고 fail2ban-client status
있으며 모두 잘 작동하고 문제가 있는 주소가 차단되었음을 보여줍니다.
나는 주소가 차단되었을 때 메일을 받는 것을 좋아합니다. 이는 하나의 감옥을 제외한 모든 감옥에 적용됩니다. 왜?
/etc/fail2ban/jail.local의 관련 부분은 다음과 같습니다.
# My own domain is here, not example.com, obviously.
sender = [email protected]
banaction = iptables-multiport
mta = sendmail
action_mwl = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
%(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)s", sendername="%(sendername)s"]
action = %(action_mwl)s
# This one is working. Others are as well.
[postfix]
enabled = true
port = smtp,ssmtp,submission
filter = postfix
logpath = /var/log/mail.log
# This one is not working.
[recidive]
enabled = true
filter = recidive
logpath = /var/log/fail2ban.log
bantime = 604800 ; 1 week
findtime = 86400 ; 1 day
maxretry = 5
fail2ban-client status recidive
(다소 익명의) 출력은 다음과 같습니다.
Status for the jail: recidive
|- filter
| |- File list: /var/log/fail2ban.log
| |- Currently failed: 34
| `- Total failed: 270
`- action
|- Currently banned: 9
| `- IP list: 195.154.237.*** 91.200.12.*** 195.154.255.***
`- Total banned: 12
접미사:
Status for the jail: postfix
|- filter
| |- File list: /var/log/mail.log
| |- Currently failed: 0
| `- Total failed: 1058
`- action
|- Currently banned: 0
| `- IP list:
`- Total banned: 162
접미사.conf:
[INCLUDES]
before = common.conf
[Definition]
_daemon = postfix/smtpd
failregex = ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 554 5\.7\.1 .*$
^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.7\.1 : Helo command rejected: Host not found; from=<> to=<> proto=ESMTP helo= *$
^%(__prefix_line)sNOQUEUE: reject: VRFY from \S+\[<HOST>\]: 550 5\.1\.1 .*$
^%(__prefix_line)simproper command pipelining after \S+ from [^[]*\[<HOST>\]:?$
^%(__prefix_line)sNOQUEUE: reject: RCPT from (.*)\[<HOST>\]: 454 4\.7\.1\.*
ignoreregex =
재발성.conf:
[INCLUDES]
before = common.conf
[Definition]
_daemon = fail2ban\.actions
_jailname = recidive
failregex = ^(%(__prefix_line)s|,\d{3} fail2ban.actions%(__pid_re)s?:\s+)WARNING\s+\[(?!%(_jailname)s\])(?:.*)\]\s+Ban\s+<HOST>\s*$
/var/log/fail2ban.log에서:
2016-12-15 08:01:52,620 fail2ban.actions[18430]: WARNING [wordpress-soft] Unban 160.202.163.***
2016-12-15 08:01:59,649 fail2ban.actions[18430]: WARNING [wordpress-soft] Ban 160.202.163.***
2016-12-15 08:02:00,610 fail2ban.actions[18430]: WARNING [recidive] Ban 160.202.163.***
2016-12-15 08:12:00,587 fail2ban.actions[18430]: WARNING [wordpress-soft] Unban 160.202.163.***
그래서 저는 Fail2ban의 이메일 기능이 제대로 작동한다고 확신합니다. 모든 감옥이 운영됩니다. 재범 교도소는 다른 교도소와 크게 다르지 않은 것 같습니다. 내가 무엇을 놓치고 있나요?
답변1
나는 같은 문제를 가지고있다. SSH와 재범자라는 두 개의 감옥이 있습니다. SSH 감옥에서 중복 없이 완벽하게 이메일을 보냈습니다. 나는 실행 중입니다 :
Fail2Ban v0.8.13
내 관련 전역 구성은 귀하가 게시한 것과 동일합니다.
banaction = iptables-multiport
mta = sendmail
action_mwl = %(banaction)s[name=%(__name__)s, port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"]
%(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)s", sendername="%(sendername)s"]
action = %(action_mwl)s
내 초기 재범 감옥 구성(이메일이 전송되지 않음):
[recidive]
enabled = true
filter = recidive
logpath = /var/log/fail2ban.log
#action = iptables-allports[name=recidive]
# sendmail-whois-lines[name=recidive, logpath=/var/log/fail2ban.log]
bantime = 604800 ; 1 week
findtime = 604800
#findtime = 86400 ; 1 day
maxretry = 3
기본 재범 조치에 대해 주석을 달았습니다. 적어도 나에게는 이것이 기본값입니다. 중복된 이메일이 기본 작업을 사용하는 ssh처럼 작동하기를 원하기 때문에 이 작업을 수행하고 있습니다. 이 구성으로는...아무 것도 얻을 수 없습니다. 크리켓. 그러나 재범 감옥은 효과가 있습니다. 문제가 정확히 무엇인지는 몰랐지만 문제를 해결해야 한다는 것은 알았습니다. 그래서 먼저 해당 작업의 주석 처리를 해제하려고 했습니다. 그런 다음 여전히 작동하지만 이메일은 없습니다. 아니면 그렇게 생각했습니다. 이 이메일은 로컬 루트 계정으로 전송되는 것으로 나타났습니다. 루트 메일을 전달한 /var/mail/[user] 메일함에서 해당 메일을 찾았습니다. 그래서 저는 이 기본 작업에서 destemail이 사용되지 않았기 때문이라는 것을 깨달았습니다. 그래서 제가 한 일은 전역 기본 action_mwl을 복사하고 이를 조정하여 포트를 제거하는 것이었습니다.
따라서 최종 재범 감옥 구성이 작동합니다.
enabled = true
filter = recidive
logpath = /var/log/fail2ban.log
#action = iptables-allports[name=recidive]
# sendmail-whois-lines[name=recidive, logpath=/var/log/fail2ban.log]
action = %(banaction)s[name=%(__name__)s, protocol="%(protocol)s", chain="%(chain)s"]
%(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)s", sendername="%(sendername)s"]
아마도 이것은 모두 의도된 것일 수도 있고 오래된 실수일 수도 있습니다. 하지만 그것이 내가 작동시키는 방법입니다. 도움을 주기에는 너무 늦었을 수도 있지만, 같은 일을 하는 다음 사람에게 도움이 될 수도 있습니다...