centos 系统,利用 fail2ban 和 firewalld 拦截非法 ssh 请求
发布于 作者:苏南大叔 来源:程序如此灵动~鉴于在centos
的世界里面,ssh
非法尝试登陆的现象非常普遍,那么最好的解决方案可以更改ssh
的端口号,不用默认的22
。或者可以使用fail2ban
,短时间内多次尝试ssh
登陆失败的话,就把对应ip
加入黑名单。在本文中,苏南大叔,将要讲述,如何利用fail2ban
,做到ssh
的暴力破解防范。
本文的前提是:centos
服务器,已经安装好了fail2ban
和firewalld
。相关文章是:
fail2ban
的目录结构
centos
服务器上,安装完fail2ban
之后,默认的安装目录是:/etc/fail2ban/
。定制fail2ban
的功能,就是修改这个目录下面的配置文件的过程。大多数情况下,需要编辑的配置文件是:/etc/fail2ban/jail.local
。如果没有这个文件,直接添加一个就可以。
jail
这个单词的意思是:监狱
。顾名思义,jail.local
就是配置本地违禁规则的地方。当然,还有个jail.config
文件,这个是默认的配置存放的地方。大多数情况下,大家还是只关心jail.local
文件即可。
设置jail.local
的默认配置
vi /etc/fail2ban/jail.local
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 60
findtime = 600
maxretry = 5
banaction = firewallcmd-ipset
action = %(action_mwl)s
backend = auto
这里通过banaction
设置了禁用拉黑的默认动作firewallcmd-ipset
,而规则就是:在findtime
秒时间内,如果出现maxretry
次匹配的话,就加入黑名单bantime
秒。因为是实验的缘故,这里,苏南大叔的设置的默认值是:黑名单60
秒。超过这个时间,就会继续允许访问。在实际的生产环境下,还是应该设置的bantime
时间长一些,比较好点,单位是秒。
设置白名单
白名单设置项目是ignoreip
,代码如下:
ignoreip = 127.0.0.1/8
多组白名单ip
的时候,请使用空格隔开:
ignoreip = 127.0.0.1 127.0.0.2 127.0.0.3 127.0.0.4 127.0.0.5
配置ssh
的匹配规则
继续编辑文件jail.local
,添加ssh
相关的规则。
vi /etc/fail2ban/jail.local
下面是个ssh
的范例,基本上来说,也不用做什么特殊的修改。
[sshd]
enabled = true
filter = sshd
port = 22
action = %(action_mwl)s
logpath = /var/log/secure
注意:logpath
是用来提供给fail2ban
读取的ssh
日志位置,port
是端口号,filter
是规则名称。规则是已经在filter.d
文件中定义好的。
实验效果展示
配置相关屏蔽规则之后,重启服务器。然后,外网故意输入错误密码5次。然后再次连接ssh
的话,会提示如下信息,演示成功。
ssh: connect to host 192.168.99.43 port 22: Connection refused
总结
本篇文章中,演示的是ssh
相关屏蔽措施,实际上还可以用于其他更多方面的屏蔽。更多经验文字,请点击苏南大叔的博客。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。