Linux便利コマンド : ncat

うめだ
2023-02-20
2023-06-09
目次

はじめに

みなさま、ncatコマンドを活用されていますでしょうか?

コマンドラインからネットワーク経由でデータをやりとりすることができる高機能ツールです。

ただし、私が活用しているのはほんの一部の機能で、ファイアウォールのポリシー設定が正しいかを確認するために利用しています。

そんな、ncatコマンドをご紹介します。

環境

OS : AlmaLinux 8
ncatバージョン : 7.70

使い方

ファイアウォールのポリシーとして、下記のようなケースがよくあると思います。
・外部ネットワークからはWebサーバー(80番ポート)のみ許可
・内部ネットワークからは全許可

なので、下記のようにncatコマンドを実行することで、想定したポリシー通りの挙動となるかを確認します。

例)内部ネットワーク:192.168.100.0/24  外部ネットワーク:192.168.200.0/24

外部サーバー経由で、対象の内部サーバーに対して80番ポートが空いているかを確認します。  


$ ssh hogehoge@192.168.200.200 "ncat -z -w1 192.168.100.100 80 ; echo \$?"
0

$

想定通り空いていたので、リターンコード0が返ってきます。

同様に443番ポートに対して確認してみます。


$ ssh hogehoge@192.168.200.200 "ncat -z -w1 192.168.100.100 443 ; echo \$?"
1

$

空いていないためリターンコード1が返ってきます。想定どおりです。

最後に、内部サーバー経由では、443番ポートが空いていることを確認します。

$ ssh hogehoge@192.168.100.200 "ncat -z -w1 192.168.100.100 443 ; echo \$?"
0

$

OKですね。こんな感じでチェックしています。

ファイアウォールのポリシーは複数設定されていることがほとんどです。

なので、シェルスクリプトから設定されているポリシーの分、ncatコマンドを実行して、チェックしています。

ちなみに、ポートのチェックをするコマンドにnmapがありますが、空いているか空いていないかをリターンコードで判定したくて、ncatを利用しています。

好みですね。

まとめ

いかがでしたか?

今回はncatで特定ポートが空いているかのチェックをする方法を紹介しましたが、高機能でいろいろなことができるコマンドなので、みなさまも是非、いろいろと使ってみてください。

なお、自分が管理するサーバー以外を対象に実行はしないようにしてください。
攻撃とみなされますので、くれぐれもご注意ください。