针对 Ubuntu 18.04 服务器,要仅封禁特定 IP 地址且不影响其他任何端口及 IP 的访问
针对 Ubuntu 18.04 服务器,要仅封禁特定 IP 地址且不影响其他任何端口及 IP 的访问,最标准、高效且对系统性能影响最小的方法是使用 iptables。
Ubuntu 18.04 默认可能使用 ufw (Uncomplicated Firewall),但 ufw 底层也是 iptables。为了精准控制且不干扰现有规则,直接使用 iptables 命令是最稳妥的。
以下是具体操作步骤:
🚀 方法一:使用 iptables 直接封禁(推荐,即时生效)
这种方法不需要安装额外软件,直接操作内核防火墙规则。
1. 执行封禁命令
请在终端中逐行复制并执行以下命令(需要 root 权限):
# 封禁 广东深圳 IP
sudo iptables -I INPUT -s 103.44.236.211 -j DROP
# 封禁 江西南昌 IP
sudo iptables -I INPUT -s 223.83.150.76 -j DROP
# 封禁 中国香港 IP (1)
sudo iptables -I INPUT -s 83.229.126.117 -j DROP
# 封禁 中国香港 IP (2)
sudo iptables -I INPUT -s 45.192.103.126 -j DROP
# 封禁 美国 IP
sudo iptables -I INPUT -s 148.153.56.174 -j DROP
- **
-I INPUT: 表示在输入链的最前面**插入规则(优先级最高,确保先于允许规则执行)。 - **
-s**: 代表 Source(源地址),即你要封禁的 IP。 - **
-j DROP**: 代表直接丢弃数据包,对方连接时会显示超时,就像网络断开一样(比 REJECT 更安全,不返回拒绝信息)。
2. 验证是否生效
执行以下命令查看当前的防火墙规则,确认刚才添加的规则是否存在:
sudo iptables -L INPUT -n --line-numbers
你应该能在列表的最上方看到这几条带有 DROP 字样的规则。
💾 关键步骤:永久保存规则(防止重启失效)
注意:iptables 命令默认是临时的,服务器重启后规则会丢失。你必须执行以下步骤将其保存。
情况 A:如果你没有安装 iptables-persistent (纯净版 Ubuntu)
- 安装保存工具:
sudo apt-get update sudo apt-get install iptables-persistent - 在安装过程中,它会问你是否保存当前的 IPv4 和 IPv6 规则,选择 Yes。
- 如果以后修改了规则,手动保存命令为:
sudo netfilter-persistent save
情况 B:如果你正在使用 UFW
如果你之前一直用 ufw 管理防火墙,直接运行上面的 iptables 命令也是有效的(因为 ufw 本质就是 iptables),且优先级通常高于 ufw 的默认规则。
为了确保重启后依然有效,建议将上述规则写入 UFW 的自定义文件,或者坚持使用上面的 iptables-persistent 方法(两者共存通常没问题,只要不冲突)。
最稳妥的 UFW 用户做法:
创建自定义规则文件:
sudo nano /etc/ufw/before.rules
在文件的 *filter 部分之后,COMMIT 之前,加入以下内容:
# 开始添加封禁 IP
-A ufw-before-input -s 103.44.236.211 -j DROP
-A ufw-before-input -s 223.83.150.76 -j DROP
-A ufw-before-input -s 83.229.126.117 -j DROP
-A ufw-before-input -s 45.192.103.126 -j DROP
-A ufw-before-input -s 148.153.56.174 -j DROP
# 结束添加
保存退出后,重启 UFW:
sudo ufw disable && sudo ufw enable
️ 进阶方案:如果攻击 IP 非常多(使用 ipset)
如果将来封禁的 IP 达到几十上百个,每条都写一条 iptables 规则会降低服务器网络性能。此时建议使用 ipset(IP 集合)。
- 安装 ipset:
sudo apt-get install ipset - 创建一个名为
blacklist的集合:sudo ipset create blacklist hash:ip - 将恶意 IP 加入集合:
sudo ipset add blacklist 103.44.236.211 sudo ipset add blacklist 223.83.150.76 sudo ipset add blacklist 83.229.126.117 sudo ipset add blacklist 45.192.103.126 sudo ipset add blacklist 148.153.56.174 - 添加一条 iptables 规则,拒绝该集合内的所有 IP:
sudo iptables -I INPUT -m set --match-set blacklist src -j DROP - 保存 ipset 集合 (防止重启丢失):
(注:需配置开机自动恢复sudo apt-get install ipset-persistent sudo ipset save > /etc/ipset.conf/etc/ipset.conf,或简单地将ipset restore < /etc/ipset.conf加入/etc/rc.local)
✅ 总结
对于你目前的 5 个 IP,直接使用 方法一(iptables 命令) 最快最直接。
切记: 执行完命令后,务必执行 保存操作 (netfilter-persistent save),否则重启服务器后防护会失效。
No Comments