Iptables - 特定のポートを許可し、他のポートをブロックするのに問題がある

Iptables - 特定のポートを許可し、他のポートをブロックするのに問題がある

22(ssh)、80(http)、443(https)を除くすべてのポートをブロックしてみました。現在の入力ルールは次のとおりです。

> iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
DROP       all  --  anywhere             anywhere            

httpおよびhttpsポートを許可してから、他のすべてのポートをブロックする必要があります。しかし、それはすべてをブロックします。たとえば、ポート80と443を使用してFacebookにアクセスしようとすると機能しません。 Facebookにアクセスできません。今どうすればいいですか?

私もこれを試しました。記載されているポートを許可して続行してください。ポリシーの拒否、確かではありませんが。同じことが起こります。

> iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http

ベストアンサー1

作成したポリシールールには、次のことが許可されます。外部接続するホストあなたのTCPポート22、80、443、しかし、独自のトラフィックを含む他のトラフィックはありません!このホストがこれら3つのポート以外のポートにアクセスするのを本当にブロックし、外部ホストがホストにアクセスしたくない場合別の言葉OUTPUT、ルールチェーンの代わりにルールチェーンにルールを配置してINPUTから、入力チェーンにCONNTRACKルールを追加することで開始されていない接続を防ぐことができます。

-P INPUT DROP
-P OUTPUT DROP
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m udp -p udp --sport 53 -j ACCEPT
-A OUTPUT -i lo -j ACCEPT
-A OUTPUT -m tcp -p tcp --dport 22 -j ACCEPT
-A OUTPUT -m tcp -p tcp --dport 53 -j ACCEPT
-A OUTPUT -m udp -p udp --dport 53 -j ACCEPT
-A OUTPUT -m tcp -p tcp --dport 80 -j ACCEPT
-A OUTPUT -m tcp -p tcp --dport 443 -j ACCEPT

私は通常、いくつかの内部プログラムが必要になる可能性があるため、ループバックアダプタを動作させることができます。また、DNS トラフィックも許可します。それ以外の場合は、ドメイン名を解決できません。

おすすめ記事