web-dev-qa-db-ja.com

SSHに対するブルートフォース攻撃を防止しますか?

Sshポートに対するブルートフォース攻撃を防ぐためにどのツールまたはテクニックを使用しますか。私はセキュリティログで、sshを介してさまざまなユーザーとして何百万回もログインしようとしていることに気付きました。

これはFreeBSDの箱にありますが、どこにでも適用できると思います。

49
grieve

これが、Rainer Wichmannによる その件に関する良い投稿 です。

それを行うためのこれらの方法の長所と短所を説明します:

  • 強力なパスワード
  • RSA認証
  • 「iptables」を使用して攻撃をブロックする
  • Sshdログを使用して攻撃をブロックする
  • Tcp_wrappersを使用して攻撃をブロックする
  • ポートノッキング
25
paulgreg

私はfail2banを使用します。これは、構成可能な時間にわたって数回の試行が失敗した後にIPをロックアウトします。

これとパスワード強度テスト(john(John the Ripper)を使用)を組み合わせて、ブルートフォース攻撃が成功しないことを確認します。

39
Brent

あなたができる小さなことは、DenyHostsのようなものを使うことです:

http://denyhosts.sourceforge.net/

組み込みのhosts.allow/hosts.denyを使用して、SSHの乱用をブロックします。

24
hernan43
  • 使用するポートを変更しますTrent として)
  • パスワードの代わりに暗号化キーが必要ですhttp://novosial.org/openssh/publickey-auth/
  • Blacklist攻撃者のIP
  • Whitelist既知のユーザーは、偶発的なブラックリストを防止します。 (サミエラが言及したように)
16
Chris Ballance

これらの攻撃を回避する最も簡単な方法の1つは、sshdが待機するポートを変更することです。

15
trent

Chrisが指摘するように、パスワードの代わりに暗号化キーを使用してください。

それに追加:

  • 可能な場合はホワイトリストを使用してください。

パブリックssh接続に実際にアクセスする必要があるのは、フローティングパブリックIPを使用する人または場所の数です。

維持しているパブリックsshホストの数と、一般的な接続基準を絞り込むことができるかどうかに応じて、いくつかの外部ホストへのアクセスを制限する方が、シンプルでメンテナンス可能な構成になる場合があります。

これで問題が解決した場合は、管理のオーバーヘッドを本当に簡略化できます。

12
samt

他の優れた提案に加えて、本当に簡単なことの1つは、着信接続のレート制限です。 IPごとに1分あたり3接続に制限:

iptables -A INPUT -p tcp --dport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 3/min --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
11
sherbang

Sshd_configの「AllowUsers」オプションを使用して、少数のユーザーのみがログインできるようにします。他のユーザーは、ユーザー名とパスワードが正しい場合でも拒否されます。

ユーザーをログインに制限することもできますfrom特定のホスト。

例えば。、

AllowUsers user1 [email protected]

これにより、検索スペースが減り、誤って横に置かれたり、有効にされたりした古いユーザーを避けることができます(もちろん、これらのユーザーを無効にする必要がありますが、SSHベースのエントリに使用されないようにする簡単な方法です)。

これはブルートフォース攻撃を完全に阻止するものではありませんが、リスクの軽減に役立ちます。

6
David Gardner

そのようなものをPFで使用します。

テーブル<ssh-brute>持続
ラベルssh_bruteからのクイックログでブロック
$ ext_if proto tcpを($ ext_if)ポートに渡すssh変調状態\
(max-src-conn-rate 3/10、オーバーロードフラッシュグローバル)

3
CycyX

Port-knocking は、この種のものを排除するためのかなり確実な方法です。少し手間がかかり、時には煩わしいこともありますが、問題が解決することは間違いありません。

2
Luke

シェルバンのレート制限の提案 に加えて、遅延の長さが重要です。ログイン試行3回のグループ間の遅延を2分から20分に増やすことで、ログイン試行が3回を超えた異なるIPアドレスの数が減少し、1台のマシンで2週間の期間を44回から3回に比較。これらの3つのアドレスのいずれも、11時間以上試行を続けていませんでした。

非常に逸話的ですが、auth.logは私にとってずっと読みやすくなりました...

2
Charles Stewart

コンテキストは重要ですが、次のようなものをお勧めします。

  • FreeBSDを使用しているので、PFファイアウォールを実行し、しっかりした接続レート制限機能を使用することを検討してください。これにより、ブルートフォーサーが頻繁に接続する場合、ブルートフォーサーをブラックリストに送信できます。
  • このボックスに外部からアクセスする必要がある場合は、PF rdrルールを使用して、ポート22へのトラフィックを許可せずに、あいまいなポートをそこにリダイレクトすることを検討してください。つまり、22ではなくポート9122に接続する必要があります。これはあいまいですが、ノッカーを遠ざけます。
  • キーベースの認証のみに移行し、辞書攻撃を無用にすることを検討してください
2
Michael Gorsuch

気にしない。彼らは港でベルトを脱がせてください、彼らはキーをブルートフォースするつもりはありません。

1
womble

oSSECをインストールします。ログインの繰り返しを監視するだけでなく、問題のあるIPのiptablesを含む一時ブロックに入ります。そして最後に、詳細を記載したレポートを送信します。すべてをログに記録します。これはニースです。 Somoneはかつて8000を超えるログイン名でログインを試みました。私はログを解析し、ニースのユーザーリストを取り除きました;)

1
Marcin