我有一些麻烦的主机用我运行的SSH服务器尝试它,我试图用fail2ban来禁止它们。 问题是,我没有用正则expression式做很多工作,用Python正则expression式更less。
下面是我的auth.log中的麻烦的一行:
Nov 19 18:58:17 myhost sshd[48272]: Connection from xxx.xxx.xxx.xxx port 3284 on my.host.ip.address port 22 Nov 19 18:58:21 myhost sshd[48272]: fatal: Read from socket failed: Connection reset by peer [preauth]
我想抓住正则expression式中的两条线,在其他文章中我已经看到了如何做多行的东西,但目前我甚至不能把它匹配到第一行! 这是我的* .conf文件的一个片段:
[INCLUDES] # Read common prefixes. If any customizations available -- read them from # common.local before = common.conf [Init] maxlines = 2 [Definition] _daemon = sshd failregex = ^%(__prefix_line)s^Connection from <HOST>*$
我明白,“__prefix_line”被devise用来捕获第一个“myhost sshd [PID]”位,但是当我运行“fail2ban-regex”时,所有的是:
Results ======= Failregex: 0 total Ignoreregex: 0 total Date template hits: |- [# of hits] date format | [115124] MONTH Day Hour:Minute:Second `- Lines: 115124 lines, 0 ignored, 0 matched, 115124 missed
有没有人有任何想法?
提前致谢!
我在Ubuntu上和多线正则expression式长期争斗。 事实certificate,我需要更新到0.9.1版本才能正常工作,需要从fail2ban自己下载最新的tar.gz。 对于Ubuntu 14.04,LTS版本的版本是0.8.11
之后,它按预期工作。
我在Ubuntu Server LTS 14.04上使用了fail2ban 0.9.5 ,并使用了一个很好的wronguser.conf规则来禁止我的ssh和squirrelmail(使用“dovecot”)的所有'错误/未经授权的'用户,并且在/ var / log / auth .log以下多行:
Aug 15 10:15:25 server auth: pam_unix(dovecot:auth): check pass; user unknown Aug 15 10:15:25 server auth: pam_unix(dovecot:auth): authentication failure; logname= uid=0 euid=0 tty=dovecot ruser=alumni rhost=14.141.17.167
和
Aug 15 12:39:10 server sshd[5851]: pam_unix(sshd:auth): check pass; user unknown Aug 15 12:39:10 server sshd[5851]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=91.224.160.106
以及单线为SSH 根用户禁令:
Aug 15 05:50:20 server sshd[20677]: Failed password for root from 62.147.227.164 port 55253 ssh2
规则是:
[INCLUDES] before = common.conf [Definition] _daemon = (?:sshd|postfix/smptd) failregex = ^%(__prefix_line)s[iI](?:llegal|nvalid) user .* from <HOST>\s*$ ^%(__prefix_line)sFailed (?:password|publickey) for root from <HOST>(?: port \d*)?(?: ssh\d*)?$ dovecot.*user unknown\n.*dovecot.*authentication failure.*rhost\=<HOST> ingoreregex = [Init] maxlines = 2
它包含在jail.local中,如下所示:
[wronguser] enabled = true port = 1:65535 filter = wronguser logpath = /var/log/auth.log maxretry = 1 bantime = -1
Ubuntu LTS 14.04上的默认apt-get fail2ban是0.8.11,不支持multiline正则expression式。 所以你应该手动安装最新的稳定fail2ban。 我直接从他们的git回购。