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


49

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

これはFreeBSDボックス上にありますが、どこでも適用できると思います。

回答:


25

ここだという件名に良いポストライナーWichmannによっては。

それを行うための論文の方法の長所と短所を説明しています:

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

39

fail2banを使用しますこれは、構成可能な時間内に何度か試行に失敗すると、IPをロックアウトします。

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


4
Fail2banは優れています。モニタは/ var / log / maillogにそれを拡張し、それが私のメールサーバー打つから永続的なスパマーを禁止するために取得するのは簡単だった
デイブチェイニー

Fail2banはTARPIT、(xtables-addonsから)気分が悪い場合は、ターゲットにtcpトラフィックを送信するiptablesチェーンと組み合わせることができます。
東武



15

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


1
もちろん、あなたのシステムがそれに耐えることができれば。
C.ロス

13
隠蔽によるセキュリティ、毎回有効。
クリスバランス

1
ポートをそれほど変更しなくてもかまいませんが、ほとんどのファイアウォール(自分のファイアウォールを除く)が一般的なポート(80、22、443など)以外のすべてのポートをロックダウンする傾向があることを学びました。それらのファイアウォールの背後にいる場合、その非標準ポートでホームサーバーにアクセスできません。私にとってはそれはノーゴーです。
悲嘆

@grieveはファイアウォールを変更してそのポートを許可しますか?
ロリー

@Roy私が所有しているもの以外のファイアウォールについて話している。たとえば、スターバックスから自宅のマシンにSSH接続したい場合、ファイアウォールが発信ポートをブロックします。それを変えることはできません。(例としてスターバックスを使用しました。実際にどのポートがブロックされているかどうかはわかりません)。
悲嘆

12

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

それに追加:

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

パブリックssh接続にアクセスする必要がある人または場所(フローティングパブリックIPを使用)は何人ですか?

維持するパブリックsshホストの数と、一般的な接続条件を絞り込むことができるかどうかによっては、少数の外部ホストへのアクセスを制限する、よりシンプルで保守可能な構成になる場合があります。

これがあなたのために働くなら、それはあなたの管理オーバーヘッドを本当に単純化できます。


2
ロックアウトされたくない場合を除き、何らかの種類のブラックリスト登録を行っている場合、ホワイトリスト登録は非常に重要です。
ライアー2009

2
積極的にホワイトリストに登録する場合は+1。
クリスバランス

3
絶対的なベストアンサーを持つために+1。これらの2つのことは唯一の合理的な手順であり、非常に効果的です。どちらかが単独で価値があり、両方が一緒になるとさらに価値があります。もう一方の答えは、あいまいさによるセキュリティの主張です。
dwc

11

他の良い提案に加えて、本当に簡単なことの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

それは2でHTTP標準セットにもかかわらず-私は何かを誤解されるかもしれないが、多くの主流のブラウザでは、一度に4-6接続間の接続
ジョシュアエンフィールド

1
はい、ポート80をレート制限しようとすると問題になります。Webブラウザでsshに接続しておらず、sshセッションは、次のような短命のステートレスセッションではなく、状態を維持する長命セッションです。 http。そのようなsshセッションの並列化は意味をなしません。これは、これが破られるというsshのニッチな使用法がないと言っているわけではありませんが、まれです。
シェルバン

私のように、sshでSubversionにサービスを提供している場合、このソリューションはあまり良くありません。1つのSVNクエリで、多数の接続をすばやく連続して作成できます。そのサービスを提供する場合、別のポートで2番目のsshdサービスを使用するか、既知のIPをホワイトリストに登録できます。私は、fail2banまたはsshdfilterを使用して、正当なユーザーを罰することなく、最初から明白な攻撃をキャッチすることを考えています。
水田

このオプションも知っておくといい
...-ZEE

6

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

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

例えば、

AllowUsers user1 user2@host.example.com

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

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


3

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

テーブル<SSH-ブルート>持続
ラベルssh_bruteのから迅速にログにブロックを
$ ext_ifプロトのtcpへ($ ext_if)ポートのsshモジュレート状態\上でのパス
(最大-SRC-CONN-率3/10は、世界的なフラッシュオーバーロード)


2

ポートノッキングは、この種のことを防ぐための非常に堅実な方法です。少し面倒で、時には迷惑ですが、間違いなく問題を解決します。


私はこれを試してみましたが、ユーザーはそれを迷惑に感じます。1人か2人だけの場合、これは良い選択肢であり、ブルートフォース攻撃をほぼ排除します。
ブレント

2

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

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

2

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

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


1

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


-1 DoS攻撃を聞いたことがありますか?
クリスバランス

8
ええ、SSHはブルートフォース攻撃を受けやすい唯一のサービスだからです。インターネットへのポートを開いている場合は、それを使用してマシンを忘却に追い込むことができます。おそらく...「を避けるため、DoS攻撃」に、あまりにも奇妙なポートでHTTPサーバーを置き、そしてポートの後ろにノック
womble

1

OSSECをインストールします。繰り返されるログインを監視するだけでなく、問題のあるipのiptablesで一時的なブロックに入ります。最後に、詳細が記載されたレポートが送信されます。それはすべてを記録します、それは素晴らしいです。Somoneはかつて8000を超えるログイン名でログインしようとしました。私はログを解析し、素晴らしいユーザーリストを入手しました;)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.