fail2ban安装及配置
一、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来实现下载安装。
三、安装
通过源安装的方式上面已经提到,这里主要说下源码包安装:
1tar jxvf fail2ban-0.8.4.tar.bz2
2cd fail2ban-0.8.4
3./setup.py install
因为fail2ban是基于python写的,所以其安装时需要python环境才能进行安装。
四、主要配置文件及参数
1[root@web10 fail2ban]# ll /etc/fail2ban/
2总计 24
3drwxr-xr-x 2 root root 4096 06-28 16:53 action.d //是如何调用iptables、mail发送等程序的目录
4-rw-r--r-- 1 root root 859 01-17 12:24 fail2ban.conf //设置该程序的日志等
5drwxr-xr-x 2 root root 4096 06-28 16:11 filter.d //过滤规则目录
6-rw-r--r-- 1 root root 6593 06-28 15:42 jail.conf //监控和过滤的配置参数。
7-rw-r--r-- 1 root root 1375 2011-11-30 jail.local //配置本地主要监控的日志及相关参数
注:jail.conf文件第一个被读取,接着是读取jail.local文件,所以local文件中定义的参数会覆盖conf中的参数。
过滤规则:我们以/etc/fail2ban/filter.d/postfix.conf为例,可以看到具体的正则如下:
1failregex = reject: RCPT from (.*)[<HOST>]: 554
554代表Relay Access Denied。一般上面的正则规则我们是不需要更改的。除非你想要监控的程序不在/etc/fail2ban/filter.d目录里,你可以新增自定义配置文件实现给第三方应用的监控。
1vim /etc/fail2ban/jail.conf
2ignoreip = 127.0.0.1 // 忽略的IP,不同的IP使用空格分开
3bantime = 600 // 封IP时间,单位秒。等于-1时是永久封IP
4findtime = 600 // 多少秒内失败maxretry次数后就封IP
5maxretry = 3 // 失败多少次数后就封IP,与上面的findtime配合使用
6[ssh-iptables]
7enabled = false /true 关闭/开启
8filter = sshd
9action = iptables[name=SSH, port=ssh, protocol=tcp]
10 sendmail-whois[name=SSH, dest=目标邮箱地址, sender=发送邮箱地址]
11logpath = /var/log/secure //日志路径
12maxretry = 5 //错误次数
当然,以上参数也可以在fail2.loacl文件中进行设置。如果要设置白名单时需要在[DEFAULT]全局定义里的ignoreip参数后进行指定。如果有二组以上以空白做为间隔 其后的IP支持以192.168.1.0/24 IP段格式书写。
配置完了以后,可以通过/etc/init.d/fail2ban 进行start、stop或restart。
五、测试和查看
过滤检查语法测试
1fail2ban-regex /var/log/secure /etc/fail2ban/filter.d/vsftpd.conf
可以通过iptables命令查看被封掉的IP:
1[root@web10 fail2ban]# iptables -L -nv
2Chain INPUT (policy DROP 660 packets, 68278 bytes)
3 pkts bytes target prot opt in out source destination
4 121M 27G ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
51522K 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
6 219 18254 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 8
7 0 0 ACCEPT tcp -- * * 192.168.1.0/24 0.0.0.0/0 tcp dpt:23
8 0 0 ACCEPT tcp -- * * 192.168.1.0/24 0.0.0.0/0 tcp dpt:873
9 2 96 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:8081
另外也可以通过下在的命令查看:
1fail2ban-client status vsftpd-iptables
2Status for the jail: vsftpd-iptables
3|- filter
4| |- File list: /var/log/secure
5| |- Currently failed: 0
6| `- Total failed: 6
7`- action
8|- Currently banned: 1
9| `- IP list: IP
10|`- Total banned: 1
注:如果重起iptables 记的一定还要重起fail2ban,不然他就不能生效,fail2ban的过滤表是在iptables 启动后在加入的。
捐赠本站(Donate)
如您感觉文章有用,可扫码捐赠本站!(If the article useful, you can scan the QR code to donate))
- Author: shisekong
- Link: https://blog.361way.com/fail2ban/1564.html
- License: This work is under a 知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. Kindly fulfill the requirements of the aforementioned License when adapting or creating a derivative of this work.