SSH / SSHD-最大ログイン試行回数を設定する方法


17

LAMP環境(yum経由でインストールされたsshd)で最大ログイン試行回数を設定する最も簡単な方法は何ですか?パッケージまたは単純なファイアウォールルールはありますか?



@Hyppyありがとう、検索してみましたが、残念ながら、名前のわからない質問やスレッドがたくさんあります。
ジョンヒンメルマン

回答:


11

Fail2banを使用します。私は過去にDenyhostsを使用しましたが、これも非常にうまく機能します。Fail2banの方が構成しやすく、複数の異なるサービス(たとえば、sshdとWebアプリのログインページを同時に監視できます(障害をログに記録する場合)を同時に処理できるため、今ではFail2banが気に入っています。

あなたが考慮するかもしれない別の方法は、LIMITルールを実装することiptablesです; 残念ながら、Shorewallをインストールする場合を除き、これを支援することはできません。次に、サイトの優れたドキュメントを参照して、LIMITルールを構成して、だれかがブルートする能力を制限する方法を説明します。 -サーバーを強制します。


Fail2banは多くのディストリビューションのリポジトリで利用できるので、インストールは簡単です。私はDenyhostsを見たことはありませんが、だからと言って、それが一部ではないということでも、前回チェックしてから追加されていないということでもありません。
クローミー

v0.8.14のfail2banがiptables-multiportコマンドで正しく機能しないという問題に直面しました。:これは、新鮮なバージョンで解決fail2banの有用性の問題を知られている...ここで説明されgithub.com/fail2ban/fail2ban/issues/798私は、サーバーソフトウェアに開発されたセキュリティ・メカニズム、またサードパーティ製のユーティリティを信じているので...
ジョージガール

44

サードパーティ製のツールを使用したくない。したがって、ssh構成とファイアウォール設定の組み合わせを使用しました。次のソリューションを使用すると、攻撃者は2分間で3回のフォールトログインを許可されます。そうしないと、攻撃者は120秒間ブロックされます。

1)次の行を追加します /etc/ssh/sshd_config

MaxAuthTries 1

これにより、接続ごとに1回のログイン試行のみが許可されます。sshサーバーを再起動します。

2)次のファイアウォールルールを追加します

新しいチェーンを作成する

iptables -N SSHATTACK
iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7
iptables -A SSHATTACK -j DROP

各IPアドレスを120秒間ブロックし、120秒以内に3つ以上の接続を確立します。4回目の接続試行の場合、要求はSSHATTACKチェーンに委任されます。チェーンは、可能性のあるssh攻撃のログを記録し、最終的に要求をドロップします。

iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --set
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK

3)で可能なssh攻撃のログエントリを参照 /var/log/syslog

Dec 27 18:01:58 ubuntu kernel: [  510.007570] Possible SSH attack! IN=eth0 OUT= MAC=01:2c:18:47:43:2d:10:c0:31:4d:11:ac:f8:01 SRC=192.168.203.129 DST=192.168.203.128 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=30948 DF PROTO=TCP SPT=53272 DPT=1785 WINDOW=14600 RES=0x00 SYN URGP=0

2
驚くばかり!しかし、問題があります。フランスの一部の人/ボットは、ハッカーツールを正しく設定していないため、トラフィックが落ちてもログインし続けます。その結果、私のログにはこの男からのデータが毎秒いっぱいになります。これを回避する方法はありますか?
Smarties89

2
私のような経験の浅い人の場合:iptablesの行はbashプロンプトで入力され、どこかのファイルには入力されません。
アンドリュースウィフト

4

これをセットアップするためのSSHに関連付けられた特定のパッケージはありません。ただし、ConfigServer&FirewallであるCSFをインストールできます。

CSF

ファイルで2つの構成変更を行うことをお勧めします:/ etc / ssh / sshd_config

sshサーバーが同時に処理する非認証接続の最大数を制限します。これが小さいほど、スクリプトキディが複数の接続を使用して並行して協調的にクラッキングを試行することが難しくなります。sshd_configを編集し、MaxStartupsをデフォルトの「10」から「3:50:10」に変更します。コロンで区切られた値は、sshサーバーに「3人のユーザーが同時にログインを試行できるようにし、3から最大10までの接続試行をランダムにますますドロップする」ように指示します。注:相当数の有効なsshユーザーがログインしているサーバーでは、これを増やす必要があります。

  • デフォルト:MaxStartups 10
  • MaxStartups 3:50:10

切断する前にログインに成功できる最大時間を短縮します。デフォルトの2分は、認証されていない接続試行を開くには時間がかかりすぎます(上記を参照)。30秒はログインに十分な時間を超えています:

  • デフォルト:LoginGraceTime 2m
  • LoginGraceTime 30

3

これには、これらのIPTablesルールを使用します。

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 4 --rttl  --name SSH -j DROP

これにより、5分以内にIPアドレスからポート22へのTCP / SYNパケットが4つだけ許可されます。さらに試行を行う場合、ドアは5分が経過するまで閉じられます。


編集が必要なのは何ですか?
timkofu

ほぼ同じ:-A INPUT -p tcp -m tcp --dport 22 -m limit --limit 48/hour -j ACCEPT
アリックスアクセル

これら2つのiptablesコマンドをDebian Jessieで作成しましたが、同じIPアドレスから2秒ごとにSSHログイン試行を見ることができます。何か案は?
アレクセイオゼロフ

1

サーバーのsshd_configファイルに配置できるオプションがあります。

 MaxAuthTries
         Specifies the maximum number of authentication attempts permitted per
         connection.  Once the number of failures reaches half this value, additional 
         failures are logged.  The default is 6.

便利です(特に他の提案と組み合わせた場合)が、誰かが再接続し続けるのは簡単なので、それ自体では問題を実際には解決しません。
クローミー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.