Как настроить 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. Настройки применяются из файлов в следующем порядке:
- /etc/fail2ban/jail.conf
- /etc/fail2ban/jail.d/*.conf, — любые файлы с расширением conf. Применяются в алфавитном порядке.
- /etc/fail2ban/jail.local
- /etc/fail2ban/jail. d/*.local, — любые файлы с расширением local. Применяются в алфавитном порядке.
Все файлы могут содержать секцию [DEFAULT], содержимое которой будет применяться в первую очередь. Также в них могут содержаться секции для отдельных сервисов, так называемые «jails».
Давайте сначала рассмотрим настройки по умолчанию, а затем сделаем собственные.
Если открыть файл jail.conf, то в нем в разделе [DEFAULT]
ignoreip = 127.0.0.1/8
Трафик с данных IP адресов не будет подвергаться анализу, игнорироваться при проведении проверки. Своего рода «белые список».
bantime = 600
Указывается в секундах. Определяет на которой период времени будет блокироваться доступ, в случае срабатывания правила.
findtime = 600
Указывается в секундах. Устанавливает период времени в течение которого подсчитывается количество срабатываний правил, после которого надо применять фильтр (бан).
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. Правила формирования регулярных выражений мы не будем рассматривать, т.к. они достаточно сложные.
По умолчанию
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 вы готовы к его настройке. Для этого выполните следующие действия:
- Войдите на свой сервер, используя SSH.
- В командной строке введите следующую команду:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Файл jail.conf содержит базовую конфигурацию, которую можно использовать в качестве отправной точки, но она может быть перезаписана во время обновлений. Fail2ban использует отдельный файл jail.local для фактического чтения настроек конфигурации.
- Откройте файл jail.local в предпочитаемом текстовом редакторе.
Найдите [ПО УМОЛЧАНИЮ] , который содержит следующие глобальные параметры:
После настройки глобальных параметров fail2ban вы готовы включать и отключать тюрьмы для определенных протоколов и служб, которые вы хотите защитить. По умолчанию fail2ban отслеживает попытки входа в систему SSH (вы можете найти раздел [ssh-iptables] в файле jail. local , чтобы просмотреть конкретные настройки для тюрьмы SSH).
Файл jail.local включает настройки тюрьмы по умолчанию для нескольких протоколов. Часто все, что вам нужно сделать, чтобы включить джейл, это изменить его включено = ложь строка включено = верно и перезапустите fail2ban. Вы также можете определить пользовательские тюрьмы и фильтры для дополнительной гибкости. Для получения дополнительной информации о том, как это сделать, посетите http://www.fail2ban.org/wiki/index.php/MANUAL_0_8.
- Сохраните изменения в файле jail.local .
Чтобы перезапустить службу 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 StockFail2ban — это одна из первых вещей, которую вы должны установить на своем новом сервере 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
`- Действия
9 0225
|- В настоящее время заблокировано: 1
|- Всего заблокировано: 1
`- Список запрещенных IP-адресов: 192.168.1.40
Чтобы разблокировать IP-адрес 192.168.1.40, введите команду:
sudo fail2ban-client установить sshd unbanip 192.168.1.40
Вы должны увидеть цифру один, потому что именно столько IP-адресов вы только что разбанили.