Endlessh を使って ssh 接続をとてもゆっくりと処理して攻撃者に嫌がらせをする

ssh は攻撃が多いです．公開鍵認証にしておくと大分侵入に強くなりますがインターネットに直接繋がっているサーバでは攻撃はとても多いです．

Endlessh はsshd の代わりに起動してバージョン情報を送る前のデータにほぼランダムな文字列をゆっくりと配信し続けて攻撃者の足止めをするプログラムのようです．
本当の sshd は別ポートで起動してそっちを使う感じでしょうか．22番を無くして port knocking や sslh を使うなどのほうがいいかもですが面白そうです．

Endlessh: an SSH Tarpit « null program

ということで手元で少し試してみました．

導入とビルド

$ 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