Iptables: 各ポートルールの前に ctstate ESTABLISHED, RELATED ルールを重複出力します。

Iptables: 各ポートルールの前に ctstate ESTABLISHED, RELATED ルールを重複出力します。

Iptables静的IPを使用してVPSに接続し、VPSX.X.X.X がパッケージを更新してインストールできるようにします。

*filter

#Allow all loopback (lo0) traffic and reject traffic
#to localhost that does not originate from lo0.
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT
-A OUTPUT -o lo -j ACCEPT

#Allow traffic from address X.X.X.X
-A INPUT -i eth0 -s X.X.X.X -j ACCEPT
-A OUTPUT -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

#Allow DNS
-A OUTPUT -o eth0 -p udp --dport 53 -j ACCEPT
-A INPUT -i eth0 -p udp --sport 53 -m conntrack --ctstate ESTABLISHED -j ACCEPT

#Allow HTTP
-A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPT
-A INPUT -i eth0 -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT

#Allow HTTPS
-A OUTPUT -o eth0 -p tcp --dport 443 -j ACCEPT
-A INPUT -i eth0 -p tcp --sport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPT

#Reject everything else
-A INPUT -j DROP
-A FORWARD -j DROP
-A OUTPUT -j DROP

COMMIT

質問:そのような規定があるのはなぜですか?

-A OUTPUT -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

不要?

もう3つの出力ルール、

-A OUTPUT -o eth0 -p udp --dport 53 -j ACCEPT

-A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPT

-A OUTPUT -o eth0 -p tcp --dport 443 -j ACCEPT

--ctstate ESTABLISHEDポートのみ53,80,443

RELATED追加したら違いがありますかctstate

アップデートがのみ提供されている場合は、追加のmirrors.linode.com改善ルールを使用できますか-s mirrors.linode.com?数ヶ月後に何かが変わったらhostname ipどうなりますか?

答え1

このルールは必要ありません:

-A INPUT -i eth0 -p udp --sport 53 -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp --sport 80 -m conntrack --ctstate ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp --sport 443 -m conntrack --ctstate ESTABLISHED -j ACCEPT

次のいずれかに置き換える必要があります。

-A INPUT -i eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

説明: この規則は、次の接続でトラフィックを受信するために必要です。ホストが起動しました。このルールは、次によって開始された接続を要求しません。リモートホスト

Iptables ルールは、定義した特定の順序でパケットに適用されます。

パケットがホストに入ると、INPUTチェーンに配置され、iptablesはINPUTルールを適用します。チェーンを通じてルールを変換しましょう。

*filter

-A INPUT -i eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT ! -i lo -s 127.0.0.0/8 -j REJECT
-A INPUT -i eth0 -s X.X.X.X -j ACCEPT

-A OUTPUT -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A OUTPUT -o eth0 -p udp --dport 53 -j ACCEPT
-A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPT
-A OUTPUT -o eth0 -p tcp --dport 443 -j ACCEPT

-A INPUT -j DROP
-A FORWARD -j DROP
-A OUTPUT -j DROP

COMMIT

回答を減らすためにコメントをすべて削除しました。


あなたの質問に答えます。

このルール:

-A OUTPUT -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

リモートホストが接続を開始すると、ローカルシステムからリモートホストへのすべてのトラフィックが許可されます。つまり、このルールを使用すると、ホストはリモート接続に応答できます。この規則は正しい操作のために必要です。

他の許可されたセッション内で開始された新しい接続にはRELATEDが必要です。。 (例:動的ポート範囲を使用した手動FTP接続)

iptablesルールにDNS名を入力することはお勧めできません。- iptablesルールをロードすると名前解決が発生します。他の理由もあります...

関連情報