Firewall

iptables:在具有多個介面的路由器上僅過濾一個介面

  • July 15, 2012

以下是我的防火牆規則。eth1是WAN介面,其他都是LAN介面。我只想在eth1(WAN 介面)上過濾 INPUT 和 FORWARD 鏈。所有其他介面都不需要防火牆。我下面的程式碼範例工作正常。但我覺得我不需要那麼多規則就可以啟用過濾eth1。那麼,如何僅eth1使用少量 iptables 規則啟用過濾呢?

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

你總是可以在每個內置鏈的頂部做這樣的事情:

iptables -I INPUT -i eth1 -j eth1chain
iptables -I INPUT -i eth1 -j DROP

然後敲擊您想要eth1chain允許流量的任何規則(您也可以跳過將其-i eth1放入這些鏈中!),並將主鏈上的策略保留為 ACCEPT。

但是,我不會推薦這個。您最好使用預設拒絕策略並僅指定您真正想要的流量。使用像樣的防火牆管理工具,而不是直接編寫 iptables 命令,可以顯著幫助完成這項工作。

引用自:https://serverfault.com/questions/407854