最小化访问环境需将iptables默认策略设为DROP,再添加必要ACCEPT规则;必须保留lo接口、已建立连接及SSH等基础规则,按服务最小化开放端口,禁用ICMP回显,并持久化保存规则。

要构建最小化访问环境,iptables 默认策略应设为 DROP,再按需添加明确的 ACCEPT 规则。核心原则是:不明确允许的,一律拒绝。
设置默认 INPUT、FORWARD、OUTPUT 策略为 DROP
这是最小权限模型的基础。执行以下命令可将各链默认策略设为拒绝:
- iptables -P INPUT DROP
- iptables -P FORWARD DROP
- iptables -P OUTPUT DROP
注意:执行后会立即切断所有未显式放行的连接(包括 SSH),建议在本地终端操作,或先添加关键规则(如本机回环、已建立连接)再切换默认策略。
必须保留的基础通行规则
默认 DROP 后,以下规则通常不可省略,否则系统将无法正常工作:
-
允许 lo 接口通信:
iptables -A INPUT -i lo -j ACCEPT -
允许已建立和相关连接:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT(旧内核)或iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT(新内核) -
若需远程管理,显式放行 SSH:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT(建议限制源 IP,如-s 192.168.1.100)
按服务最小化开放端口
每个对外服务只开放必要端口,禁止全端口或大范围端口段。例如:
- Web 服务仅开 80/443:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT、iptables -A INPUT -p tcp --dport 443 -j ACCEPT - 数据库服务(如 MySQL)不对外暴露,若必须远程访问,限定特定管理 IP:
iptables -A INPUT -p tcp -s 10.0.5.20 --dport 3306 -j ACCEPT - 禁用 ICMP 回显(可选):
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP,减少探测面
保存与验证规则
iptables 规则重启后丢失,需持久化:
- Debian/Ubuntu:
iptables-save > /etc/iptables/rules.v4 - RHEL/CentOS:
service iptables save(systemd 下可用iptables-save > /etc/sysconfig/iptables)
验证当前策略是否生效:iptables -L -n -v 查看各链 policy 字段;用 iptables -S 查看完整规则顺序,确保 DROP 策略在末尾且无冲突 ACCEPT 规则覆盖。










