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

Предисловие

Fail2ban — это инструмент защиты. После срабатывания ограничений он создает правила брандмауэра для блокировки IP-адресов. Он обеспечивает надежную защиту от таких сценариев, как подбор пароля ssh и исчерпание пароля ftp/http. Его основные функции сводятся к следующему.

  • Избегайте атак грубой силой
  • Просмотр журналов ошибок проверки
  • Автоматически создавать правила брандмауэра для блокировки IP-адресов
  • Поддержка нескольких сервисов
  • Широкие возможности настройки

1. Установка

1. Установка исходного кода программного обеспечения.

Дистрибутив

Команда установки

Arch

pacman -Sy fail2ban/yay -Sy fail2ban

CentOS/Redhat

yum install -y fail2ban

Debian

apt-get install fail2ban

2. Установка исходного кода
Язык кода:shell
копировать
git clone https://github.com/fail2ban/fail2ban.git
cd fail2ban
sudo python setup.py install

Это установит error2ban в каталог библиотеки Python. Исполняемый скрипт размещается в /usr/bin, а каталог конфигурации — в /etc/fail2ban.

2. Подробное объяснение конфигурации или параметров.

1. Резервное копирование конфигурации

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

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

Язык кода:shell
копировать
cd /etc/fail2ban
cp jail.conf jail.local
cp fail2ban.conf fail2ban.local

После этого нам останется только настроитьjail.localиfail2ban.localЭти два файла также действительны。

Подробности конфигурации 2.jali.local
Язык кода:shell
копировать
[DEFAULT]
#Этот параметр — забеленный сегмент сети и IP. Это может быть доменное имя, сегмент сети или отдельный IP-адрес, разделенный пробелами.
ignoreip = 127.0.0.1/8 ::1

#Установите интервал блокировки, как показано ниже. Это означает 10 минут, которые могут быть секундами (с), минутами (м), часами (ч), днями (дни). Без единиц измерения значение по умолчанию — с и -1. означает перманентную блокировку.
bantime  = 10m

#Интервал обнаружения,в интервале,когда>=maxtretryУстановите количество неудач,затем активируйте ограничение,Доступ запрещен.
findtime  = 10m

#Находим максимальное количество неудач за время
maxretry = 5

3. Защита безопасности SSH

1. Включите модуль sshd.

Вернитесь к файлу конфигурации jali.local.,оказаться[sshd]модуль,и добавьте строку для включения этого модуля:

Язык кода:shell
копировать
[sshd]
enabled = true
port    = 22                 #sshport
logpath = /var/log/auth.log  #Путь к журналу
backend = %(sshd_backend)s   #фоновый менеджер,По умолчанию systemd берет на себя управление,Никакой модификации не требуется

enabled = true 表示启用此модуль。В то же время, как указано выше[DEFAULT]Конфигурацию можно понимать как глобальные параметры.,Действительно для всех сервисных модулей,Конечно, вы также можете добавить параметры в определенные сервисные модули.,Локальные переменные имеют более высокий приоритет, чем глобальные переменные.,например:

Язык кода:shell
копировать
[sshd]
enabled = true
port    = 22
logpath = /var/log/auth.log
backend = %(sshd_backend)s
ignoreip = 127.0.0.1/8 ::1 10.10.0.0/16 172.16.0.0/16
bantime = 60m
findtime = 1m
maxretry = 5

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

2. Запустите фейл2бан.
Язык кода:shell
копировать
systemctl restart fail2ban  #Перезапустить службу

Проверьте модули, которые Fail2ban включил:

Язык кода:shell
копировать
fail2ban-client status
fail2ban-client status sshd #Показать подробную информацию о конкретных модулях
3. Имитировать ssh-взлом методом перебора

Используйте гидру для имитации истощения SSH:

Видно, что Fail2ban успешно заблокировал атакующий IP-адрес. С точки зрения iptables, служба Fail2ban добавила ввод ssh-порта во вход iptables. Существует четкое правило запрета перехода к списку ссылок f2b-sshd, отклоняющее его. трафик злоумышленника и ответ на icmp: Порт недоступен:

