ブルートフォースSSH攻撃をブロックするさまざまな方法の長所と短所は何ですか?


20

システムでブルートフォースSSH攻撃が開始されるIPをシャットダウンするためのさまざまなパッケージがあります。例えば:

これらの長所/短所、または他の何かは何ですか?

私の現在の解決策は、logwatchが毎日生成する電子メールを受け取って、悪質なIPアドレスをテキストファイルにダンプし、それをスクリプトにフィードしてからiptablesを再構築することです。それはハッキーで時間がかかり、手作業です。もっと良い方法が欲しいです。

(問題を解決するための「最良の」方法は何も尋ねなかったことに注意してください。何もするための「最良の」方法はないためです。)

回答:


15

私はDenyHostsを使用しているので、少なくともそのために答えることができます:

長所

  • 完全に自動です
  • 構成可能です(存在しないユーザー名、存在するユーザー名、およびルートの特別なエントリに対して、ブラックリストに登録するまでの試行の失敗回数)
  • 新しくブラックリストに登録されたホストのリストを定期的に電子メールで送信したり、新しいホストがブラックリストに登録されるたびに特定のプログラムを実行したりできます。
  • しばらくしてから自動的にホストをブラックリストから外すことをサポートします

短所

正しく使用する限り、取り返しのつかない短所はありません。

  • デフォルト設定では、新たにブラックリストに登録されたホストに警告しません。したがって、誰かが数百の異なるアドレスからネットワークを攻撃している場合、ログを手動で監視している場合のようにすぐには気付かないかもしれませんが、( prosセクション)それはあなたに電子メールを送るか、新しいホストが追加されたときに警告するために実行可能ファイルを実行できます
  • デフォルトでは、ホストは他のホストと同じようにブラックリストに登録されるため、おそらくそれらをに追加する必要があり/etc/hosts.allowます。パスワードの入力に失敗しただけでロックアウトし、職場の誰かがジョークとしてルートアカウントにログインして、職場のIPをブラックリストに登録しようとしたところ、突然接続できなかった理由を見つけるのに数日かかりました仕事から私のネットワークへ

19

もう1つは、iptablesに依存するfail2banです(したがって、sshだけでなく、あらゆるサービスで動作します)。fail2banでは、次のことができます。

  • 任意のログファイル(apache、ssh、nginx、メールサーバーなど)へのパスを指定します。
  • 攻撃パターンの正規表現を指定します(たとえば、6秒以内にnginxアクセスログの同じIPで10個を超える「404エラー」)
  • 特定のパターンを無視するように正規表現を指定します(非常に便利です!)
  • 禁止時間を指定する
  • メールを送信します(またはその他のアラート...)
  • 完全にカスタマイズ可能(独自のアラートとフィルターを作成できます)

DenyHostsの「デメリット」の1つは、tcpラッパーが必要なため、/ etc / hosts.denyファイルを参照するサービスでのみ機能することです。しかし、DenyHostsとの公平を期すために、sshdはほとんどのLinuxディストリビューションでTCPラッパーを使用するようにコンパイルされています。また、DenyHostsはfail2banよりも簡単に設定できます(ただし、強力ではありません)。

同様のSF質問への参照


fail2banのは、ありがたいことに、また、PFで動作します-ちょうどiptablesのではない
良い人

10

スキャンベースの攻撃に対する単純で実際的な効果的な保護は、標準ポートを使用しないことです。443(httpsポート)は、弱いパスワードを解読することのないさまざまなブルートフォース攻撃にさらされ、デフォルトのポート(22)よりも多くのファイアウォールを介して機能する可能性があります。

SSHのブルートフォース攻撃を防ぐためのほとんどの方法は、自己DoSに最適な方法です(おっと、構成を台無しにしました! 、攻撃者は私と同じサブネット(動的IP範囲、大学のネットワークなど)のマシンから来た/破壊されており、私も禁止されています!)。

