インターネットにアクセスするには、ファイアウォールでどのポートを開く必要がありますか?

インターネットにアクセスするには、ファイアウォールでどのポートを開く必要がありますか?

たとえば、すべてのソース/ターゲットのすべてのポートをブロックするファイアウォールがあります。

正常に実行するには、どのポートを開く必要がありますか?

ping google.com

...ブラウザでgoogle.comを表示するには、追加のポートを開く必要がありますか?

ポート53(dns)80(http)と443(https)を開こうとしました。十分ではありません。 iptablesを使用していますが、iptablesで設定する方法を尋ねるのではなく、どのポートに必要なのかを尋ねるだけです。何を使っても開いています。ポートベースのファイアウォールですね。

ベストアンサー1

DNSの場合は、ファイアウォールの内部IPアドレスのポートとファイアウォールの外部IPアドレスのポート53の間でUDPパケットを許可する必要があります。

HTTPSの場合、ファイアウォール内のIPアドレスのすべてのポートとファイアウォールの外側のポート443の間でTCPパケットを許可する必要があります。すべきではありません。 HTTPの場合、ポート80と同じです。

TCPは接続プロトコルです。接続の2つの端は非対称であり、ファイアウォールは通常2つの端を区別します。送信メールが個人リレーを通過することを強制すること(感染したコンピュータが検出されずにスパムを送信するのを防ぐため)に加えて、発信接続をブロックするセキュリティ上の理由はほとんどありません。クライアントコンピュータの一般的なデフォルトのファイアウォールは、発信接続をすべてまたはほとんど許可し、着信接続をブロックします。

pingの場合は、ICMPを許可します。特定の種類のパケットをブロックする特別な理由がない限り、すべてのICMPを許可する必要があります。 ICMPを無差別にブロックすると、ネットワークの問題を診断するのが難しくなり、アプリケーションが正しいエラー応答を受け取れないため、サービス障害が発生する可能性があります。

smtp.example.com以下は、SMTPを除くすべての接続を許可し、ポート22(SSH)を除く着信TCP接続をブロックする一般的なクライアントコンピュータの単純なLinuxファイアウォール構成です。

iptables -F INPUT
# Accept everything on localhost
iptables -A INPUT -i lo -j ACCEPT
# Accept incoming packets on existing connections
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# Accept DNS replies
iptables -A INPUT -p udp --sport 53 -j ACCEPT
# Accept incoming SSH connections
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Reject everything else that's incoming
iptables -A INPUT -j REJECT
iptables -F OUTPUT
# Forbid outgoing SMTP except to a known relay
iptables -A OUTPUT -p tcp --dport 22 ! -host smtp.example.com -j REJECT
# Allow everything else that's outgoing
iptables -P OUTPUT -j ALLOW

おすすめ記事