Linux防火墙配置核心是理清“谁访问谁、走什么协议、开哪几个端口”,遵循默认拒绝、按需放行原则:①SSH仅允许可信IP访问22端口;②Web服务仅开放80/443端口;③确保OUTPUT链允许必要出站流量;④规则需持久化保存防重启丢失。

Linux防火墙规则不是背命令,而是理清“谁访问谁、走什么协议、开哪几个端口”这三件事。用 iptables 或更现代的 nftables 都行,但思路一致——先默认拒绝,再按需放行。下面聚焦高频、真实、一上手就能用的场景。
只允许SSH远程管理(防暴力破解)
这是最基础也最重要的规则:只让可信IP连22端口,其他一律拦掉。
- 如果知道管理员固定IP(比如 192.168.10.5),加一条白名单:
iptables -A INPUT -s 192.168.10.5 -p tcp --dport 22 -j ACCEPT - 再加一条拒绝所有其他SSH请求:
iptables -A INPUT -p tcp --dport 22 -j DROP - 注意:这两条顺序不能反,iptables按从上到下匹配,先DROP再ACCEPT就失效了
开放Web服务(HTTP/HTTPS)
网站上线后,要让外部用户能访问80和443端口,但不等于全放开——只放端口,不放其他端口或协议。
- 放行HTTP:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT - 放行HTTPS:
iptables -A INPUT -p tcp --dport 443 -j ACCEPT - 如果用了反向代理(如Nginx),通常不需要额外开后端端口(如8080),因为流量只在本机内部流转,不经过INPUT链
允许本机主动出站(别把自己锁死)
很多人设完INPUT规则后发现yum装不了、curl打不开外网——因为只管进不管出。Linux默认OUTPUT是ACCEPT,但如果你改过策略,记得补上:
- 保持本机发包畅通:
iptables -P OUTPUT ACCEPT(推荐,简洁安全) - 或者更细粒度控制(如只允许DNS+HTTP(S)出站):
iptables -A OUTPUT -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
保存规则并开机生效(别重启就丢)
iptables规则默认不持久,重启即清空。必须显式保存:
- Debian/Ubuntu:
iptables-save > /etc/iptables/rules.v4 - RHEL/CentOS 7+:
service iptables save(需安装iptables-services)
或用新方式:
iptables-save > /etc/sysconfig/iptables - 验证是否生效:重启前运行 iptables -L -n,重启后再跑一遍,对比是否一致
基本上就这些。不复杂但容易忽略——关键是先想清楚“我要谁来、来干啥”,再写一行命令。写完别急着保存,先用另一台机器测连通性,确认没问题再固化。










