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 トラフィックも許可します。それ以外の場合は、ドメイン名を解決できません。