针对 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

2. 验证是否生效

执行以下命令查看当前的防火墙规则,确认刚才添加的规则是否存在:

sudo iptables -L INPUT -n --line-numbers

你应该能在列表的最上方看到这几条带有 DROP 字样的规则。


💾 关键步骤:永久保存规则(防止重启失效)

注意iptables 命令默认是临时的,服务器重启后规则会丢失。你必须执行以下步骤将其保存。

情况 A:如果你没有安装 iptables-persistent (纯净版 Ubuntu)

  1. 安装保存工具:
    sudo apt-get update
    sudo apt-get install iptables-persistent
    
  2. 在安装过程中,它会问你是否保存当前的 IPv4 和 IPv6 规则,选择 Yes
  3. 如果以后修改了规则,手动保存命令为:
    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 集合)。

  1. 安装 ipset:
    sudo apt-get install ipset
    
  2. 创建一个名为 blacklist 的集合:
    sudo ipset create blacklist hash:ip
    
  3. 将恶意 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
    
  4. 添加一条 iptables 规则,拒绝该集合内的所有 IP:
    sudo iptables -I INPUT -m set --match-set blacklist src -j DROP
    
  5. 保存 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),否则重启服务器后防护会失效。


Revision #1
Created 25 March 2026 07:29:57 by Admin
Updated 25 March 2026 07:30:13 by Admin