Fail2ban配合FirewallD防止SSH暴力破解 2019-03-08 前进路上 暂无评论 2914 次阅读 本文发布于2019-03-08, 文章内容或资源可能已经失效,仅供参考,谢谢。 Fail2ban 是由 Python 语言开发监控软件,通过监控系统日志的登录信息来调用系统防火墙屏蔽相应登录IP,以阻止某个IP不停尝试密码。Fail2ban 在防御对 SSH 服务器的暴力密码破解上非常有用。--[Linux运维笔记](https://linuxeye.com/455.html "Linux运维笔记") > 目录 > [TOC] ## 应用场景 新买一台机子,不久之后登录SSH看到这样的提示信息 ``` There were 1595 failed login attempts since the last successful login. ``` 这说明这台机子正在被尝试SSH暴力破解登录,要防止这种暴力破解就可以用Fail2ban。 Fail2ban配合FirewallD工作,当发现被暴力破解时就及时屏蔽掉此IP。 ## 系统环境 CentOS7。CentOS7自带FirewallD防火墙,本文将会讲解基于此的Fail2ban使用方法 ## 配置方法 如果已经安装了iptables,建议先关掉iptables ```shell service iptables stop systemctl disable iptables.service ``` 查看 FirewallD 的状态以及启动 FirewallD,并且设置自动启动 ```shell #查看状态 firewall-cmd --state #启动 systemctl start firewalld #设置自动启动 systemctl enable firewalld ``` 开启一些必要的端口 ```shell firewall-cmd --zone=public --add-port=22/tcp --permanent firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=public --add-port=443/tcp --permanent firewall-cmd --reload ``` ## 安装Fail2ban 配置好了FirewallD,下面来安装Fail2ban。 CentOS 内置源并未包含 Fail2ban,需要先安装 epel 源 ```shell yum -y install epel-release ``` 安装Fail2ban ```shell yum -y install fail2ban ``` 安装成功后 Fail2ban 配置文件位于 /etc/fail2ban,其中 jail.conf 为主配置文件,相关的匹配规则位于filter.d目录。 ## 配置规则 新建 jail.local 来覆盖 Fail2ban 的一些默认规则: ```shell vi /etc/fail2ban/jail.local ``` 写入默认配置: ```shell [DEFAULT] ignoreip = 127.0.0.1/8 bantime = 86400 findtime = 600 maxretry = 5 banaction = firewallcmd-ipset action = %(action_mwl)s ``` 说明: - ignoreip:IP白名单,白名单中的IP不会屏蔽,可填写多个以(,)分隔 - bantime:屏蔽时间,单位为秒(s) - findtime:时间范围 - maxretry:最大次数 - banaction:屏蔽IP所使用的方法,上面使用 FirewallD 屏蔽端口,这里 banaction 必须用 firewallcmd-ipset,这是FirewallD支持的关键,如果是用 iptables 请不要这样填写 继续修改 jail.local 这个配置文件,在后面追加如下内容: ```shell [sshd] enabled = true filter = sshd port = 22 action = %(action_mwl)s logpath = /var/log/secure ``` 说明: - [sshd]:名称,可以随便填写 - filter:规则名称,必须填写位于filter.d目录里面的规则,sshd是fail2ban内置规则 - port:对应的端口 - action:采取的行动 - logpath:需要监视的日志路径 按照以上配置下来, `jail.local`应该是这样: ```shell [DEFAULT] ignoreip = 127.0.0.1/8 bantime = 7200 findtime = 600 maxretry = 5 banaction = firewallcmd-ipset action = %(action_mwl)s [sshd] enabled = true filter = sshd port = 22 action = %(action_mwl)s logpath = /var/log/secure ``` 上述配置的意思是如果600秒内错误登录5次将会屏蔽此IP,屏蔽时长为7200秒。 ## 启动Fail2ban 启动 ```shell systemctl start fail2ban ``` 设置自动启动 ```shell systemctl enable fail2ban ``` 查看已封禁IP ```shell fail2ban-client status sshd ``` ------------ > REFERENCE - [Fail2ban 配合 FirewallD 防御 SSH 暴力破解 --网民笔记](https://wangminbiji.com/Fail2ban-defense-ssh-brute-force-with-FirewallD.html "Fail2ban 配合 FirewallD 防御 SSH 暴力破解 --网民笔记") 标签: 安全 如果您对此页面有任何问题或建议,请在本站留言,或联系邮箱me[at]zkk.me本网站部分内容转载自其他网站,如有侵权,请联系博主