Введение
Все серверы, доступные из Интернета, подвержены риску атак вредоносных программ. Например, если у вас есть приложение, доступное из общедоступной сети, злоумышленники могут использовать попытки грубой силы, чтобы получить доступ к приложению.
Fail2ban — это инструмент, который помогает защитить ваш Linux-компьютер от грубой силы и других автоматизированных атак, отслеживая журналы служб на предмет вредоносной активности. Используйте регулярные выражения для сканирования файлов журналов. Все записи, соответствующие шаблонам, подсчитываются, и когда их количество достигает определенного предопределенного порога, Fail2ban блокирует нарушающий IP-адрес с помощью системного брандмауэра на определенный период времени. По истечении срока блокировки IP-адрес удаляется из списка банов.
В этой статье объясняется, как установить и настроить Fail2ban в Debian 10.
Если вы хотите установить Fail2ban на удаленный сервер, продолжайте читать, в противном случае пропустите первый абзац «Подключение к серверу» и читайте следующий.
Подключение к серверу
Чтобы получить доступ к серверу, вам нужно знать IP-адрес. Вам также потребуется ваше имя пользователя и пароль для аутентификации. Чтобы подключиться к серверу как root, введите следующую команду:
ssh root@IP_DEL_SERVER
Далее вам нужно будет ввести пароль пользователя root.
Если вы не используете пользователя root, вы можете войти под другим именем пользователя с помощью той же команды, а затем изменить root на свое имя пользователя:
ssh nome_utente@IP_DEL_SERVER
Затем вам будет предложено ввести пароль пользователя.
Стандартный порт для подключения по ssh — 22, если ваш сервер использует другой порт, вам нужно будет указать его с помощью параметра -p, затем введите следующую команду:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Установите Fail2ban на Debian
Пакет Fail2ban включен в репозитории Debian 10 по умолчанию. Чтобы установить его, выполните следующую команду от имени пользователя root или пользователя с привилегиями sudo:
sudo apt update
sudo apt install fail2ban
После завершения служба Fail2ban будет запущена автоматически. Вы можете проверить это, проверив статус службы:
sudo systemctl status fail2ban
Вывод будет выглядеть следующим образом:
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-03-10 13:11:21 UTC; 45s ago...
Это все. На данный момент у вас есть Fail2Ban, работающий на вашем сервере Debian.
Настроить Fail2ban
Установка Fail2ban по умолчанию поставляется с двумя файлами конфигурации /etc/fail2ban/jail.conf
и /etc/fail2ban/jail.d/defaults-debian.conf
. Не изменяйте эти файлы, так как они могут быть перезаписаны при обновлении пакета.
Fail2ban читает файлы конфигурации в следующем порядке. Каждый файл .local
переопределяет настройки файла .conf
:
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf
/etc/fail2ban/jail.local
/etc/fail2ban/jail.d/*.local
Самый простой способ настроить Fail2ban — скопировать содержимое файла jail.conf
в jail.local
и отредактировать файл .local
. Более опытные пользователи могут создать файл конфигурации .local
с нуля. Файл .local
не обязательно должен включать все настройки соответствующего файла .conf
, а только те, которые вы хотите переопределить.
Создайте файл конфигурации .local
, скопировав файл jail.conf
по умолчанию:
sudo cp /etc/fail2ban/jail.{conf,local}
Чтобы начать настройку сервера Fail2ban, откройте файл jail.local
в текстовом редакторе:
sudo nano /etc/fail2ban/jail.local
Файл включает комментарии, описывающие, что делает каждый параметр конфигурации. В этом примере мы изменим основные настройки.
Белый список IP-адресов
Вы можете добавить IP-адреса, диапазоны IP-адресов или хосты, которые вы хотите исключить из бана, в директиву ignoreip
. Здесь вы должны добавить свой локальный IP-адрес ПК и любые другие машины, которые вы хотите добавить в белый список.
Раскомментируйте строку, начинающуюся с ignoreip
и добавьте свои IP-адреса через пробел:
Установить запрет
Параметры bantime
, findtime
и maxretry
позволяют вам установить время бана и условия бана.
bantime
— время, на которое блокируется IP-адрес. Когда суффикс не указан, по умолчанию используются секунды. По умолчанию время bantime
установлено на 10 минут. Большинство пользователей предпочитают устанавливать более длительный период бана. Измените значение на свое усмотрение:
Чтобы навсегда заблокировать IP, используйте отрицательное число.
findtime
— это продолжительность между количеством ошибок до установки бана. Например, если Fail2ban настроен на исключение IP-адреса после пяти ошибок ( maxretry
, см. ниже), эти ошибки должны произойти в течение времени findtime
.
maxretry
— количество ошибок до того, как IP-адрес будет забанен. По умолчанию установлено значение пять, что должно подойти большинству пользователей.
Уведомить по электронной почте
Fail2ban может отправлять оповещения по электронной почте, когда IP-адрес был заблокирован. Чтобы получать электронные письма, вам необходимо установить SMTP на вашем сервере и изменить действие по умолчанию, которое запрещает только IP %(action_mw)s
, как показано ниже:
%(action_mw)s
нарушающий IP-адрес и отправляет электронное письмо с отчетом whois. Если вы хотите включить соответствующие журналы в электронное письмо, установите действие %(action_mwl)s
.
Вы также можете изменить адреса отправки и получения электронной почты:
Fail2ban тюрьмы
Fail2ban использует концепцию тюрьмы. Тюрьма описывает службу и включает в себя фильтры и действия. Записи журнала, соответствующие шаблону поиска, подсчитываются, и при выполнении предопределенного условия выполняются соответствующие действия.
Fail2ban поставляется с несколькими джейлами для разных сервисов. Вы также можете создавать свои собственные конфигурации тюрьмы. По умолчанию включена только тюрьма ssh.
Чтобы включить джейл, вам нужно добавить enable enabled = true
после названия джейла. В следующем примере показано, как включить постфиксную тюрьму:
Настройки, которые мы обсуждали в предыдущем разделе, могут быть установлены для каждой тюрьмы. Вот пример:
Фильтры находятся в каталоге /etc/fail2ban/filter.d
, хранящемся в файле с тем же именем, что и джейл. Если у вас есть индивидуальная настройка и вы имеете опыт работы с регулярными выражениями, вы можете точно настроить фильтры.
Всякий раз, когда файл конфигурации изменяется, служба Fail2ban должна быть перезапущена, чтобы изменения вступили в силу:
sudo systemctl restart fail2ban
Fail2ban клиент
Fail2ban поставляется с инструментом командной строки под названием fail2ban-client
, который вы можете использовать для взаимодействия со службой Fail2ban.
Чтобы просмотреть все доступные параметры, вызовите команду с параметром -h
:
fail2ban-client -h
Этот инструмент можно использовать для бана/разблокировки (бана и разбана) IP-адресов, изменения настроек, перезапуска службы и многого другого. Некоторые примеры:
Получить текущий статус сервера:
sudo fail2ban-client status
Проверить состояние тюрьмы:
sudo fail2ban-client status sshd
Разблокировать IP:
sudo fail2ban-client set sshd unbanip 11.22.33.44
Заблокировать IP:
sudo fail2ban-client set sshd banip 11.22.33.44
Вывод
Мы показали вам, как установить и настроить Fail2ban в Debian 10.
Для получения дополнительной информации по этой теме посетите документацию Fail2ban.