Разное

Fail2Ban что это: Что такое fail2ban. Fail2ban простыми словами

08.08.2023

Fail2Ban — сервис блокировки хостов

Установка и запуск
Основные настройки и примеры использования
Параметры конфигурационного файла
Настройка защиты SSH
Блокировка нежелательного трафика
Настройка блокировки для Asterisk
Работа со списком заблокированных адресов
Пример работы fail2ban

Fail2Ban – это сервис для блокировки хостов, вызывающих множественные ошибки при попытках аутентификации.

Fail2Ban работает путем мониторинга файлов журналов (например, /var/log/auth.log, /var/log/apache/access.log и др.) для выбранных записей и запуска сценариев на их основе. Чаще всего это используется для блокировки выбранных IP-адресов, которые могут принадлежать хостам, пытающимся нарушить безопасность системы. Он может запретить любой IP-адрес хоста, который делает слишком много попыток входа в систему или выполняет любые другие нежелательные действия в течение периода времени, определенного администратором. Включает поддержку как IPv4, так и IPv6. Опционально более длительные запреты могут быть настроены специально для нарушителей, которые продолжают возвращаться.

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

Стандартная конфигурация Fail2Ban поставляется с фильтрами для Apache, Lighttpd, sshd, vsftpd, qmail. Фильтры определяются регулярными выражениями Python, которые могут быть удобно настроены администратором, знакомым с регулярными выражениями. С помощью фильтров можно блокировать попытки доступа от вредоносного хоста к определенным сетевым службам.

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

Установка и запуск Fail2Ban

Для РЕД ОС 7.2 и младше установка производится командой:

yum install fail2ban -y
systemctl start fail2ban
systemctl enable fail2ban

Для РЕД ОС 7.3 и старше установка производится командой:

dnf install fail2ban -y
systemctl start fail2ban
systemctl enable fail2ban

Основные настройки и примеры использования приложения Fail2Ban

Все конфигурационные файлы программы находятся в каталоге /etc/fail2ban. Для установки собственных настроек необходимо создать файл с таким же именем и расширением .local.

Основные параметры конфигурационного файла jail.conf

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

  • action — действие, которое будет выполняться, если Fail2ban обнаружит активность, соответствующую критериям поиска;
  • ignoreip — задает список IP-адресов, которые нужно исключить из алгоритмов Fail2ban. К ним не будут применяться ограничения, так что выбирайте их аккуратно. Диапазоны и IP-адреса стоит разделить пробелом. Сюда можно добавить локальный IP, а также IP-адрес, с которого вы будете подключаться сами, чтобы у вас не возникло проблем при входе;
  • bantime — время в секундах, на которое клиенту будет закрыт доступ к серверу, если он не сможет авторизоваться;
  • maxretry — указывает количество попыток перед тем, как доступ будет заблокирован;
  • findtime — время в секундах, на протяжении которого рассчитывается maxretry.

Настройка защиты SSH

Сначала копируем содержимое jail.conf в jail.local:

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

По умолчанию jail.local работает только для SSH. Примерная настройка файла jail.local для SSH:

[sshd]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
logpath  = /var/log/auth. log
findtime    = 600
maxretry    = 3
bantime     = 21600

Блокировка нежелательного трафика к определенному URL для NGINX

Откроем файл конфигурации:

nano /etc/fail2ban/jail.local

И добавим в конец:

