SSHサーバが受け付けている認証方法を調べるPerlモジュール
を、CPANに上げしました。
このモジュールは、SSH protocol 1と2のそれぞれについて、どの認証方法(パスワード認証か鍵認証か)が受け付け可能か調べるためのものです。
アーカイブには、sample/scan-sshauth.pl というサンプルスクリプトもあるので、モジュールをインストールすれば、コードを書かずとも試してみることができます。
ちなみにこのサンプルスクリプトは、
- ホスト名
- IPアドレス
- CIDR
に対して調査できるので、出力などは用途にあうようにアレンジして、
- 外部にさらしているサーバたち
- イントラのネットワークセグメント
などに対して定期的にスキャンすれば、うっかり/いつのまにかパスワード認証やSSHv1を有効にしてしまっているマシンをあぶりだす、といったことができます。
$ ./sample/scan-sshauth.pl foo bar baz HOST : SSH2 SSH1 (K=publickey, P=password) =================================== foo : 2=K- 1=-- bar : 2=KP 1=-- baz : 2=KP 1=KP
さて、認証方法を調べるなら、sshコマンドを使って、
$ ssh -2 -o PreferredAuthentications=keyboard-interactive,password HOST $ ssh -2 -o PreferredAuthentications=publickey HOST $ ssh -1 -o PreferredAuthentications=keyboard-interactive,password HOST $ ssh -1 -o PreferredAuthentications=publickey HOST
などとすれば調べられますが、
- 4回もforkが発生する
- コネクションが 4 回発生する
- 認証エラーになる
などなどこの方法はいまいちです。
対して Net::Scan::SSH::Server::SupportedAuth は、