答え1
もう一つは失敗2禁止、これはiptablesに依存します(したがって、sshだけでなくすべてのサービスで動作します)。 Fail2banを使用すると、次のことができます。
- すべてのログファイル(apache、ssh、nginx、メールサーバー...)のパスを指定します。
- 攻撃パターンを指定する正規表現(たとえば、同じIPに対して6秒以内にnginxアクセスログに「404エラー」が10個以上表示される)
- 特定のパターンを無視する正規表現を指定します(とても便利です!)
- ミュート時間の指定
- 電子メール(またはその他の通知...)を送信する
- 完全にカスタマイズ可能(通知とフィルタを直接作成できます)
DenyHostsの「欠点」の1つは、tcpラッパーが必要なため、/etc/hosts.denyファイルを確認するサービスでのみ使用できることです。しかし、DenyHostsを公平に考えると、sshdはほとんどのLinuxディストリビューションでTCP Wrappersを使用するようにコンパイルされます。また、DenyHostはfall2banよりも設定が簡単ですが、強力ではありません。
答え2
私はDenyHostsを使用して、少なくとも次の質問に答えることができます。
利点
- 完全自動化
- 設定可能です(ブラックリストにアップロードする前に失敗した試行回数、存在しないユーザー名、存在するユーザー名、およびルートの特殊エントリ)。
- 新しいブラックリストに登録されているホストのリストを定期的に電子メールで送信したり、新しいホストがブラックリストに登録されるたびに特定のプログラムを実行したりできます。
- 一定期間後のホストの自動ブラックリストのサポート
欠点
正しく使用する限り、回復不能な欠点はありません。
- デフォルト設定では、新しいブラックリストに登録されているホストについて警告しないため、誰かが何百もの異なるアドレスからネットワークを攻撃している場合は、手動でログを監視するのと同じくらいすぐに気付くことはできませんが(利点セクション)、新しいホストが追加された場合を送信するために電子メールを送信するか、実行可能ファイルを実行することができます。
- デフォルトでは、他のホストと同じようにあなたのホストをブラックリストに追加するので、に追加したいかもしれません
/etc/hosts.allow
。一度はパスワードを入力せずにロックされたことがあり、仕事で誰かが冗談で私のルートアカウントにログインし、私の会社のIPをブラックリストに登録しようとしました。突然接続できなくなったので、職場でネットワークに接続できなくなった理由を特定するのに数日かかりました。
答え3
スキャンベースの攻撃に対するシンプルで実際に効果的な保護は、標準ポートを使用しないことです。 443(httpsポート)は、脆弱なパスワードを復号化できず、デフォルトポート(22)よりも多くのファイアウォールを通過する可能性があるさまざまな無差別代入攻撃にさらされます。
SSHの無差別代入攻撃を防ぐほとんどの方法は、独自のDoS(こういう、構成を台無しにしました! そう、速いrsyncを何度も実行しましたが、今は禁止されています!)またはセカンダリ独自のDoS(こんな)を実行する良い方法です。攻撃者は私と同じサブネット(ダイナミックIP範囲、大学ネットワーク...)にあるコンピュータを破壊したので、私もブロックされました! )。
いくつかの場所でのみログインする場合は、送信元IPアドレスをホワイトリストに追加してください。外出先でノートパソコンや携帯電話でSSHを使用したい場合は、これは明らかに良いことではありません。
IPv6接続のみを受信するSSHデーモンを使用すると、数年間の検索から保護できます。ただし、多くのファイアウォールでは合理的な方法でIPv6転送を許可しません。
言及していない別の方法はポートノック。独自のDoS問題(誤った設定を除く)は発生しませんが、ファイアウォールをうまく通過できず、接続設定に数秒の遅延が追加されることがあります。
良いパスワードがある場合、またはパスワード認証なしで生活できる場合は、パスワード認証を無効にしてください。 (ほとんどのユースケースでは、キーと使い捨てパスワードで十分です。クライアントシステムがSSHキーを保存することを信頼しない限り、キーロガーなしでは信頼できません。)ではありません(鍵が他の人から来ていないことを確認した限り)。Debian 低エントロピー OpenSSL)。
通常、ポートを変更しても露出が大幅に減少することはありません。あなたは少なくなりますスキャンしかし、ブロックできるのは、古い脆弱性と脆弱なパスワードを悪用する努力の結果です。デーモンを最新の状態に保ち、合理的なパスワードや合理的な試行速度制限を適用する限り、ポートの切り替えはセキュリティ対策ではなく責任のように感じられます。