在 Linux 中,使用 iptables 禁止(屏蔽)某个端口,常见做法如下。
例如:禁止外部访问本机的 8080 端口(TCP)
iptables -A INPUT -p tcp --dport 8080 -j DROP
含义:
-A INPUT:在 INPUT 链追加规则-p tcp:TCP 协议--dport 8080:目标端口 8080-j DROP:直接丢弃数据包(不回应)如果你希望明确拒绝并返回错误(客户端会知道端口不可达):
iptables -A INPUT -p tcp --dport 8080 -j REJECT
iptables -A INPUT -p udp --dport 8080 -j DROP
例如:禁止 192.168.1.100 访问本机 22 端口
iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j DROP
例如:禁止本机访问外部的 80 端口
iptables -A OUTPUT -p tcp --dport 80 -j DROP
例如:禁止 8000–9000 端口
iptables -A INPUT -p tcp --dport 8000:9000 -j DROP
iptables -L -n -v
查看指定表(如 filter 表是默认):
iptables -L INPUT -n -v
iptables -L INPUT --line-numbers
iptables -D INPUT N
iptables -D INPUT -p tcp --dport 8080 -j DROP
service iptables save
或:
iptables-save > /etc/sysconfig/iptables
iptables-save > /etc/iptables/rules.v4
(可能需要安装 iptables-persistent)
规则顺序很重要
iptables 是从上到下匹配,一旦匹配就执行动作。
DROP vs REJECT
DROP:静默丢弃(更安全)REJECT:明确拒绝(方便调试)不要把自己关在外面
禁止 SSH(22)端口前,确认你有其它方式登录服务器。
如果你愿意,可以告诉我:
我可以帮你给出最合适的一条规则。