Как удалить fail2ban ubuntu

Обновлено: 04.07.2024

В этой статье мы вновь вернемся к теме безопасности сервера и расскажем, как защитить VPS при помощи программы Fail2ban. Основное ее предназначение — защита хоста от несанкционированного доступа, что возможно благодаря тщательному отслеживанию сетевой активности на основных портах и чтению журналов записей (лог-файлов). Программа особенно эффективна против так называемых brute-force атак, поскольку она нейтрализует атакующего таким образом, что все пакеты, отправленные с устройства, IP-адрес которого по той или иной причине попал в черный список, отбрасываются. Блокировка настраивается путем внесения изменений в правила iptables. Итак, приступим к настройке арендованного VPS сервера.

Содержание

Установка на Ubuntu 14.04

1. Для установки программы Fail2ban выполните следующие команды:

2. Для того, чтобы установленное программное обеспечение работало должным образом, вам необходимо внести поправки в конфигурационный файл. По умолчанию таковым является /etc/fail2ban/jail.conf.

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

Далее вам нужно будет выполнять редактирование только /etc/fail2ban/jail.local. Он будет подключен системой автоматически и имеет высший приоритет при исполнении.

3. Откройте файл jail.local для редактирования одной из команд: Если вам удобнее работать с редактором nano:

Если для вас предпочтительнее редактор vi:

Обратите внимание на секцию [DEFAULT].

Она содержит в себе основные правила, заданные по умолчанию для Fail2ban.

ignoreip — значения этого параметра говорят о том, какие IP-адреса блокироваться не будут вовсе. Если вы хотите, чтобы Fail2ban игнорировал при проверке несколько IP-адресов, их необходимо указать в значении ignoreip через пробел.

bantime — данный параметр означает время в секундах, в течение которого подозрительный IP будет заблокирован. Изначально его значение составляет 10 минут.

findtime — определяет промежуток времени в секундах, в течение которого программой будет определяться наличие подозрительной активности.

maxretry — допустимое число неуспешных попыток получения доступа к серверу. При превышении указанного значения IP попадает в бан.

Ниже будут представлены другие секции, при помощи которых можно настроить защиту различных сервисов, установленных на ваш виртуальный сервер, например, ssh, ftp и прочих. Подробная процедура их настройки будет рассмотрена в конце данной статьи в разделе «Настройка Fail2ban».

4. После редактирования jail.local обязательно сделайте перезапуск Fail2ban командами

Установка Fail2ban на CentOS 6.*

1. Чтобы установить программу на виртуальный сервер, выполните поочередно такие команды:

2. По аналогии с п. 2 в инструкции для Ubuntu создайте локальную копию конфигурационного файла и откройте этот файл для редактирования командами:

3. Активируйте защиту своего VPS там, где нужно, редактируя содержимое jail.local. Подробная инструкция по настройке представлена далее в разделе «Настройка Fail2ban». Внимательно следите за корректностью пути к файлу хранения логов в значении параметра logpath.

4. После редактирования конфигурационного файла перезапустите Fail2ban командой

Установка Fail2ban на Debian 7

1. Установка программы на VPS выполняется следующим набором команд:

2. Повторите п. 2 из двух предыдущих разделов для создания локальной копии конфигурационного файла jail.conf:

3. Настройка алгоритма работы Fail2ban задается точно таким же образом, как и для операционных систем Ubuntu и CentOS. Вам необходимо активировать нужные секции jail.local ([ssh], [apache] и прочие, в зависимости от портов, защиту которых вы хотите активировать) и сохранить результаты редактирования конфигурационного файла. Более подробное описание этой процедуры представлено ниже в разделе «Настройка Fail2ban».

4. После правки конфигурационного файла выполните перезапуск Fail2ban командой

Настройка Fail2ban

Первым делом настройте защиту своего VPS по протоколу SSH при помощи программы Fail2ban. Для этого найдите в файле jail.local секцию [ssh].

Она должна быть активна по умолчанию. Тем не менее, на всякий случай, убедитесь, что в значении параметра enabled установлено true, а не false.

Укажите значения параметров, на основании которых Fail2ban должен выполнять отслеживание активности:

filter — фильтр, который будет использоваться. По умолчанию это /etc/fail2ban/filter.d/sshd.conf;

action — действия, которые будет выполнять Fail2ban при обнаружении атакующего IP-адреса, все правила реагирования на действия злоумышленника описаны в файле /etc/fail2ban/action.d. Соответственно, в качестве значения параметра action не может быть указана информация, которой нет в файле /etc/fail2ban/action.d;

