システムにブルートフォースSSH攻撃を仕掛けるIPを遮断するためのさまざまなパッケージがあります。例えば:
これらまたは他の利点/欠点は何ですか?
私の現在の解決策は、 logwatch が毎日生成する電子メールを受け取り、悪質なIPアドレスをテキストファイルにダンプして、スクリプトにフィードして、iptablesを再構築することです。これはハックで時間がかかり手動で行われるので、もっと良い方法が欲しいです。
(問題を解決するための「最善の」方法は何もないので、私は何を尋ねたのではないことに注意してください。)
私はDenyHostsを使用しているので、少なくともそれに答えることができます。
あなたがそれを正しく使用している限り、私は修復不可能な短所はありません:
/etc/hosts.allow
に追加することをお勧めします。パスワードの入力に失敗しただけで自分をロックアウトし、仕事の誰かがジョークとしてrootアカウントにログインしようとして、仕事用のIPをブラックリストに登録したところ、突然接続できなくなった理由を突き止めるのに数日かかった仕事から私のネットワークへもう1つは fail2ban で、これはiptablesに依存しています(sshだけでなく、あらゆるサービスで機能します)。 fail2banを使用すると、次のことができます。
DenyHostsの「欠点」の1つは、tcpラッパーが必要なため、/ etc/hosts.denyファイルを参照するサービスでのみ機能することです。しかしDenyHostsと公平を期すために、sshdはTCPほとんどのLinuxディストリビューションのラッパーを使用するようにコンパイルされています。また、denyHostsはfail2banよりもすぐに構成する方が簡単です(ただし、強力ではありません)。
スキャンベースの攻撃に対するシンプルで実際的な効果的な保護は、標準ポートを使用しないことです。 443(httpsポート)は、弱いパスワードをクラックしないさまざまな総当たり攻撃にさらされ、デフォルトのポート(22)よりも多くのファイアウォールを通過する可能性があります。
Sshのブルートフォース攻撃を防ぐほとんどの方法は、自己DoS(おっと、設定を間違えた!おっと、たくさんのクイックrsyncを実行したため、今日は禁止されています!)またはAssisted-self-DoS(おっと、攻撃者は私と同じサブネット(動的IP範囲、大学のネットワーク...)にあるマシンから来た、または破壊したマシンであり、私も禁止されています!)。
いくつかの場所からのみログインする場合は、送信元IPアドレスをホワイトリストに登録できます。外出先でラップトップや携帯電話からsshを実行する場合は、明らかに問題があります。
IPv6接続のみをリッスンするsshデーモンがあると、数年前からスキャンから保護されているはずです。しかし、多くのファイアウォールでは、妥当な方法でIPv6を転送できません。
あなたが言及しない別の方法は、 ポートノッキング です。自己DoSの問題(設定ミス以外)の影響は受けませんが、ファイアウォールをうまく通過できず、接続の確立に数秒の遅延が発生する可能性があります。
適切なパスワードを持っている場合、またはパスワード認証なしで生活できる場合は、パスワード認証を無効にします。 (ほとんどのユースケースでは、キーとワンタイムパスワードで十分です。sshキーを格納するのに十分なほどクライアントマシンを信頼していない場合は、キーロガーがないことも信頼できません)。次に、ブルートフォース攻撃を行うと、CPUと帯域幅が少し消費されますが、侵入にさらされることはありません(すべてのキーが Debian low-entropy OpenSSL からのものであることが確認されていない限り) 。
全体として、ポートを変更しても露出が大幅に減少するわけではないことに注意してください。あなたはより少ないスキャンを得るでしょう、しかしあなたが切り落とすことができるすべては古い脆弱性と弱いパスワードを悪用しようとするぶら下がっている果物です。デーモンを最新の状態に保ち、妥当なパスワードまたは妥当な試行率の制限を適用する限り、ポートの切り替えはセキュリティ対策よりも大きな責任となります。