Firewall
iptables:在具有多個介面的路由器上僅過濾一個介面
以下是我的防火牆規則。
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 命令,可以顯著幫助完成這項工作。