logpath — полный путь к файлу, в который будет записываться информация о попытках получения доступа к VPS.

findtime — время в секундах, в течение которого наблюдается подозрительная активность;

maxretry — разрешенное количество повторных попыток подключения к серверу;

bantime — промежуток времени, в течение которого попавший в черный список IP будет оставаться заблокированным.

Стоит обратить внимание на тот факт, что вовсе необязательно прописывать значения вышеуказанных параметров в каждой секции. Если их не упоминать, в действие вступят настройки, указанные в главном разделе [DEFAULT]. Главное, чтобы для переменной enabled было указано значение true.

Защита протокола SSH

Рассмотрим применение параметров реагирования более детально. Пример конфигурации Fail2ban на порту SSH:

В качестве значения переменной sender после fail2ban@ укажите домен либо хостнейм VPS.

Дополнительно для защиты SSH активируйте следующую секцию:

Для хранения больших списков заблокированных IP-адресов можно использовать комбинацию Netfilter/Iptables и IPsets. Чтобы настроить работу Fai2ban таким образом, активируйте раздел [ssh-iptables-ipset4]:

После правки конфигурационного файла сохраните внесенные изменения.

Аналогичным образом можно защитить и прочие сервисы.

Защита почтового сервера

Ниже представлены примеры настроек конфигурационного файла для защиты почтового сервера postfix.

Защиту почтового сервера dovecot можно активировать следующим образом:

Пример конфигурации jail.local для защиты roundcube:

Защита веб-сервера (apache)

Для защиты веб-сервера Apache можно использовать следующие настройки Fail2ban:

Как вы уже могли заметить, в используемых выше секциях файла jail.local отсутствуют значения параметра action. В этом случае при обнаружении атаки на сервис apache программа Fail2ban будет выполнять действие, определенное в секции [DEFAULT], а именно action = iptables-multiport. Это значит, что атакующий IP-адрес будет заблокирован в iptables при помощи так называемого модуля multiports. Модуль multiports позволяет настроить правило сразу для диапазонов портов.

Защита FTP сервера

Для защиты FTP-сервера vsftpd с помощью Fail2ban можно использовать следующие параметры:

Не забудьте о необходимости перезапуска Fail2ban после каждого редактирования конфигурационного файла.

На этом настройка Fail2ban завершена. Ознакомиться с полным списком правил, которыми программа будет руководствоваться при мониторинге активности на вашем VPS, можно с помощью команды sudo iptables –L

Основные моменты по установке и настройке программы рассмотрены. В случае, если какой-то IP-адрес будет заблокирован Fail2ban по ошибке, удалить его из черного списка можно командой:


Проверим список ip адресов:

Удалить, например, из таблицы fail2ban-roundcube ip можно с помощью команды:

Если брать мой пример, то стоит выполнить:

Можно еще раз вызвать команду:

Есть еще 1 способ это сделать, средствами самого fail2ban. Сейчас покажу как это можно сделать.

Выводим список всех наших клеток (jail):

Вывод списка IP для конкретной клетки ( для конкретного jail):

То для того чтобы разбанить ( удалить ИП с заблокированного листа) необходимо выполнить следующую команду:

Создадим скрипт для подчета количиства забаненных ИП во всех jail-ах:

Выставим права на данный файл:

запускаем данный скрипт:

Генерация простых отчетов.

Все из следующих команд можно запустить из командной строки или с помощью скрипта. Они написаны для систем Linux / UNIX, но может работать и на других платформах.

Группировка по IP адресу:

Примечание: переменная NF равна числу полей в каждой строке в лог файле. $NF является значением для последнего поля.

В конце вывода Вы получите:

Чтобы запустить этот отчет для всех логов нужно небольшое изменение:

И получите следующий вывод:

Какие конкретные IP-адреса участвуют:

Выход этого будет список IP-адресов, начинающихся с 91.201. Если они выглядят, как будто они частью подсети (или нескольких подсетей).

Группировка по IP адрес и имеми хоста:

Команда для включения хостов в списке немного сложнее. Вы также должны вставить правильный путь к программе logresolve, который преобразует IP-адресов для хостов (например /usr/sbin/logresolve ):

Примечание: Команда logresolve может занять некоторое время, особенно, если есть много IP-адресов, подлежащих обработке.

