ssh は攻撃が多いです.公開鍵認証にしておくと大分侵入に強くなりますがインターネットに直接繋がっているサーバでは攻撃はとても多いです.
Endlessh はsshd の代わりに起動してバージョン情報を送る前のデータにほぼランダムな文字列をゆっくりと配信し続けて攻撃者の足止めをするプログラムのようです.
本当の sshd は別ポートで起動してそっちを使う感じでしょうか.22番を無くして port knocking や sslh を使うなどのほうがいいかもですが面白そうです.
ということで手元で少し試してみました.
導入とビルド
$ git clone https://github.com/skeeto/endlessh $ cd endlessh $ git log |head -1 commit 548a7b1521b2912e7e133d0d9df50e0e514f1f2c $ make
port 22222 で起動
$ ./endlessh -v -p22222 & [1] 22698 2019-03-24T04:56:10.338Z Port 22222 2019-03-24T04:56:10.338Z Delay 10000 2019-03-24T04:56:10.338Z MaxLineLength 32 2019-03-24T04:56:10.338Z MaxClients 4096
ssh 接続してみると700分ほど捕まえていた
$ time ssh localhost -p 22222 2019-03-24T04:56:19.510Z ACCEPT host=::1 port=59402 fd=4 n=1/4096 ssh_exchange_identification: No banner received real 700m30.650s user 0m0.040s sys 0m0.240s 2019-03-24T16:37:00.162Z CLOSE host=::1 port=59402 fd=4 time=42040.652 bytes=73944
終了
$ kill %1 [1]+ Done ./endlessh -v -p22222
数回試しましたが,標準オプションでは700分前後捕まりました.単にありもののscriptを動かすレベルの攻撃者であればツールが対応するまでは妨害になりそうです.
環境
$ git log |head -1 commit 548a7b1521b2912e7e133d0d9df50e0e514f1f2c $ dpkg-query -W openssh-client openssh-client 1:7.9p1-9 $ lsb_release -dr Description: Debian GNU/Linux buster/sid Release: unstable $ uname -m x86_64