リモートホスト/ポートが開いているかどうかを確認します-GNU NetcatもNMapも使用できません-RHEL 7


17

職場では、インフラストラクチャチームが、ベースOSとしてRHEL7がインストールされた新しいVMを展開しています。この特定のイメージはnmap-ncatNetcat のバージョンに付属しており、NMapはインストールされていません。マシンに何かをインストールすることはできません。

以前は-z、リモートホスト/ポートをスキャンして、開いているかどうかを確認するオプションがあるGNU Netcatを使用していました。このようなもの:

nc -z -v -w 3 remote.host.name 1234

インストールできないシステムにオプションのncatない新しいもので同じチェックを行うにはどうすればよいですか?-znmap


1
ポートが開いている/閉じているかどうかを確認するのはなぜですか?これは監視ソリューションの一部ですか?
ewwhite

1
私たちは-zNcatの入手に取り組んでいますが、しばらくの間Red Hatには含まれません。github.com
nmap

私はネットワークACLは、例えば、点Aと点Bとの間で開かれているかどうかを確認する必要があり@ewwhite:ポート1521上のDBサーバへのアプリケーション・サーバ・トークTCPをすることができます
ジョナスGorauskasλ

回答:


16

Bashを使用すると、特殊ファイルにリダイレクトすることにより、TCPおよび/またはUDPポートに接続できます。

/dev/tcp/host/port hostが有効なホスト名またはインターネットアドレスであり、portが整数のポート番号またはサービス名である場合、Bashは対応するTCPソケットを開こうとします。

/dev/udp/host/port hostが有効なホスト名またはインターネットアドレスであり、portが整数のポート番号またはサービス名である場合、Bashは対応するUDPソケットを開こうとします。

ファイルのオープンまたは作成に失敗すると、リダイレクトが失敗します。

したがって、www.example.comのポート80に接続できるかどうかをテストするには、次のようにします。

echo -n > /dev/tcp/www.example.com/80

ポートがブロックされている場合、「接続拒否」メッセージまたはタイムアウトが表示されます。


1
ポートにtelnetすることもできます
ライアンBabchishin

はい。ただし、RHEL 7の最小インストールには、bashが常に存在するTelnet RPMは含まれません。
HBruijn

2
本当に?物事がどのように変化したか。
ライアンバチシン16

1
@RyanBabchishinに加えて、多くのセキュリティガイドラインでは、telnetクライアントを使用して他の何かにログインすることは安全ではないことに基づいて、telnetクライアントを削除する必要があります。その膨大なトラブルシューティングの使用を無視します。
ジェイソンマーティン

@JasonMartin Pfft
ライアンバチシン

9

Ncatはまだサポートしていません-zが、シェルリダイレクトで同じ動作を得ることができます。

$ ncat google.com 80 </dev/null >/dev/null && echo "yes"
yes
$ ncat google.com 81 </dev/null >/dev/null && echo "yes"
Ncat: Connection timed out.
$ ncat scanme.nmap.org 1234 </dev/null >/dev/null && echo "yes"
Ncat: Connection refused.

接続タイムアウトは、-wオプションで調整できます。

編集:Ncat 7.25BETA2-zは、GNU netcatと同じように機能するオプションを導入しましたが、単一ポートでのみ使用できます。ポート範囲をスキャンする必要がある場合は、Nmapを使用する必要があります。


2

netcat、telnet、nmapは必要ありません。Bashはよりシンプルで、ポータブルで、より効率的です。

小切手を開く

(>/dev/tcp/example.com/80) &>/dev/null && echo "Open" 

開閉チェック

(>/dev/tcp/example.com/80) &>/dev/null && echo "Open" || echo "Closed"

ポート範囲チェック

for i in $(seq 80 88); do (>/dev/tcp/example.com/80/$i) &>/dev/null && echo $i Open|| echo $i Closed; done
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.