服务器安全神器,Linux 上安装 Fail2Ban 保护 SSH
服务器安全神器,Linux 上安装 Fail2Ban 保护 SSH,这只是其功能的冰山一角
前言
之前使用的 denyhosts 方案已经过时。一些研究表明 hosts.{allow,denied} 文件已过时。可使用其他替代方案。hosts.{allow,denied}
依赖于 libwrap.so
,所以先执行 ldd /usr/sbin/sshd | grep libwrap.so
查看是否有输出内容(依赖于 openssh 的版本)。对于 Centos7 应该是有 libwrap.so
的,Centos8 上应该没有。所以对于 Centos8,问题会变得更麻烦。
替代方案
IIRC,DenyHosts 只会监视您的 SSH 服务。如果您还需要它来保护其他服务,Fail2ban 绝对是更好的选择。如果您愿意调整其配置,它几乎可以配置为监视任何服务,但这不是必需的,因为较新版本的 Fail2ban 包含适用于许多流行服务器守护程序的规则集。在简单的 iptables 速率限制上使用 fail2ban 的好处是可以在指定的时间内完全阻止攻击者,而不是简单地降低他攻击你的服务器的速度。我在许多生产服务器上使用过 fail2ban 并取得了很好的效果,并且自从我开始使用它以来从未见过其中一台服务器被暴力攻击破坏。
fail2ban 使用 iptables 而 DenyHosts 使用 hosts.deny,某些服务不查看
hosts
文件,例如 Apache。
在本文中,我们将解释如何安装和配置 fail2ban 来保护 SSH 并提高 SSH 服务器的安全性,以防止对 CentOS / RHEL 8 的暴力攻击。
Fail2ban 是一个免费的开放源代码且广泛使用的入侵防御工具,它可以扫描日志文件中的 IP 地址,这些 IP 地址显示出恶意迹象,例如密码失败过多等等,并禁止它们(更新防火墙规则以拒绝 IP 地址)。 。 默认情况下,它附带用于各种服务的过滤器,包括 sshd 。
另请参阅 : 使用 CentOS / RHEL 8 进行初始服务器设置
在 CentOS / RHEL 8 上安装 Fail2ban
fail2ban 软件包不在官方存储库中,但在 EPEL 存储库中可用。 登录系统后,访问命令行界面,然后如图所示在系统上启用 EPEL 存储库。
$ dnf install -y epel-release
# 通过运行以下命令来安装 Fail2ban 软件包
$ dnf install -y fail2ban
# 或者
yum install fail2ban -y
配置 Fail2ban 保护 SSH
fail2ban 配置文件位于 /etc/fail2ban/ 目录中,过滤器存储在 /etc/fail2ban/filter.d/ 目录中(sshd 的过滤器文件为 /etc/fail2ban/filter.d/sshd.conf )。 。
fail2ban 服务器的全局配置文件是 /etc/fail2ban/jail.conf ,但是,不建议直接修改此文件,因为将来在升级程序包时可能会覆盖或改进该文件。
或者,建议在 /etc/fail2ban/jail.d/ 目录下的 jail.local 文件或单独的 .conf 文件中创建和添加配置。 请注意,在 jail.local 中设置的配置参数将覆盖 jail.conf 中定义的任何参数。
对于本文,我们将在 /etc/fail2ban/ 目录中创建一个名为 jail.local 的单独文件,如下所示。
echo '
[DEFAULT]
ignoreip = 192.168.56.0/24
bantime = -1
findtime = 300
maxretry = 5
banaction = iptables-multiport
backend = systemd
[sshd]
enabled = true
' > /etc/fail2ban/jail.local
Fail2ban 配置
让我们简要解释一下上述配置中的选项:
- ignoreip :指定不禁止的 IP 地址或主机名列表。
- bantime :禁止 IP 的持续时间(以秒为单位)。负数为“永久”禁止。
- maxretry :指定禁止主机之前的故障数。默认为 3
- findtime :如果在“findtime”秒内未找到匹配,则计数器设置为零。默认 600s
- banaction:禁止行动。
- backend :指定用于修改日志文件的后端。
因此,上述配置意味着,如果 IP 在最近 5 分钟内发生 5 次故障,则将其永久禁止,并忽略 IP 地址 192.168.56.0~192.168.56.255。
接下来,立即启动并启用 fail2ban 服务,并使用以下 systemctl 命令检查它是否已启动并正在运行。
#启动 Fail2ban s服务
systemctl start fail2ban
systemctl enable fail2ban
systemctl status fail2ban
使用 fail2ban-client 监视失败和禁止的 IP 地址
将 fail2ban 配置为保护 sshd 后 ,可以使用 fail2ban-client 监视失败和被禁止的 IP 地址。 要查看 fail2ban 服务器的当前状态,请运行以下命令。
# fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd
检查 Fail2ban 监视 sshd 状态,请运行fail2ban-client status sshd
。
# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 86
| |- Total failed: 213
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
|- Currently banned: 3
|- Total banned: 3
`- Banned IP list: 68.183.50.70 64.227.120.10 51.91.151.44
要在 fail2ban 中取消禁止 IP 地址,请运行以下命令。
fail2ban-client unban 192.168.56.1
取消禁止所有 IP:
fail2ban-client unban --all
禁止掉 IP 之后,尝试连接时会报错:
# ssh root@11.113.15.28
ssh: connect to host 11.113.15.28 port 22: Connection refused
有关 fail2ban 的更多信息,请阅读以下手册页。
man jail.conf
man fail2ban-client
参考
https://www.howtoing.com/install-fail2ban-to-protect-ssh-on-centos-rhel
说明
请关注 危 ❤ 工中号【进击云原生】,更有 free 资源供您学习
相关文章
- 如果Linux闭源,你还会用么?
- 【Linux】在linux上java工具jps jstat jinfo等命令找不到怎么办
- SSH连接linux时,长时间不操作就断开的解决方案
- Linux服务器集群系统(一)(转)
- 全是干货---Linux 高可用(HA)集群基本概念详解
- Linux基础之linux常用命令之文本替换
- 【刷题】面筋-Linux-创建多级目录命令mkdir -p
- 【学习总结】快速上手Linux玩转典型应用-第5章-远程连接SSH专题
- Qt编写地图综合应用57-跨平台(win、linux、mac、uos、kylin等)
- linux获取cpu核数(线程数)
- linux之SQL语句简明教程---主键,外来键
- 【Linux 内核】Linux 内核体系架构 ( 硬件层面 | 内核空间 | 用户空间 | 内核态与用户态切换 | 系统调用 | 体系结构抽象层 )
- L82.linux命令每日一练 -- 第11章 Linux系统管理命令 -- dmidecode和lspci
- L58.linux命令每日一练 -- 第九章 Linux进程管理命令 -- pgrep和kill
- L52.linux命令每日一练 -- 第八章 Linux磁盘与文件系统管理命令 -- resize2fs和fsck
- 嵌入式Linux开发,Ubuntu22下交叉编译报错:make[1]: aarch64-linux-gnu-gcc: No such file or directory
- linux top命令及结果详解 top -p 查看Linux程序运行进程
- kali linux 安装 redis
- 【Linux】linux经常使用基本命令
- Linux:库函数:libc: glibc
- Linux命令详解之字符串分割&&IFS
- 嵌入式Linux开发,Ubuntu下交叉编译内核报错:error while loading shared libraries: /lib/x86_64-linux-gnu/libc++.so:
- kali linux 2.0下安装ssh和metasploit