Loading... <p> 此文介绍一个linux下通过监控日志防止密码被暴力破解的软件-fail2ban。fail2ban支持常用的服务,如sshd, apache, qmail, proftpd, sasl, asterisk等的密码验证保护,当发现暴力破解的迹像时,可以通过iptables, tcp-wrapper, shorewall等方式阻止此IP的访问。 </p> <h2 id="python安装"> python安装<br /> </h2> <p> 安装fail2ban需要Python >= 2.4,可以直接执行python查询版本号,但fail2ban 2.4有一个bug,所以还是推荐安装2.5以上的python。<br /> python安装方法: </p> <div class="hl-surround"> <ol class="hl-main ln-show"> <li class="hl-firstline"> cd /tmp </li> <li> wget http://python.org/ftp/python/2.7.3/Python-2.7.3.tgz </li> <li> tar xzf Python-2.7.3.tgz </li> <li> cd Python-2.7.3 </li> <li> ./configure </li> <li> make && make install </li> <li> rm -rf /usr/bin/python </li> <li> ln -s /tmp/Python-2.7.3/python /usr/bin/ </li> </ol> </div> <h2 id="fail2ban安装"> fail2ban安装<br /> </h2> <div class="hl-surround"> <ol class="hl-main ln-show"> <li class="hl-firstline"> cd /tmp </li> <li> wget https://github.com/downloads/fail2ban/fail2ban/fail2ban_0.8.6.orig.tar.gz </li> <li> tar xzf fail2ban_0.8.6.orig.tar.gz </li> <li> cd fail2ban-fail2ban-a20d1f8/ </li> <li> ./setup.py install </li> <li> cp files/redhat-initd /etc/init.d/fail2ban </li> <li> chmod 755 /etc/init.d/fail2ban </li> </ol> </div> <h3> 配置fail2ban日志轮循:<br /> </h3> <div class="hl-surround"> <ol class="hl-main ln-show"> <li class="hl-firstline"> vi /etc/logrotate.d/fail2ban </li> </ol> </div> <p> 写入: </p> <div class="hl-surround"> <ol class="hl-main ln-show"> <li class="hl-firstline"> /var/log/fail2ban.log { </li> <li> weekly </li> <li> rotate 7 </li> <li> missingok </li> <li> compress </li> <li> postrotate </li> <li> /etc/init.d/fail2ban restart 1>/dev/null || true </li> <li> endscript </li> <li> } </li> </ol> </div> <h2 id="fail2ban使用方法"> fail2ban使用方法<br /> </h2> <p> 配置文件: </p> <div class="hl-surround"> <ol class="hl-main ln-show"> <li class="hl-firstline"> /etc/fail2ban/ </li> <li> ├── action.d </li> <li> │ ├── dummy.conf </li> <li> │ ├── hostsdeny.conf </li> <li> │ ├── iptables.conf </li> <li> │ ├── mail-whois.conf </li> <li> │ ├── mail.conf </li> <li> │ └── shorewall.conf </li> <li> ├── fail2ban.conf </li> <li> ├── fail2ban.local </li> <li> ├── filter.d </li> <li> │ ├── apache-auth.conf </li> <li> │ ├── apache-noscript.conf </li> <li> │ ├── couriersmtp.conf </li> <li> │ ├── postfix.conf </li> <li> │ ├── proftpd.conf </li> <li> │ ├── qmail.conf </li> <li> │ ├── sasl.conf </li> <li> │ ├── sshd.conf </li> <li> │ └── vsftpd.conf </li> <li> ├── jail.conf </li> <li> └── jail.local </li> </ol> </div> <p> 目录action.d下的文件指定满足条件时执行的一些动作,比如使用iptables禁止ip访问。<br /> 目录filter.d下的文件定义匹配日志的正则表达式。<br /> fail2ban.conf文件是配置fail2ban-server程序启动的一些参数<br /> jail.conf文件包含filter及action的指定。<br /> 每个conf文件可被local文件覆盖,conf文件第一个被读取,接着是读取local文件,所以local文件中定义的参数会覆盖conf中的参数。所以我们不需要添加所有的内容到local文件,只需要添加conf文件中你想覆盖的部分参数就好。 </p> <h2 id="防ssh及vsftpd暴力破解实例"> 防ssh及vsftpd暴力破解实例<br /> </h2> <p> 建立/etc/fail2ban/jail.local文件,在文件中加入: </p> <div class="hl-surround"> <ol class="hl-main ln-show"> <li class="hl-firstline"> [vsftpd-iptables] </li> <li> enabled = true </li> <li> filter = vsftpd </li> <li> action = iptables[name=VSFTPD, port=ftp, protocol=tcp] </li> <li> sendmail-whois[name=VSFTPD, dest=you@mail.com] </li> <li> logpath = /var/log/secure </li> <li> maxretry = 3 </li> <li> [ssh-iptables] </li> <li> enabled = true </li> <li> filter = sshd </li> <li> action = iptables[name=SSH, port=ssh, protocol=tcp] </li> <li> sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.com] </li> <li> logpath = /var/log/secure.log </li> <li> maxretry = 5 </li> </ol> </div> <p> enabled:可选值false,true<br /> filter:指定/etc/fail2ban/filter.d/目录下的正则文件,如filter = sshd则是指定/etc/fail2ban/filter.d/sshd.conf。<br /> action:指定执行的动作,具体动作文件在/etc/fail2ban/action.d目录下。<br /> logpath:指定监控日志的路径。<br /> maxretry:执行action匹配的次数。<br /> 接着执行: </p> <div class="hl-surround"> <ol class="hl-main ln-show"> <li class="hl-firstline"> service iptables start </li> <li> service fail2ban start </li> </ol> </div> <h2 id="问题解决"> 问题解决<br /> </h2> <p> 1、WARNING: Unable to find a corresponding IP address for xxx<br /> http://www.centos.bz/2012/05/warning-unable-to-find-a-corresponding-ip-address-for/<br /> 参考:http://www.fail2ban.org/wiki/index.php/MANUAL_0_8 </p> <p> </p> <h2> 文章链接:https://www.centos.bz/2012/04/prevent-ssh-break-in-with-fail2ban/<br /> </h2> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信