web-dev-qa-db-ja.com

ファイアウォールがポートに対して開いているが、ポートでリッスンしていないかどうかを確認する方法

新しいアプリケーションをサーバーにデプロイし、アプリケーションはポート8443でリッスンします。アプリケーションをデプロイする前に、ネットワークチームにそのサーバーのポート8443のファイアウォールを開くように依頼しました。サーバー上のその特定のポートで現在リッスンしているアプリケーションはありません。

とにかくポート8443のファイアウォールが開いていることを確認できますか

OS:Linux/Windows

31
yottabrain

TCPリモートマシンから接続を確立できるかどうかを確認する場合は、そのマシンとターゲットマシンにOpenCSWをインストールし、両方にnetcatをインストールします。これは、netcatを使用してテストTCP接続:

nc -vz targetServer portNum

たとえば、「homeServer1」でSSHを確認するには、次のようにします。

nc -vz homeserver1 22

これにより、リモートシステムからTCPレベルの接続をテストできます。 Netcatは、クライアントとして機能するのではなく、ポートで待機するように構成することもできます。 TCP/8443でリッスンするようにするには:

アプリケーションを格納するサーバー:nc -l homeserver1 8443

ファイアウォールの外側にあるマシン:nc -vz homeserver.fqdn 8443

これは成功した実行の例です:

[jadavis6@ditirlns01 ~]$ nc -vz ditirlns01.ncat.edu 8443
Connection to ditirlns01.ncat.edu 8443 port [tcp/pcsync-https] succeeded!

失敗した実行:

[jadavis6@ditirlns01 ~]$ nc -vz ditirlns01.ncat.edu 8443
nc: connect to ditirlns01.ncat.edu port 8443 (tcp) failed: Connection refused
18
Bratchley

ファイアウォールすべきリクエストをブロックするときに ICMPメッセージ で応答します。ただし、これは必ずしもそうとは限りません( この素晴らしい記事 に興味があります)。

外部からテストして、ポートがファイアウォールを介してアクセス可能かどうかを確認できます。アクセスできる場合は、ポートで何かがリッスンしているかどうかを確認できます。 wiresharkまたはその他のパケットスニファで確認できるtcpリクエストを含む3つの異なるシナリオと、表示される内容を次に示します。

1)ファイアウォールがリクエストを拒否しました

ICMPメッセージが返され、リクエストを行うツールはすぐにこの影響を通知します(「到達不能、管理者による禁止」など)。 「ツール」とは、リクエストの送信に使用しているクライアントを意味します(私はtelnetを使用しました)。メッセージの詳細1 ファイアウォールの構成方法によって異なりますが、おそらく「ポート到達不能」が最も一般的です。

「ホストへのルートがありません」はこれを示している可能性がありますが、より微妙なルーティング問題を示している可能性もあります。

2)ファイアウォールがパケットをドロップする

返信がないため、タイムアウトになるか退屈するまで、ツールは待機します。

3)ファイアウォールはパケットを許可します(またはファイアウォールはありません)が、ポートで何もリッスンしていません。

TCP RST/ACKメッセージが返されます。TCPプロトコルではこれが必要です。つまり、ポートで何も待機していない場合、OSそれ自体がこの返信を送信します。これは、ツールが報告する内容だけに基づいてこれを#1と区別するのが難しい場合があります。これはmay両方のケースで同じことを言うためです(ただし、おそらくこれを「接続が拒否されました」と#1、「ネットワークに到達できません」)。クライアントマシンのパケットスニファで観察されます。シナリオ#1(ICMP拒否メッセージ)と#3(TCP RST/ACKメッセージ)は明確に区別されます。

ここでの唯一のオプションは、パケットがファイアウォールによって許可され、何かがリッスンしているため、接続が成功することです。

言い換えると、一般的にネットワークが適切に機能していると想定します。#1または#2を取得した場合、ファイアウォールがポートへのアクセスをアクティブに妨げていることを意味します。 #3はサーバーが稼働していないがポートにアクセスできる場合に発生します。もちろん(暗黙的)#4は接続に成功しています。


  1. 例:「ポート到達不能」、「ホスト禁止」、その他のHost/port/adminおよびnreachable/prohibitedのさまざまな組み合わせ。これらは、実行中のIPファイアウォールを明示的に示しているため、メッセージでこれらを探してください。
16
goldilocks

コマンドnetstatを使用して、ポートが開いていてリスニングしているかどうかを確認できます。

$ netstat -anp | less
Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:41716               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      -                   
tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      -                   
tcp        0      0 0.0.0.0:17500               0.0.0.0:*                   LISTEN      3034/dropbox        
tcp        0      0 0.0.0.0:17501               0.0.0.0:*                   LISTEN      3033/dropbox        
tcp        0      0 127.0.0.1:2143              0.0.0.0:*                   LISTEN      3191/ssh                       
tcp        0      0 127.0.0.1:2025              0.0.0.0:*                   LISTEN      3191/ssh 

出力には、TCPポートでリッスンしているプロセス(右端の列)が表示されます。ポート番号は、IPアドレスの後のコロンに続く番号です(たとえば、0.0.0.0:111はポート111になります)。

IPアドレスはLocalおよびForeign Addressesを示します。 Localはシステムですが、ForeignはTCPポートに接続するか、TCPポートの1つに接続するアドレスです。

したがって、ポート22の場合、それは私のシステムで実行されているsshデーモンです。つまり、接続の場合は[〜#〜] listening [〜#〜]です。誰かがsshデーモンに接続しようとすると、自身のコピーを分岐し、その接続を別のポートにプッシュします。TCPポート22は、追加の接続のために開いたままにしておきます。

5
slm

ファイアウォール構成の構成とステータスは、ファイアウォール/ OS固有です。

あなたができることはserver2からそれを試すことです:

nmap server1
1
RSFalcon7

最近同じリクエストがあり、スレッドに来ました。次のようにncコマンドを使用して、FWで開いているポートをスキャンし、出力をクエリすることができました。

nc -v -w 1 -z -s *srcIP destIP port* 2>&1 | grep timed > /dev/null && echo closed || echo open

基本的に、「タイムアウト」になった場合、FWでポートが開いていないことを意味します。

1
Ross

Www.firewallruletest.comなどのオンラインツールを使用して、外部ホストがTCP接続を確立できるかどうかを確認できます。

0
Curt