web-dev-qa-db-ja.com

IPv6でのSSHブルートフォース攻撃のブロック

最近、IPv6接続を備えたいくつかのサーバーで作業する必要がありましたが、fail2banがIPv6をサポートしておらず、denyhostsもサポートしていないことに驚きました。グーグルで検索すると、人々は一般的に次のことをお勧めします。

  • IPv6を介したsshログインの非アクティブ化(私にとっての解決策ではありません)
  • サーバー上で秘密鍵/公開鍵認証のみを使用し、パスワード認証は使用しません(機能しますが、攻撃が多いとサーバーに多くの処理能力がかかる可能性があり、DDoS攻撃によってサーバーが利用できなくなる可能性もあります)
  • ip6tablesを使用して、同じIPからの連続した攻撃をブロックする
  • iPv6をサポートするsshguardを使用する

これまでに収集したものから、IPv6でのアドレスの禁止はIPv4の場合とは少し異なります。これは、ISPがユーザーに単一のアドレス(/ 128)ではなく、サブネット全体(現在は/ 48)を提供するためです。したがって、単一のIPv6アドレスを禁止することは、攻撃に対して効果がありません。攻撃の検出時にip6tablesとsshguardブロッキングサブネットについて高低を検索しましたが、情報を見つけることができませんでした。

sshguardがIPv6攻撃でサブネットを禁止しているかどうか誰か知っていますか?
IPv6攻撃でサブネットを禁止するためのip6tables構成を作成する方法を知っている人はいますか?
または、誰かが私がすでに見つけたものよりも攻撃を軽減するより良い方法を知っていますか?

PS:システムでCentOS7を使用しています。

10
DarthRevan13

サーバーを攻撃するには、攻撃者はまずそのIPアドレスを知っている必要があります。 IPv6では、選択するアドレスが多すぎるため、IP範囲をスキャンして正しいアドレスを見つけることはできません。

つまり、インターフェイスに2つの異なるIPv6アドレスを割り当てるだけです。サイトのドメイン名が常に同じIPアドレスをポイントするようにし、sshdが新しく割り当てられたIPアドレスでのみリッスンするようにします。

その変更後、サイトのドメイン名とIPアドレスを知っていても、攻撃者がsshdにアクセスすることはできません。

もちろん、sshを使用して接続するときに使用する2次ホスト名が必要です。そのホスト名は、IPv6アドレスよりもはるかに多くのエントロピーを持つことができます。 63文字の英数字を使用する場合、sshのホスト名を推測することは考えられません。

誰かがsshdに使用されているIPv6アドレスを見つけた場合は、sshdを新しいIPv6アドレスに移動して、AAAAレコードを更新するだけです。それから彼らは最初からやり直す必要があります。

正当なsshユーザーがホスト名やIPアドレスを漏えいするのではないかと心配している場合は、sshでアクセスするユーザーごとに異なるホスト名を作成できます。最初は、更新するAAAAレコードが1つだけになるように、それらすべてを単一のホスト名にCNAMEします。

4
kasperd

fail2banが最近IPv6のサポートをリリースしたことは朗報です。

Debian IPv6サーバーの場合、私は このチュートリアル に従うことをお勧めします。

CentOS IPv6サーバーの場合は、ダウンロードしてください ここ 次に、バージョン番号を置き換えて次のコマンドを実行します。

tar xvfj fail2ban-0.11.0.tar.bz2
cd fail2ban-0.11.0
python setup.py install

/ etc/fail2ban/jail.localでsshdのjailが有効になっていることを確認してください。例:

[sshd]
enabled=1
0
ncomputers