Вывод получим следующий:

Группировка по IP адресу и в разделе Fail2ban:

Это показывает нам, какие услуги каждый IP-адрес пытается открыть / использовать:
21

Вот отчет я считаю, полезно запускать до полуночи каждого дня, чтобы генерировать итоги деятельности за день:

Группировка по дате и раздел Fail2ban:

Этот отчет проверяет все Fail2ban лог-файлов и дает вам краткую информацию о том, сколько запрет мероприятия были для каждого раздела на каждый день:

date

16.12.2019

directory

CentOS, Linux

comments

комментария 3

Fail2ban позволяет блокировать доступ к серверу или запущенным службам на основе анализа логов доступа и подключений. Fail2Ban автоматически может создавать правила файервола для блокировки конкретных IP адресов, если действия с этого IP определяются как подозрительные. Так, Fail2Ban может защитить ваш сервер от перебора паролей по SSH, DDoS атак, попыток эксплуатации эксплоитов, выполнении запрещенных действий.

Любой сервис сервера, порты которого открыты во внешний мир, потенциально уязвим. Порты некоторых сервисов можно закрыть, но так можно поступить не со всеми. Например, если вы хотите, чтобы у вас полноценно работала почтовая SMTP служба, вы не можете отключить ее или заблокировать порт на firewall и время от времени в логах можно наблюдать записи о попытке подбора пароля к учетной записи. Так происходит и с другими сервисами.

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

Установка и первичная настройка Fail2Ban в CentOS 8/7

Пакет для установки fail2ban находится в репозитории Epel, подключим его:

После подключения репозитория, можно установить fail2ban через yum или dnf (в CentOS 8):

установка fail2ban в linux centos

Как и любой другой сервис, fail2ban нужно добавить в автозагрузку, чтобы он автоматически запускался при рестарте системы:

Использование Fail2Ban для защиты SSH от перебора паролей

Создадим файл и внесем настройки:

И добавим в него содержимое:

Данная конфигурация устанавливает новое время для блокировки IP адресовм для всех служб, устанавливает использование iptables для блокировок и включается защиту для sshd.

Чтобы использовать для фильтрации firewalld, укажите:

После изменения настроек перезапустите сервис:

Чтобы посмотреть статус fail2ban, и проверить список защищаемых службы, выполните команду:

Вы можете запросить текущий статус блокировок fail2ban для конкретной службы:

fail2ban-client status sshd

В файле jail.conf можно описать общие параметры, которые не будут переопределяться в jail.local.

Измените следующие значения:
bantime = 10m — время на которое будет заблокирован IP
findtime = 10m — время, в течение которого будут подсчитываться неудачные попытки авторизации.
maxretry = 3 — количество попыток до блокировки

Чтобы получать оповещения по электронной почте, вам нужно настроить следующие параметры:
destemail = root@build-centos.info –получатель
sender = root@build-centos.info — отправитель
mta = postfix — SMTP служба, через которую осуществляется отправка

Чтобы настроить блокировку для отдельных сервисов, в файле /etc/fail2ban/jail.local после блока [DEFAULT] создается блок для нужного сервиса, например, как с sshd. Добавим в него некоторые настройки:

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

Логи Fail2Ban

Чтобы проверить журнал fail2ban, выполните команду:

Так же можно проверить логи в реальном времени:

Как видите, fail2ban работает и периодически блокирует или убирает блокировку для IP адресов.

Чтобы проверить, какие IP адреса заблокированы в iptables службой fail2ban, выполните:

iptables - правила для блокировки конкретных IP

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

список заблокированных IP в fail2ban

Защита Apache с помощью Fail2Ban

После изменения конфигурационного файла, выполняем рестарт сервиса и проверяем статус:

Для теста, я установил на сервер Joomla, после чего пытался открыть несуществующий файл и fail2ban меня заблокировал:

Настройка связки Fail2Ban и Nginx

Нам нужно ли включить его в конфигурационном файле /etc/fail2ban/jail.local добавив:

После все проведенных настроек, не забываем выполнять перезагрузку сервиса:

Защита MySQL с помощью Fail2Ban

Для защиты MySQL нужно добавить отдельный блок в конфигурационный файл jail.local:

Данная настройка защитит вас от перебора паролей для пользователя mysql (это очень частый брутфорс).

mysqld-auth - правило fail2ban для mysql

Правила Fail2Ban для Exim

