Меню

Как установить fail2ban centos

🐹 Fail2ban: Установка и настройка на CentOS 7.

Опубликовано 2019-10-13 · Обновлено 2020-10-29

Содержание:

1. Описание программы.

Fail2ban мониторит лог файлы (например, /var/log/secure и другие по вашему желанию) и при появлении в логах заранее настроенных событий (например, неверный пароль по ssh) блокирует удаленный компьютер, внося в цепочку iptables fail2ban-[что-то] IP этого удаленного компьютера. Время блокирования (вплоть до навсегда), количество неудачных попыток ввода пароля и другие параметры настраиваются вами на основании уже готовых шаблонов.

Описывая fail2ban в двух словах, можно сказать, что он позволяет на основе анализа логов блокировать тех, кто злоупотребляет доступностью сервера по сети. Например, защитить почтовые ящики от взлома путем перебора паролей или многократного запроса какого-либо ресурса.

2. Установка программы.

Первым делом установим fail2ban в систему с помощью yum.

Если не удалось, добавьте репозиторий EPEL.

3. Настройка программы.

Теперь необходимо отредактировать файл настроек, добавив туда информацию по направлению блокирования.

Открываем /etc/fail2ban/jail.conf и сморим его, в самом его верху можно прочитать:

# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Для примера настроим проверку подбора пароля ssh (из примера 3.1 этой инструкции). Для этого в файле /etc/fail2ban/jail.local найдем секцию [ssh-iptables] и установим параметры сработки правила и срок блокировки злоумышленника.

На что можно обратить внимание:

В данном случае отлаживать вряд-ли что-то надо, так как это предустановленное правило, к тому же максимально стандартное. Поэтому нам просто надо убедиться, что в файл /var/log/secure отражаются успешные и неудачные попытки логина по ssh (просто просмотрите этот файл — ваш заход тоже там отражен). Если все ок, сохраняем изменения и перезапускаем fail2ban:

# systemctl restart fail2ban

Перед тем, как проверять работу блокировки, не заблокируйте сами себя, тестируя работу. Лучше попытаться несколько раз неуспешно залогиниться с другого компьютера, чтобы в логе отразились эти попытки (я немного сократил лог, чтобы уместился по ширине):

Можно попробовать проверить, заблокирован ли 192.168.55.172:

В цепочке fail2ban-SSH должна быть запись о нашем неудачном хакере:

И повторная попытка соединения с 192.168.55.172 будет невозможна до истечения срока ограничения (в нашем случае 5 мин).

Если мы решим снять блокировку для этого IP, это можно сделать командой:

# fail2ban-client set ssh-iptables unbanip 192.168.55.172

3.1. Блокировка SSH.

Вот маленький пример, в котором если кто-то в течении 1 часа (3600) неверно ввел 5 раз пароль при подключении по ssh, то его IP будет блокирован на 5 часов (18000 сек):

Источник

Как установить Fail2Ban для защиты SSH на CentOS/RHEL 8?

Fail2ban — это бесплатный и широко используемый инструмент предотвращения вторжений с открытым исходным кодом, который мониторит файлы журналов на наличие IP-адресов, которые показывают вредоносные признаки, такие как слишком большое количество сбоев ввода паролей и многое другое, и запрещает их доступ (обновляет правила брандмауэра для отклонения этих IP-адресов). По умолчанию Fail2ban поставляется с фильтрами для различных сервисов, включая sshd.

Читайте также:  Как установить драйвер для принтера canon lbp 6020 для windows 8

В этой статье мы расскажем, как установить и настроить fail2ban для защиты SSH и повышения безопасности SSH-сервера от атак методом перебора на CentOS/RHEL 8.

Установка Fail2ban на CentOS/RHEL 8

Пакет Fail2Ban для защиты SSH отсутствует в официальных репозиториях, но доступен в репозитории EPEL. После входа в систему перейдите к интерфейсу командной строки, а затем включите репозиторий EPEL в своей системе, как показано ниже:

После этого установите пакет Fail2Ban для защиты SSH, выполнив следующую команду:

Настройка Fail2ban для защиты SSH

Файлы конфигурации fail2ban находятся в каталоге /etc/fail2ban/, а фильтры хранятся в каталоге /etc/fail2ban/filter.d/ (файл фильтра для sshd/etc/fail2ban/filter.d/sshd.conf).

Глобальным файлом конфигурации для сервера Fail2Ban для защиты SSH является /etc/fail2ban/jail.conf, однако не рекомендуется изменять этот файл напрямую, так как он, вероятно, будет перезаписан или улучшен в случае обновления пакета в будущем.

