fail2ban可以监视你的系统日志,然后匹配日志的错误信息(正则式匹配)执行相应的屏蔽动作(一般情况下是调用防火墙屏蔽),如:当有人在试探你的SSH、SMTP、FTP密码,只要达到你预设的次数,fail2ban就会调用防火墙屏蔽这个IP,而且可以发送e-mail通知系统管理员
通过iptables, tcp-wrapper, shorewall等方式阻止此IP的访问。
需要Pytion支持
python安装
python安装方法:
- cd /tmp
- wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tgz
- tar xzf Python-2.7.3.tgz
- cd Python-2.7.3
- ./configure
- make && make install
- rm -rf /usr/bin/python
- ln -s /tmp/Python-2.7.3/python /usr/bin/
fail2ban安装
- cd /tmp
- wget https://github.com/downloads/fail2ban/fail2ban/fail2ban_0.8.6.orig.tar.gz
- tar xzf fail2ban_0.8.6.orig.tar.gz
- cd fail2ban-fail2ban-a20d1f8/
- ./setup.py install
- cp files/redhat-initd /etc/init.d/fail2ban
- chmod 755 /etc/init.d/fail2ban
配置fail2ban日志轮循:
- vi /etc/logrotate.d/fail2ban
写入:
- /var/log/fail2ban.log {
- weekly
- rotate 7
- missingok
- compress
- postrotate
- /etc/init.d/fail2ban restart 1>/dev/null || true
- endscript
- }
fail2ban使用方法
配置文件:
- /etc/fail2ban/
- ├── action.d
- │ ├── dummy.conf
- │ ├── hostsdeny.conf
- │ ├── iptables.conf
- │ ├── mail-whois.conf
- │ ├── mail.conf
- │ └── shorewall.conf
- ├── fail2ban.conf
- ├── fail2ban.local
- ├── filter.d
- │ ├── apache-auth.conf
- │ ├── apache-noscript.conf
- │ ├── couriersmtp.conf
- │ ├── postfix.conf
- │ ├── proftpd.conf
- │ ├── qmail.conf
- │ ├── sasl.conf
- │ ├── sshd.conf
- │ └── vsftpd.conf
- ├── jail.conf
- └── jail.local
目录action.d下的文件指定满足条件时执行的一些动作,比如使用iptables禁止ip访问。
目录filter.d下的文件定义匹配日志的正则表达式。
fail2ban.conf文件是配置fail2ban-server程序启动的一些参数
jail.conf文件包含filter及action的指定。
每个conf文件可被local文件覆盖,conf文件第一个被读取,接着是读取local文件,所以local文件中定义的参数会覆盖conf中的参数。所以我们不需要添加所有的内容到local文件,只需要添加conf文件中你想覆盖的部分参数就好。
防ssh及vsftpd暴力破解实例
建立/etc/fail2ban/jail.local文件,在文件中加入:
- [vsftpd-iptables]
- enabled = true
- filter = vsftpd
- action = iptables[name=VSFTPD, port=ftp, protocol=tcp]
- sendmail-whois[name=VSFTPD, [email protected]]
- logpath = /var/log/secure
- maxretry = 3
- [ssh-iptables]
- enabled = true
- filter = sshd
- action = iptables[name=SSH, port=ssh, protocol=tcp]
- sendmail-whois[name=SSH, [email protected], [email protected]]
- logpath = /var/log/secure.log
- maxretry = 5
enabled:可选值false,true
filter:指定/etc/fail2ban/filter.d/目录下的正则文件,如filter = sshd则是指定/etc/fail2ban/filter.d/sshd.conf。
action:指定执行的动作,具体动作文件在/etc/fail2ban/action.d目录下。
logpath:指定监控日志的路径。
maxretry:执行action匹配的次数。
接着执行:
- service iptables start
- service fail2ban start
可以 用fail2ban 分析freeswitch log文件,当发现注册攻击时 启用防火墙规则拒绝此ip的请求。