Чтобы настроить защиту для почтового сервиса exim, внесите следующую конфигурацию:

Таким образом вы можете настроить fail2ban для работы практически со всеми популярными сервисами и ваш сервер станет максимально безопасен.

Белый список IP в Fail2Ban, разблокировка IP-адресов

Чтобы разблокировать IP, который попал в блокировку fail2ban, используйте команду:

Вы можете добавить определенные IP адреса в исключения fail2ban (белый список). Для этого в конфигурационном файле jail.conf внесите IP в строку:

Добавив свой IP-адрес в исключения, я выполнил несколько атак подобно предыдущей и блокировки не произошло.

Как вы видите, fai2ban довольно просто в настройке, но вполне эффективное средство дополнительной защиты вашего сервера от злоумышленников. Для Windows к сожалению, я не видел бесплатных программ с подобным функционалом (можно попробовать реализовать блокировку IP адресов с помощью PowerShell – см. статью Защита RDP от перебора паролей).



Habib M’henni / Wikimedia Commons, CC BY-SA

В наше время поднять сервер на хостинге — дело пары минут и нескольких щелчков мыши. Но сразу после запуска он попадает во враждебную среду, потому что открыт для всего интернета как невинная девушка на рокерской дискотеке. Его быстро нащупают сканеры и обнаружат тысячи автоматически скриптовых ботов, которые рыскают по сети в поисках уязвимостей и неправильных конфигураций. Есть несколько вещей, которые следует сделать сразу после запуска, чтобы обеспечить базовую защиту.

Первым делом нужно завести для себя нерутового юзера. Дело в том, что у пользователя root абсолютные привилегии в системе, а если разрешить ему удалённое администрирование, то вы сделаете половину работы для хакера, оставив для него валидный username.

Поэтому нужно завести другого юзера, а для рута отключить удалённое администрирование по SSH.

Новый пользователь заводится командой useradd :


Затем для него добавляется пароль командой passwd :


Наконец, этого пользователя нужно добавить в группу, которая имеет право выполнять команды с повышением привилегий sudo . В зависимости от дитрибутива Linux, это могут быть разные группы. Например, в CentOS и Red Hat юзера добавляют в группу wheel :


В Ubuntu он добавляется в группу sudo :

Брутфорс или утечка паролей — стандартный вектор атаки, так что аутентификацию по паролям в SSH (Secure Shell) лучше отключить, а вместо неё использовать аутентификацию по ключам.

Есть разные программы для реализации протокола SSH, такие как lsh и Dropbear, но самой популярной является OpenSSH. Установка клиента OpenSSH на Ubuntu:


Установка на сервере:


Запуск демона SSH (sshd) на сервере под Ubuntu:


Автоматический запуск демона при каждой загрузке:


Нужно заметить, что серверная часть OpenSSH включает в себя клиентскую. То есть через openssh-server можно подключаться к другим серверам. Более того, со своей клиентской машины вы можете запустить SSH-туннель с удалённого сервера на сторонний хост, и тогда сторонний хост будет считать удалённый сервер источником запросов. Очень удобная функция для маскировки своей системы. Подробнее см. статью «Практические советы, примеры и туннели SSH».

На клиентской машине обычно нет смысла ставить полноценный сервер, чтобы не допускать возможность удалённого подключения к компьютеру (в целях безопасности).

Итак, для своего нового юзера сначала нужно сгенерировать ключи SSH на компьютере, с которого вы будете заходить на сервер:


Публичный ключ хранится в файле .pub и выглядит как строка случайных символов, которые начинаются с ssh-rsa .

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP username@hostname

Затем из-под рута создать на сервере директорию SSH в домашнем каталоге пользователя и добавить публичный ключ SSH в файл authorized_keys , используя текстовый редактор вроде Vim:

Наконец, установить корректные разрешения для файла:


и изменить владение на этого юзера:


На стороне клиента нужно указать местоположение секретного ключа для аутентификации:


Теперь можно залогиниться на сервер под именем юзера по этому ключу:


После авторизации можно использовать команду scp для копирования файлов, утилиту sshfs для удалённого примонтирования файловой системы или директорий.

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

Как упоминалось выше, в SSH нужно отключить аутентификацию для рута (по этой причине мы и заводили нового юзера).

На CentOS/Red Hat находим строку PermitRootLogin yes в конфигурационном файле /etc/ssh/sshd_config и изменяем её:


На Ubuntu добавляем строку PermitRootLogin no в конфигурационный файл 10-my-sshd-settings.conf :


