Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия | |||
| vm:nginx:06-file2ban_v2 [2025/12/01 12:19] – admin | vm:nginx:06-file2ban_v2 [2026/03/03 14:00] (текущий) – удалено admin | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | ====== Установка и настройка Fail2ban для Nginx Proxy Manager ====== | ||
| - | ===== Описание ===== | ||
| - | |||
| - | Данная инструкция описывает процесс установки и настройки Fail2ban для защиты Nginx Proxy Manager от: | ||
| - | * Сканирования уязвимостей | ||
| - | * 404 флуда | ||
| - | * DoS атак | ||
| - | * SSH брутфорса | ||
| - | |||
| - | ===== Требования ===== | ||
| - | |||
| - | * Ubuntu Server 24.04 (или аналогичный дистрибутив) | ||
| - | * Nginx Proxy Manager установленный в Docker | ||
| - | * Root доступ к серверу | ||
| - | |||
| - | ===== Быстрая установка (автоматический скрипт) ===== | ||
| - | |||
| - | **Рекомендуется: | ||
| - | |||
| - | ==== Шаг 1: Создание скрипта установки ==== | ||
| - | |||
| - | <code bash> | ||
| - | nano install-fail2ban.sh | ||
| - | </ | ||
| - | |||
| - | ==== Шаг 2: Содержимое скрипта ==== | ||
| - | |||
| - | Скопируйте следующий код в файл: | ||
| - | |||
| - | <code bash> | ||
| - | #!/bin/bash | ||
| - | |||
| - | ################################################################################ | ||
| - | # Скрипт автоматической установки и настройки Fail2ban для Nginx Proxy Manager | ||
| - | # Версия: | ||
| - | # Дата: 2025-11-30 | ||
| - | ################################################################################ | ||
| - | |||
| - | set -e # Остановка при ошибке | ||
| - | |||
| - | # Цвета для вывода | ||
| - | RED=' | ||
| - | GREEN=' | ||
| - | YELLOW=' | ||
| - | NC=' | ||
| - | |||
| - | # Функция вывода сообщений | ||
| - | log_info() { | ||
| - | echo -e " | ||
| - | } | ||
| - | |||
| - | log_warn() { | ||
| - | echo -e " | ||
| - | } | ||
| - | |||
| - | log_error() { | ||
| - | echo -e " | ||
| - | } | ||
| - | |||
| - | # Проверка прав root | ||
| - | if [[ $EUID -ne 0 ]]; then | ||
| - | | ||
| - | exit 1 | ||
| - | fi | ||
| - | |||
| - | log_info " | ||
| - | echo "" | ||
| - | |||
| - | ################################################################################ | ||
| - | # НАСТРОЙКИ - ИЗМЕНИТЕ ПОД СВОИ НУЖДЫ | ||
| - | ################################################################################ | ||
| - | |||
| - | # Путь к логам Nginx Proxy Manager | ||
| - | NPM_LOG_DIR="/ | ||
| - | |||
| - | # Имя контейнера Nginx Proxy Manager | ||
| - | NPM_CONTAINER_NAME=" | ||
| - | |||
| - | # Директории Fail2ban | ||
| - | FAIL2BAN_BASE="/ | ||
| - | FAIL2BAN_SCRIPTS=" | ||
| - | FAIL2BAN_LOGS=" | ||
| - | FAIL2BAN_CONFIG=" | ||
| - | FAIL2BAN_JAIL_D=" | ||
| - | FAIL2BAN_FILTER_D=" | ||
| - | |||
| - | # Файл лога для fail2ban | ||
| - | NGINX_ACCESS_LOG=" | ||
| - | |||
| - | # Игнорируемые IP (локальные сети) | ||
| - | IGNORE_IP=" | ||
| - | |||
| - | ################################################################################ | ||
| - | # Шаг 1: Проверка существования Nginx Proxy Manager | ||
| - | ################################################################################ | ||
| - | |||
| - | log_info " | ||
| - | |||
| - | if ! docker ps --format " | ||
| - | log_error " | ||
| - | log_error " | ||
| - | exit 1 | ||
| - | fi | ||
| - | |||
| - | if [ ! -d " | ||
| - | log_error " | ||
| - | exit 1 | ||
| - | fi | ||
| - | |||
| - | log_info " | ||
| - | echo "" | ||
| - | |||
| - | ################################################################################ | ||
| - | # Шаг 2: Установка Fail2ban | ||
| - | ################################################################################ | ||
| - | |||
| - | log_info " | ||
| - | |||
| - | apt update -qq | ||
| - | apt install -y fail2ban >/ | ||
| - | |||
| - | log_info " | ||
| - | echo "" | ||
| - | |||
| - | ################################################################################ | ||
| - | # Шаг 3: Создание структуры каталогов | ||
| - | ################################################################################ | ||
| - | |||
| - | log_info " | ||
| - | |||
| - | mkdir -p " | ||
| - | mkdir -p " | ||
| - | mkdir -p " | ||
| - | mkdir -p " | ||
| - | |||
| - | log_info " | ||
| - | echo "" | ||
| - | |||
| - | ################################################################################ | ||
| - | # Шаг 4: Создание скрипта парсера логов | ||
| - | ################################################################################ | ||
| - | |||
| - | log_info " | ||
| - | |||
| - | cat > " | ||
| - | #!/bin/bash | ||
| - | # Скрипт парсинга логов nginx-proxy-manager для fail2ban | ||
| - | |||
| - | LOG_DIR="/ | ||
| - | LOG_FILE="/ | ||
| - | CONTAINER_NAME=" | ||
| - | PARSER_LOG="/ | ||
| - | |||
| - | mkdir -p " | ||
| - | |||
| - | if ! docker ps --format "table {{.Names}}" | ||
| - | echo " | ||
| - | exit 1 | ||
| - | fi | ||
| - | |||
| - | if [ ! -d " | ||
| - | echo " | ||
| - | exit 1 | ||
| - | fi | ||
| - | |||
| - | > " | ||
| - | |||
| - | processed_files=0 | ||
| - | total_lines=0 | ||
| - | |||
| - | for logfile in " | ||
| - | if [ -f " | ||
| - | lines_from_file=$(tail -n 2000 " | ||
| - | tail -n 2000 " | ||
| - | processed_files=$((processed_files + 1)) | ||
| - | total_lines=$((total_lines + lines_from_file)) | ||
| - | echo " | ||
| - | fi | ||
| - | done | ||
| - | |||
| - | if [ $processed_files -eq 0 ]; then | ||
| - | echo " | ||
| - | touch " | ||
| - | fi | ||
| - | |||
| - | chmod 644 " | ||
| - | |||
| - | MINUTE=$(date +%M) | ||
| - | if [ " | ||
| - | final_lines=$(wc -l < " | ||
| - | echo " | ||
| - | fi | ||
| - | |||
| - | if [ -f " | ||
| - | mv " | ||
| - | touch " | ||
| - | chmod 644 " | ||
| - | fi | ||
| - | |||
| - | if [ -f " | ||
| - | mv " | ||
| - | touch " | ||
| - | chmod 644 " | ||
| - | echo " | ||
| - | fi | ||
| - | |||
| - | exit 0 | ||
| - | PARSER_EOF | ||
| - | |||
| - | chmod +x " | ||
| - | |||
| - | log_info " | ||
| - | echo "" | ||
| - | |||
| - | ################################################################################ | ||
| - | # Шаг 5: Первый запуск парсера | ||
| - | ################################################################################ | ||
| - | |||
| - | log_info " | ||
| - | |||
| - | " | ||
| - | |||
| - | if [ -f " | ||
| - | log_info " | ||
| - | log_info " | ||
| - | else | ||
| - | log_error "Не удалось создать лог-файл" | ||
| - | exit 1 | ||
| - | fi | ||
| - | echo "" | ||
| - | |||
| - | ################################################################################ | ||
| - | # Шаг 6: Создание фильтров Fail2ban | ||
| - | ################################################################################ | ||
| - | |||
| - | log_info " | ||
| - | |||
| - | cat > " | ||
| - | [Definition] | ||
| - | |||
| - | failregex = ^\[.*\] - \d+ \d+ - GET https? .* " | ||
| - | ^\[.*\] - 40\d \d+ - GET https? .* " | ||
| - | ^\[.*\] - \d+ \d+ - GET https? .* " | ||
| - | ^\[.*\] - \d+ \d+ - GET https? .* " | ||
| - | ^\[.*\] - \d+ \d+ - (GET|POST) https? .* " | ||
| - | ^\[.*\] - \d+ \d+ - (GET|POST) https? .* " | ||
| - | ^\[.*\] - \d+ \d+ - GET https? .* " | ||
| - | |||
| - | ignoreregex = | ||
| - | FILTER_SCAN_EOF | ||
| - | |||
| - | cat > " | ||
| - | [Definition] | ||
| - | |||
| - | failregex = ^\[.*\] - 404 \d+ - (GET|POST|HEAD) https? .* " | ||
| - | |||
| - | ignoreregex = | ||
| - | FILTER_404_EOF | ||
| - | |||
| - | cat > " | ||
| - | [Definition] | ||
| - | |||
| - | failregex = ^\[.*\] - \d+ \d+ - (GET|POST|HEAD) https? .* " | ||
| - | |||
| - | ignoreregex = ^\[.*\] - \d+ \d+ - (GET|POST) https? .* " | ||
| - | FILTER_DOS_EOF | ||
| - | |||
| - | ln -sf " | ||
| - | ln -sf " | ||
| - | ln -sf " | ||
| - | |||
| - | log_info " | ||
| - | echo "" | ||
| - | |||
| - | ################################################################################ | ||
| - | # Шаг 7: Создание конфигурации jail | ||
| - | ################################################################################ | ||
| - | |||
| - | log_info " | ||
| - | |||
| - | cat > " | ||
| - | [DEFAULT] | ||
| - | bantime = 3600 | ||
| - | findtime = 300 | ||
| - | ignoreip = ${IGNORE_IP} | ||
| - | |||
| - | [nginx-scan-block] | ||
| - | enabled = true | ||
| - | port = http,https | ||
| - | filter = nginx-scan-block | ||
| - | logpath = ${NGINX_ACCESS_LOG} | ||
| - | backend = polling | ||
| - | maxretry = 3 | ||
| - | bantime = 7200 | ||
| - | findtime = 300 | ||
| - | action = iptables-multiport[name=nginx-scan, | ||
| - | |||
| - | [nginx-dos-block] | ||
| - | enabled = true | ||
| - | port = http, | ||
| - | filter = nginx-dos-block | ||
| - | logpath = ${NGINX_ACCESS_LOG} | ||
| - | backend = polling | ||
| - | maxretry = 50 | ||
| - | bantime = 600 | ||
| - | findtime = 60 | ||
| - | action = iptables-multiport[name=nginx-dos, | ||
| - | |||
| - | [nginx-404-flood] | ||
| - | enabled = true | ||
| - | port = http,https | ||
| - | filter = nginx-404-flood | ||
| - | logpath = ${NGINX_ACCESS_LOG} | ||
| - | backend = polling | ||
| - | maxretry = 10 | ||
| - | bantime = 3600 | ||
| - | findtime = 600 | ||
| - | action = iptables-multiport[name=nginx-404, | ||
| - | JAIL_EOF | ||
| - | |||
| - | ln -sf " | ||
| - | |||
| - | log_info " | ||
| - | echo "" | ||
| - | |||
| - | ################################################################################ | ||
| - | # Шаг 8: Тестирование | ||
| - | ################################################################################ | ||
| - | |||
| - | log_info " | ||
| - | |||
| - | if fail2ban-client -t; then | ||
| - | log_info " | ||
| - | else | ||
| - | log_error " | ||
| - | exit 1 | ||
| - | fi | ||
| - | echo "" | ||
| - | |||
| - | log_info " | ||
| - | |||
| - | fail2ban-regex " | ||
| - | fail2ban-regex " | ||
| - | fail2ban-regex " | ||
| - | |||
| - | echo "" | ||
| - | |||
| - | ################################################################################ | ||
| - | # Шаг 9: Добавление в cron | ||
| - | ################################################################################ | ||
| - | |||
| - | log_info " | ||
| - | |||
| - | CRON_ENTRY=" | ||
| - | |||
| - | if crontab -l 2>/ | ||
| - | log_warn " | ||
| - | else | ||
| - | (crontab -l 2>/ | ||
| - | log_info " | ||
| - | fi | ||
| - | echo "" | ||
| - | |||
| - | ################################################################################ | ||
| - | # Шаг 10: Запуск | ||
| - | ################################################################################ | ||
| - | |||
| - | log_info " | ||
| - | |||
| - | systemctl enable fail2ban >/ | ||
| - | systemctl restart fail2ban | ||
| - | |||
| - | sleep 5 | ||
| - | |||
| - | if systemctl is-active --quiet fail2ban; then | ||
| - | log_info " | ||
| - | else | ||
| - | log_error "Не удалось запустить Fail2ban" | ||
| - | exit 1 | ||
| - | fi | ||
| - | echo "" | ||
| - | |||
| - | ################################################################################ | ||
| - | # Проверка | ||
| - | ################################################################################ | ||
| - | |||
| - | log_info " | ||
| - | echo "" | ||
| - | |||
| - | fail2ban-client status | ||
| - | |||
| - | echo "" | ||
| - | fail2ban-client status nginx-scan-block | ||
| - | echo "" | ||
| - | fail2ban-client status nginx-404-flood | ||
| - | echo "" | ||
| - | fail2ban-client status nginx-dos-block | ||
| - | echo "" | ||
| - | |||
| - | ################################################################################ | ||
| - | # Завершение | ||
| - | ################################################################################ | ||
| - | |||
| - | log_info " | ||
| - | log_info " | ||
| - | log_info " | ||
| - | echo "" | ||
| - | |||
| - | echo " | ||
| - | echo " | ||
| - | echo " | ||
| - | echo " | ||
| - | echo " | ||
| - | echo "" | ||
| - | |||
| - | echo " | ||
| - | echo " | ||
| - | echo " | ||
| - | echo " | ||
| - | echo " | ||
| - | echo "" | ||
| - | |||
| - | echo " | ||
| - | echo " | ||
| - | echo " | ||
| - | echo " | ||
| - | echo " | ||
| - | echo " | ||
| - | echo "" | ||
| - | |||
| - | cat > " | ||
| - | # Fail2ban для Nginx Proxy Manager | ||
| - | |||
| - | ## Управление | ||
| - | |||
| - | ### Проверка статуса | ||
| - | ```bash | ||
| - | fail2ban-client status | ||
| - | fail2ban-client status nginx-scan-block | ||
| - | ``` | ||
| - | |||
| - | ### Разбан IP | ||
| - | ```bash | ||
| - | fail2ban-client unban 1.2.3.4 | ||
| - | fail2ban-client set nginx-scan-block unbanip 1.2.3.4 | ||
| - | ``` | ||
| - | |||
| - | ### Ручной бан | ||
| - | ```bash | ||
| - | fail2ban-client set nginx-scan-block banip 1.2.3.4 | ||
| - | ``` | ||
| - | |||
| - | ### Перезапуск | ||
| - | ```bash | ||
| - | systemctl restart fail2ban | ||
| - | ``` | ||
| - | |||
| - | ### Просмотр логов | ||
| - | ```bash | ||
| - | tail -f / | ||
| - | tail -f / | ||
| - | ``` | ||
| - | |||
| - | ## Настройка | ||
| - | |||
| - | Файл: `/ | ||
| - | |||
| - | - maxretry - попытки до бана | ||
| - | - findtime - окно поиска (секунды) | ||
| - | - bantime - время бана (секунды) | ||
| - | - ignoreip - исключения | ||
| - | |||
| - | После изменений: | ||
| - | ```bash | ||
| - | systemctl restart fail2ban | ||
| - | ``` | ||
| - | |||
| - | ## Мониторинг | ||
| - | |||
| - | ### Забаненные IP | ||
| - | ```bash | ||
| - | iptables -L f2b-nginx-scan -n -v | ||
| - | iptables -L f2b-nginx-404 -n -v | ||
| - | iptables -L f2b-nginx-dos -n -v | ||
| - | ``` | ||
| - | |||
| - | ### Статистика | ||
| - | ```bash | ||
| - | for jail in nginx-scan-block nginx-404-flood nginx-dos-block; | ||
| - | echo "=== $jail ===" | ||
| - | fail2ban-client status $jail | ||
| - | echo "" | ||
| - | done | ||
| - | ``` | ||
| - | README_EOF | ||
| - | |||
| - | log_info " | ||
| - | </ | ||
| - | |||
| - | ==== Шаг 3: Настройка параметров (опционально) ==== | ||
| - | |||
| - | Перед запуском вы можете изменить следующие параметры в начале скрипта: | ||
| - | |||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | |||
| - | ==== Шаг 4: Запуск скрипта ==== | ||
| - | |||
| - | <code bash> | ||
| - | chmod +x install-fail2ban.sh | ||
| - | ./ | ||
| - | </ | ||
| - | |||
| - | Скрипт автоматически выполнит все необходимые действия: | ||
| - | - Проверит наличие Nginx Proxy Manager | ||
| - | - Установит Fail2ban | ||
| - | - Создаст структуру каталогов | ||
| - | - Создаст и настроит парсер логов | ||
| - | - Создаст все фильтры | ||
| - | - Настроит jail конфигурацию | ||
| - | - Протестирует конфигурацию | ||
| - | - Добавит парсер в cron | ||
| - | - Запустит Fail2ban | ||
| - | - Выведет статистику работы | ||
| - | |||
| - | ==== Результат автоматической установки ==== | ||
| - | |||
| - | После успешного выполнения скрипта вы увидите: | ||
| - | |||
| - | < | ||
| - | ========================================== | ||
| - | Установка и настройка завершена успешно! | ||
| - | ========================================== | ||
| - | |||
| - | Защита: | ||
| - | ✅ nginx-scan-block (3 попытки, | ||
| - | ✅ nginx-404-flood (10 попыток, | ||
| - | ✅ nginx-dos-block (50/мин, бан 10 минут) | ||
| - | ✅ sshd | ||
| - | </ | ||
| - | |||
| - | ===== Ручная установка (пошаговая) ===== | ||
| - | |||
| - | Если вы предпочитаете ручную установку с полным контролем каждого шага, следуйте инструкциям ниже. | ||
| - | |||
| - | ==== Установка Fail2ban ==== | ||
| - | |||
| - | <code bash> | ||
| - | apt update | ||
| - | apt install fail2ban -y | ||
| - | </ | ||
| - | |||
| - | ==== Создание структуры каталогов ==== | ||
| - | |||
| - | <code bash> | ||
| - | mkdir -p / | ||
| - | </ | ||
| - | |||
| - | ==== Создание парсера логов ==== | ||
| - | |||
| - | <code bash> | ||
| - | nano / | ||
| - | </ | ||
| - | |||
| - | Содержимое файла указано в автоматическом скрипте выше (раздел PARSER_EOF). | ||
| - | |||
| - | Установка прав: | ||
| - | |||
| - | <code bash> | ||
| - | chmod +x / | ||
| - | </ | ||
| - | |||
| - | Первый запуск: | ||
| - | |||
| - | <code bash> | ||
| - | / | ||
| - | ls -lh / | ||
| - | </ | ||
| - | |||
| - | Добавление в cron: | ||
| - | |||
| - | <code bash> | ||
| - | (crontab -l 2>/ | ||
| - | crontab -l | ||
| - | </ | ||
| - | |||
| - | ==== Создание фильтров ==== | ||
| - | |||
| - | <code bash> | ||
| - | # Фильтр сканирования | ||
| - | cat > / | ||
| - | [Definition] | ||
| - | |||
| - | failregex = ^\[.*\] - \d+ \d+ - GET https? .* " | ||
| - | ^\[.*\] - 40\d \d+ - GET https? .* " | ||
| - | ^\[.*\] - \d+ \d+ - GET https? .* " | ||
| - | ^\[.*\] - \d+ \d+ - GET https? .* " | ||
| - | ^\[.*\] - \d+ \d+ - (GET|POST) https? .* " | ||
| - | ^\[.*\] - \d+ \d+ - (GET|POST) https? .* " | ||
| - | ^\[.*\] - \d+ \d+ - GET https? .* " | ||
| - | |||
| - | ignoreregex = | ||
| - | EOF | ||
| - | |||
| - | # Фильтр 404 | ||
| - | cat > / | ||
| - | [Definition] | ||
| - | |||
| - | failregex = ^\[.*\] - 404 \d+ - (GET|POST|HEAD) https? .* " | ||
| - | |||
| - | ignoreregex = | ||
| - | EOF | ||
| - | |||
| - | # Фильтр DoS | ||
| - | cat > / | ||
| - | [Definition] | ||
| - | |||
| - | failregex = ^\[.*\] - \d+ \d+ - (GET|POST|HEAD) https? .* " | ||
| - | |||
| - | ignoreregex = ^\[.*\] - \d+ \d+ - (GET|POST) https? .* " | ||
| - | EOF | ||
| - | |||
| - | # Символические ссылки | ||
| - | ln -sf / | ||
| - | ln -sf / | ||
| - | ln -sf / | ||
| - | </ | ||
| - | |||
| - | ==== Создание конфигурации jail ==== | ||
| - | |||
| - | **ВАЖНО: | ||
| - | |||
| - | <code bash> | ||
| - | cat > / | ||
| - | [DEFAULT] | ||
| - | bantime = 3600 | ||
| - | findtime = 300 | ||
| - | ignoreip = 127.0.0.1/8 ::1 192.168.0.0/ | ||
| - | |||
| - | [nginx-scan-block] | ||
| - | enabled = true | ||
| - | port = http,https | ||
| - | filter = nginx-scan-block | ||
| - | logpath = / | ||
| - | backend = polling | ||
| - | maxretry = 3 | ||
| - | bantime = 7200 | ||
| - | findtime = 300 | ||
| - | action = iptables-multiport[name=nginx-scan, | ||
| - | |||
| - | [nginx-dos-block] | ||
| - | enabled = true | ||
| - | port = http, | ||
| - | filter = nginx-dos-block | ||
| - | logpath = / | ||
| - | backend = polling | ||
| - | maxretry = 50 | ||
| - | bantime = 600 | ||
| - | findtime = 60 | ||
| - | action = iptables-multiport[name=nginx-dos, | ||
| - | |||
| - | [nginx-404-flood] | ||
| - | enabled = true | ||
| - | port = http,https | ||
| - | filter = nginx-404-flood | ||
| - | logpath = / | ||
| - | backend = polling | ||
| - | maxretry = 10 | ||
| - | bantime = 3600 | ||
| - | findtime = 600 | ||
| - | action = iptables-multiport[name=nginx-404, | ||
| - | EOF | ||
| - | |||
| - | ln -sf / | ||
| - | </ | ||
| - | |||
| - | ==== Тестирование и запуск ==== | ||
| - | |||
| - | <code bash> | ||
| - | # Тест конфигурации | ||
| - | fail2ban-client -t | ||
| - | |||
| - | # Тест фильтров | ||
| - | fail2ban-regex / | ||
| - | |||
| - | # Запуск | ||
| - | systemctl enable fail2ban | ||
| - | systemctl start fail2ban | ||
| - | systemctl status fail2ban | ||
| - | </ | ||
| - | |||
| - | ===== Проверка работы ===== | ||
| - | |||
| - | <code bash> | ||
| - | # Статус jail | ||
| - | fail2ban-client status | ||
| - | fail2ban-client status nginx-scan-block | ||
| - | |||
| - | # Правила iptables | ||
| - | iptables -L -n | grep nginx | ||
| - | iptables -L f2b-nginx-scan -n -v | ||
| - | </ | ||
| - | |||
| - | ===== Управление ===== | ||
| - | |||
| - | ==== Проверка статуса ==== | ||
| - | |||
| - | <code bash> | ||
| - | fail2ban-client status | ||
| - | fail2ban-client status nginx-scan-block | ||
| - | </ | ||
| - | |||
| - | ==== Разбан IP ==== | ||
| - | |||
| - | <code bash> | ||
| - | fail2ban-client unban 1.2.3.4 | ||
| - | fail2ban-client set nginx-scan-block unbanip 1.2.3.4 | ||
| - | </ | ||
| - | |||
| - | ==== Ручной бан ==== | ||
| - | |||
| - | <code bash> | ||
| - | fail2ban-client set nginx-scan-block banip 1.2.3.4 | ||
| - | </ | ||
| - | |||
| - | ==== Просмотр логов ==== | ||
| - | |||
| - | <code bash> | ||
| - | tail -f / | ||
| - | tail -f / | ||
| - | tail -100 / | ||
| - | </ | ||
| - | |||
| - | ===== Настройка параметров ===== | ||
| - | |||
| - | ^ Параметр ^ Описание ^ Значение ^ | ||
| - | | maxretry | Попытки до бана | 3-10 для scan, 50 для DoS | | ||
| - | | findtime | Окно поиска (секунды) | 300 (5 минут) | | ||
| - | | bantime | Время бана (секунды) | 3600-7200 (1-2 часа) | | ||
| - | |||
| - | Файл: ''/ | ||
| - | |||
| - | После изменений: | ||
| - | |||
| - | <code bash> | ||
| - | systemctl restart fail2ban | ||
| - | </ | ||
| - | |||
| - | ===== Troubleshooting ===== | ||
| - | |||
| - | ==== Fail2ban не запускается ==== | ||
| - | |||
| - | <code bash> | ||
| - | journalctl -xeu fail2ban | ||
| - | fail2ban-client -d | ||
| - | </ | ||
| - | |||
| - | ==== Jail не банит ==== | ||
| - | |||
| - | <code bash> | ||
| - | fail2ban-client status nginx-scan-block | ||
| - | </ | ||
| - | |||
| - | Должно быть: '' | ||
| - | |||
| - | Если '' | ||
| - | |||
| - | ==== Фильтры не работают ==== | ||
| - | |||
| - | <code bash> | ||
| - | fail2ban-regex / | ||
| - | head -3 / | ||
| - | </ | ||
| - | |||
| - | ==== Парсер не работает ==== | ||
| - | |||
| - | <code bash> | ||
| - | bash -x / | ||
| - | cat / | ||
| - | ls -la / | ||
| - | docker ps | grep nginxpm | ||
| - | </ | ||
| - | |||
| - | ===== Резервное копирование ===== | ||
| - | |||
| - | <code bash> | ||
| - | tar -czf fail2ban-backup-$(date +%Y%m%d).tar.gz \ | ||
| - | / | ||
| - | / | ||
| - | </ | ||
| - | |||
| - | ===== Удаление ===== | ||
| - | |||
| - | <code bash> | ||
| - | systemctl stop fail2ban | ||
| - | systemctl disable fail2ban | ||
| - | apt remove --purge fail2ban -y | ||
| - | rm -rf / | ||
| - | rm -f / | ||
| - | rm -f / | ||
| - | crontab -e # Удалить строку с parse-nginx-logs.sh | ||
| - | iptables -F | ||
| - | </ | ||
| - | |||
| - | ===== Полезные ссылки ===== | ||
| - | |||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | |||
| - | ---- | ||
| - | |||
| - | **Автор: | ||
| - | **Дата создания: | ||
| - | **Последнее обновление: | ||