应设INPUT链默认策略为DROP,再依次添加允许lo、ESTABLISHED/RELATED、业务端口(如80、443、22)的规则,并保存持久化,确保防火墙安全生效。

iptables 是 Linux 系统中常用的包过滤防火墙工具,合理配置规则可有效控制进出流量。若目标是“仅允许业务端口访问”,核心思路是:默认拒绝所有入站连接,再显式放行必需的业务端口(如 80、443、22 等),同时保留本地回环和已建立连接的通行权限。
基础策略结构:默认 DROP + 白名单放行
安全起点应设为入站链(INPUT)默认策略为 DROP,避免遗漏规则导致意外开放:
- 执行 iptables -P INPUT DROP 设置默认拒绝
- 立即添加必要基础规则,否则可能断连:
iptables -A INPUT -i lo -j ACCEPT(允许本地回环)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT(允许已有连接的返回流量) - 这两条必须在设置默认 DROP 后、业务端口规则前插入,否则 SSH 会立即中断
按需开放业务端口(TCP/UDP)
仅对真实需要对外提供服务的端口放行,避免宽泛开放。例如 Web 服务 + SSH 管理:
-
HTTP(80):
iptables -A INPUT -p tcp --dport 80 -j ACCEPT -
HTTPS(443):
iptables -A INPUT -p tcp --dport 443 -j ACCEPT -
SSH(22,建议限制来源 IP 更安全):
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.100 -j ACCEPT - 若需 UDP 端口(如 DNS 查询):
iptables -A INPUT -p udp --dport 53 -j ACCEPT
注意:--dport 指目标端口,即客户端访问本机的端口;-s 可限定源 IP,大幅降低暴力破解风险。
保存与持久化规则(避免重启丢失)
iptables 规则默认不持久,系统重启后恢复初始状态:
- Debian/Ubuntu:iptables-save > /etc/iptables/rules.v4
- RHEL/CentOS 7+(使用 firewalld 时建议切换为 firewalld 管理;若坚持用 iptables):service iptables save 或手动保存到
/etc/sysconfig/iptables - 验证是否生效:iptables -L -n -v 查看当前规则及匹配计数
排查与调试建议
配置后访问异常?按顺序检查:
- 确认规则顺序 —— iptables 自上而下匹配,ACCEPT 规则必须在 DROP 前
- 检查是否误封了 SSH:临时加一条
iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT(插入第一条)应急 - 用 tcpdump 或 journalctl -u systemd-networkd 辅助判断是防火墙拦截还是服务未监听
- 测试时建议通过 console 或带外管理操作,避免仅靠 SSH 导致锁死
不复杂但容易忽略细节,关键在默认策略、回环与状态跟踪规则的先后顺序,以及及时保存。









