我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

鉴于在centos的世界里面,ssh非法尝试登陆的现象非常普遍,那么最好的解决方案可以更改ssh的端口号,不用默认的22。或者可以使用fail2ban,短时间内多次尝试ssh登陆失败的话,就把对应ip加入黑名单。在本文中,苏南大叔,将要讲述,如何利用fail2ban,做到ssh的暴力破解防范。

苏南大叔:centos 系统,利用 fail2ban 和 firewalld 拦截非法 ssh 请求 - fail2ban_ssh_hero
centos 系统,利用 fail2ban 和 firewalld 拦截非法 ssh 请求(图5-1)

本文的前提是:centos服务器,已经安装好了fail2banfirewalld。相关文章是:

fail2ban的目录结构

centos服务器上,安装完fail2ban之后,默认的安装目录是:/etc/fail2ban/。定制fail2ban的功能,就是修改这个目录下面的配置文件的过程。大多数情况下,需要编辑的配置文件是:/etc/fail2ban/jail.local。如果没有这个文件,直接添加一个就可以。

苏南大叔:centos 系统,利用 fail2ban 和 firewalld 拦截非法 ssh 请求 - 001_fail2ban_folder
centos 系统,利用 fail2ban 和 firewalld 拦截非法 ssh 请求(图5-2)

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

苏南大叔:centos 系统,利用 fail2ban 和 firewalld 拦截非法 ssh 请求 - 002_jail
centos 系统,利用 fail2ban 和 firewalld 拦截非法 ssh 请求(图5-3)

这里通过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

苏南大叔:centos 系统,利用 fail2ban 和 firewalld 拦截非法 ssh 请求 - 003_jail
centos 系统,利用 fail2ban 和 firewalld 拦截非法 ssh 请求(图5-4)

注意:logpath是用来提供给fail2ban读取的ssh日志位置,port是端口号,filter是规则名称。规则是已经在filter.d文件中定义好的。

实验效果展示

配置相关屏蔽规则之后,重启服务器。然后,外网故意输入错误密码5次。然后再次连接ssh的话,会提示如下信息,演示成功。

ssh: connect to host 192.168.99.43 port 22: Connection refused

苏南大叔:centos 系统,利用 fail2ban 和 firewalld 拦截非法 ssh 请求 - 006_效果展示
centos 系统,利用 fail2ban 和 firewalld 拦截非法 ssh 请求(图5-5)

总结

本篇文章中,演示的是ssh相关屏蔽措施,实际上还可以用于其他更多方面的屏蔽。更多经验文字,请点击苏南大叔的博客。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   centos    ssh