sshdのドメインとhttps接続試行を検索する方法は?

sshdのドメインとhttps接続試行を検索する方法は?

私は私の仕事をしています。sshd(8)リスニングdomainそしてhttps。 (このポートでは何が実行できますか?:)

明らかに、実際のDNS(TCPにフォールバックする場合)とHTTPSクライアントは、これらのポートをリッスンするSSHサーバーに接続しようとする可能性があります。 DNS/TCPおよびHTTPS/TCPクライアントから受信した接続試行の回数をどのように知ることができますか?たとえば、DNS / TCPクライアントまたはSSHサーバーと通信するHTTPS / TCPクライアントに固有のサーバーログを取得できるパターンはありますか?これを簡単に表示できるWebツールはありますか?

私はOpenBSD以上にリンクしているので/etc/servicessshdOpenBSDでこれを行う方法に主に興味があります。ただし、これを行うクロスプラットフォームの方法があり、単一のオペレーティングシステムに限定されない場合はそれを含めます。

答え1

コンテンツベースのファイアウォールルールを追加して、着信接続の最初の数バイトを分析できます。たとえば、Linuxではiptablesを使用します。

iptables -N notssh
iptables -A input -p tcp --dport 443 -m string --algo bm --from 0 --to 7 ! --string SSH-2.0 -j notssh

ルールのカウンタは、ルールnotsshが作成された後、またはリセットカウンタが使用されてからルールが実行された回数を提供しますiptables -Z notssh。個々のルールのカウンタもあります。

これは、TCP接続の最初のパケットが7バイト未満を含むSSHプロトコルへの接続を誤って計算しますが、実際にはそうではありません。

答え2

TCPクライアントのDNSは、次のようにシミュレートできます。dig(1)次のようになります(ボックス自体ではポートが翻訳されない可能性があるため、22明示的にポートを使用します)。domain

dig @example.org -p22 +tcp example.org

それとも:

dig @example.org -p22 axfr example.org

次の項目が発生しているようです/var/log/authlog

Jan 10 15:08:41 example sshd[21075]: Did not receive identification string from 64.124.xxx.xx
Jan 10 15:08:51 example sshd[22052]: Did not receive identification string from 64.124.xxx.xx
Jan 10 15:09:01 example sshd[24980]: Did not receive identification string from 64.124.xxx.xx

そしてhttps、

curl https://example.org:22/

次のエントリが生成されているようです(試行あたりのエントリ数はブラウザによって異なります)。

Jan 10 15:25:06 example sshd[9203]: Bad protocol version identification '\\026\\003\\001' from 64.124.xxx.xx

一部のHTTPS接続試行も、文字が1つ少なくなるようです。

Bad protocol version identification '\\026\\003' from

他の可能なすべてのバリエーションを識別できます。

% fgrep " sshd[" /var/log/authlog | cut -d" " -f7-12 | grep ^Bad | sort | uniq -c | sort -rn | head
 351 Bad protocol version identification '\\026\\003\\001' from
 110 Bad protocol version identification '\\026\\003\\001\\001E\\001' from
  91 Bad protocol version identification '\\026\\003\\002' from
  63 Bad protocol version identification '\\026\\003\\001\\001=\\001' from
  52 Bad protocol version identification '\\026\\003\\001\\002' from
  44 Bad protocol version identification '\\026\\003\\003' from
  21 Bad protocol version identification '\\026\\003\\001\\001?\\001' from
  16 Bad protocol version identification '\\026\\003\\001\\001B\\001' from
  13 Bad protocol version identification '\\026\\003\\001\\0017\\001' from
  10 Bad protocol version identification '\\026\\003' from

可能な要求も確認できますdomain

% fgrep " sshd[" /var/log/authlog | cut -d" " -f7-12 | grep ^Did | sort | uniq -c
 227 Did not receive identification string from

答え3

これはより複雑な解決策ですが、試してみることができます。sslh SSL/SSHマルチプレクサただし、DNSパケットチェックを手動で追加し、sslh元のクライアントのアドレス(viewDNS、allow/denyWebサーバー、およびfrom=SSH authorized_keys)が必要な場合は、透過モードで設定する必要があります。

関連情報