Настройка Fail2Ban
Зачем использовать Fail2Ban?иоритетом для любого бизнеса или организации. Одним из наиболее важных инструментов в наборе инструментов системного администратора является Fail2Ban. В этом руководстве объясняется, что такое Fail2Ban и как его использовать для защиты вашего Linux-сервера от атак.Совет. Помимо Fail2Ban, попробуйте эти инструменты с открытым исходным кодом для защиты вашего сервера .
Что такое Fail2Ban?
Fail2Ban — это инструмент предотвращения вторжений, который отслеживает файлы журналов и блокирует IP-адреса, на которых проявляются признаки вредоносной активности. Для этого он создает «фильтры», соответствующие определенным шаблонам в файлах журналов, и выполняет действия, например блокирует IP-адрес, нарушающий правила.
Зачем Contents
Что такое Fail2Ban?
Contents
Есть несколько причин использовать Fail2ban. Он может:
- экономьте время, автоматически блокируя вредоносные IP-адреса.
- помогите защитить ваш сервер, уменьшив вероятность успешной атаки.
- вы будете спокойны, зная, что ваш сервер контролируется и защищается.
Установка Fail2Ban
По умолчанию Fail2Ban доступен в репозиториях Ubuntu. Установите его с помощью apt .
sudo add-apt-repository universe sudo apt update && sudo apt install fail2ban -y
Fail2Ban установит свою службу в фоновом режиме, но systemd по умолчанию отключит ее. Вы можете запустить и включить его с помощью следующих команд:
sudo systemctl start fail2ban sudo systemctl enable fail2ban
Убедитесь, что Fail2Ban запущен, с помощью следующей команды:
sudo systemctl status fail2ban
Вы увидите результат, похожий на изображение ниже.
Каталог «/etc/fail2ban» содержит файлы конфигурации Fail2Ban. По умолчанию Fail2Ban поставляется с файлом «jail.conf», содержащим настройки, которые будут применяться ко всем службам.
Однако рекомендуется создать локальный файл «jail.local» и переопределить настройки в «jail.conf», поскольку вы потеряете все изменения, внесенные в «jail.conf», при каждом обновлении программы.п>
Вы можете создать файл «jail.local» с помощью следующих команд:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Откройте файл Jail.local, чтобы отредактировать его:
sudo nano /etc/fail2ban/jail.local
Полезно знать : узнайте, как создайте SSH-приманку для поимки хакеров на вашем сервере .
Изучение файла Jail.local
Вы увидите результат, аналогичный приведенному ниже, и можете быть ошеломлены количеством доступных опций. Но не волнуйтесь, мы познакомим вас с наиболее важными опциями.
В начале строки вы увидите символ «#», указывающий, что это комментарий. Fail2Ban использует их, чтобы объяснить, что делает конкретный параметр. Вы можете включить некоторые настройки здесь, удалив этот символ.
Раздел «[DEFAULT]» содержит параметры, применимые ко всем тюрьмам. Это глобальная конфигурация Fail2Ban. На следующем снимке экрана показан пример этого.
Есть и другие разделы, которые начинаются с названия службы. Эта тюрьма применяется к конкретной службе поверх глобальных тюрьм.
Например, есть раздел для тюрьмы «sshd». В этом разделе содержатся параметры, специфичные для службы sshd.
Совет. вы также можете узнать больше об усилении защиты сервера к защита вашего SSH-сервера .
Включение функции автобана
Перейдите к настройке «bantime = 1h» и удалите символ «#» в начале строки, чтобы включить ее. Эта строка устанавливает продолжительность, в течение которой Fail2Ban будет отключать IP-адрес. По умолчанию единицей измерения является один час. Вы также можете использовать другие единицы измерения, например минуты (м), дни (д) или даже недели (нед).
Вы можете увеличить или уменьшить это значение по своему усмотрению. Например, вы можете изменить это значение на 30 м, чтобы сократить продолжительность бана до 30 минут.
Изменение длины окна входа по умолчанию
Следующие настройки — «maxretry» и «findtime». Они определяют, сколько попыток входа в систему может сделать злоумышленник, прежде чем Fail2Ban заблокирует его IP.
Значения по умолчанию для «maxretry» и «findtime» — 5 и 10 м. Если IP-адрес не сможет аутентифицироваться пять раз за десять минут, Fail2Ban заблокирует его на срок, указанный в настройке времени блокировки.
Вы можете изменить эти значения по своему усмотрению. Например, вы можете установить «maxretry» на 3 и «findtime» на 5m: Fail2Ban отключит IP-адрес, если он не сможет пройти аутентификацию три раза за пять минут.
Включение функции уведомления Fail2Ban
Следующие настройки: destemail
, sendername
и mta
. Эти настройки будут использоваться Fail2Ban для настройки уведомлений по электронной почте.
- Настройка
destemail
— это адрес электронной почты, на который программа будет отправлять уведомления.
sendername
— это имя, которое будет отображаться в поле «От» электронного письма с уведомлением.mta
— это агент передачи почты, который Fail2Ban будет использовать для отправки электронных писем. По умолчанию используется mta sendmail, но вы можете изменить его на что-то другое, например mail.
Если вы хотите получать уведомления по электронной почте, вам необходимо раскомментировать эти строки и ввести соответствующие значения, как показано.
Когда произойдет блокировка, вы получите уведомление по электронной почте с подробной информацией о блокировке, как показано ниже.
Создание пользовательских команд блокировки
Следующая настройка — «action_ =». Это определяет действие, которое Fail2ban предпринимает при блокировке IP-адреса. По умолчанию используется iptables для блокировки IP-адреса до тех пор, пока не пройдет «время бана».
Вы также можете использовать другие действия, как показано ниже. Для простоты в этом руководстве используются значения по умолчанию.
- action_mw: отправляет уведомление по электронной почте, когда IP-адрес заблокирован, с приложением соответствующей информации WHOIS.
- action_mwl: отправляет уведомление по электронной почте, когда IP-адрес заблокирован, к которому прилагается соответствующая информация WHOIS и записи файла журнала, вызвавшие блокировку.
- action_xarf: отправляет уведомление по электронной почте в формате X-ARF, когда IP-адрес заблокирован, с записями файла журнала, которые вызвали блокировку.
Доступно множество других действий, но охватить их все в это
Изменение длины окна входа по умолчанию
tps://www.fail2ban.org/wiki/index.php/MANUAL_0_8" target="_blank" rel="noopener" title="прочитать обо всех доступных действиях">прочитать обо всех доступных действиях в документации Fail2ban.Включение настройки для конкретной службы
Помимо настройки поведения Fail2ban по умолчанию, также можно использовать готовые «файлы фильтров» для некоторых распространенных интернет-сервисов. Это небольшие файлы, которые разработчики написали для поиска конкретных выходных данных журнала определенного демона сервера.
Например, файл apache-shellshock.conf содержит все необходимые настройки, позволяющие Fail2ban проверять любые злонамеренные попытки создать ошибку Shellshock.
Вы можете найти все доступные файлы фильтров для вашей системы, указав каталог «/etc/fail2ban/filter.d»:
ls /etc/fail2ban/filter.d
Как только вы определитесь с
Включение функции уведомления Fail2Ban
е Fail2ban, чтобы он загружал их во время запуска, открыв файл «jail.local»:sudo nano /etc/fail2ban/jail.local
Создайте место в «jail.local», где вы сможете активировать новые фильтры. Я создаю свой между заголовком комментария и блоком [INCLUDES]
.
Добавьте фильтры, которые хотите активировать. Например, следующий фрагмент я использую в своей конфигурации:
# Comments: use '#' for comment lines and ';' (following a space) for inline comments [sshd] enabled = true [nginx-bad-request] enabled = true [bitwarden] enabled = true [INCLUDES]
После этого сохраните и закройте файл. Перезапустите Fail2ban, чтобы применить изменения.
sudo systemctl restart fail2ban
Проверка вашей конфигурации
Теперь, когда вы настроили Fail2ban, пришло время его протестировать.
Самый простой способ проверить вашу конфигурацию — попытаться войти в систему с неверным паролем несколько раз подряд. Для этого вы можете использовать SSH-соединение.
На машине для утилизации попробуйте подключиться по SSH к вашему серверу Fail2ban, используя имя пользователя «admin». Замените «your_server_ip_address» фактическим IP-адресом вашего сервера Fail2ban.
ssh admin@your_server_ip_address
Введите случайный пароль при появлении запроса и повторите его несколько раз. После нескольких попыток вы увидите сообщение о то
Создание пользовательских команд блокировки
Помимо использования ssh, вы также можете протестировать другие файлы фильтров в Fail2ban, активировав их «состояние сбоя». В моем случае я использую фильтр «nginx-bad-request», который определяет, есть ли хост, который переполняет сервер недействительными запросами.
Зная это, вы можете протестировать эту функцию, намеренно отправляя пустые запросы на ваш веб-сервер с помощью Curl:
curl -H "User-Agent:" -H "Host:" https://yourwebsite.com -v
Полезно знать: хотя Fail2ban прекрасно работает с Nginx, вы также можете использовать эту программу для защитите свой сервер Apache .
Проверка действий Fail2ban
Наконец, запустите приведенную ниже команду на своем сервере Fail2ban, чтобы убедиться, что Fail2ban добавил необходимые правила в iptables.
Команда команда grep фильтрует вывод команды iptables
. Опция -S
указывает iptables печатать правила в формате, который можно легко проанализировать.
sudo iptables -S | grep f2b
Вы увидите результат, аналогичный показанному ниже. Аргумент «-reject-with icmp-port-unreachable» указывает iptables отправлять сообщение о недоступности порта ICMP обратно клиенту при попытке подключения. Вы также можете увидеть IP-адреса компьютеров, которые заблокировал сервер.
Совет : вам также следует используйте SELinux для защиты вашего сервера Linux .
Часто задаваемые вопросы
Почему я получаю пустое уведомление по электронной почте, когда Fail2ban блокирует IP-адрес?
Если вы получили пустое уведомление по электронной почте, скорее всего, вы неправильно настроили свой почтовый сервер. Проверьте конфигурацию вашего почтового сервера и убедитесь, что он может отправлять электронную почту.
Как разблокировать IP-адрес?
Сначала найдите тюрьму, в которой в данный момент заблокирован IP-адрес: sudo fail2ban-client status <jail_name>
, затем разблокируйте IP-адрес, выполнив следующую команду: sudo fail2ban-client set <jail_name> unbanip <ip_address>
.
Как просмотреть файл журнала Fail2ban?
Возможно, вы захотите просмотреть файл журнала Fail2ban, чтобы устранить неполадки или узнать, почему IP-адрес был заблокирован. Файл «/var/log/fail2ban.log» содержит все журналы, созданные Fail2ban. Используйте команду cat
для просмотра файла журнала Fail2ban: cat /var/log/fail2ban.log
.
Я включил несколько файлов фильтров. Почему они все не работают?
<див>
Эта проблема, скорее всего, вызвана тем, что фильтр перезаписал другой файл, который был до него. Один из способов исправить это — создать собственный файл фильтра, объединив несколько фильтров вместе.
Защитит ли Fail2ban мой сервер от DoS-атаки?
И да, и нет. По большей части Fail2ban сможет предотвратить отправку недействительных запросов на ваш сервер с любого IP-адреса. Однако одним из самых больших ограничений этой программы является то, что она не может реагировать на события, которые не создают записи в журнале. Таким образом, по-прежнему важно защитить ваш Linux-сервер, используя другие инструменты для защиты от подобных форм атак.
Автор изображения: Unsplash . Все изменения и скриншоты Рамсеса Реда.