はじめに
みなさま、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で特定ポートが空いているかのチェックをする方法を紹介しましたが、高機能でいろいろなことができるコマンドなので、みなさまも是非、いろいろと使ってみてください。
なお、自分が管理するサーバー以外を対象に実行はしないようにしてください。
攻撃とみなされますので、くれぐれもご注意ください。