LAMP環境(yum経由でインストールされたsshd)で最大ログイン試行回数を設定する最も簡単な方法は何ですか?パッケージまたは単純なファイアウォールルールはありますか?
LAMP環境(yum経由でインストールされたsshd)で最大ログイン試行回数を設定する最も簡単な方法は何ですか?パッケージまたは単純なファイアウォールルールはありますか?
回答:
Fail2banを使用します。私は過去にDenyhostsを使用しましたが、これも非常にうまく機能します。Fail2banの方が構成しやすく、複数の異なるサービス(たとえば、sshdとWebアプリのログインページを同時に監視できます(障害をログに記録する場合)を同時に処理できるため、今ではFail2banが気に入っています。
あなたが考慮するかもしれない別の方法は、LIMITルールを実装することiptables
です; 残念ながら、Shorewallをインストールする場合を除き、これを支援することはできません。次に、サイトの優れたドキュメントを参照して、LIMITルールを構成して、だれかがブルートする能力を制限する方法を説明します。 -サーバーを強制します。
サードパーティ製のツールを使用したくない。したがって、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
これをセットアップするためのSSHに関連付けられた特定のパッケージはありません。ただし、ConfigServer&FirewallであるCSFをインストールできます。
ファイルで2つの構成変更を行うことをお勧めします:/ etc / ssh / sshd_config
sshサーバーが同時に処理する非認証接続の最大数を制限します。これが小さいほど、スクリプトキディが複数の接続を使用して並行して協調的にクラッキングを試行することが難しくなります。sshd_configを編集し、MaxStartupsをデフォルトの「10」から「3:50:10」に変更します。コロンで区切られた値は、sshサーバーに「3人のユーザーが同時にログインを試行できるようにし、3から最大10までの接続試行をランダムにますますドロップする」ように指示します。注:相当数の有効なsshユーザーがログインしているサーバーでは、これを増やす必要があります。
切断する前にログインに成功できる最大時間を短縮します。デフォルトの2分は、認証されていない接続試行を開くには時間がかかりすぎます(上記を参照)。30秒はログインに十分な時間を超えています:
これには、これらの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分が経過するまで閉じられます。
-A INPUT -p tcp -m tcp --dport 22 -m limit --limit 48/hour -j ACCEPT
。
サーバーの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.