利用 firewalld ipset 禁止 Linux 服务器被暴力破解登录
原创利用 firewalld ipset 禁止 Linux 服务器被暴力破解登录
在维护 Linux 服务器保险的过程中,防止暴力破解登录是一种常见的措施。暴力破解登录是指攻击者通过尝试多种用户名和密码组合来非法登录服务器。为了减成本时间服务器的保险性,我们可以利用 firewalld 和 ipset 来实现这一功能。本文将详细介绍怎样使用 firewalld ipset 来禁止 Linux 服务器被暴力破解登录。
1. 引言
firewalld 是一个强劲的 Linux 网络防火墙管理工具,它可以帮助我们轻松地配置和管理防火墙规则。ipset 是一个高性能的数据结构库,可以用于创建和管理各种类型的集合。通过结合 firewalld 和 ipset,我们可以有效地防止暴力破解登录。
2. 准备工作
在起始之前,请确保您的 Linux 服务器已经安装了 firewalld 和 ipset。以下是在基于 Red Hat 的发行版(如 CentOS 或 Fedora)上安装这些组件的步骤:
bash
# 安装 firewalld
sudo yum install firewalld
# 安装 ipset
sudo yum install ipset
3. 创建 ipset 集合
首先,我们需要创建一个 ipset 集合来存储被禁止的 IP 地址。以下命令创建了一个名为 `blocklist` 的集合,使用 `hash:net` 类型,该类型适用于存储 IP 地址:
bash
# 创建 ipset 集合
sudo ipset create blocklist hash:net
4. 配置 firewalld 规则
接下来,我们需要配置 firewalld 规则,以便在尝试登录失利时将 IP 地址添加到 `blocklist` 集合中。以下命令创建了一个名为 `block_login_attempts` 的规则:
bash
# 创建 firewalld 规则
sudo firewall-cmd --permanent --new-rule="rule family="ipv4" source ipset="blocklist" accept"
sudo firewall-cmd --permanent --new-rule="rule family="ipv4" source ipset="blocklist" reject"
这些规则意味着,如果 IP 地址在 `blocklist` 集合中,firewalld 将允许连接(接受)请求,否则将拒绝连接(拒绝)请求。
5. 设置登录失利时的 ipset 操作
为了在登录失利时将 IP 地址添加到 `blocklist` 集合中,我们需要编写一个脚本,该脚本将在每次登录失利时执行。以下是一个易懂的脚本示例:
bash
#!/bin/bash
# 获取登录失利的 IP 地址
ip_address=$(echo $1 | awk '{print $1}')
# 将 IP 地址添加到 ipset 集合中
sudo ipset add blocklist $ip_address
# 刷新 firewalld 规则
sudo firewall-cmd --reload
将上述脚本保存为 `block_login.sh`,并赋予执行权限:
bash
chmod +x block_login.sh
接下来,我们需要修改 `/etc/pam.d/common-auth` 文件,以便在登录失利时调用 `block_login.sh` 脚本。在文件中添加以下行:
auth required pam_faildelay.so delay=300
auth required pam_unix.so
auth required /usr/local/bin/block_login.sh
这里,`pam_faildelay.so` 用于设置登录失利时的延迟时间(300 秒),`pam_unix.so` 用于处理认证,而 `block_login.sh` 脚本将在登录失利时执行。
6. 测试配置
现在,我们已经配置了 firewalld 和 ipset 来防止暴力破解登录。为了测试配置,我们可以尝试使用差错的用户名和密码登录服务器。在登录失利后,您应该看到 IP 地址被添加到 `blocklist` 集合中。
bash
# 尝试使用差错的用户名和密码登录
sudo su -c "ssh -o StrictHostKeyChecking=no user@server_ip" - user
登录失利后,您可以检查 `blocklist` 集合:
bash
# 查看 ipset 集合中的 IP 地址
sudo ipset list blocklist
如果一切正常,您应该看到添加到集合中的 IP 地址。
7. 总结
通过结合 firewalld 和 ipset,我们可以有效地防止 Linux 服务器被暴力破解登录。本文介绍了怎样创建 ipset 集合、配置 firewalld 规则、设置登录失利时的 ipset 操作以及测试配置。愿望这些信息能帮助您减成本时间服务器的保险性。