最小iptablesファイアウォール

最小iptablesファイアウォール

Ubuntu Server 14.04に最小iptablesファイアウォールを構築する予定です。ファイアウォールを正しく構築し、正しく実行したことを確認するために、コミュニティを介して実行して確認しました。方法-o interfaceと動作がわからない-i interface。さまざまなファイアウォールルールを表示するたびに異なるように設定されるため、wanルールの設定方法が複雑になりますlan。私が理解する方法は次のとおりです。パーソナルコンピュータ>-i interface ローカルエリアネットワーク -o interface>-i interface 血のない -o interface>インターネット。テーブルもNAT同じだ。prerouting>ネットワーク postroutingforwardバイパスネットワーク

wan私の正しい場所eth0があり、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以下は、iseth0lanisを使用したルールセットです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プロキシを使用するように強制します。テストに使用される2つのカウンタがまだあります(削除可能)。また、acceptskuid "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;
    }
}

関連情報