/var/log/auth.log
(Debian Buster)では次のようなログが多数表示されます。
Jan 2 17:10:17 mybox sshd[16304]: Received disconnect from 1.2.3.4 port 37792:11: Bye Bye [preauth]
Jan 2 17:10:17 mybox sshd[16304]: Disconnected from authenticating user root 1.2.3.4 port 37792 [preauth]
Jan 2 17:10:20 mybox sshd[16306]: Received disconnect from 5.6.7.8 port 63061:11: Bye Bye [preauth]
Jan 2 17:10:20 mybox sshd[16306]: Disconnected from authenticating user root 5.6.7.8 port 63061 [preauth]
Jan 2 17:12:38 mybox sshd[16380]: Received disconnect from 9.10.11.12 port 55224:11: Normal Shutdown, Thank you for playing [preauth]
Jan 2 17:12:38 mybox sshd[16380]: Disconnected from authenticating user root 9.10.11.12 port 55224 [preauth]
これらは侵入の試みであることはわかっています。なぜなら、誰も(私以外)そのマシンにログインしようとするべきではないからです。
には対応するルールがない/etc/fail2ban/filter.d/sshd.conf
ため、これらの試行によって fail2ban が問題のある IP アドレスを禁止することはありません。
パスワード ログインを無効にしているので、ここで起こっていることは、認証を試みる前にこれらの試行がドロップされ、そのため fail2ban がそれらを検出しないということだと思います。
しかし、これらが侵入の試みであることはわかっているので、他のことを試みてログを埋め尽くすのを防ぐために、IP を禁止したいと思います。
これらの行の一部に一致する正規表現を追加しても安全でしょうか、それとも正当な (キーベースの) ログイン試行に一致するリスクがあるでしょうか ? どの部分の組み合わせが安全でしょうか ? 「Disconnected」という単語と「[preauth]」というタグが一致すると、パスワードベースのブルート フォースが必ず失敗するのでしょうか ?
答え1
/etc/fail2ban/filter.d/sshd.conf には対応するルールがないため、これらの試行によって fail2ban が問題のある IP アドレスを禁止することはありません。
どのバージョンを使用していますか? Fail2Ban にはこれに関する定義済みのルールが付属しており、すべてのモードで使用される共通の failregex に含まれています。
私のシステムの 1 つにある Fail2Ban v0.10.2 には、次のルールが含まれています。
^<F-NOFAIL>Received <F-MLFFORGET>disconnect</F-MLFFORGET></F-NOFAIL> from <HOST>: 11:
そして、Fail2Ban v0.11.2 にはこれが含まれています (こちらの方が優れています):
^<F-NOFAIL>Received <F-MLFFORGET>disconnect</F-MLFFORGET></F-NOFAIL> from <HOST>%(__on_port_opt)s:\s*11:
どうやら開発者たちは、以下の行のいずれかが
Received disconnect from <HOST>: 11:
Received disconnect from <HOST> port XXXXX:11:
で十分です。関連するキーワードは、接尾辞ではなくReceived disconnect from
、部分です。: 11:
[preauth]
これ<F-NOFAIL>
は、この行が失敗ではなく、<F-NOFAIL>
IP を禁止せずに別の一致が期待されることを意味します。そのため、周囲のタグを削除する必要があります。
答え2
これらの行の一部に一致する正規表現を追加しても安全でしょうか、それとも正当な (キーベースの) ログイン試行に一致するリスクがあるでしょうか ? どの部分の組み合わせが安全でしょうか ? 「Disconnected」という単語と「[preauth]」というタグが一致すると、パスワードベースのブルート フォースが必ず失敗するのでしょうか ?
正当な接続と認証が成功した場合、このようなログ行はトリガーされません。これらのエントリは、害を及ぼすことはありませんが、ブロックされる可能性のあるスキャナーから発生する可能性があります。preauth は、それらのクライアントがまだ認証を開始していないことを意味します。
間違ったキーを使用したり、パスワードを誤って入力したりして、自分自身でログインに失敗しても、fail2ban を使用すれば問題ありません。fail2ban は、設定可能な数のログ行が一致した後に、一定の時間枠内でのみブロックします。
Debian buster では、このスニペット (例: cmdfailre) を使用できます。
^Received disconnect from <HOST>%(__on_port_opt)s:11: \s* %(__suff)s$
^Disconnected from authenticating user <F-USER>.*?</F-USER> <HOST>%(__on_port_opt)s %(__suff)s$
答え3
私は、jail.localファイルの[sshd]でmode = attackを設定することでこの機能を有効にしました。