fail2ban能够监视你的系统日志,而后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动做(通常状况下是调用防火墙屏蔽),如:当有人在试探你的SSH、SMTP、FTP密码,只要达到你预设的次数,fail2ban就会调用防火墙屏蔽这个IP,并且能够发送e-mail通知系统管理员,是一款很实用、很强大的软件!php
必须的前端
python>2.4(官网推荐使用2.5版本以上,2.4版本有bug)python
可选的git
iptables、shorewall、tcp-wrapper,当发生暴力破解现象时,使用其中一种方式来屏蔽ipgithub
gmain,文件更改监视器正则表达式
sendmail、postfix,能够及时发邮件报告状况vim
安装也很简单!centos
下载fail2ban:https://github.com/fail2ban/fail2ban多线程
cd /opt/fail2ban/ setup.py install
安装的默认路径:/usr/share/fail2ban并发
执行脚本路径:/usr/bin
配置文件路径:/etc/fail2ban
安装截图:
1.配置/etc/init.d脚本
首先,咱们要建立一个服务脚本,便于管理fail2ban的启动与关闭,包括它的开机启动。
fail2ban安装内自带了几个系统的模板文件,centos的文件为:files/redhat-initd。
#将redhat-initd文件复制到/etc/init.d目录下 cp redhat-initd /etc/init.d/fail2ban #更改权限 chmod 755 /etc/init.d/fail2ban #加入开机服务项 chkconfig --add fail2ban #开机启动 chkconfig fail2ban on
2.配置fail2ban的logrotate
建立这个文件:/etc/logrotate.d/fail2ban
#内容为: /var/log/fail2ban.log { weekly rotate 7 missingok compress postrotate /usr/bin/fail2ban-client reload 1>/dev/null || true endscript }
其中fail2ban-client的路径值得注意,可使用这个命令查询:
which fail2ban-client #或者 whereis fail2ban-client
首先来简述下fail2ban是如何工做的,涉及到哪些东西。
fail2ban包含下面5个要素,理解这5个要素之间的关系,对于如何配置如何使用fail2ban是颇有帮助的。
前三个都是配置文件,在/etc/fail2ban目录下;最后两个是fail2ban的可执行文件。
Server
fail2ban有两部分组成:fail2ban-client和fail2ban-server。server是多线程的并用来监听unix socket的命令。server自己不加载任何配置。
所以,在启动时,server处于没有jail定义的默认状态!须要client给予具体的配置。
fail2ban-server的启动参数以下:
------------ -b start in background(后台启动) -f start in foreground(前台启动) -s socket path(套接字路径) -x force execution of the server(强制执行server) -h, --help display this help message(显示帮助信息) -V, --version print the version(打印版本) -----------
Client
fail2ban-client是fail2ban-server的前端程序,它链接server的socket并发送命令给server以配置和操做server。
client以命令行或交互模式(使用-i选项)读取配置文件或仅仅发送一个单独的命令给server。fail2ban-client也能够启动server。
fail2ban-client的启动参数:
-c configuration directory(配置目录) -s socket path(socket路径) -d dump configuration. For debugging(打印出配置,用于调试) -i interactive mode(交互模式) -v increase verbosity(增长详细描述) -q decrease verbosity(减小详细描述) -x force execution of the server(强制执行server) -h, --help display this help message(显示帮助) -V, --version print the version(打印版本)
配置目录
目录结构以下图:
每一个.conf文件都会被名为 .local的文件覆盖。.conf首先被读取,其次是.local。新的配置会覆盖早先的。所以,.local 文件没必要包含每一个相应于.conf中的选项,只是填写你想要覆盖的设置。
/etc/fail2ban下已经自带了一些经常使用服务的filter,action脚本了。因此只要简单的配置下便可使用。
jail.conf文件里能够配置多个须要检测的服务,好比sshd,vsftpd等。每一段均可以指定如何过滤(filter),如何屏蔽(action)。
一般只需修改jail.conf文件,修改filter扫描的日志路径,修改action等。
而自带的filter和action,通常均可以用了。但若是自定义filter,须要了解正则表达式相关的知识。
vim /etc/fail2ban/jail.conf #SSH的配置: [ssh-iptables] enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] sendmail-whois[name=SSH, dest=lijialong1314@foxmail.com, sender=root] logpath = /var/log/secure maxretry = 5 #Vsftpd的配置 [vsftpd-iptables] enabled = true filter = vsftpd action = iptables[name=VSFTPD, port=ftp, protocol=tcp] sendmail-whois[name=VSFTPD, dest=lijialong1314@foxmail.com] logpath = /var/log/message maxretry = 5 bantime = 1800
启动/关闭/重启fail2ban:service fail2ban {start|stop|status|restart}