После проверки, что новый юзер проходит аутентификацию по своему ключу, можно отключить аутентификацию по паролю, чтобы исключить риск его утечки или брутфорса. Теперь для доступа на сервер злоумышленнику необходимо будет достать приватный ключ.

На CentOS/Red Hat находим строку PasswordAuthentication yes в конфигурационном файле /etc/ssh/sshd_config и изменяем её следующим образом:


На Ubuntu добавляем строку PasswordAuthentication no в файл 10-my-sshd-settings.conf :


Инструкцию по подключению двухфакторной аутентификации по SSH см. здесь.

Файрвол гарантирует, что на сервер пойдёт только тот трафик по тем портам, которые вы напрямую разрешили. Это защищает от эксплуатации портов, которые случайно включились с другими сервисами, то есть сильно уменьшает поверхность атаки.

Перед установкой файрвола нужно убедиться, что SSH внесён в список исключений и не будет блокироваться. Иначе после запуска файрвола мы не сможем подключиться к серверу.

С дистрибутивом Ubuntu идёт Uncomplicated Firewall (ufw), а с CentOS/Red Hat — firewalld.

Разрешение SSH в файрволе на Ubuntu:


На CentOS/Red Hat используем команду firewall-cmd :


После этой процедуры можно запустить файрвол.

На CentOS/Red Hat запускаем сервис systemd для firewalld:


На Ubuntu используем такую команду:

Сервис Fail2Ban анализирует логи на сервере и подсчитывает количество попыток доступа с каждого IP-адреса. В настройках указаны правила, сколько попыток доступа разрешено за определённый интервал — после чего данный IP-адрес блокируется на заданный отрезок времени. Например, разрешаем 5 неудачных попыток аутентификации по SSH в промежуток 2 часа, после чего блокируем данный IP-адрес на 12 часов.

Установка Fail2Ban на CentOS и Red Hat:


Установка на Ubuntu и Debian:


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

Джейл для SSH включён по умолчанию с дефолтными настройками (5 попыток, интервал 10 минут, бан на 10 минут).


Кроме SSH, Fail2Ban может защищать и другие сервисы на веб-сервере nginx или Apache.

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

На сервере Ubuntu в конфигурации по умолчанию включены автоматические обновления безопасности, так что дополнительных действий не требуется.

На CentOS/Red Hat нужно установить приложение dnf-automatic и включить таймер:

SSH был разработан в 1995 году для замены telnet (порт 23) и ftp (порт 21), поэтому автор программы Тату Илтонен выбрал порт 22 по умолчанию, и его утвердили в IANA.

Естественно, все злоумышленники в курсе, на каком порту работает SSH — и сканируют его вместе с остальными стандартными портами, чтобы узнать версию программного обеспечения, для проверки стандартных паролей рута и так далее.

Смена стандартных портов — обфускация — в несколько раз сокращает объём мусорного трафика, размер логов и нагрузку на сервер, а также сокращает поверхность атаки. Хотя некоторые критикуют такой метод «защиты через неясность» (security through obscurity). Причина в том, что эта техника противопоставляется фундаментальной архитектурной защите. Поэтому, например, Национальный институт стандартов и технологий США в «Руководстве по безопасности сервера» указывает необходимость открытой серверной архитектуры: «Безопасность системы не должна полагаться на скрытность реализации её компонентов», — сказано в документе.

Теоретически, смена портов по умолчанию противоречит практике открытой архитектуры. Но на практике объём вредоносного трафика действительно сокращается, так что это простая и эффективная мера.

Номер порта можно настроить, изменив директиву Port 22 в файле конфигурации /etc/ssh/sshd_config. Он также указывается параметром -p <port> в sshd. Клиент SSH и программы sftp тоже поддерживают параметр -p <port> .

Параметр -p <port> можно использовать для указания номера порта при подключении с помощью команды ssh в Linux. В sftp и scp используется параметр -P <port> (заглавная P). Указание из командной строки переопределяет любое значение в файлах конфигурации.

Если серверов много, почти все эти действия по защите Linux-сервера можно автоматизировать в скрипте. Но если сервер только один, то лучше вручную контролировать процесс.

На правах рекламы

Закажи и сразу работай! Создание VDS любой конфигурации и с любой операционной системой в течение минуты. Максимальная конфигурация позволит оторваться на полную — 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe. Эпичненько :)

Читайте также: