web-dev-qa-db-ja.com

fail2banはsshブルートフォースを禁止していませんが、正規表現は機能します

サーバーで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が禁止されないのはなぜですか?

よろしく、魚

16
fish

この質問はかなり古いですが、私は同じ問題に遭遇し、何度も検索した後、最終的に解決策を見つけました。

私の問題は、タイムゾーンの変更が原因でした。少し前に、次のコマンドを使用して正しいタイムゾーンを設定しました。

Sudo dpkg-reconfigure tzdata

私のシステム時間は大丈夫でしたが、auth.logのエントリの時間は確かにシフトしました。そして、これはfail2banの問題でした。auth.logのエントリを比較して、禁止、保持、または禁止解除する必要があるかどうかを確認する必要があります。ログに記録されたエントリは、時間が間違っているため、常に古すぎると見なされていました。

次のコマンドでsyslogデーモンを再起動する必要がありました。

Sudo service rsyslog restart

その後、auth.logで時間がシフトしなくなり、fail2banは正常に機能しました。

これがお役に立てば幸いです。

24
Louis-Marie

私はそれを再びグーグルで検索する前にここですべての解決策を試し、 ServerFault で答えを見つけました:

ランニング service rsyslog restartは私がする必要があるすべてでした、そして今それは期待通りに働きます(もちろん、ここのすべての解決策も必要だった可能性があります...)。この質問の投稿者とは異なり、私はログファイルを削除または編集したことがないので、なぜこれが私が知らない解決策であるのか。

10
user24601

わかりました、これは公式の解決策ではありませんが、機能します:

fail2banがアップグレードされ、禁止が停止されるまで3か月間完全に機能しました。私はこの問題を解決するためにどれほど懸命に調査したかを知ることができ、最終的にはこれが機能する唯一の方法です。

これはうまくいくはずです

 Sudo service fail2ban stop
 Sudo service fail2ban start

これは機能しません

Sudo service fail2ban restart

重要:別のデバイス(3Gセル)で意図的に失敗したsshログをテストして、fail2banが機能していることを確認します。そうでない場合は、サービスを停止/再開します。一部の刑務所が正しく読み込まれないことがあります。信頼することはありません!!!!!

追記:

  • Jail.localを使用する
  • 4つの刑務所が有効:ssh、dovecot、Apache、wootwoot
  • すべての刑務所は何ヶ月も問題なく魅力として働いています
  • Ubuntuサーバー14.04
  • fail2ban 0.9
7
Daniel Ramos

私が(Debianボックスで)この問題を抱えているとき、それはtzdataと間違った時間に関連する何かであることがよくあります。正規表現が機能する(そして機能している)場合、fai2banのトリガーを防ぐことができるのは、日付/時刻に問題があることだけです。 ntpをインストールして、日付を同期させてください。

4
eagle1

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
4
Daniel Ramos

Ubuntuのraring(13.04)ボックスでも同様の動作がありました。 Fail2banは、/ var/log/auth.logファイルの変更に気付かなかった。 jail.confファイルのbackend値を変更しても、何も変更されませんでした。

私はついに、Backportビルドを使用してFail2banの最新バージョンをインストールすることでこれを修正しました。これは、Fail2ban Webサイトの ダウンロードページ で説明されているようにNeuroDebianから入手できます。

2
Thomasleveil

これは、__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
1
D.Mill

Sshdのポートへの変更が有効になる前に、サーバーを再起動する必要があることがわかりました...ポートの変更は非常に効果的で簡単です。

0
carlos