使用Fail2ban保护Linux系统

来源:百度文库 编辑:神马文学网 时间:2024/04/27 13:39:17
[参考文章]:
Fail2ban    作者:
http://blog.candyz.org/20070820/1533
使用 fail2ban 自动封IP   作者:佚名
http://www.diybl.com/course/6_system/linux/Linuxjs/200896/139504.html
使用Fail2ban保护Linux系统   作者:allblue
http://allblue.mllm.org/node/186#comment-194
最近公司的服务器22端口(SSH服务端口)老被攻击,在网上搜索了一番,发现Fail2ban是一个不错的选择。Fail2ban的作用是分析SSH的日志的匹配项预设的频率时采取一定动作的软件,最普遍的就是防火墙上拦截掉。
下面进行Fail2ban的配置实战:
Fail2ban的源码下载:
http://downloads.sourceforge.net/fail2ban/fail2ban-0.8.3.tar.bz2
在linux下输入:
wgethttp://downloads.sourceforge.net/fail2ban/fail2ban-0.8.3.tar.bz2# tar xvfj fail2ban-0.8.3.tar.bz2
# cd fail2ban-0.8.3
# python setup.py install
现在config文件已经安装在/etc/fail2ban下面,接下来在fail2ban-0.8.3/files目录下有不同linux版本的init.d文件。根据你自己不同版本的linux操作系统选择相应的init.d文件复制到/etc/init.d/fail2ban。查看linux是什么版本命令如下:# cat /etc/issue 或 # cat /etc/proc/version
这里拿redhat版本的linux系统说明。
# cp fail2ban-0.8.3/files/redhat-initd /etc/init.d/fail2ban
# chmod 755 /etc/init.d/fail2ban
默认fail2ban.conf里面就三个参数,而且都有注释。
# 默认日志的级别
Loglevel = 3
#日志的目的
Logtarget = /var/log/fail2ban.log
#socket的位置
Socket = /tmp/fial2ban.sock
Jail.conf配置里是fail2ban所保护的具体服务的配置,这里以SSH来讲。
在jail.conf里有一个[DEFAULT]段,在这个段下的参数是全局参数,可以被它段所覆盖。
#忽略IP,在这个清单里的IP不会被屏蔽
Ignoreip = 127.0.0.1
#屏蔽时间
Bantime = 600
#发现时间,在此期间内重试超过次数,会激活fail2ban
Findtime = 600
#尝试次数
Maxretry = 3
#日志修改检测机制
Backend = auto
[ssh-iptables]
#激活
Enabled = true
#filter的名字,在filter.d目录下
Filter = sshd
#所采用的工作,按照名字可在action.d目录下找到
Action = iptables[name=SSH, port=ssh, protocol=tcp]
Mail-whois[name=SSH, dest=root]
#目的分析日志
Logpath = /var/log/secure
#覆盖全局重试次数
Maxretry = 5
#覆盖全局屏蔽时间Bantime =3600
对jail.conf进行一定的设置后,就可以使用fail2ban了。
启动fail2ban
/etc/init.d/fail2ban start 或 fail2ban-client start启动之后,只要符合filter所定义的正则式规则的日志项出现,就会执行响应的action。由于0.8源码树采用客户机/服务器的模式,因此可以很方便的查询fail2ban的执行情况。比方说,要查询刚才定义的[ssh-iptables]段的情况,只要执行
# fail2ban-client status ssh-iptables
会打印出下面的结果:
Status for the jail: ssh-iptables
|- filter
|  |- File list: /var/log/secure
|  |- Currently failed: 0
|  `- Total failed: 52
`- action   |- Currently banned: 1
| `- IP list: 221.20.7.66
`- Total banned: 3
Fail2ban-client也可以直接定义运行中的fail2ban参数
比如增加屏蔽时间为一天
# fail2ban-client set ssh-iptbables bantime 86400
重新读入配置文件
# fail2ban-client reload
设置完毕后,查看日志/var/log/fail2ban.log。看看效果吧。
# tail –f /var/log/fail2ban.log
2008-11-26 11:08:32,625 fail2ban.filter : INFO   Added logfile = /var/log/secure
2008-11-26 11:08:32,626 fail2ban.filter : INFO   Set maxRetry = 5
2008-11-26 11:08:32,628 fail2ban.filter : INFO   Set findtime = 600
2008-11-26 11:08:32,628 fail2ban.actions: INFO   Set banTime =3600
2008-11-26 11:08:32,714 fail2ban.jail   : INFO   Jail 'ssh-iptables' started
2008-11-26 11:08:40,826 fail2ban.actions: WARNING [ssh-iptables] Ban 192.168.7.66
2008-11-26 12:08:41,278 fail2ban.actions: WARNING [ssh-iptables] Unban 192.168.7.66
2008-11-26 12:11:45,282 fail2ban.actions: WARNING [ssh-iptables] Ban 192.168.7.66
2008-11-26 13:11:45,556 fail2ban.actions: WARNING [ssh-iptables] Unban 192.168.7.66
2008-11-26 13:15:36,551 fail2ban.actions: WARNING [ssh-iptables] Ban 192.168.7.66