web-dev-qa-db-ja.com

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

システムにブルートフォースSSH攻撃を仕掛けるIPを遮断するためのさまざまなパッケージがあります。例えば:

これらまたは他の利点/欠点は何ですか?

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

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

21
Andy Lester

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

長所

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

短所

あなたがそれを正しく使用している限り、私は修復不可能な短所はありません:

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

もう1つは fail2ban で、これはiptablesに依存しています(sshだけでなく、あらゆるサービスで機能します)。 fail2banを使用すると、次のことができます。

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

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

同様のSF質問への参照

19
Barthelemy

スキャンベースの攻撃に対するシンプルで実際的な効果的な保護は、標準ポートを使用しないことです。 443(httpsポート)は、弱いパスワードをクラックしないさまざまな総当たり攻撃にさらされ、デフォルトのポート(22)よりも多くのファイアウォールを通過する可能性があります。

Sshのブルートフォース攻撃を防ぐほとんどの方法は、自己DoS(おっと、設定を間違えた!おっと、たくさんのクイックrsyncを実行したため、今日は禁止されています!)またはAssisted-self-DoS(おっと、攻撃者は私と同じサブネット(動的IP範囲、大学のネットワーク...)にあるマシンから来た、または破壊したマシンであり、私も禁止されています!)。

いくつかの場所からのみログインする場合は、送信元IPアドレスをホワイトリストに登録できます。外出先でラップトップや携帯電話からsshを実行する場合は、明らかに問題があります。

IPv6接続のみをリッスンするsshデーモンがあると、数年前からスキャンから保護されているはずです。しかし、多くのファイアウォールでは、妥当な方法でIPv6を転送できません。

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

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

全体として、ポートを変更しても露出が大幅に減少するわけではないことに注意してください。あなたはより少ないスキャンを得るでしょう、しかしあなたが切り落とすことができるすべては古い脆弱性と弱いパスワードを悪用しようとするぶら下がっている果物です。デーモンを最新の状態に保ち、妥当なパスワードまたは妥当な試行率の制限を適用する限り、ポートの切り替えはセキュリティ対策よりも大きな責任となります。