9

ネットワーク上のさまざまなホストをチェックして、パスワードまたはインタラクティブSSH認証が有効になっていないことを確認する監視プラグインを作成したいと思います。つまり、次のようなコードを作成する必要があります。

  1. SSHポートに接続します。
  2. 使用可能な認証方法を列挙します。
  3. キーベースの認証のみが可能であることを確認します。

pythonまたはbourneshコード(を使用ssh)を使用するメソッドは私にとって最も興味深いものですが、他の言語、ライブラリ、またはヒントも高く評価されています。

4

4 に答える 4

15

私は現在自分でビルドしていますが、PreferredAuthenticationsオプションを使用して、サポートされているメソッドをsshに強制的に(STDERRに)出力させることができます。これは、選択したgrep / python/languageを使用して簡単に解析できます。

HostA$ ssh -o PreferredAuthentications=none HostB
Permission denied (publickey,gssapi-with-mic).
HostA$ ssh -o PreferredAuthentications=none HostC
Permission denied (publickey,gssapi-with-mic,password,keyboard-interactive,hostbased).
于 2010-08-31T21:23:24.480 に答える
7

SSHでの認証を定義するRFC4252は、次のように述べています。

認証方法は、[SSH-ARCH]で定義されている名前で識別されます。「none」メソッドは予約されており、サポートされているものとしてリストされてはなりません(MUSTNOT)。ただし、クライアントから送信される場合があります。クライアントが認証なしでアクセスを許可される場合を除いて、サーバーは常にこの要求を拒否する必要があります。その場合、サーバーはこの要求を受け入れる必要があります。このリクエストを送信する主な目的は、サーバーからサポートされているメソッドのリストを取得することです。

したがって、認証なしのリクエストを送信して、サポートされている認証のリストを取得できます。ただし、認証自体は特定の下位レベルのアクションが実行された後に発生するため(キー交換はその1つです)、SSHプロトコルの一部をshスクリプトで記述する必要がある場合があります。これは、おそらく重要なタスクです。

于 2010-08-27T16:25:07.700 に答える
1

これで、 ssh-auth-methodsnmapと呼ばれる組み込みのNSEスクリプトを使用して、これを行うことができます。

# nmap -p 22 --script ssh-auth-methods 192.168.1.2

Starting Nmap 7.60 ( https://nmap.org ) at 2017-12-26 00:56 GMT
Nmap scan report for 192.168.1.2
Host is up (0.027s latency).

PORT   STATE SERVICE
22/tcp open  ssh
| ssh-auth-methods:
|   Supported authentication methods:
|     publickey
|_    keyboard-interactive
MAC Address: AA:BB:CC:DD:EE:FF (Apple)

Nmap done: 1 IP address (1 host up) scanned in 2.40 seconds

さらに、誰かが同様のpython3スクリプトを作成しました。

于 2017-12-26T01:03:25.377 に答える
-1

* nixソリューションが必要な場合は、OpenSSHソースにフックすることもできます。Windowsがあなたに適している場合-いくつかの.NET商用ライブラリを試すこともできますが、OpenSSHソースよりもはるかに便利です:)

于 2010-08-27T16:36:55.570 に答える