我是否有任何不需要的 iptable 规则?

我是否有任何不需要的 iptable 规则?

有人能告诉我,我是否有不需要的规则吗?

我尤其不确定

    $IPT -t nat -P PREROUTING ACCEPT                # is this required?
    $IPT -t nat -P INPUT ACCEPT                     # is this required?
    $IPT -t nat -P OUTPUT ACCEPT                    # is this required?

需要嗎?

IPT='/sbin/iptables'

LAN_IP_NET="192.168.0.1/24"
WAN_IP="x.x.x.x"

LAN_NET="192.168.245.0/24"

CLIENT_NET1="192.168.245.128/25"  # 192.168.245.128 - 192.168.245.25
CLIENT_NET2="192.168.245.64/26"   # 192.168.245.64  - 192.168.245.12
CLIENT_NET3="192.168.245.32/27"   # 192.168.245.32  - 192.168.245.63
CLIENT_NET4="192.168.245.16/28"   # 192.168.245.16  - 192.168.245.31
CLIENT_NET5="192.168.245.8/29"    # 192.168.245.8   - 192.168.245.15

LAN_NIC="eth1"
WAN_NIC="eth0"

    # Flush everything
    $IPT -F
    $IPT -F -t nat
    $IPT -X
    $IPT -X -t nat


    # Enable packet forwarding
    echo 1 > /proc/sys/net/ipv4/ip_forward

    # Allow all outgoing
    $IPT -P OUTPUT ACCEPT
    $IPT -A OUTPUT -o lo -j ACCEPT

    # Filter rules
    $IPT -A INPUT -i lo -j ACCEPT
    $IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    # Allow all traffic from LAN_NET on LAN_NIC
    $IPT -A INPUT -i $LAN_NIC -s $LAN_NET -j ACCEPT

    # Allow some services from the outside
    $IPT -A INPUT -i $WAN_NIC -p icmp --icmp-type echo-request -j ACCEPT
    $IPT -A INPUT -i $WAN_NIC -p tcp --dport ssh -j ACCEPT
    $IPT -A INPUT -i $WAN_NIC -p tcp --dport www -j ACCEPT

    $IPT -A INPUT -j REJECT



    # Masquerade 192.168.245.8 - 192.168.245.255
    $IPT -t nat -P PREROUTING ACCEPT                # is this required?
    $IPT -t nat -P INPUT ACCEPT                     # is this required?
    $IPT -t nat -P OUTPUT ACCEPT                    # is this required?

    $IPT -t nat -A POSTROUTING -s $CLIENT_NET1 -o $WAN_NIC -j MASQUERADE
    $IPT -t nat -A POSTROUTING -s $CLIENT_NET2 -o $WAN_NIC -j MASQUERADE
    $IPT -t nat -A POSTROUTING -s $CLIENT_NET3 -o $WAN_NIC -j MASQUERADE
    $IPT -t nat -A POSTROUTING -s $CLIENT_NET4 -o $WAN_NIC -j MASQUERADE
    $IPT -t nat -A POSTROUTING -s $CLIENT_NET5 -o $WAN_NIC -j MASQUERADE


    $IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

    # Forward 192.168.245.8 - 192.168.245.255. The first 7 IPs are reserved for failover etc
    $IPT -A FORWARD -i $LAN_NIC -o $WAN_NIC -s $CLIENT_NET1 -m state --state NEW -j ACCEPT
    $IPT -A FORWARD -i $LAN_NIC -o $WAN_NIC -s $CLIENT_NET2 -m state --state NEW -j ACCEPT
    $IPT -A FORWARD -i $LAN_NIC -o $WAN_NIC -s $CLIENT_NET3 -m state --state NEW -j ACCEPT
    $IPT -A FORWARD -i $LAN_NIC -o $WAN_NIC -s $CLIENT_NET4 -m state --state NEW -j ACCEPT
    $IPT -A FORWARD -i $LAN_NIC -o $WAN_NIC -s $CLIENT_NET5 -m state --state NEW -j ACCEPT
    $IPT -A FORWARD -j REJECT

答案1

策略规则与其他规则不同,所有内置链都有策略。它们是链的隐式部分,指定如果链中没有规则与数据包匹配时要做什么。将策略设置为已知值是一种很好的做法。

您可以尝试删除规则,然后查看重新启动后默认策略是否为“接受”。只要默认策略保持“接受”,这些命令就是多余的。但是,如果有人更改了策略或默认策略发生更改,您的防火墙脚本将不再按您的意愿执行。即使您似乎不需要这些规则,也要保留它们。

对于策略,最好的选择是将其设置为您希望对不匹配的数据包执行的任何操作。对于默认链,DROP 或 REJECT 可能比 ACCEPT 更好。对于 NAT 链,ACCEPT 往往是一种很好的策略。

答案2

-P 规则是“策略”规则。即:如果所有规则均不匹配,则采用默认策略。对于您而言,它们不会执行任何操作,因为最后一个“like”无论如何都是拒绝所有,您可以使用 -P DROP 并放弃该拒绝行,但是我使用防火墙的方式与您当前的方式相同,因为如果您使用 -P 删除规则,然后使用 -F 远程刷新表,则您仍然有删除策略,它会切断您的连接。

相关内容