1 最后由 sdaniel (2010-12-01 09:24:30) 编辑

主题: 利用Fail2Ban进行安全管理邮件服务器

在每天对服务器的日志进行检查时,在dovecot.log及maillog中老是看到同一个ip地址n次的测试邮箱用户名并失败的记录,不难看出是有人对服务器进行猜测,并试图进入服务器。
通过在google上搜索,找到了Fail2Ban http://www.fail2ban.org/这个软件,安装和配置都非常简单:

Required:
   >=python-2.3 (http://www.python.org)
Optional:
   >=gamin-0.0.21 (http://www.gnome.org/~veillard/gamin)
To install, just do:
> tar xvfj fail2ban-0.8.2.tar.bz2
> cd fail2ban-0.8.2
> python setup.py install

安装完成之后,就是配置,对于我的服务器而言,对外开放的端口主要是:https、smtp、smtps、pop3、pop3s、imap、imaps,且我的ssh没有对外开放。这样我主要监控dovecot.log和maillog这两个日志文件,发现有这种情况,fail2ban就在iptable中增加一条记录,禁止这个ip与上面所有端口的连接10分钟,10分钟之后又恢复其连接,具体的配置文件如下:

2 最后由 sdaniel (2010-12-01 09:21:21) 编辑

回复: 利用Fail2Ban进行安全管理邮件服务器

vi /etc/fail2ban/jail.conf
[dovecot]

enabled     = true
filter      = dovecot-pop3imap
action      = iptables-multiport[name=dovecot, port="pop3,imap,pop3s,imaps,https", protocol=tcp]
               sendmail-whois[name=DOVECOT, dest=aaa@aaa.com]
ignoreregex = for myuser from
logpath     = /var/log/dovecot.log

[postfix-iptables]

enabled     = true
filter      = postfix
action      = iptables-multiport[name=postfix, port="https,smtp,smtps", protocol=tcp]
               sendmail-whois[name=POSTFIX, dest=aaa@aaa.com]
ignoreregex = for myuser from
logpath     = /var/log/maillog

这样设定之后,其失败次数超过我设定的次数,比如5次之后,就会中断这个ip的连接10分钟,之后又可以连接,其中的中断时间均可以配置。

使用近一周了,效果还不错,时常收到邮件说明某个ip被禁止了。

3 最后由 sdaniel (2010-12-01 09:46:41) 编辑

回复: 利用Fail2Ban进行安全管理邮件服务器

配置过滤器:

[root@imail filter.d]# cat /etc/fail2ban/filter.d/dovecot-pop3imap.conf
[Definition]
failregex = (?: pop3-login|imap-login): (?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed).*rip=(?P<host>\S*),.*
ignoreregex =
[root@imail filter.d]# cat /etc/fail2ban/filter.d/postfix.conf
[Definition]
failregex   = reject: RCPT from (.*)\[<HOST>\]: [45][05][0-4]
ignoreregex =

回复: 利用Fail2Ban进行安全管理邮件服务器

不错,好办法。:)

回复: 利用Fail2Ban进行安全管理邮件服务器

马克一下。这个需要设置一个ip白名单吧。要是公司办公室内有一个人输错了,那几百号人的foxmail都报错啦。这就要炸锅了。

回复: 利用Fail2Ban进行安全管理邮件服务器

[DEFAULT]
ignoreip = 127.0.0.1 192.168.1.0/24  ->您可以在此忽略内网地址
bantime  = 600
findtime = 600
maxretry = 5
backend  = auto

回复: 利用Fail2Ban进行安全管理邮件服务器

谢谢s兄指点。不过今天下午折腾了一顿也没搞定。配置文件几乎照抄。不过我是用epel源的yum安装的。

我对比了一下dovecot的错误密码登录日志。

将/etc/fail2ban/filter.d/dovecot-pop3imap.conf中
failregex = (?: pop3-login|imap-login): (?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed).*rip=(?P<host>\S*),.*
修改为failregex =  \(auth failed

重启failban,结果根本没用!!连/var/log/fail2ban.log这个文件都没生成!!!悲催吧。

回复: 利用Fail2Ban进行安全管理邮件服务器

检查一下这个要求是否满足,否则不应该没有日志的,并且重启fail2ban时,会有邮件到管理员邮箱的:

Required:
   >=python-2.3 (http://www.python.org)
Optional:
   >=gamin-0.0.21 (http://www.gnome.org/~veillard/gamin)

邮件样例如下:
Hi,

The jail POSTFIX has been started successfully.

Regards,

Fail2Ban

回复: 利用Fail2Ban进行安全管理邮件服务器

sdaniel 写道:

检查一下这个要求是否满足,否则不应该没有日志的,并且重启fail2ban时,会有邮件到管理员邮箱的:

Required:
   >=python-2.3 (http://www.python.org)
Optional:
   >=gamin-0.0.21 (http://www.gnome.org/~veillard/gamin)

邮件样例如下:
Hi,

The jail POSTFIX has been started successfully.

Regards,

Fail2Ban

看样子都满足。
[root@mail01 ~]# rpm -qa|grep gamin
gamin-0.1.7-8.el5
gamin-python-0.1.7-8.el5
[root@mail01 ~]# rpm -qa|grep python
python-2.4.3-27.el5

重启fail2ban服务也确实能收到通知邮件。但是。。。。无论多少次输入错误密码都不屏蔽。然后改成正确密码。还让你收邮件。我没有设置到ignoreip。但是服务器和客户端都在一个10.0.101.×网段中。

回复: 利用Fail2Ban进行安全管理邮件服务器

发现一个问题。就是用yum安装的必须要修改一个地方
fail2ban.conf文件中
logtarget = SYSLOG
需要修改成
logtarget = /var/log/fail2ban.log
才能写入到日志中。

回复: 利用Fail2Ban进行安全管理邮件服务器

iRedMail-0.7.1 里会集成 Fail2ban,如果你需要手工安装,可以参考官方文档:
http://www.iredmail.org/wiki/index.php? … h.Fail2ban

回复: 利用Fail2Ban进行安全管理邮件服务器

终于搞定了。。。。一番折腾。

要点
1、设置fail2ban.conf文件,使log写入到指定文件而不是SYSLOG。
2、设置jail.conf或者是jail.local,不要太多的段。仅仅要default和dovecot和postfix。即兰州提供的。
3、删掉多余的filter。仅仅保留兰州提供的。但是根据自己的dovecot日志样本做修改。但是必须要保留<HOST>。否则会报告No 'host' group".

13 最后由 yzhkpli (2011-04-13 13:24:05) 编辑

回复: 利用Fail2Ban进行安全管理邮件服务器

看了一下,还是张兄写的更简洁易懂。居然webmail都可以做一个

grep -c failed /var/log/dovecot.log

fail2ban-regex /var/log/dovecot.log /etc/fail2ban/filter.d/dovecot-pop3imap.conf

返回数字一样的。