В это время атакующий хост использует nping для обнаружения и явно получает эхо-сигнал о недостижимости порта:

4. Снятие ограничений вручную

Используйте разбан, чтобы разблокировать IP

Язык кода:shell
копировать
fail2ban-client unban 192.168.1.16
fail2ban-client unban --all  #Разблокировать все

4. Защита входа в систему HTTP

1. Подготовьте среду моделирования.

Используйте команду htpasswd, чтобы зашифровать пароль и записать его в файл:

Язык кода:shell
копировать
printf "Rokas:$(openssl passwd -1 Rokasyang)\n" >/etc/nginx/htpasswd  #Имя пользователя Rokas, пароль Rokasyang

Добавьте базовую проверку в корневой путь файла конфигурации nginx и прочитайте пароль файла htpasswd:

Язык кода:shell
копировать
location / {
                auth_basic "Rokas auth";
                auth_basic_user_file /etc/nginx/htpasswd;
                try_files $uri $uri/ =404;
        }

Затем перезапустите nginx и смоделируйте запрос через Curl. Видно, что только после ввода имени пользователя и пароля можно успешно войти:

2. Настроить фильтр

Все правила фильтрации Fail2ban находятся в каталоге /etc/fail2ban/filter.d. Например, упомянутый выше sshd по умолчанию читает файл sshd.conf в этом каталоге.

Та же причина,jail.localв файле конфигурацииnginx-http-authмодуль也有对应命名的filterдокумент,Но правила сопоставления внутри не соответствуют нашему реальному сценарию.

существовать/etc/fail2ban/filter.dДобавить новый в каталогnginx-auth.confдокумент,Напишите следующие правила:

Язык кода:shell
копировать
[Definition]
failregex= <HOST> -.*- .*HTTP/1.* 401 .*$
ignoreregex =

Измените Jail.local и включите модуль nginx-http-auth:

Язык кода:shell
копировать
[nginx-http-auth]
enabled = true
port    = 80,443
filter = nginx-auth  #Правила фильтрации относятся к вновь созданному файлу nginx-auth.conf в каталоге filter.d.
logpath = /var/log/nginx/access.log  #путь к журналу доступа nginx
bantime = 60m
findtime = 1m
maxretry = 3
3. Перезагрузите Fail2ban-клиент.
Язык кода:shell
копировать
fail2ban-client reload
4. Тест моделирования

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

На этом этапе Fail2ban успешно заблокировал IP-адрес клиента:

5. Ограничение частоты HTTP-доступа

1. Добавить новый фильтр

Аналогично добавьте новый файл правил в каталог /etc/fail2ban/filter.d, например nginx-limit-request.conf:

Язык кода:shell
копировать
[Definition]
failregex = <HOST>.*-.*-.*$
ignoreregex =
2. Настройте Jail.local

Включите nginx-limit-req:

Язык кода:shell
копировать
[nginx-limit-req]
enabled = true
port    = http,https
filter= nginx-limit-request
logpath = /var/log/nginx/access.log
bantime = 1d
findtime = 1m
maxretry = 10
3. Перезагрузите Fail2ban-клиент.

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

Язык кода:shell
копировать
fail2ban-client reload nginx-limit-req
4. Тест моделирования

Прошел 11 симуляционных тестов и в 11-й раз получил отказ в доступе:

Как и ожидалось, Fail2ban предоставил бану IP-адрес клиента:

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

Из приведенных выше примеров также можно легко понять конфигурацию защиты других служб. Конечно, некоторые службы имеют собственную защиту. Например, модуль conn_limit nginx может ограничить частоту доступа, если вы можете использовать собственную защиту. , вам больше не нужно использовать Fail2ban.

Поставляется с PDF-версией:

Конфигурация и приложение безопасности Fail2ban

boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.