В качестве альтернативы рекомендуется создавать и добавлять свои конфигурации в файл jail.local или отдельные файлы .conf в каталоге /etc/fail2ban/jail.d/. Обратите внимание, что параметры конфигурации, установленные в jail.local, будут переопределять всё, что определено в jail.conf.

Для этой статьи мы создадим отдельный файл с именем jail.local в каталоге /etc/fail2ban/, как показано ниже:

Когда файл открыт, скопируйте и вставьте в него следующую конфигурацию. Pаздел [DEFAULT] содержит глобальные параметры, а [sshd] содержит параметры для sshd jail:

Давайте кратко объясним параметры в приведенной выше конфигурации:

Таким образом, приведенная выше конфигурация означает, что если у какого-то IP трижды произошел сбой за последние 5 минут, вы заблокируйте его на 6 часов и проигнорируйте IP-адрес 192.168.56.2.

Затем запустите и активируйте сервис fail2ban. Проверьте, работает ли он, используя следующую команду systemctl:

Мониторинг проблемных и заблокированных IP-адресов с помощью fail2ban-client

После настройки fail2ban для защиты sshd вы можете отслеживать проблемные и заблокированные IP-адреса с помощью fail2ban-client. Чтобы просмотреть текущее состояние сервера Fail2Ban для защиты SSH, выполните следующую команду:

Чтобы контролировать sshd jail, запустите:

Чтобы разбанить IP-адрес в fail2ban (во всех jails и базе данных), выполните следующую команду:

Для получения дополнительной информации о fail2ban прочитайте следующие справочные страницы:

Если у вас есть какие-либо вопросы или мысли, которыми вы хотите поделиться по этой теме, не стесняйтесь связаться с нами через форму обратной связи ниже.

Спасибо за уделенное время на прочтение статьи о том, как установить Fail2Ban для защиты SSH на CentOS/RHEL 8?!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Источник

Читайте также:  Как установить обтекатель на газель 3302

Настройка fail2ban в CentOS

fail2ban мониторит лог файлы (например, /var/log/secure и др. по вашему желанию) и при появлении в логах заранее настроенных событий (например, неверный пароль по ssh) блокирует удаленный компьютер, внося в цепочку iptables fail2ban-SSH IP этого удаленного компьютера. Время блокирования (вплоть до навсегда), количество неудачных попыток ввода пароля и другие параметры настраиваются вами на основании уже готовых шаблонов. Почти никаких шаманств.

Пример того, как потом будет ))

Вот маленький пример, в котором если кто-то в течении 1 часа (3600) неверно ввел 5 раз пароль при подключении по ssh, то его IP будет блокирован на 5 часов (18000 сек):

enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.com, sendername=»Fail2Ban»]
logpath = /var/log/secure

# in 1 hour
findtime = 3600

# time, sec
bantime = 18000

Обратите внимание на enabled = true. По умолчанию, fail2ban не банит все сервисы подряд, вызывая у вас головную боль. Только когда вы захотите контролировать что-то, вы это включаете.

Если предположить, что в нашем примере кто-то с IP 192.168.55.172 решил подобрать пароль на нашем сервере, то после 5 попыток подбора пароля fail2ban добавит его IP (192.168.55.172) в цепочку fail2ban-SSH:

Все, счастье хулигана закончилось.

Как это все сделать? Как всегда, ничего особо сложного.

Установка fail2ban

yum install fail2ban

Если не удалось, добавьте репозиторий EPEL:

и повторите yum install fail2ban.

Настройка fail2ban и борьба с подбором пароля по ssh

Правила для fail2ban хранятся в файле /etc/fail2ban/jail.conf, но если вы его откроете, то в самом его верху можно прочитать:

# YOU SHOULD NOT MODIFY THIS FILE.
#
# It will probably be overwitten or improved in a distribution update.
#
# Provide customizations in a jail.local file or a jail.d/customisation.local.

Т.е. этот файл может быть перезаписан при обновлении и все наши труды исчезнут. Предлагается использовать файл jail.local или jail.d/customisation.local. Файл /etc/fail2ban/jail.conf уже содержит в себе шаблоны для основных ситуаций, поэтому мы просто скопируем его в файл /etc/fail2ban/jail.local и будем по мере необходимости включать функционал.

# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Для примера настроим проверку подбора пароля ssh (из примера в начале статьи). Для этого в файле /etc/fail2ban/jail.local найдем секцию [ssh-iptables] и установим параметры сработки правила и срок блокировки злоумышленника ))

