以下是我的防火墙规则。eth1
是 WAN 接口,其他都是 LAN 接口。我只想在eth1
(WAN 接口) 上过滤 INPUT 和 FORWARD 链。其他所有接口都不需要防火墙。下面的代码示例运行良好。但我觉得我不需要那么多规则就可以在 上启用过滤。那么如何才能仅使用少量 iptables 规则eth1
在 上启用过滤?eth1
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i br0 -j ACCEPT
iptables -A INPUT -i tap0 -j ACCEPT
iptables -A INPUT -i eth5 -j ACCEPT
iptables -A INPUT -i eth5.20 -j ACCEPT
iptables -A INPUT -i eth5.21 -j ACCEPT
iptables -A INPUT -i eth5.22 -j ACCEPT
iptables -A INPUT -i eth5.23 -j ACCEPT
iptables -A INPUT -i eth5.24 -j ACCEPT
iptables -A INPUT -i eth5.25 -j ACCEPT
iptables -A INPUT -i eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i lo -j ACCEPT
iptables -A FORWARD -i br0 -j ACCEPT
iptables -A IFORWARD -i tap0 -j ACCEPT
iptables -A FORWARD -i eth5 -j ACCEPT
iptables -A FORWARD -i eth5.20 -j ACCEPT
iptables -A FORWARD -i eth5.21 -j ACCEPT
iptables -A FORWARD -i eth5.22 -j ACCEPT
iptables -A FORWARD -i eth5.23 -j ACCEPT
iptables -A FORWARD -i eth5.24 -j ACCEPT
iptables -A FORWARD -i eth5.25 -j ACCEPT
iptables -A FORWARD -i eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
# Webserver Ports
iptables -A INPUT -i eth1 -p tcp --match multiport --dports 80,443 -j ACCEPT
# NAT for my local network
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source my.pub.ip.add
# ICMP Protection
iptables -A INPUT -i eth1 -p icmp -m icmp --icmp-type address-mask-request -j DROP
iptables -A INPUT -i eth1 -p icmp -m icmp --icmp-type timestamp-request -j DROP
iptables -A INPUT -i eth1 -p icmp -m icmp -m limit --limit 1/second -j ACCEPT
iptables -A INPUT -i eth1 -j DROP
iptables -A FORWARD -i eth1 -j DROP
答案1
您始终可以在每个内置链的顶部执行类似的操作:
iptables -I INPUT -i eth1 -j eth1chain
iptables -I INPUT -i eth1 -j DROP
然后将您想要的任何规则放入eth1chain
允许流量的规则中(您-i eth1
也可以跳过将其放入这些链中!),并将主链上的策略保留为接受。
但是,我不推荐这样做。您最好使用默认拒绝策略并仅指定您真正想要的流量。使用合适的防火墙管理工具(而不是直接编写 iptables 命令)可以大大帮助完成这项工作。