2013-12-21 2 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/и т.д./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__, то формат даты был виновником. Он был установлен в _UTC_ в файле конфигурации owncloud. –

2

У меня было такое же поведение в ядре Ubuntu raring (13.04). Fail2ban не заметил изменений в файле /var/log/auth.log. Изменение значения backend в jail.conf файл ничего не изменил.

Я, наконец, исправил это, установив последнюю версию Fail2ban, используя сборки Backport, которые доступны на NeuroDebian, как описано на сайте download page с сайта Fail2ban.

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 

BTW, в верхней части 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 работает. Если нет, остановка обслуживания/запуск снова. Иногда некоторые тюрьмы загружаются неправильно. Никогда не верь!!!!!

EXTRA ПРИМЕЧАНИЕ:

  • Использование jail.local
  • 4 остроги включен: SSH, голубятня, Apache и wootwoot
  • Всех тюрем, работающие в качестве брелока в течение нескольких месяцев без какого-либо вопроса
  • сервера
  • Ubuntu 14,04
  • fail2ban 0,9
1

Иногда это я потому что __bsd_syslog_verbose ошибочен. fail2ban ожидает /var/log/auth.log начать с YYYY.MM.DD (то есть: 2014.10.15) пока журналы чтения MMM DD (т.е. 15 октября)

Чтобы это исправить, нужно сделать следующее:

cp /etc/fail2ban/filter.d/common.conf /etc/fail2ban/filter.d/common.local 

Редактировать common.local и установить:

__bsd_syslog_verbose = (<[^.]+ [^.]+>) 

Restart fail2ban:

Ubuntu (не используйте рестарт):

sudo service fail2ban stop 
sudo service fail2ban start 
10

Я перепробовал все решения здесь, прежде чем я Googled его снова и нашел ответ на 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

Я думаю, что syslog не может адаптироваться к новому часовому поясу, если он не перезапущен. Действительно, это то, что я заметил: дата/время записей в auth.log (сгенерировано syslog) были неправильными, пока я не перезапустил syslog. –

+0

Спасибо, ты спас мой день. Местное время моего сервера было неправильным. Я изменил его, и fail2ban теперь работает. – Furkan

Смежные вопросы