サーバーでsshブルートフォースに気づきました。これは、実際にはfail2banによって禁止されているはずですが、何らかの理由で禁止されていません。 fail2banに問題があるほとんどの人は、正規表現に問題があるようですが、ここでは問題ないようです。
jail.confの一部
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
findtime = 6000
bantime = 86400
fail2ban-クライアントステータスssh
Status for the jail: ssh
|- filter
| |- File list: /var/log/auth.log
| |- Currently failed: 0
| `- Total failed: 0
`- action
|- Currently banned: 0
| `- IP list:
`- Total banned: 0
fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf
Running tests
=============
Use regex file : /etc/fail2ban/filter.d/sshd.conf
Use log file : /var/log/auth.log
Results
=======
Failregex
|- Regular expressions:
| [1] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*(?:error: PAM: )?Authentication failure for .* from <Host>\s*$
| [2] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*(?:error: PAM: )?User not known to the underlying authentication module for .* from <Host>\s*$
| [3] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*Failed (?:password|publickey) for .* from <Host>(?: port \d*)?(?: ssh\d*)?$
| [4] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*ROOT LOGIN REFUSED.* FROM <Host>\s*$
| [5] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*[iI](?:llegal|nvalid) user .* from <Host>\s*$
| [6] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*User .+ from <Host> not allowed because not listed in AllowUsers$
| [7] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*authentication failure; logname=\S* uid=\S* euid=\S* tty=\S* ruser=\S* rhost=<Host>(?:\s+user=.*)?\s*$
| [8] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*refused connect from \S+ \(<Host>\)\s*$
| [9] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*Address <Host> .* POSSIBLE BREAK-IN ATTEMPT!*\s*$
| [10] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\
S+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*User .+ from <Host> not allowed because none of user's groups are listed in AllowGroups\s*$
|
`- Number of matches:
[1] 0 match(es)
[2] 0 match(es)
[3] 380 match(es)
[4] 0 match(es)
[5] 353 match(es)
[6] 26 match(es)
[7] 0 match(es)
[8] 0 match(es)
[9] 0 match(es)
[10] 0 match(es)
Ignoreregex
|- Regular expressions:
|
`- Number of matches:
Summary
=======
Addresses found:
[1]
[2]
[3]
198.245.50.151 (Sat Dec 21 15:18:12 2013)
198.245.50.151 (Sat Dec 21 15:18:15 2013)
198.245.50.151 (Sat Dec 21 15:18:18 2013)
198.245.50.151 (Sat Dec 21 15:18:21 2013)
198.245.50.151 (Sat Dec 21 15:18:24 2013)
..................
Date template hits:
23379 hit(s): MONTH Day Hour:Minute:Second
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second Year
..................
Success, the total number of match is 759
正規表現の一致がたくさんあるのに、fail2banが禁止されないのはなぜですか?
よろしく、魚
この質問はかなり古いですが、私は同じ問題に遭遇し、何度も検索した後、最終的に解決策を見つけました。
私の問題は、タイムゾーンの変更が原因でした。少し前に、次のコマンドを使用して正しいタイムゾーンを設定しました。
Sudo dpkg-reconfigure tzdata
私のシステム時間は大丈夫でしたが、auth.logのエントリの時間は確かにシフトしました。そして、これはfail2banの問題でした。auth.logのエントリを比較して、禁止、保持、または禁止解除する必要があるかどうかを確認する必要があります。ログに記録されたエントリは、時間が間違っているため、常に古すぎると見なされていました。
次のコマンドでsyslogデーモンを再起動する必要がありました。
Sudo service rsyslog restart
その後、auth.logで時間がシフトしなくなり、fail2banは正常に機能しました。
これがお役に立てば幸いです。
私はそれを再びグーグルで検索する前にここですべての解決策を試し、 ServerFault で答えを見つけました:
ランニング service rsyslog restart
は私がする必要があるすべてでした、そして今それは期待通りに働きます(もちろん、ここのすべての解決策も必要だった可能性があります...)。この質問の投稿者とは異なり、私はログファイルを削除または編集したことがないので、なぜこれが私が知らない解決策であるのか。
わかりました、これは公式の解決策ではありませんが、機能します:
fail2banがアップグレードされ、禁止が停止されるまで3か月間完全に機能しました。私はこの問題を解決するためにどれほど懸命に調査したかを知ることができ、最終的にはこれが機能する唯一の方法です。
これはうまくいくはずです
Sudo service fail2ban stop
Sudo service fail2ban start
これは機能しません
Sudo service fail2ban restart
重要:別のデバイス(3Gセル)で意図的に失敗したsshログをテストして、fail2banが機能していることを確認します。そうでない場合は、サービスを停止/再開します。一部の刑務所が正しく読み込まれないことがあります。信頼することはありません!!!!!
追記:
私が(Debianボックスで)この問題を抱えているとき、それはtzdataと間違った時間に関連する何かであることがよくあります。正規表現が機能する(そして機能している)場合、fai2banのトリガーを防ぐことができるのは、日付/時刻に問題があることだけです。 ntpをインストールして、日付を同期させてください。
Fail2banは、多くのマッチングを禁止および正規表現していませんか?おそらくあなたの刑務所は禁止措置を逃しているのでしょう。 2つのオプションがあります。
オプション1)刑務所内[ssh]に含める
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
action = %(action_mwl)s # <<== THIS IS FOR BANNING
maxretry = 6
findtime = 6000
bantime = 86400
オプション2)これを書くだけですべての刑務所のグローバルアクションを含める(例)
# Choose default action. To change, just override value of 'action' with the
# interpolation to the chosen action shortcut (e.g. action_mw, action_mwl, etc) in jail.local
# globally (section [DEFAULT]) or per specific section
action = %(action_mwl)s
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
findtime = 6000
bantime = 86400
ところで、jail.confの上部で、jail.confの代わりにjail.localを使用するための推奨事項を読むことができます。彼らの指示に従うことが役立つかもしれません:
To avoid merges during upgrades DO NOT MODIFY THIS FILE
# and rather provide your changes in /etc/fail2ban/jail.local
Ubuntuのraring(13.04)ボックスでも同様の動作がありました。 Fail2banは、/ var/log/auth.logファイルの変更に気付かなかった。 jail.confファイルのbackend
値を変更しても、何も変更されませんでした。
私はついに、Backportビルドを使用してFail2banの最新バージョンをインストールすることでこれを修正しました。これは、Fail2ban Webサイトの ダウンロードページ で説明されているようにNeuroDebianから入手できます。
これは、__bsd_syslog_verbose
が間違っていることが原因である場合があります。 fail2banは、/ var/log /auth.logがYYYY.MM.DD
(つまり、2014.10.15)で始まることを想定していますが、ログはMMM DD
(つまり、10月15日)を読み取ります。
これを修正するには、次の手順を実行する必要があります。
cp /etc/fail2ban/filter.d/common.conf /etc/fail2ban/filter.d/common.local
common.local
を編集し、以下を設定します。
__bsd_syslog_verbose = (<[^.]+ [^.]+>)
Fail2banを再起動します:
Ubuntu(再起動を使用しないでください):
Sudo service fail2ban stop
Sudo service fail2ban start
Sshdのポートへの変更が有効になる前に、サーバーを再起動する必要があることがわかりました...ポートの変更は非常に効果的で簡単です。