[nginx-req-limit]
enabled = true
filter = nginx-req-limit
action = iptables-multiport[name=ReqLimit, port="http,https", protocol=tcp]
logpath = /var/log/nginx/*error.log
findtime = 600
bantime = 7200
maxretry = 10

Настройка блокировки для Asterisk

Добавляем в конец файла jail.local:

[asterisk]
enabled = true
action = iptables-allports[name=asterisk, protocol=all]
logpath = /var/log/asterisk/messages
bantime = 86400

Работа со списком заблокированных адресов

  • Получить статистику заблокированных адресов можно следующей командой:
fail2ban-client status <имя_правила>
fail2ban-client set <имя правила> unbanip 
  • Получить список правил можно командой:
fail2ban-client status
  • После необходимо перечитать правила:
firewall-cmd --reload
  • После каких либо изменений в конфигурационных файлах перезапустите faile2ban командой:
systemctl restart fail2ban

Пример работы fail2ban

Пример блокировки подключения к ssh-серверу после нескольких неудачных попыток авторизоваться. Для примера было взято правило для ssh. В примере пользователь попытался 3 раза ввести пароль для доступа к ssh-серверу, и после неудачных попыток последующие соединения с IP-адреса клиента были заблокированы.

Попытка пользователя авторизоваться на ssh-сервере:

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

Дата последнего изменения: 31.05.2023

Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.

firejail — система изолированного запуска приложений

Запуск приложений без оконного менеждера

Ограничение попыток входа в ssh с помощью fail2ban (средство от ботов подбирающих пароли через ssh) / Хабр

SSH довольно безопасен, особенно если вы примете разумные меры предосторожности, такие как требование аутентификации на основе пары ключей. Тем не менее, в дикой природе по-прежнему существует множество ботов, которые пытаются найти уязвимые хосты, пытаясь войти в систему с распространенными скомпрометированными именами пользователей и паролями, такими как root / root или admin / admin.

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

Один из способов минимизировать количество попыток входа в систему методом перебора — изменить порт по умолчанию, который прослушивает SSH. Однако это не считается хорошей практикой — во-первых, нужно помнить, что каждый раз, когда они подключаются к серверу, следует устанавливать правильный порт, отличный от порта по умолчанию. Более того, это может создать еще одну уязвимость безопасности, если выбранный порт больше 1024. Обычно только root может связываться с номерами портов ниже 1024. Однако, если для SSH используется больший номер порта, при определенных обстоятельствах пользователи без корневого доступа может заменить демон SSH другой, возможно, вредоносной службой.

Лучший способ решить возникшую проблему — использовать инструмент, который заблокирует злоумышленнику доступ к SSH-серверу. Одним из таких широко используемых инструментов является fail2ban ( www.
fail2ban.org ). Анализируя журналы, fail2ban обнаруживает повторяющиеся неудачные попытки аутентификации и автоматически устанавливает правила брандмауэра для отбрасывания трафика, исходящего с IP-адреса злоумышленника.

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

Ручная установка

Установить fail2ban в Ubuntu (и других дистрибутивах на основе Debian) очень просто:

$ sudo apt install fail2ban

Проверяем как это работает

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

$ sudo systemctl status fail2ban

Вывод должен быть похож на следующий — статус службы должен быть активным:

● fail2ban.service - Fail2Ban Service
     Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2021-05-18 12:36:36 ***; ** min ago
       Docs: man:fail2ban(1)
    Process: 723*** ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)
   Main PID: 723*** (f2b/server)
      Tasks: 5 (limit: 38293)
     Memory: 18. 0M
     CGroup: /system.slice/fail2ban.service
             └─723488 /usr/bin/python3 /usr/bin/fail2ban-server -xf start

Посмотрим, как fail2ban изменил правила iptables:

$ sudo iptables -L -n -v

Вы также должны увидеть, что в конфигурации iptables есть новая цепочка f2b-sshd, на которую ссылается правило цепочки INPUT:

Chain INPUT (policy ACCEPT 73411 packets, 6622K bytes)
 pkts bytes target     prot opt in     out     source               destination
 1019 65297 f2b-sshd   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            multiport dports 22
Chain f2b-sshd (1 references)
 pkts bytes target     prot opt in     out     source               destination
    8   480 REJECT     all  --  *      *       94.191.93.46         0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 REJECT     all  --  *      *       77.50.75.162         0.0.0.0/0            reject-with icmp-port-unreachable
   10   600 REJECT     all  --  *      *       51.
254.143.190 0.0.0.0/0 reject-with icmp-port-unreachable 10 600 REJECT all -- * * 46.101.97.5 0.0.0.0/0 reject-with icmp-port-unreachable 9 540 REJECT all -- * * 43.129.28.88 0.0.0.0/0 reject-with icmp-port-unreachable 9 540 REJECT all -- * * 41.221.168.167 0.0.0.0/0 reject-with icmp-port-unreachable 9 540 REJECT all -- * * 35.247.219.12 0.0.0.0/0 reject-with icmp-port-unreachable 12 720 REJECT all -- * * 220.180.119.192 0.0.0.0/0 reject-with icmp-port-unreachable 10 600 REJECT all -- * * 218.75.121.75 0.0.0.0/0 reject-with icmp-port-unreachable 0 0 REJECT all -- * * 213.87.101.176 0.0.0.0/0 reject-with icmp-port-unreachable 0 0 REJECT all -- * * 192.139.15.34 0.
0.0.0/0 reject-with icmp-port-unreachable 21 1260 REJECT all -- * * 187.104.145.210 0.0.0.0/0 reject-with icmp-port-unreachable 8 480 REJECT all -- * * 177.191.189.13 0.0.0.0/0 reject-with icmp-port-unreachable 10 600 REJECT all -- * * 159.89.82.134 0.0.0.0/0 reject-with icmp-port-unreachable 10 600 REJECT all -- * * 159.75.140.97 0.0.0.0/0 reject-with icmp-port-unreachable 8 480 REJECT all -- * * 157.92.13.105 0.0.0.0/0 reject-with icmp-port-unreachable 11 660 REJECT all -- * * 117.80.225.245 0.0.0.0/0 reject-with icmp-port-unreachable 9 540 REJECT all -- * * 106.53.121.179 0.0.0.0/0 reject-with icmp-port-unreachable 865 56057 RETURN all -- * * 0.0.0.0/0 0.0.0.0/0


Пакет fail2ban содержит инструмент под названием fail2ban-client. Он позволяет вам проверять статус службы и взаимодействовать с ней (например, позволяет вручную блокировать и разблокировать IP-адреса, включать и отключать тюрьмы и т. д.)

Посмотрим, какие jails активны:

$ sudo fail2ban-client status

Status
|- Number of jail:	1
`- Jail list:	sshd


Есть только один jail — sshd — которsq отвечает за мониторинг журналов SSH-сервера на предмет неудачного входа в систему и настройку правил брандмауэра для блокировки дальнейших попыток.

Теперь мы можем проверить статистику по sshd jail:

$ sudo fail2ban-client status sshd

Status for the jail: sshd
|- Filter
|  |- Currently failed:	8
|  |- Total failed:	26
|  `- File list:	/var/log/auth.log
`- Actions
   |- Currently banned:	22
   |- Total banned:	25
   `- Banned IP list:	106.53.121.179 117.80.225.245 157.92.13.105 159.75.140.97 159.89.82.134 177.191.189.13 187.104.145.210 213.87.101.176 218.75.121.75 220.
180.119.192 35.247.219.12 41.221.168.167 43.129.28.88 46.101.97.5 51.254.143.190 77.50.75.162 94.191.93.46 1.55.165.141 120.53.245.68 104.131.178.145 106.56.102.83 152.32.146.21

Настройка fail2ban

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

В стандартной конфигурации fail2ban защитит SSH-сервер и заблокирует злоумышленника на 10 минут после 5 неудачных попыток входа в систему в течение 10 минут. Файл конфигурации по умолчанию можно найти в /etc/fail2ban/jail.conf. Файл хорошо документирован и в основном не требует пояснений. Имейте в виду, что вам не следует вносить какие-либо изменения в этот файл, так как он может быть перезаписан во время обновления fail2ban.

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

$ sudo systemctl restart fail2ban

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

Но об этом позже расскажу в отдельной заметке, если эта будет кому то полезна и интересна.

Fail2ban

Из Fail2ban

Перейти к: навигация, поиск

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

Большинство объявлений и обсуждений происходит в списке рассылки и на GitHub. Пользователи G+ присоединяются к сообществу пользователей Google+ и Google+ Fail2Ban

Fail2ban сканирует файлы журналов (например, /var/log/apache/error_log) и блокирует IP-адреса, которые показывают признаки вредоносного ПО — слишком много неудачных паролей, поиск эксплойтов и т. д. Обычно Fail2Ban затем используется для обновления правил брандмауэра для отклонения IP-адресов в течение определенного периода времени, хотя любое другое действие (например, отправка электронной почты) также может быть настроено. Из коробки Fail2Ban поставляется с фильтрами для различных сервисов (apache, courier, ssh и т.д.).

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

Подробнее о Fail2ban

Fail2ban

ChangeLog (Список изменений)
Требования (Необходимые требования для Fail2ban )
Особенности (Список текущих и планируемых функций)
Проблемы (Багтрекер)
Скриншоты (Скриншоты)
Загрузки ( Fail2ban для вашего дистрибутива)
Презентации (Прошлые презентации (слайды, видео))
Ссылки (Ссылки, относящиеся к Fail2ban )
Список рассылки (Поддержка и обсуждения)
Сообщество пользователей Google+ и Google+ Fail2Ban
HOWTO Обратиться за помощью

Документация

README (официальный файл README)
Руководство (официальный Fail2ban документация)
Конфигурация (Конфигурация, связанная с внешним ПО)
FAQ (Часто задаваемые вопросы)
HOWTO (HOWTO предоставлены пользователей)
Справочное руководство (документация по исходному коду)
Предлагаемая документация по регистрации имен хостов и IP-адресов

Разработчики

Участники (лица, внесшие вклад в проект)
Принять участие

Новости

Наиболее актуальный список см. в выпусках GitHub. Записи ниже могут быть устаревшими

01.08.2015 0.9.3 — это большое исправление ошибок и новая функциональность. Примечания к выпуску для 0.9.3.

29.04.2015 0.9.2 — это большое исправление ошибок и новая функциональность. Примечания к выпуску для 0.9.2.

28.10.2014 0.9.1 — это большое исправление ошибок и новая функциональность. Примечания к выпуску для 0.9.1.

19.08.2014 0.8.14 — это выпуск с небольшими исправлениями ошибок, предназначенный в первую очередь для исправления совместимости с Python 2.4. Примечания к выпуску для 0.8.14.

Другие новости

Последние версии

экспериментальный  : фаил2бан-0.10.х
стабильный  : фаил2бан-0.9.4
очень устойчивый  : фаил2бан-0.8.14
больше никогда не выпускать — исправления 0. 8.x  : Филиал ГИТ 0.8
еще не выпущенные — исправления 0.9.x  : главная ветвь GIT


Чтобы поэкспериментировать с этой вики, попробуйте Песочницу. Справку по использованию и настройке см. в Руководстве пользователя.

Безопасность Linux: защитите свои системы с помощью fail2ban

Опубликовано: 4 июня 2020 г. | | на Кен Хесс (выпускники Sudoer)

Изображение

Фото  Flickr  из  Pexels

Безопасность для системных администраторов — это постоянная борьба, потому что вы должны защищать свои системы в достаточной степени, чтобы защитить их от нежелательных атак, но не настолько, чтобы это мешало производительности пользователей. Трудно поддерживать баланс. Всегда есть жалобы на «слишком высокую» безопасность, но когда система скомпрометирована, жалобы варьируются от «Недостаточно безопасности» до «Почему вы не использовали более эффективные меры безопасности?» Это настоящая борьба. Существуют элементы управления, которые вы можете внедрить, которые одновременно эффективны против атак злоумышленников и в то же время достаточно незаметны, чтобы пользователи могли работать в целом беспрепятственно. Fail2ban — это решение для защиты сервисов от грубой силы и других автоматизированных атак.

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

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

Установка и первоначальная настройка

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

 $ sudo dnf -y install fail2ban 

Включить и запустить fail2ban .

 $ sudo systemctl включить fail2ban
$ sudo systemctl start fail2ban 

Если у вас нет проблем с синтаксисом в вашей конфигурации fail2ban , вы не увидите никаких стандартных выходных сообщений.

Теперь нужно настроить несколько основных вещей в fail2ban , чтобы защитить систему, не мешая самой себе. Скопируйте /etc/fail2ban/jail.conf файл на /etc/fail2ban/jail.local . Нас интересует файл конфигурации jail.local .

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

Откройте /etc/fail2van/jail.local в вашем любимом редакторе и внесите следующие изменения или проверьте эти несколько заданы параметры. Ищите настройку ignoreip и добавляйте в эту строку все IP-адреса, которые должны иметь доступ без возможности блокировки. По умолчанию вы должны добавить петлевой адрес и все IP-адреса, локальные для защищаемой системы.

 ignoreip = 127. 0.0.1/8 192.168.1.10 192.168.1.20 

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

 $ sudo systemctl restart fail2ban 

Вы должны перезапускать fail2ban каждый раз, когда вы вносите изменения в конфигурацию.

Настройка отфильтрованного сервиса

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

Пароли, как всем известно, не являются хорошим средством защиты. Однако зачастую это стандарт, по которому мы живем. Итак, если пользовательский или административный доступ ограничен SSH, вам следует принять меры для его защиты. Использование fail2ban «смотреть» SSHD на наличие неудачных попыток доступа с последующим баном — хорошее начало.

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

Для настройки отфильтрованных служб необходимо создать соответствующий файл «тюрьма» под /etc/fail2ban/jail.d каталог. Для SSHD создайте новый файл с именем sshd.local и введите в него инструкции по фильтрации сервисов.

 [ссд]
включено = верно
порт = ssh
действие = iptables-мультипорт
путь к журналу = /var/журнал/безопасный
максимальная попытка = 3
bantime = 600 

Создайте заголовок [sshd] и введите настройку, которую вы видите выше, в качестве отправной точки. Большинство настроек говорят сами за себя. Для двух, которые могут быть интуитивно неочевидны, настройка «действие» описывает действие, которое вы хотите fail2ban принять в случае нарушения. Для нас fail2ban использует iptables для блокировки IP-адреса системы-нарушителя на «бантайм» 600 секунд (10 минут).

Конечно, вы можете изменить любой из этих параметров в соответствии с вашими потребностями. Десяти минут кажется достаточно, чтобы бот или скрипт «перешли» на менее безопасные хосты. Однако десять минут — это не так много, чтобы оттолкнуть пользователей, которые ошиблись при вводе пароля более трех раз.

Если вы удовлетворены настройками, перезапустите служба fail2ban .

Как выглядит блокировка

В защищенной системе (192.168.1.83), tail /var/log/fail2ban.log для просмотра текущих действий по бану.

 2020-05-15 09:12:06,722 fail2ban.filter [25417]: INFO [sshd] Найдено 192. 168.1.69 - 2020-05-15 09:12:06
2020-05-15 09:12:07,018 fail2ban.filter [25417]: INFO [sshd] Found 192.168.1.69 - 2020-05-15 09:12:07
2020-05-15 09:12:07,286 fail2ban.actions [25417]: УВЕДОМЛЕНИЕ [sshd] Бан 192.168.1.69
2020-05-15 09:22:08,931 fail2ban.actions [25417]: NOTICE [sshd] Unban 192.168.1.69 

Вы можете видеть, что IP-адрес 192.168.1.69 был заблокирован в 09:12 и разблокирован через десять минут в 09 :22.

В удаленной системе 192.168.1.69 действие запрета выглядит следующим образом:

 $ ssh 192.168.1.83
Пароль [email protected]:
Разрешение отклонено, попробуйте еще раз.
Пароль [email protected]:
Разрешение отклонено, попробуйте еще раз.
Пароль [email protected]:
Разрешение отклонено (публичный ключ, gssapi-keyex, gssapi-with-mic, пароль).
$ сш 192.168.1.83
ssh: подключиться к хосту 192.168.1.83, порт 22: в соединении отказано 

Как видите, я трижды неправильно ввел пароль, прежде чем меня забанили. Запрещенный пользователь, если он явно не проинформирован, не будет знать, почему он больше не может получить доступ к целевой системе. Фильтр fail2ban выполняет действие скрытого бана. Он не дает никаких объяснений удаленному пользователю, а также не уведомляет пользователя о снятии запрета.

Разблокировка системы

Неизбежно случится так, что будет забанена система, которую необходимо быстро разбанить. Другими словами, вы не можете или не хотите ждать окончания срока бана. Следующая команда немедленно разбанит систему.

 $ sudo fail2ban-client set sshd unbanip 192.168.1.69 

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

Подведение итогов

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

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

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