Linux iptables 常见规则配置

1次阅读

Linux iptables 常见规则配置

linux iptables 规则配置核心在于“先设策略、再放通行、最后堵风险”。默认全通很危险,建议从清空规则、收紧默认策略起步,再按需开放服务端口和连接状态。

基础清理与默认策略设定

配置前务必清空旧规则,避免冲突或误拦截:

  • 清空所有链规则iptables -FFilter 表);iptables -t nat -F(nat 表)
  • 删除自定义链iptables -X
  • 设置默认拒绝策略iptables -P input DROPiptables -P FORWARD DROPiptables -P OUTPUT ACCEPT(出站通常宽松)

必须放行的基础通信

锁死 INPUT 后,若不加这些规则,本机将无法响应任何请求,甚至 ssh 都会断连:

  • 允许本地回环iptables -A INPUT -i lo -j ACCEPT
  • 放行已建立和关联连接iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT(推荐用 conntrack 替代旧版 state 模块)

开放常用服务端口

按需添加,每条规则都应明确指定协议、端口和连接状态:

  • SSH(22端口)iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
  • http/httpsiptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPTiptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT
  • 多端口一次性放行(如 22,80,443):iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -m conntrack --ctstate NEW -j ACCEPT

限制恶意扫描与泛洪行为

在放行服务基础上增加防护层,防暴力尝试和 ICMP 泛洪:

  • 限制 SSH 新连接速率(每分钟最多 5 次):iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m limit --limit 5/minute -j ACCEPT;再跟一条 -j DROP 拦截超额请求
  • 限制 ping 频率iptables -A INPUT -p icmp -m limit --limit 5/second -j ACCEPT;之后补 iptables -A INPUT -p icmp -j DROP
  • 封禁特定 IPiptables -A INPUT -s 192.168.1.100 -j DROP

保存与持久化规则

iptables 命令重启即失效,必须显式保存:

  • RHEL/centos 系统service iptables save(写入 /etc/sysconfig/iptables
  • 通用方法(所有发行版)iptables-save > /etc/iptables.rules;开机加载可写入启动脚本或 systemd service,例如 iptables-restore
text=ZqhQzanResources