fail2ban安装及配置

2012年6月28日 发表评论 阅读评论

一、fail2ban简介

当我们服务器开启了远程维护或者是运行着比如mail、ftp之类的应用程序,会有N多的非法IP来探测用户的弱口令,造成安全隐患,那么我们就需要一个工具fail2ban来监控并及时的清楚掉安全隐患。

fail2ban的原理就是分析日志记录,对于在一定时间内登录失败一定次数后,就利用iptables对此IP做出指定的规则限制。其官方主页为

http://www.fail2ban.org/wiki/index.php/Main_Page fail2ban 可以阻挡的暴力入侵服务很多如apache,postfix,exim,named,qmail,sasl,ssh,webmin,wuftpd等。而其实现过滤地址的原理是通过日志的正则查找到相应的IP地址,并加入到防火墙里并将其drop掉。

二、下载

可以通过http://sourceforge.net/projects/fail2ban/files/fail2ban-stable下载最新的安装包。也可以到其主页下载最新的针对不同系统的源包。而在centos下我们可以直接通过yum -y install fail2ban来实现下载安装。

三、安装

通过源安装的方式上面已经提到,这里主要说下源码包安装:

tar jxvf fail2ban-0.8.4.tar.bz2
cd fail2ban-0.8.4
./setup.py install 

因为fail2ban是基于python写的,所以其安装时需要python环境才能进行安装。

四、主要配置文件及参数

[root@web10 fail2ban]# ll /etc/fail2ban/
总计 24
drwxr-xr-x 2 root root 4096 06-28 16:53 action.d       //是如何调用iptables、mail发送等程序的目录
-rw-r--r-- 1 root root  859 01-17 12:24 fail2ban.conf  //设置该程序的日志等
drwxr-xr-x 2 root root 4096 06-28 16:11 filter.d      //过滤规则目录
-rw-r--r-- 1 root root 6593 06-28 15:42 jail.conf    //监控和过滤的配置参数。
-rw-r--r-- 1 root root 1375 2011-11-30 jail.local    //配置本地主要监控的日志及相关参数

注:jail.conf文件第一个被读取,接着是读取jail.local文件,所以local文件中定义的参数会覆盖conf中的参数。

过滤规则:我们以/etc/fail2ban/filter.d/postfix.conf为例,可以看到具体的正则如下:

failregex = reject: RCPT from (.*)[<HOST>]: 554 

554代表Relay Access Denied。一般上面的正则规则我们是不需要更改的。除非你想要监控的程序不在/etc/fail2ban/filter.d目录里,你可以新增自定义配置文件实现给第三方应用的监控。

vim /etc/fail2ban/jail.conf   
ignoreip = 127.0.0.1   // 忽略的IP,不同的IP使用空格分开
bantime  = 600   // 封IP时间,单位秒。等于-1时是永久封IP
findtime  = 600  // 多少秒内失败maxretry次数后就封IP
maxretry = 3   // 失败多少次数后就封IP,与上面的findtime配合使用
[ssh-iptables]
enabled  = false /true  关闭/开启
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=目标邮箱地址, sender=发送邮箱地址]
logpath  = /var/log/secure  //日志路径
maxretry = 5   //错误次数  

当然,以上参数也可以在fail2.loacl文件中进行设置。如果要设置白名单时需要在[DEFAULT]全局定义里的ignoreip参数后进行指定。如果有二组以上以空白做为间隔 其后的IP支持以192.168.1.0/24 IP段格式书写。

配置完了以后,可以通过/etc/init.d/fail2ban 进行start、stop或restart。

五、测试和查看

过滤检查语法测试

fail2ban-regex /var/log/secure /etc/fail2ban/filter.d/vsftpd.conf 

可以通过iptables命令查看被封掉的IP:

[root@web10 fail2ban]# iptables -L -nv
Chain INPUT (policy DROP 660 packets, 68278 bytes)
 pkts bytes target     prot opt in     out     source               destination
 121M   27G ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
1522K   91M ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           multiport dports 80,443,25,465,110, 4929  290K ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
  219 18254 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           icmp type 8
    0     0 ACCEPT     tcp  --  *      *       192.168.1.0/24      0.0.0.0/0           tcp dpt:23
    0     0 ACCEPT     tcp  --  *      *       192.168.1.0/24      0.0.0.0/0           tcp dpt:873
    2    96 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp dpt:8081  

另外也可以通过下在的命令查看:

fail2ban-client status vsftpd-iptables
Status for the jail: vsftpd-iptables
|- filter
|  |- File list:    /var/log/secure
|  |- Currently failed:    0
|  `- Total failed:    6
`- action
|- Currently banned:    1
|  `- IP list:    IP
|`- Total banned:    1

注:如果重起iptables 记的一定还要重起fail2ban,不然他就不能生效,fail2ban的过滤表是在iptables 启动后在加入的。

 




本站的发展离不开您的资助,金额随意,欢迎来赏!

You can donate through PayPal.
My paypal id: itybku@139.com
Paypal page: https://www.paypal.me/361way

  1. 本文目前尚无任何评论.