Разное

Настройка fail2ban: Настройка и использование Fail2ban. Защита Linux от перебора паролей

25.07.2023

Содержание

Как настроить Fail2ban на CentOS и Ubuntu? Защита ssh.

Различные сервисы на вашем сервере доступные из сети (SSH, Apache, Nginx, Asterisk) зачастую подвержены брут-форс атакам. Самая распространенная проблема это подбор пароля от SSH логина администратора. Для защиты от таких атак идеально подойдет Fail2ban. Fail2ban умеет просматривать логии различных сервисов на сервере и на их основе менять правила фаервола. Например заблокировать IP адрес злодея в iptables.

В данной инструкции мы рассмотрим, как установить и настроить Fail2ban на сервере с CentOS или Ubuntu.

Установка на CentOS 7

Т.к. данный сервис  не доступен в официальном репозитарии CentOS, то сначала установим пакеты EPEL:

sudo yum install epel-release

И уже теперь установим сам Fail2ban:

sudo yum install fail2ban

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

Сервис доступен в официальном репозитарии, но сначала рекомендуем обновить базу доступных пакетов:

sudo apt-get update

После чего устанавливаем утилиту:

sudo apt-get install fail2ban

Начальная настройка

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

/etc/fail2ban

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

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Также вы можете создавать файлы  с индивидуальными настройками в папке /etc/fail2ban/jail.d/ . Подобнее мы рассмотрим это далее. Настройки из этих файлов будут подтягивать и заменять указанные в jail.conf  в ходе работы Fail2ban. Настройки применяются из файлов в следующем порядке:

  1. /etc/fail2ban/jail.conf
  2. /etc/fail2ban/jail.d/*.conf, — любые файлы с расширением conf. Применяются в алфавитном порядке.
  3. /etc/fail2ban/jail.local
  4. /etc/fail2ban/jail. d/*.local, — любые файлы с расширением local. Применяются в алфавитном порядке.

Все файлы могут содержать секцию [DEFAULT], содержимое которой будет применяться в первую очередь. Также в них могут содержаться секции для отдельных сервисов, так называемые  «jails».

Давайте сначала рассмотрим настройки по умолчанию, а затем сделаем собственные.

Если открыть файл jail.conf, то в нем в разделе [DEFAULT]

находятся следующие основные параметры:

ignoreip = 127.0.0.1/8

Трафик с данных IP адресов не будет подвергаться анализу, игнорироваться при проведении проверки. Своего рода «белые список».

bantime = 600

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

findtime = 600

Указывается в секундах. Устанавливает период времени в течение которого подсчитывается количество срабатываний правил, после которого надо применять фильтр (бан).

Работает в паре со следующим параметром «maxretry». Значения по умолчанию означают что если правило сработает 3 раза за 600 секунд, то IP адрес будет добавлен в бан.

maxretry = 3

Количество попыток. См. пояснение к параметру «findtime».

destemail = root@localhost

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

sendername = Fail2Ban

Работает в паре с «destemail». Определяет кто будет указан в качестве отправителя email нотификаций.

mta = sendmail

Работает в паре с «destemail». Определяет через какой сервис будут отправляться email.

action = $(action_)s Данный параметр определяем какой действие необходимо предпринять при срабатывании правила. Список возможных значений находится выше в файле jail.conf. Рассмотрим наиболее популярные:

action_ — простое изменение параметров фаервола.

action_mw – помимо настройки фаервола будет отправлена email нотификация.

action_mwl  — помимо настройки фаервола будет отправлена email нотификация с примером записи из лога.

В случае использования последних двух вариантов не забудьте сделать необходимые настройки email нотификации (см. выше).

Настройки для отдельных сервисов

После раздела [DEFAULT] идут индивидуальные настройки для каждого сервиса. Обычно они включают в себя параметр port, которые необходимо блокировать и logpath – логии которые необходимо анализировать на предмет атаки. Например, для SSH «jail» уже включен по умолчанию в /etc/fail2ban/jail.local и имеет следующие настройки:

[sshd]
# To use more aggressive sshd filter (inclusive sshd-ddos failregex):
#filter = sshd-aggressive
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

В данном примере ssh это предопределенная переменная для стандартного SSH порта. А %(sshd_log)s использует значение, которое определяется в других стандартных настройках Fail2ban. Параметр filter определяет является ли строка в логах индикатором об ошибочной авторизации или нет. По сути это отсылка к регулярным выражениям, которые находятся в файлах .conf  в папке /etc/fail2ban/filter.d. Правила формирования регулярных выражений мы не будем рассматривать, т.к. они достаточно сложные.

По умолчанию

«jail» для отдельных сервисов выключены. Чтобы включить необходимо в jail.local в разделе сервиса добавить параметр:

enabled = true

Давайте сделаем это для SSH. Раздел sshd в /etc/fail2ban/jail.local  будет выглядеть следующим образом:

[sshd]
enabled = true
# To use more aggressive sshd filter (inclusive sshd-ddos failregex):
#filter = sshd-aggressive
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

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

sudo systemctl restart fail2ban

 

Проверка и мониторинг работы

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

sudo systemctl status fail2ban

В случае проблем, логи можно посмотреть следующим образом:

sudo journalctl -b -u fail2ban

А также тут:

sudo tail -F /var/log/fail2ban. log

Чтобы увидеть статус всех «jail» или только из них можно воспользоваться следующими командами:

sudo fail2ban-client status
sudo fail2ban-client status «jail_name»

Например: 

sudo fail2ban-client status sshd

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

sudo iptables –S

Тестирование защиты SSH

Чтобы убедиться что сделанные нами настройки fail2ban верны. Можно эмулировать атаку. Для этого попробуйте подключиться к серверу под защитой Fail2ban с другого сервер / устройства по SSH и ввести неверный пароль от учетной записи. Повторите эти действия несколько раз.

Важно! Не рекомендуем делать это на устройстве с которого вы в данный момент конфигурируете сервер, т.к. в случае успеха ваша текущее соединение будет сброшено.

В случае верных настроек, когда блокировка fail2ban сработает, при попытке подключения вам будет показано предупреждение Permission denied или отказано в доступе к серверу.

На сервере с fail2ban в текущих настройках Firewall вы также найдете строку с описанием блокировки:

sudo iptables –S
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -j DROP
-A fail2ban-ssh -s 0.0.0.0/32(ваш IP) -j REJECT --reject-with icmp-port-unreachable
-A fail2ban-ssh -j RETURN

Вторая снизу строка в данном примере означает что ваш указанный IP адрес был заблокирован.

Как просмотреть список заблокированных IP

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

sudo fail2ban-client status «jail_name»

Чтобы увидеть список активных jails введите:

sudo fail2ban-client status

Заблокированные IP адреса будут указаны в следующем виде:

`- action
   |- Currently banned: 2
   |  `- IP list:       1.1.1.1 2.2.2.2

Также как указывалось выше заблокированные IP можно найти в данных iptables командой:

sudo iptables –S

Как разблокировать IP адрес

Для того чтобы разблокировать ( удалить / достать из бана) IP адрес, необходимо ввести команду:

fail2ban-client set  «jail_name» unbanip «IP адрес»

Например:

fail2ban-client set  sshd unbanip 1. 1.1.1

 

Укрепление Nginx с помощью Fail2ban: тестируем и оцениваем профит

«Только запустил Nginx-приложение, а в access.log уже десятки записей с непонятными запросами, переборами паролей и другого» — типичная ситуация для незащищенного сервера. Это следствие работы «ботов» для сканирования белых сетей, поиска открытых портов, сбора информации о версиях запущенных служб и подбора паролей к сервисам.

В статье расскажу, как с помощью open source-инструмента Fail2ban укрепить Nginx и защитить сервисы от взлома. А также продемонстрирую способы блокирования DDoS-атак.

Базовая защита в Nginx

Nginx — это не только быстрый и гибкий веб-сервер, но и довольно безопасный, если правильно его настроить. Рассмотрим пару примеров. 


Защита от Clickjacking. С помощью встроенного параметра X-Frame-Options в HTTP-ответе веб-сервера можно задать разрешение страницы в фреймы и iframe — и свести вероятность уязвимости Clickjacking к минимуму.  

Защита от DDoS. Если правильно «откалибровать» размеры клиентского буфера, можно снизить влияние DDoS-атак. Также с помощью команд deny и allow можно настроить доступ к приложению с определенных IP-адресов и сетей.


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

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

Для автоматизированной отработки атак лучше использовать специальный софт — в нашем случае это Fail2ban. Но для начала давайте посмотрим, что будет, если атаковать беззащитный сервер.

Атака незащищенного веб-сервера

В рамках статьи рассмотрим два вида атак, в которых промежуточным звеном будет Nginx, а целью хакера — некое веб-приложение.

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


Wazuh — это комплексная open source-платформа для обеспечения мониторинга безопасности. С помощью нее можно:

  • закрыть потребность в полноценном SIEM-решении, 
  • обеспечить реагирование на инциденты, 
  • собирать логи со множества систем и аналитику корреляции событий. 

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


Посмотрим, что будет, если атаковать Nginx-сервер без защиты Fail2ban.

Имитация DoS-атаки

Суть атаки сводится к тому, чтобы «забить» канал связи бессмысленным трафиком и исчерпать ресурсы сервера. При этом нелегитимные запросы должны отработать до такой степени, чтобы было невозможно обработать легитимные. В качестве такой атаки будем рассматривать флуд HTTP-запросами — для этого используем Siege. Он отлично подходит для стресс-тестов HTTP-приложений. 

Нагрузим сервер запросами в 100 конкурентных пользователей. 

root@kali:~# siege -t 1m -c 100 http://192.168.100.3/admin
** SIEGE 4.0.4
** Preparing 100 concurrent users for battle.
The server is now under siege...
Lifting the server siege...
Transactions:		      206090 hits
Availability:		      100.00 %
Elapsed time:		       59.83 secs
Data transferred:	       40.13 MB
Response time:		        0.03 secs
Transaction rate:	     3444.59 trans/sec
Throughput:		        0.67 MB/sec
Concurrency:		       99.05
Successful transactions:      206271
Failed transactions:	           0
Longest transaction:	        0.32
Shortest transaction:	        0.00

В мониторинге видим график, содержащий большое количество запросов.

Непроизводительный веб-сервер на таком количестве запросов может ощутимо загрузить процессор. Запустив параллельно несколько источников запроса, можно и вовсе «положить» сервер.

Имитация Bruteforce

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

root@kali:~# curl http://192.168.100.3/admin
<html>
<head><title>401 Authorization Required</title></head>
<body bgcolor="white">
<center><h2>401 Authorization Required</h2></center>
<hr><center>nginx/1.14.0 (Ubuntu)</center>
</body>
</html>

Аутентификация на странице 192.168.100.3/admin настроена. При обращении к ней обычный пользователь получает 401 ошибку. 

На хосте для атаки создадим списки с логинами и паролями соответственно. С помощью инструмента patator и модуля http_fuzz «забрутим» страницу с базовой аутентификацией Nginx. 

Результат — «всплески» в разделе Security Events мониторинга Wazuh.  

Для Bruteforce все пары логин-пароль были обработаны сервером Nginx, блокирования не произошло. Если бы хактевист потратил больше времени на перебор, сервис был бы взломан.

Последствия Bruteforce и DoS-атак могут быть критичными для реального проекта. Поэтому попробуем подключить и настроить Fail2ban — решение, которое может защитить веб-сервер от потенциальных простоев, утечек данных и другого.

Переносите, храните и обрабатывайте данные по 152-ФЗ.

Установка и базовая настройка Fail2ban

Fail2ban — это open source-приложение для фильтрации подключений. С помощью него можно создать специальную «клетку» jail, куда будут записываться вредоносные IP-адреса из iptables, и установить, например, сроки блокирования.

Установим и настроим пакет Fail2ban — он есть в стандартных репозиториях Ubuntu, поэтому можно воспользоваться менеджером пакетов. 

sudo apt install fail2ban -y

После выполнения команды в каталоге /etc/fail2ban/ появятся файлы конфигурации.

admin@nginx:~# ll /etc/fail2ban/
total 92
drwxr-xr-x  6 root root  4096 Dec 13 17:50 ./
drwxr-xr-x 86 root root  4096 Dec 11 18:10 ../
drwxr-xr-x  2 root root  4096 Nov 25 05:56 action.d/
-rw-r--r--  1 root root  2334 Jan 18  2018 fail2ban.conf
drwxr-xr-x  2 root root  4096 Apr  4  2018 fail2ban.d/
drwxr-xr-x  3 root root  4096 Dec 13 17:30 filter.d/
-rw-r--r--  1 root root 22959 Dec 11 19:11 jail.conf
drwxr-xr-x  2 root root  4096 Dec 11 19:03 jail.d/
-rw-r--r--  1 root root   645 Jan 18  2018 paths-arch.conf
-rw-r--r--  1 root root  2827 Jan 18  2018 paths-common.conf
-rw-r--r--  1 root root   573 Jan 18  2018 paths-debian.conf
-rw-r--r--  1 root root   738 Jan 18  2018 paths-opensuse.conf

Из этого списка нас интересуют следующие файлы:

  • /etc/fail2ban/jail.conf — содержит нативные параметры для поиска совпадений в логах.
  • /etc/fail2ban/filter.d/nginx-limit-req.conf — нужен для отслеживания количества обращений к странице и скорости ее обработки. Может пригодиться для блокирования DoS- и bruteforce-атак.
  • /etc/fail2ban/filter.d/nginx-http-auth.conf — нужен для обнаружения и блокирования bruteforce-атак на базовую аутентификацию Nginx.

По умолчанию в конфиге Fail2ban такие настройки рассматриваемых модулей:

[nginx-http-auth]
port    = http,https
logpath = %(nginx_error_log)s
[nginx-limit-req]
port    = http,https
logpath = %(nginx_error_log)s

Блокирование атак с помощью Fail2ban

Стенд после включения Fail2ban.

Установка и базовая настройка — лишь первый этап в защите веб-приложения. Самое главное — правильно настроить правила блокировки IP-адресов для конкретных видов атак. 

Специальная настройка от DoS-атак

Подготовка nginx-limit-req. Попробуем защитить веб-сервер с помощью модуля nginx-limit-req. Он нужен для определения максимального всплеска запросов (burst) и пороговых значений разделяемой памяти (zone). В случае, если эти параметры будут превышены, модуль добавит в лог-файл новые записи. С помощью них Fail2ban определяет и блокирует вредоносные IP-адреса.  

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

Модуль nginx-limit-req входит в nginx-core, и дополнительная его установка не потребуется. В директиве http добавим параметры для включения модуля и определения зоны:

limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;

Далее в директиве location достаточно добавить значение для ограничения количества запросов:

limit_req zone=one burst=5;

Теперь при превышении количества запросов, который мы задали в burst, в /var/log/nginx/error.log будут сыпаться ошибки следующего вида:

2022/12/14 18:39:28 [error] 9462#9462: *987284 limiting requests, excess: 1.940 by zone "one", client: 192.168.100.1, server: localhost, request: "GET /admin HTTP/1.1", host: "192.168.100.3"

Теперь мы можем искать в логах шаблонные сообщения. Именно их Fail2ban будет «искать» в логе nginx и при достижении определенного количества выполнять действие — блокирование источника атаки. \s*\[[a-z]+\] \d+#\d+: \*\d+ limiting requests, excess: [\d\.]+ by zone «(?:%(ngx_limit_req_zones)s)», client: <HOST>,

Регулярное выражение позволяет найти строку определенного формата в логах nginx. Как можем видеть, некоторые слова являются постоянными, а часть значений — переменными. Они заданы специальным синтаксисом регулярного выражения.

Результат. После включения Fail2ban и запуска атаки видим следующие записи:

admin@nginx:~# tail -n 5 /var/log/fail2ban.log
2022-12-14 18:30:39,505 fail2ban.filter         [9237]: INFO    [nginx-limit-req] Found 192.168.100.1 - 2022-12-14 18:30:39
2022-12-14 18:30:39,506 fail2ban.filter         [9237]: INFO    [nginx-limit-req] Found 192.168.100.1 - 2022-12-14 18:30:39
2022-12-14 18:30:39,508 fail2ban.filter         [9237]: INFO    [nginx-limit-req] Found 192.168.100.1 - 2022-12-14 18:30:39
2022-12-14 18:30:39,509 fail2ban.filter         [9237]: INFO    [nginx-limit-req] Found 192.168.100.1 - 2022-12-14 18:30:39
2022-12-14 18:30:39,960 fail2ban. actions        [9237]: NOTICE  [nginx-limit-req] Ban 192.168.100.1

Обратите внимание: вредоносный источник превысил параметры nginx-limit-req и попал в клетку jail. Атакующий хост получил сообщение о прекращении сессии.

root@kali:~# siege -t 1m http://192.168.100.3/admin
================================================================
WARNING: The number of users is capped at 255.  To increase this
         limit, search your .siegerc file for 'limit' and change
         its value. Make sure you read the instructions there...
================================================================
** SIEGE 4.0.4
** Preparing 255 concurrent users for battle.
The server is now under siege...ERROR from http_request
ERROR from http_request
ERROR from http_request
ERROR from http_request
[error] socket: unable to connect sock.c:249: Connection refused
ERROR from http_request
ERROR from http_request
ERROR from http_request
siege aborted due to excessive socket failure; you
can change the failure threshold in $HOME/. siegerc
Transactions:		           0 hits
Availability:		        0.00 %
Elapsed time:		        1.20 secs
Data transferred:	        0.27 MB
Response time:		        0.00 secs
Transaction rate:	        0.00 trans/sec
Throughput:		        0.23 MB/sec
Concurrency:		        6.71
Successful transactions:           7
Failed transactions:	        1278
Longest transaction:	        0.20
Shortest transaction:	        0.00

В Wazuh также виден «всплеск» обращений и их резкое прекращение — Fail2ban заблокировал нелегитимные запросы.

Специальная настройка от Bruteforce

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

[nginx-http-auth]
enabled = true
port = http,https
logpath = /var/log/nginx/*error.log
findtime = 10
bantime = 30
maxretry = 3

Переводя на человеческий, можно сказать так:

  • после трех неудачных попыток авторизации будут блокироваться порты http (80/TCP) и https (443/TCP),
  • Fail2ban мониторит лог-файл /var/log/nginx/error. \»]*»), client: <HOST>, server: \S*, request: «\S+ \S+ HTTP/\d+\.\d+», host: «\S+»(?:, referrer: «\S+»)?\s*$

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

    Результат. Запустим тот же брутфорс, что и в начале статьи.

    Первый пик — действие Bruteforce до включения защиты: Nginx обработал весь список пар из логинов паролей. Отсутствие данных на определенных промежутках обусловлено 30-секундной блокировкой вредоносных IP-адресов. По истечении времени часть адресов продолжает «брутфорсить» страницу авторизации. Но все пары из логинов паролей не успевают обрабатываться — отсюда и «затухающие» пики.

    В логах Fail2ban записано следующее:

    admin@nginx:~# tail -n 5 /var/log/fail2ban.log
    2022-12-13 17:34:58,340 fail2ban.filter         [21234]: INFO    [nginx-http-auth] Found 192.168.100.1 - 2022-12-13 17:34:58
    2022-12-13 17:34:58,340 fail2ban.filter         [21234]: INFO    [nginx-http-auth] Found 192. 168.100.1 - 2022-12-13 17:34:58
    2022-12-13 17:34:58,340 fail2ban.filter         [21234]: INFO    [nginx-http-auth] Found 192.168.100.1 - 2022-12-13 17:34:58
    2022-12-13 17:34:58,341 fail2ban.filter         [21234]: INFO    [nginx-http-auth] Found 192.168.100.1 - 2022-12-13 17:34:58
    2022-12-13 17:34:58,471 fail2ban.actions        [21234]: NOTICE  [nginx-http-auth] Ban 192.168.100.1

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

    Fail2ban блокировал источники путем добавления адресов в цепочку Chain f2b-nginx-http-auth, которая в свою очередь добавлена в INPUT:

    admin@nginx:~# sudo iptables -L -v
    Chain INPUT (policy ACCEPT 2312 packets, 123K bytes)
     pkts bytes target     prot opt in     out     source               destination         
     <b>3517  492K f2b-nginx-http-auth  tcp  --  any    any     anywhere             anywhere             multiport dports http,https</b>
     2521  178K f2b-sshd   tcp  --  any    any     anywhere             anywhere             multiport dports ssh
    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
     pkts bytes target     prot opt in     out     source               destination         
    Chain OUTPUT (policy ACCEPT 2294 packets, 604K bytes)
     pkts bytes target     prot opt in     out     source               destination         
    Chain f2b-nginx-http-auth (1 references)
     pkts bytes target     prot opt in     out     source               destination         
      <b>172 10320 REJECT     all  --  any    any     192. 168.100.1        anywhere             reject-with icmp-port-unreachable</b>
     2594  437K RETURN     all  --  any    any     anywhere             anywhere

    Обратите внимание: Fail2ban автоматически описал правила iptables для блокирования исходящего трафика от атакующего IP.

    А на стороне атакующего получали следующие результаты атаки Bruteforce:

    17:54:38 patator    INFO - code size:clen       time | candidate                          |   num | mesg
    17:54:38 patator    INFO - -----------------------------------------------------------------------------
    17:54:58 patator    FAIL - xxx  92:-1          0.000 | admin:123123                       |     2 | Unexpected HTTP response
    17:55:00 patator    FAIL - xxx  92:-1          0.000 | admin:12345                        |     4 | Unexpected HTTP response

    Это как следствие того, что сервер отклонял обращения на порт 80/TCP с адреса атакующего хоста:

    root@kali:~# curl http://192.168.100.3/admin
    curl: (7) Failed to connect to 192. 168.100.3 port 80: Connection refused

    Таким образом можно настраивать защиту от брута как на все ресурсы, так и на отдельные страницы с разными условиями бана.

    Информационная безопасность и 152-ФЗ

    Как усилить защиту сервера с помощью fail2ban

    Как усилить защиту сервера с помощью fail2ban

    В этой статье показано, как установить и настроить fail2ban для защиты сервера. С помощью fail2ban вы можете настроить свой сервер на автоматическую блокировку IP-адресов с подозрительной активностью.

    Информация в этой статье относится только к продуктам, перечисленным на боковой панели «Сведения о статье». Для выполнения описанных ниже процедур у вас должен быть root-доступ к серверу.

    Содержание
    • О fail2ban
    • Установка fail2ban
    • Настройка fail2ban
    • Дополнительная информация
    О fail2ban

    Приложение fail2ban отслеживает файлы журналов сервера на наличие попыток вторжения и других подозрительных действий. После заданного количества отказов хоста fail2ban автоматически блокирует его IP-адрес на определенное время.

    С помощью fail2ban вы можете защитить свой сервер от попыток несанкционированного доступа. Он особенно эффективен для снижения риска атак по сценарию и ботнетов.

    Хотя fail2ban может помочь защитить ваш сервер, он не может устранить все угрозы. Убедитесь, что вы приняли дополнительные меры безопасности, такие как описанные в этой статье.

    Установка fail2ban

    Чтобы установить пакет fail2ban для вашего дистрибутива Linux:

    • Для Debian и Ubuntu введите следующую команду:

       apt-get install fail2ban 
    • Для CentOS и Fedora введите следующую команду:

       ням установить fail2ban 

      Чтобы загрузить и установить пакет fail2ban в CentOS и Fedora, в вашей системе должен быть включен репозиторий EPEL (Extra Packages for Enterprise Linux). Дополнительные сведения об этом репозитории и о том, как его включить, см. в этой статье.

    Настройка fail2ban

    После установки fail2ban вы готовы к его настройке. Для этого выполните следующие действия:

    1. Войдите на свой сервер, используя SSH.
    2. В командной строке введите следующую команду:
       cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local 

      Файл jail.conf содержит базовую конфигурацию, которую можно использовать в качестве отправной точки, но она может быть перезаписана во время обновлений. Fail2ban использует отдельный файл jail.local для фактического чтения настроек конфигурации.

    3. Откройте файл jail.local в предпочитаемом текстовом редакторе.
    4. Найдите [ПО УМОЛЧАНИЮ] , который содержит следующие глобальные параметры:

    5. После настройки глобальных параметров fail2ban вы готовы включать и отключать тюрьмы для определенных протоколов и служб, которые вы хотите защитить. По умолчанию fail2ban отслеживает попытки входа в систему SSH (вы можете найти раздел [ssh-iptables] в файле jail. local , чтобы просмотреть конкретные настройки для тюрьмы SSH).

      Файл jail.local включает настройки тюрьмы по умолчанию для нескольких протоколов. Часто все, что вам нужно сделать, чтобы включить джейл, это изменить его включено = ложь строка включено = верно и перезапустите fail2ban. Вы также можете определить пользовательские тюрьмы и фильтры для дополнительной гибкости. Для получения дополнительной информации о том, как это сделать, посетите http://www.fail2ban.org/wiki/index.php/MANUAL_0_8.

    6. Сохраните изменения в файле jail.local .
    7. Чтобы перезапустить службу fail2ban и загрузить новую конфигурацию, введите следующую команду:

       service fail2ban restart 

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

       iptables -S 

      Например, следующая строка показывает IP-адрес, заблокированный тюрьмой SSH:

       -A fail2ban-SSH -s 10. 0.1.124/32 -j REJECT --reject-with icmp-port-unreachable 
    Дополнительная информация
    • Для получения общей информации о fail2ban посетите http://www.fail2ban.org/wiki/index.php/Main_Page.
    • Чтобы просмотреть официальную документацию fail2ban, посетите http://www.fail2ban.org/wiki/index.php/Manual.

    Получите безопасный хостинг

    Подробнее о статье

    • Продукт: Cloud VPS Неуправляемый выделенный серверНеуправляемый VPS
    • Уровень: Средний
    Другие статьи в этой категории
    • SSL
    • Вечная безопасность
    • Защита неуправляемого сервера
    • Защита взломанного сайта
    • Управление нежелательной электронной почтой (спамом)
    • Безопасность приложений
    • Выбор надежного пароля
    • Установка обновлений на ваш сервер
    • Повышение безопасности сервера с помощью fail2ban
    • Исправление уязвимости Heartbleed на неуправляемых серверах
    • Понимание уязвимостей программного обеспечения и защита вашей учетной записи
    • Попытки фишинга по электронной почте
    • Генерация ключей Google reCAPTCHA для безопасности сайта
    • Обновление TLS и наборов шифров за декабрь 2019 г.
    • Запрос Google на проверку взломанных сайтов
    • Подмена электронной почты
    • Миграция и устаревшие клиентские приложения электронной почты
    Показать больше

    Статьи по теме
    • Настройка брандмауэра с помощью iptables
    Показать больше

    Развивайте свой веб-бизнес

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

    Бесплатно. Отписаться в любое время.

    Была ли эта статья полезной для вас? Тогда вам понравится наша поддержка. Испытайте преимущества хостинга A2 уже сегодня и получите предварительно защищенный и предварительно оптимизированный веб-сайт. Ознакомьтесь с нашими планами веб-хостинга сегодня.

    Как установить fail2ban на Ubuntu Server 22.04: Jammy Jellyfish

    Джек Валлен проведет вас через процесс установки fail2ban на Ubuntu Server 22.04 для предотвращения злонамеренных попыток входа в систему.

    Изображение: PAOLO/Adobe Stock

    Fail2ban — это одна из первых вещей, которую вы должны установить на своем новом сервере Linux. После развертывания fail2ban работает для предотвращения вредоносных атак и атак методом грубой силы и может использоваться для мониторинга таких протоколов, как HTTP, SSH и FTP.

    Если fail2ban обнаружит попытку злонамеренного входа в систему, он автоматически заблокирует нарушающий IP-адрес, поэтому любой, кто пытается атаковать, не сможет получить доступ.

    Я проведу вас через процесс установки fail2ban на последнюю версию Ubuntu Server (22.04, также известную как Jammy Jellyfish).

    SEE: более 40 терминов с открытым исходным кодом и Linux, которые вам необходимо знать (TechRepublic Premium)

    Что вам понадобится

    Единственное, что вам нужно для запуска и запуска fail2ban, — это экземпляр Ubuntu Server 22.04 и пользователь с привилегиями sudo.

    Вот и все: давайте защитим этот сервер.

    Обязательная к прочтению информация для разработчиков

    • Обзор инструмента GitLab CI/CD
    • DevSecOps вводит безопасность в программный цикл
    • Лучшие сертификаты DevOps для менеджеров проектов
    • Лучшие онлайн-курсы DevOps от Академии TechRepublic

    Как установить fail2ban

    Установка fail2ban невероятно проста. Войдите в свой экземпляр Ubuntu Server и введите команду:

    sudo apt-get установить fail2ban -y

    Запустите и включите службу fail2ban с помощью:

    sudo systemctl enable --now fail2ban

    Если вы используете брандмауэр UFW — а вы должны им пользоваться — вам может потребоваться разрешить SSH-трафик на сервер с помощью команды:

    sudo ufw разрешить ssh

    Как настроить fail2ban

    Fail2ban зависит от нескольких разных файлов и каталогов, а именно:

    • fail2ban. conf — основной файл конфигурации
    • jail.conf — пример конфигурации джейла
    • action.d — содержит различные конфигурации действий fail2ban для таких вещей, как почта и брандмауэр
    • jail.d — содержит дополнительные конфигурации тюрьмы fail2ban

    Мы создадим новый файл jail.local и настроим fail2ban для предотвращения злонамеренных входов по SSH.

    Создайте новый файл с:

    судо нано /etc/fail2ban/jail.local

    Вставьте в этот файл следующее содержимое:

    [sshd]
    enable = true
    port = ssh
    filter = sshd
    logpath = /var/log/auth.log
    maxretry = 3
    find время = 300
    бантайм = 28800
    ignoreip = 127.0.0.1

    Вот описание выше:

    • enabled — включает джейл
    • порт — порт fail2ban будет прослушивать
    • Фильтр
    • — встроенный фильтр fail2ban будет использовать
    • .
    • logpath — каталог, в котором хранится журнал fail2ban
    • maxretry — допустимое количество неудачных попыток, прежде чем IP-адрес будет заблокирован
    • findtime — количество времени между неудачными попытками входа в систему
    • bantime – количество секунд, в течение которых IP-адрес будет забанен на
    • .
    • ignoreip — IP-адрес, который должен игнорироваться fail2ban

    Сохраните и закройте файл.

    Перезапустить fail2ban с:

    перезагрузка sudo systemctl fail2ban

    Как протестировать fail2ban

    Войдите на другую машину и попытайтесь войти по SSH на сервер, на котором размещен fail2ban. Не забудьте ввести пароль неправильно 3 раза.

    После третьей попытки SSH заблокирует вас, и вы должны использовать комбинацию клавиш CTRL + C, чтобы вернуться к подсказке. Если вы попытаетесь еще раз войти в систему SSH, вам будет представлена ​​ошибка «Отказано в соединении».

    Как разбанить IP-адрес

    После тестирования вы можете захотеть разблокировать используемый вами IP-адрес. Убедитесь, что у вас есть забаненный IP с помощью команды:

    статус клиента sudo fail2ban sshd

    Вы должны увидеть что-то вроде следующего в списке:

    Статус для джейла: sshd

    |- Фильтр
    | |- В настоящее время ошибка:    0
    | |- Всего неудачно:    3
    | `- Список файлов:    /var/log/auth.log
    `- Действия
    |- В настоящее время заблокировано:    1
    |- Всего заблокировано:    1
    `- Список запрещенных IP-адресов:            192.168.1.40
    9 0225

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

    sudo fail2ban-client установить sshd unbanip 192.168.1.40

    Вы должны увидеть цифру один, потому что именно столько IP-адресов вы только что разбанили.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *