在 Ubuntu 中,可以使用 iptables 来禁止(屏蔽)某个端口。下面按常见场景给你示例,并说明注意事项。
例如:禁止 8080 端口
sudo iptables -A INPUT -p tcp --dport 8080 -j DROP
如果是 UDP:
sudo iptables -A INPUT -p udp --dport 8080 -j DROP
✅ 说明:
-A INPUT:追加到 INPUT 链-p tcp/udp:协议--dport:目标端口-j DROP:直接丢弃(不返回任何信息)例如:禁止本机访问外部 8080 端口
sudo iptables -A OUTPUT -p tcp --dport 8080 -j DROP
禁止 192.168.1.100 访问本机 3306 端口:
sudo iptables -A INPUT -s 192.168.1.100 -p tcp --dport 3306 -j DROP
如果你想让对方“知道端口被拒绝”,而不是“一直等待”:
sudo iptables -A INPUT -p tcp --dport 8080 -j REJECT
区别:
DROP:悄悄丢弃(更安全)REJECT:明确拒绝(有 ICMP 响应)sudo iptables -L -n -v
查看指定表:
sudo iptables -L INPUT -n -v
先查看规则编号:
sudo iptables -L INPUT --line-numbers
假设第 3 条规则要删除:
sudo iptables -D INPUT 3
sudo iptables -D INPUT -p tcp --dport 8080 -j DROP
iptables 规则 重启后会丢失,需要保存。
sudo apt install iptables-persistent
sudo netfilter-persistent save
保存位置:
/etc/iptables/rules.v4
/etc/iptables/rules.v6
| 目的 | 命令 |
|---|---|
| 禁止 SSH(22) | iptables -A INPUT -p tcp --dport 22 -j DROP |
| 禁止 MySQL(3306) | iptables -A INPUT -p tcp --dport 3306 -j DROP |
| 禁止 Redis(6379) | iptables -A INPUT -p tcp --dport 6379 -j DROP |
iptables -I INPUT 1 ... 把允许规则放在前面ufw(更简单)如果你愿意,可以告诉我:
我可以帮你写一套完整、安全的规则。