安全基线的核心是“默认拒绝、按需放行”,需先配置回环、已建立连接和ssh等关键规则,再执行sudo iptables -p input drop,仅开放80/443等必需端口,限制数据库等服务源ip,并保存规则确保开机加载。

维护服务器网络防火墙的安全基线,核心是建立“默认拒绝、按需放行”的稳定规则结构,而非临时封堵或零散添加。它不是一次配置完就一劳永逸的事,而是需要定期审视、持续验证、留有退路的运维习惯。
明确 INPUT 链的默认策略为 DROP
这是安全基线的起点。执行 sudo iptables -P INPUT DROP 后,所有未被显式允许的入站流量都会被丢弃。注意:该命令必须在已有关键放行规则(如SSH、回环)生效后才可设置,否则会立即断连。建议顺序操作:
- 先插入本地回环规则:
sudo iptables -I INPUT 1 -i lo -j ACCEPT - 再放行已建立连接:
sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT - 然后放行管理端口(如 SSH):
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT - 最后设置默认策略:
sudo iptables -P INPUT DROP
只开放业务必需的端口和服务
Web 服务器只需放行 80(HTTP)、443(HTTPS);数据库若仅内网访问,应限制源 IP 范围,例如:sudo iptables -A INPUT -p tcp -s 10.0.1.0/24 --dport 3306 -j ACCEPT。避免使用 --dport 3306 -j ACCEPT 这类无源地址限制的宽泛规则。对非必要服务(如 Redis 默认 6379、MySQL 默认 3306 公网暴露),要么关闭监听地址(bind 127.0.0.1),要么在 iptables 中彻底屏蔽。
保留可恢复的逃生通道
生产环境严禁“一条命令锁死”。务必提前准备至少一种绕过 iptables 的访问方式:
- 云平台用户:在安全组中固定放行你的办公 IP 到 SSH 端口,优先级高于 iptables 规则
- 物理/托管服务器:确保有带外管理(如 IPMI、iDRAC)可用
- 本地测试时:可加一条带时间限制的“自毁规则”,例如:
sudo iptables -I INPUT 1 -p tcp --dport 22 -m time --timestart 08:00 --timestop 23:59 --weekdays Mon,Tue,Wed,Thu,Fri -j ACCEPT,避免深夜误操作失联
保存规则并确保开机加载
iptables 规则是内存态的,重启即失效。Ubuntu 22.04 可用:sudo iptables-save > /etc/iptables/rules.v4;CentOS 7 需安装 iptables-services 并执行 sudo service iptables save。验证方式:重启前运行 sudo iptables-restore 测试是否能正确加载,再检查 <code>sudo iptables -L -n 输出是否与预期一致。
不复杂但容易忽略。











