サーバー1:
iptablesファイアウォールで保護されています。
サーバー2:
Amazonセキュリティグループファイアウォールで保護されています。
両方のポートで、いくつかのブロックされた(閉じた)(開かれていない)ポートをpingしてみましょう。
サーバー1:
nc -w 1 <ip> <port>
Ncat: No route to host.
サーバー2:
nc -w 1 <ip> <port>
Ncat: Connection timed out.
なぜ違いがありますか?
これら2つのエラーメッセージの違いは何ですか? Amazonファイアウォールはiptablesファイアウォールと
どう違うのですか?
答え1
おそらく、AWSファイアウォールはホストを見つけることができず、iptablesファイアウォールがまったく応答しないことを示すICMPパケットを返しています。
バラよりhttps://en.wikipedia.org/wiki/Internet_Control_Message_Protocol#Destination_unreachable。
単にTCPリセットを送信することと比較して、ICMP「到達不能」の利点は次のとおりです。
- UDPにも同じ効果が適用されます。 UDP は、データ受信医を表現できません。
- AWSの場合、パケットはホストではなくAWSインフラストラクチャから来るため、TCPリセットを作成するために、AWSは保護されたホストの代わりにデータを「偽造」する必要があります。
- ホストに接続できない場合、一部の自動ポートスキャナはすべてのポートを試すことなく放棄できます。
答え2
「ホストへのパスはありません」とは、ホストが方法さえ知らないことを意味します。到着指定されたホストです。 「接続タイムアウト」は、パスを見つけたがリモートホストが接続要求に応答しなかったことを意味する。
ファイアウォールには通常、ポートを閉じる2つの方法があります。一つは、実際にオフにすることです。ブロックするように設定してください。これにより、サーバーは着信接続を積極的に拒否します。テスト方法によっては、「ホストへのパスはありません」、「外部ホストによって接続が閉じられました」、または接続を確立しようとしたときにすぐに受信される同様のメッセージが表示されます。
別のアプローチは、ポートからの着信要求を単に無視することです。要求者は応答を受け取らず、要求がタイムアウトします。これは、一部のアカウントではポートを「ステルスブロック」することが知られています。
答え3
迅速な回答では、サーバー1のファイアウォールはパケットを拒否し、サーバー2のファイアウォールはパケットを破棄します。
REJECT:パケットを拒否して送信者に通知し、チェーンのルール処理を停止します。
DROP:パケットを自動的に無視し、チェーンのルール処理を停止します。
サーバー1(iptables)は、パケットを拒否し、ICMPホストに接続できないというメッセージで応答します。
REJECT all -- anywhere anywhere reject-with icmp-host-unreachable
これは、アップストリーム ルータのようにホストに接続できないことを意味しますが、サーバーの IP アドレスが応答パケットの送信元 IP にまだ表示されるため、サーバーが生きていて接続可能であることを意味します。
以下を単に拒否するようにルールを構成できます。
REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
サーバー 2 (Amazon ファイアウォール) がパケットをドロップしているため、クライアントがしきい値時間を超えるまで接続を再試行すると、「接続タイムアウト」エラーメッセージが生成されます。
DROP all -- anywhere anywhere