Улучшение безопасности вашего сервера должно быть одним из ваших главных приоритетов, когда дело доходит до управления Linux сервером. Просмотрев журналы вашего сервера, вы часто можете найти различные попытки для входа в систему с использованием брутфорса, веб-флудинга, поиска эксплойтов и многого другого. Если у вас еще нет сервера, то можно его арендовать по этой ссылке.
С помощью программного обеспечения для предотвращения вторжений, такого как fail2ban, вы можете проверить журналы своего сервера и добавить дополнительные правила iptables для блокировки проблемных IP-адресов.
В этом уроке вы узнаете, как установить fail2ban и настроить базовую конфигурацию для защиты вашей Linux-системы от брутфорс атак.
Требования
Fail2ban написан на Python, и единственным требованием является установка Python:
- Версии Fail2ban 0.9.x требуют Python> = 2.6 или Python> = 3.2
- Версии Fail2ban 0.8.x требуют Python> = 2.4
- Корневой доступ к вашей системе
- Опционально, iptables или showewall и sendmail
Как установить Fail2Ban в Linux-системах
Установка fail2ban относительно проста:
Установка Fail2Ban в CentOS/RHEL 7
Во-первых, обновите свои пакеты, включите Epel репозиторий и установите fail2ban, как показано ниже.
# yum update # yum install epel-release # yum install fail2ban
Установка Fail2Ban в Debian/Ubuntu
Сначала обновите свои пакеты и установите fail2ban, как показано.
# apt-get update && apt-get upgrade -y # apt-get install fail2ban
При желании, если вы хотите включить поддержку почты (для почтовых уведомлений), вы можете установить sendmail.
# yum install sendmail [Для CentOS/RHEL] # apt-get install sendmail-bin sendmail [Для Debian/Ubuntu]
Чтобы включить fail2ban и sendmail, используйте следующие команды:
# systemctl start fail2ban # systemctl enable fail2ban # systemctl start sendmail # systemctl enable sendmail
Как настроить Fail2ban в системах Linux
По умолчанию fail2ban использует файлы .conf
, расположенные в файле /etc/fail2ban/, которые считываются первыми. Однако они могут быть переопределены файлами .local
, расположенными в том же каталоге.
Таким образом, файл .local
не должен включать все настройки из файла .conf
, а будет включать только те, которые вы хотите переопределить. Изменения должны быть сделаны в файлах .local, не входящих в .conf. Это предотвратит переписывание изменений при обновлении пакета fail2ban.
Для этого урока мы будем копировать существующий файл fail2ban.conf в fail2ban.local.
# cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
Теперь вы можете внести изменения в файл .local
, используя ваш любимый текстовый редактор. Значения, которые вы можете изменить:
loglevel — это уровень детализации для записи. Возможные варианты:
- CRITICAL
- ERROR
- WARNING
- NOTICE
- INFO
- DEBUG
logtarget — регистрировать действия в определенном файле. Значение по умолчанию — /var/log/fail2ban.log . Однако вы можете изменить это:
- STDOUT — вывод любых данных
- STDERR — вывод любых ошибок
- SYSLOG — запись на основе сообщений
- File — вывод в файл
- socket — каталог, в который будет помещен файл сокета.
- pidfile — расположение файла pidfile.
Настройка Fail2ban jail.local
Одним из наиболее важных файлов в fail2ban является jail.conf
, который содержит настройки защиты конкретных сервисов. Здесь вы определяете службы, для которых fail2ban должен быть включен.
Как мы уже упоминали ранее, файлы .conf могут быть изменены во время обновлений, поэтому вы должны создать файл jail.local, в котором вы можете применить свои модификации.
Другой способ сделать это — просто скопировать файл .conf с помощью:
# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Если вы используете CentOS или Fedora, вам нужно будет изменить бэкэнд в jail.local с «auto» на «systemd».
Если вы используете Ubuntu/Debian, нет необходимости вносить эту модификацию, даже если они также используют systemd .
Файл jail включит SSH по умолчанию для Debian и Ubuntu, но не для CentOS. Если вы хотите включить его, просто измените следующую строку в /etc/fail2ban/jail.local :
[sshd] enabled = true
Время запрета и повтора
Вы можете настроить обстоятельство, после которого IP-адрес будет заблокирован. Для этой цели fail2ban использует bantime, findtime и maxretry.
- bantime — это количество секунд, в течение которого IP-адрес будет оставаться заблокированным (по умолчанию 10 минут).
- findtime — количество времени между попытками входа в систему до того, как хост заблокирован. (по умолчанию 10 мин). Другими словами, если fail2ban настроен на блокировку IP-адреса после 3 неудачных попыток входа в систему, эти 3 попытки должны выполняться в течение периода поиска (10 минут).
- maxretry — сколько попыток должно быть сделано до применения запрета. (по умолчанию 3).
Белые списки IP-адресов
Разумеется, вы захотите присвоить белый список определенным IP-адресам. Чтобы настроить такие IP-адреса, откройте файл /etc/fail2ban/jail.local с помощью вашего любимого текстового редактора и раскомментируйте следующую строку:
ignoreip = 127.0.0.1/8 ::1
Затем вы можете туда поместить IP-адреса, которые вы хотите игнорировать. IP-адреса должны быть разделены пробелом или запятой.
Уведомления по электронной почте
Если вы хотите получать оповещения по электронной почте по событию, вам необходимо настроить следующие параметры в файле /etc/fail2ban/jail.local :
- destemail — адрес электронной почты, где вы получите уведомление.
- Sendername — отправитель, которого вы увидите при получении сообщения.
- sender — адрес электронной почты, с которого fail2ban отправит электронные письма.
По умолчанию mta (агент передачи писем) установлен в sendmail.
Чтобы получить уведомление по почте, вам также необходимо изменить настройку «action» :
Action = %(action_)s
К одному из них:
action = %(action_mw)s action = %(action_mwl)s
- %(action_mw)s — заблокирует хост и отправит письмо с помощью отчета whois.
- %(action_mwl)s — заблокирует хост, предоставит информацию whois и всю соответствующую информацию из файла журнала.
Дополнительная конфигурация Fail2ban Jail
До сих пор мы рассматривали основные параметры конфигурации. Если вы хотите настроить секции, вам необходимо включить его в файл jail.local . Синтаксис довольно прост:
[jail_to_enable] . . . enabled = true
Где вы должны заменить jail_to_enable актуальной секцией, например «sshd». В файле jail.local следующие значения будут предопределены для службы ssh:
[sshd] port = ssh logpath = %(sshd_log)s
Вы можете включить фильтр, который поможет определить, является ли строка в журнале неудачной. Значение фильтра — это ссылка на файл с именем службы, за которым следует .conf. Например: /etc/fail2ban/filter.d/sshd.conf.
Синтаксис:
filter = service
Например:
filter = sshd
Вы можете просмотреть существующие фильтры в следующем каталоге: /etc/fail2ban/filter.d/.
Использование fail2ban-client
Fail2ban поставляется с клиентом, который может использоваться для просмотра и изменения текущей конфигурации. Поскольку он предоставляет множество опций, вы можете ознакомиться с его руководством с помощью:
# man fail2ban-client
Здесь вы увидите некоторые из основных команд, которые вы можете использовать. Чтобы просмотреть текущий статус fail2ban или конкретной тюрьмы, вы можете использовать:
# fail2ban-client status
Результат будет выглядеть примерно так:
Для отдельной секции вы можете запускать:
# fail2ban-client status sshd
На скриншоте ниже вы увидите, что я намеренно ошибся в нескольких входах, поэтому fail2ban может заблокировать IP-адрес, с которого я пытался подключиться:
Заключение
Fail2ban — отличная, хорошо задокументированная система предотвращения вторжений, обеспечивающая дополнительную безопасность вашей системы Linux. Это требует некоторого времени, чтобы привыкнуть к ее настройке и синтаксису, но как только вы познакомитесь с ним, вы сможете свободно изменять и расширять свои правила.