数か所からしかログインしない場合は、送信元IPアドレスをホワイトリストに登録できます。外出先でラップトップや携帯電話からsshを実行したい場合、これは明らかに良くありません。

IPv6接続のみをリッスンするsshデーモンを使用すると、数年前からスキャンから保護されます。ただし、多くのファイアウォールでは、IPv6を合理的な方法で転送できません。

言及していないもう1つの方法は、ポートノッキングです。自己DoSの問題(設定ミス以外)の影響は受けませんが、ファイアウォールをうまく通過せず、接続の確立に数秒の遅延を追加する可能性があります。

適切なパスワードを持っている場合、またはパスワード認証なしで生活できる場合は、パスワード認証を無効にします。(キーとワンタイムパスワードは、ほとんどのユースケースで十分です。sshキーを格納するのに十分なクライアントマシンを信頼していない場合、キーロガーがないことも信頼しません)。その後、ブルートフォース攻撃はCPUと帯域幅を少し犠牲にしますが、侵入にさらされないでください(キーがどれもDebianの低エントロピーOpenSSLからのものでないことを確認した限り))。

全体として、ポートを変更しても露出が大幅に減少するわけではないことに注意してください。スキャンの回数は減りますが、カットできるのは、古い脆弱性と脆弱なパスワードを悪用しようとする手間のかからないことだけです。デーモンを最新の状態に保ち、妥当なパスワードまたは妥当な試行レート制限を強制する限り、ポートを切り替えることはセキュリティ対策よりも不利です。


1
自分自身を禁止しないようにするには、ある程度の練習が必要であることに同意します;-)デフォルトのポートを変更し、パスワードではなくパスワードで保護されたキーに依存することも良いアドバイスです。しかし、sshとWebサーバーが1時間あたり何千ものリクエストを拒否しなければならないのに、ボットネットワークにアクセスログファイルを入力させる理由を本当に知りません。fail2banを使用すると、アクセスログがクリーンになり、サーバーアプリケーションにはこのトラフィックがまったく表示されません(最初のXの不正な要求を除く:-))。
バーセレミー

非標準のポートを使用しても、保護はあまり強化されません。非標準ポートでのSSHのスキャンには、ポート22でのSSHのスキャンよりも数分しかかかりません(クラッカーがスキャンを実行し、スキャンがIDSによってブロックされていないと仮定します。ただし、IDSがある場合、ポートの難読化はおそらく不要です)。私がクラッカーであり、非標準のポートでSSHを見つけた場合、管理者がこのサービスは非表示にするのに十分貴重であり、セキュリティを不明瞭に依存していると考えているため、さらに興味があります。
ステファンLasiewski

1
@Stefan:ほとんどの攻撃は、特定のホストに対するものではなく、特定のサービスに対するものです。そのため、各アドレスの多くのポートよりも多くのアドレスの単一のポートをスキャンする方がはるかに効率的です。そして、実際に攻撃者があなたを標的にしている場合、あなたはよりよく知っているので、強力なまたは禁止されたパスワードと攻撃が記録されることを望むでしょう。
ジル 'SO-悪であるのをやめる'

1
@Stefan非標準ポートは迷惑(ブルートフォーススキャン)の効果的なソリューションであり、実際にはセキュリティ対策(つまり、誰かがサーバーを制御できないようにすること)ではありません。
バーセレミー

1
@sudowned別のポートを指定するのは面倒です。の1行だけ.ssh/configです。ファイアウォールが通過できない場合、ロックアウトは問題です。最も簡単な解決策は、ポート22に固執し、443でリッスンすることです。ポートを切り替えてもセキュリティが向上しないことに同意します。 。SSHデーモンがパスワード認証をサポートできないと考える理由がわかりませんsshd_config。最も一般的な実装であるOpenSSHに行を追加するだけです。
ジル「SO-悪であるのをやめる」
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.