最近更新时间:2026-08-18 21:09:45
通过 iptables 可以为 Linux 服务器配置有状态的防火墙,能够指定并记住为发送或接收信息包所建立的连接的状态,是一套用来设置、维护和检查 Linux 内核的 IP 包过滤规则的命令包。Linux 的 iptables 防火墙默认有三种表:Filter、NAT 与 Mangle,其中 Filter 是默认使用的表格,包含 INPUT、OUTPUT、FORWARD 三条链。下面以创建一个 filter 表防火墙为例。
清除原有规则。
执行以下命令,清除预设表 filter 中的所有规则链的规则,以及使用者自定义链中的规则。
iptables -F
iptables -X
设定预设规则,将 INPUT、FORWARD 链的默认策略设为 DROP,OUTPUT 链设为 ACCEPT。
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP添加规则。根据实际需要开放相应端口,依次添加规则。常见服务端口示例如下:
445 端口为运营商封禁端口,不可用。
以下主要写的都是 INPUT 链,凡是不在上面的规则里的,都 DROP。
如果您还做了其他的服务器,需要开启哪个端口,参考相应操作即可。
远程 SSH 登录(开启22端口)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPTWEB 服务器(开启80端口)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT邮件服务器(开启25、110端口)
iptables -A INPUT -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 110 -j ACCEPTFTP 服务器(开启21端口)
iptables -A INPUT -p tcp --dport 21 -j ACCEPTDNS 服务器(开启53端口)
iptables -A INPUT -p tcp --dport 53 -j ACCEPTHTTPS(开启443端口)
iptables -A INPUT -p tcp --dport 443 -j ACCEPT允许 ICMP(允许 ping)
如果 OUTPUT 或 INPUT 链设置为 DROP,需要相应添加规则。
iptables -A OUTPUT -p icmp -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT允许 loopback(避免 DNS 无法正常关闭等问题)
根据默认策略的 DROP 方向添加相应规则。
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A OUTPUT -o lo -p all -j ACCEPT纯净模式
