最小的 iptables 防火墙

最小的 iptables 防火墙

我打算在 ubuntu 服务器 14.04 中构建一个最小的 iptables 防火墙。为了确保我正确构建并正确执行防火墙,我通过社区运行它进行验证。不太明白方法-o interface-i interface操作。每次我查看不同的防火墙规则时,它们的配置都不同,这使得我的wan规则设置方式变得复杂lan。我的理解方式是这样的:个人电脑>-i interface 局域网 -o interface>-i interface 广域网 -o interface>互联网。对于NAT表格来说也是如此。 prerouting>网络 postroutingforward绕过网络

wan如果我正确的位置是eth0laneth1,那么这是使防火墙正常运行的通用规则集:

iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

这是我的规则集,其中waniseth0lanis eth1

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate DNAT,ESTABLISHED,RELATED -j ACCEPT
iptables -P FORWARD -j DROP

iptables -A INPUT -i eth1 -j ACCEPT
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 67 -j ACCEPT
iptables -A INPUT -p udp --dport 123 -j ACCEPT
iptables -P INPUT -j DROP

iptables -P OUTPUT -j ACCEPT

iptables -t nat -P INPUT ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

iptables -A INPUT -p tcp -i eth1 --dport 22 -j ACCEPT

还涉及防火墙的永久执行。在我编辑此规则集然后sudo nano -w /etc/rc.local使用后sudo chmod 755 /etc/rc.localsudo reboot每次设备启动时此规则集将是永久性的?

答案1

在走得更远之前。查看“网络过滤表”( nftables)。它取代了 iptables、iptables6、arptables...

nftables 是:更容易使用、更强大、更新。在最近的系统上,iptables 是 nftables 的(传统)前端。

nftables 规则集的示例:阻止用户的直接网络访问other,并强制他们使用代理。它仍然有两个计数器,用于测试(可以删除它们)。此外accept,skuid“proxy-server”是不必要的。因为这是当前的政策。

#!/usr/sbin/nft -f

table ip my_table {}
flush table my_table

table ip my_table {
    chain output {
        type filter hook output priority 0; policy accept;
        skuid "other" jump restrict_chain;
        skuid "proxy-server" accept;
    }

    chain restrict_chain {
        counter;
        oifname != "lo" reject;
        tcp dport != "1080" reject;
        counter;
        accept;
    }
}

相关内容