最小限の iptables ファイアウォール

最小限の iptables ファイアウォール

私は、Ubuntu サーバー 14.04 内に最小限の iptables ファイアウォールを構築するつもりです。ファイアウォールを正しく構築し、正しく実行していることを確認するために、検証のためにコミュニティで実行しています。その方法-o interfaceと操作はよくわかりません。さまざまなファイアウォール ルールを確認するたびに、ルールの構成が異なっているため、ルールに関する-i interfaceルールの設定方法が複雑になります。私が理解している方法は次のとおりです。wanlanパソコン>-i interface 無線LAN -o interface>-i interface ワン -o interface>インターネットNATこれはテーブルにも当てはまります。 prerouting>通信網 postroutingバイパスforward通信網

これは、ファイアウォールを機能させるための一般的なルールセットです。私の理解が正しければ、 とwaneth0次のとおりlanですeth1

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

これは、 および である私のルールセットwanです。eth0laneth1

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、プロキシの使用を強制します。テストで使用された 2 つのカウンターがまだあります (削除できます)。また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;
    }
}

関連情報