Введение
Все серверы, подключенные к Интернету, подвержены риску атак вредоносных программ. Например, если у вас есть программное обеспечение, подключенное к общедоступной сети, злоумышленники могут использовать попытки грубой силы, чтобы получить доступ к приложению.
Fail2ban — это инструмент с открытым исходным кодом, который помогает защитить ваш Linux-компьютер от грубой силы и других автоматических атак, отслеживая журналы служб на наличие вредоносной активности. Используйте регулярные выражения для анализа файлов журнала. Все записи, соответствующие шаблонам, подсчитываются, и когда их количество достигает определенного предопределенного порога, Fail2ban блокирует оскорбительный IP-адрес на определенный период времени. Системный брандмауэр по умолчанию используется в качестве переопределяющего действия. По истечении срока блокировки IP-адрес удаляется из списка банов.
В этой статье объясняется, как установить и настроить Fail2ban в CentOS 8.
Если вы хотите установить 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 на CentOS
Пакет Fail2ban зависит от пакетов, доступных только в репозитории программного обеспечения EPEL. Если репозиторий не включен в вашей системе, включите его, введя следующую команду от имени пользователя root или пользователя с привилегиями sudo:
sudo yum install epel-release
Теперь вы можете установить Fail2ban, напишите следующую команду:
sudo dnf install fail2ban
После завершения установки включите и запустите службу Fail2ban:
sudo systemctl enable --now fail2ban
Чтобы проверить, работает ли сервер Fail2ban, введите:
sudo systemctl status fail2ban
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2020-09-12 13:05:53 CEST; 5s ago
Docs: man:fail2ban(1)
Process: 1844 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)
Main PID: 1845 (f2b/server)
Tasks: 3 (limit: 12210)
Memory: 11.0M
CGroup: /system.slice/fail2ban.service
└─1845 /usr/bin/python3.6 -s /usr/bin/fail2ban-server -xf start...
Это все. На данный момент у вас есть Fail2Ban, работающий на вашем сервере CentOS.
Настроить Fail2ban
Установка Fail2ban по умолчанию поставляется с двумя файлами конфигурации /etc/fail2ban/jail.conf
и /etc/fail2ban/jail.d/00-firewalld.conf
. Эти файлы не следует изменять, так как они могут быть перезаписаны при обновлении пакета.
Fail2ban читает файлы конфигурации в следующем порядке:
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf
/etc/fail2ban/jail.local
/etc/fail2ban/jail.d/*.local
Каждый файл .local
переопределяет настройки в файле .conf
.
Самый простой способ настроить Fail2ban — скопировать содержимое файла jail.conf
в jail.local
и отредактировать файл .local
. Более опытные пользователи могут создать файл конфигурации .local
с нуля. Файл .local
не обязательно должен включать все настройки из соответствующего файла .conf
, а только те, которые вы хотите переопределить.
Создайте файл конфигурации .local
из файла jail.conf
по умолчанию:
sudo cp /etc/fail2ban/jail.{conf,local}
Чтобы начать настройку сервера Fail2ban, откройте файл jail.local
в текстовом редакторе. В этом уроке мы используем nano, в противном случае вы можете использовать любой другой редактор, например vi/vim:
sudo yum install nano
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 поставляется с несколькими джейлами для разных сервисов. Вы также можете создавать свои собственные конфигурации тюрьмы.
По умолчанию в CentOS 8 джейл не включен. Чтобы включить джейл, вам нужно добавить enable enabled = true
после названия джейла. В следующем примере показано, как включить тюрьму sshd
:
Настройки, которые мы обсуждали в предыдущем разделе, могут быть установлены для каждой тюрьмы.
Фильтры находятся в каталоге /etc/fail2ban/filter.d
, хранящемся в файле с тем же именем, что и джейл. Если у вас есть специальные настройки и опыт работы с регулярными выражениями, вы можете точно настроить фильтры.
Всякий раз, когда файл конфигурации изменяется, служба Fail2ban должна быть перезапущена, чтобы изменения вступили в силу:
sudo systemctl restart fail2ban
Fail2ban клиент
Fail2ban поставляется с инструментом командной строки под названием fail2ban-client
, который вы можете использовать для взаимодействия со службой Fail2ban.
Чтобы просмотреть все доступные параметры команды fail2ban-client
, вызовите ее с параметром -h
:
fail2ban-client -h
Этот инструмент можно использовать для запрета/разблокировки IP-адресов, изменения настроек, перезапуска службы и многого другого. Вот некоторые примеры:
Проверить статус джейла:
sudo fail2ban-client status sshd
Разблокировать IP:
sudo fail2ban-client set sshd unbanip 23.34.45.56
Заблокировать IP:
sudo fail2ban-client set sshd banip 23.34.45.56
Вывод
Мы показали вам, как установить и настроить Fail2ban на CentOS 8. Для получения дополнительной информации о настройке Fail2ban посетите официальную документацию.