[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.com, sendername=»Fail2Ban»]
logpath = /var/log/secure

# in 1 hour
findtime = 3600

# time, sec
bantime = 300

На что можно обратить внимание:
enabled = true. Правило включено.
filter = sshd. Будет применен фильтр /etc/fail2ban/filter.d/sshd.conf.

# service fail2ban restart

Перед тем, как проверять работу блокировки, не заблокируйте сами себя, тестируя работу. Лучше попытаться несколько раз неуспешно залогиниться с другого компьютера, чтобы в логе отразились эти попытки (я немного сократил лог, чтобы уместился по ширине):

Читайте также:  Как установить защиту двигателя на форд фокус 2

.
Failed password for bigmama277 from 192.168.55.172 port 56803 ssh2
password check failed for user (bigmama277)
Failed password for bigmama277 from 192.168.55.172 port 56803 ssh2
.

Можно попробовать проверить, заблокирован ли 192.168.55.172:

В цепочке fail2ban-SSH должна быть запись о нашем неудачном хакере:

И повторная попытка соединения с 192.168.55.172 будет невозможна до истечения срока ограничения (в нашем случае 5 мин).

Если мы решим снять блокировку для этого ip, это можно сделать командой:

# fail2ban-client set ssh-iptables unbanip 192.168.55.172

Если вы хотите посмотреть, как именно сравниваются записи в лог файле, откройте файл /etc/fail2ban/filter.d/sshd.conf. В нем указаны регулярные выражения, на соответствие которым проверяется лог файл /var/log/secure.

Пример 2: fail2ban и Owncloud

Попробуем немного усложнить задачу и будем отслеживать попытки подбора пароля к сервису Owncloud (куда уж в наше время без своего облака. ).

Первым делом, добавляем в /etc/fail2ban/jail.local новую секцию [owncloud]:

[owncloud]
enabled = true

# define filter in /etc/fail2ban/filter.d/***.conf
filter = owncloud

action = iptables[name=Owncloud, port=https, protocol=tcp]

bantime = 18000
findtime = 3600
maxretry = 3

Директива filter = owncloud отсылает fail2ban к файлу-фильтру /etc/fail2ban/filter.d/owncloud.conf, который мы создадим чуть ниже.

По-умолчанию, owncloud сохраняет логи в своей директории в файл /var/www/html/owncloud/data/owncloud.log. По мне, логи лучше держать в директории /var/logs/, поэтому я перенастроил Owncloud на хранение логов в /var/log/owncloud.log:

# touch /var/log/owncloud.log
# chown apache:apache /var/log/owncloud.log

Если у вас веб-сервер работает от имени другого пользователя, замените apache:apache на ваш вариант.

‘logfile’ => ‘/var/log/owncloud.log’,
‘logtimezone’ => ‘Europe/Moscow’

# service httpd restart

Убедитесь, что в файл /var/log/owncloud.log стали записываться данные. Считаем, что все ок.

Создадим файл анализа лог-файла /etc/fail2ban/filter.d/owncloud.conf, с помощью которого fail2ban поймет, что кто-то ломиться через парадную дверь. Возможно, этот файл уже существует. nano создаст новый файл, если он не существовал раньше.

Формат лог-файла owncloud должен соответствовать формату парсинга fail2ban. Это касается в том числе формата даты событий в логе owncloud!

Fail2ban очень чувствительно отнесся к несоответствию временных зон в системном времени (команда date, например) и в настройках owncloud, который пишет в лог /var/log/owncloud.log о попытках ввода неверного пароля. Это несоответствие привело к тому, что абсолютно верно настроенные правила фильтрации не срабатывали, а в лог fail2ban шли записи вида:

fail2ban.filter.datedetector[17573]: DEBUG Matched time template ISO 8601
fail2ban.filter.datedetector[17573]: DEBUG Got time using template ISO 8601
fail2ban.filter [17573]: DEBUG Processing line with time:1415178183.0 and ip:192.168.22.133
fail2ban.filter [17573]: DEBUG Ignore line since time 1415178183.0 unconfined_u:object_r:httpd_log_t:s0
# service fail2ban restart

Вообще, SELinux вроде бы и полезная вещь, но порой можно поспорить, так ли он полезен. Например, на хабре пробовали проверить, насколько SELinux полезен. Просмотрите статью по ссылке по диагонали, хотя бы.

Источник

Adblock
detector