2013-12-21 38 views
13

我剛剛注意到我的服務器上有一個ssh bruteforce,實際上它應該被fail2ban禁止,但由於某種原因它並沒有禁止它。大多數遇到fail2ban問題的人似乎都遇到了他們的正則表達式問題,這在這裏似乎沒有問題。fail2ban不禁止ssh bruteforce但正則表達式工作

部分的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正則表達式/var/log/auth.log的/ etc /的fail2ban /過濾器.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不禁止,即使我有很多正則表達式匹配?

問候, 魚

回答

4

經常當我有這樣的煩惱(在Debian框)它是涉及到的tzdata和錯誤的時間的東西。如果正則表達式起作用(並且它正在工作),那麼可以防止fai2ban被trggering阻止的唯一事情就是用日期/時間搞砸了。嘗試安裝ntp並保持同步你的日期。

+0

謝謝你的建議。一個NTP客戶端正在運行,至少/var/log/auth.log和/var/log/fail2ban.log使用相同的時區。但你可能是對的,我會嘗試尋找時區問題。 – fish

+0

與__owncloud 9__有同樣的問題,日期格式確實是罪魁禍首。它在owncloud的配置文件中設置爲_UTC_。 –

2

我在Ubuntu raring(13.04)盒子上有類似的行爲。 Fail2ban未能注意到/var/log/auth.log文件中的更改。 更改jail.conf文件中的backend值未改變任何內容。

我最終通過安裝最新版本的Fail2ban來解決這個問題,使用Backport構建可從NeuroDebian獲得,如Fail2ban網站上的download page所述。

4

Fail2ban不禁止和正則表達式匹配很多?這可能是你的監獄缺少禁令。你有兩個選擇:

選項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.local而不是jail.conf的建議。可能是它可幫助按照他們的指示:

To avoid merges during upgrades DO NOT MODIFY THIS FILE 
# and rather provide your changes in /etc/fail2ban/jail.local 
7

好吧,這不是一個官方的解決方案,但它的工作:

3個月完全工作,直到升級的fail2ban停止和禁止。我可以告訴我爲了解決這個問題有多難,最終這是唯一可行的方法。

這應該工作

sudo service fail2ban stop 
sudo service fail2ban start 

這將無法正常工作

sudo service fail2ban restart 

重要:測試與其他設備(3G蜂窩)故意失敗SSH登錄驗證的fail2ban工作。如果不是,服務停止/再次啓動。有時一些監獄沒有正確加載。永遠不要相信!!!!!

附加說明:

  • 使用jail.local
  • 4監獄啓用:SSH,達夫科特,Apache和wootwoot
  • 所有工作作爲一個魅力監獄幾個月沒有問題
  • Ubuntu的服務器14.04
  • fail2ban 0.9
1

有時這個i因爲__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 
10

我嘗試了所有的解決方案在此之前,我再次用Google搜索了一下,發現在ServerFault了答案:

運行service rsyslog restart是所有我需要做的,現在它按預期工作(當然還有的可能性,這裏所有的解決方案都是必須的.​​.....)。與這個問題的海報不同,我從不刪除或編輯日誌文件,所以爲什麼這是我不知道的解決方案。

0

我剛剛發現有必要重啓我的服務器,然後才能對sshd的端口進行更改......更改端口非常有效且簡單。

15

這個問題很老了,但是我遇到了同樣的問題,經過很多次的搜索,終於找到了解決辦法。

我的問題是由於我的時區發生了變化:前一段時間,我使用以下命令來設置我的正確時區。

sudo dpkg-reconfigure tzdata 

我的系統時間沒問題,但auth.log中條目的時間確實發生了變化。這是fail2ban的問題:它必須比較auth.log的條目,以檢查它是否必須禁止,保持或取消禁止...並且由於時間錯誤,記錄的條目總是被認爲太舊。

我不得不重新啓動系統日誌守護進程:

sudo service rsyslog restart 

然後,時間是不是在auth.log更多的轉移,併成功的fail2ban做其工作。

我希望這會有所幫助!

+2

感謝您解釋爲什麼重新啓動syslog守護程序是必要的。 – myartsev

+0

我想系統日誌不能適應新的時區,除非它重新啓動。 的確,這是我注意到的:auth.log中的條目的日期/時間(由syslog生成)在我重新啓動syslog之前是錯誤的。 –

+0

謝謝,你救了我的一天。我的服務器本地時間不正確。我改變了它,現在fail2ban正在工作。 – Furkan

相關問題