Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| vm:nginx:06-file2ban_v2 [2025/12/01 12:16] – admin | vm:nginx:06-file2ban_v2 [2026/03/03 14:00] (текущий) – удалено admin | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | ## Управление | ||
| - | ### Проверка статуса | ||
| - | ```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` - игнорируемые IP | ||
| - | |||
| - | После изменений: | ||
| - | ```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 " | ||
| - | echo "" | ||
| - | |||
| - | log_info " | ||
| - | </ | ||
| - | |||
| - | ==== Шаг 3: Настройка параметров (опционально) ==== | ||
| - | |||
| - | Перед запуском вы можете изменить следующие параметры в начале скрипта: | ||
| - | |||
| - | * '' | ||
| - | * '' | ||
| - | * '' | ||
| - | |||
| - | ==== Шаг 4: Запуск скрипта ==== | ||
| - | |||
| - | <code bash> | ||
| - | chmod +x install-fail2ban.sh | ||
| - | ./ | ||
| - | </ | ||
| - | |||
| - | Скрипт автоматически выполнит все необходимые действия: | ||
| - | - Проверит наличие Nginx Proxy Manager | ||
| - | - Установит Fail2ban | ||
| - | - Создаст структуру каталогов | ||
| - | - Создаст и настроит парсер логов | ||
| - | - Создаст все фильтры | ||
| - | - Настроит jail конфигурацию | ||
| - | - Протестирует конфигурацию | ||
| - | - Добавит парсер в cron | ||
| - | - Запустит Fail2ban | ||
| - | - Выведет статистику работы | ||
| - | |||
| - | ==== Результат автоматической установки ==== | ||
| - | |||
| - | После успешного выполнения скрипта вы увидите: | ||
| - | |||
| - | < | ||
| - | ========================================== | ||
| - | Установка и настройка завершена успешно! | ||
| - | ========================================== | ||
| - | |||
| - | Создано: | ||
| - | - Скрипт парсера: | ||
| - | - Лог-файл: | ||
| - | - Фильтры: | ||
| - | - Конфигурация jail: / | ||
| - | |||
| - | Активные защиты: | ||
| - | ✅ nginx-scan-block - Блокировка сканирования (maxretry: 3, bantime: 2 часа) | ||
| - | ✅ nginx-404-flood - Блокировка 404 флуда (maxretry: 10, bantime: 1 час) | ||
| - | ✅ nginx-dos-block - Блокировка DoS (maxretry: 50/мин, bantime: 10 минут) | ||
| - | ✅ sshd - Защита SSH | ||
| - | </ | ||
| - | |||
| - | ===== Ручная установка (пошаговая) ===== | ||
| - | |||
| - | Если вы предпочитаете ручную установку с полным контролем каждого шага, следуйте инструкциям ниже. | ||
| - | |||
| - | ==== Установка Fail2ban ==== | ||
| - | |||
| - | <code bash> | ||
| - | apt update | ||
| - | apt install fail2ban -y | ||
| - | </ | ||
| - | |||
| - | ==== Создание структуры каталогов ==== | ||
| - | |||
| - | <code bash> | ||
| - | mkdir -p / | ||
| - | </ | ||
| - | |||
| - | ==== Создание парсера логов Nginx Proxy Manager ==== | ||
| - | |||
| - | Создайте файл / | ||
| - | |||
| - | <code bash> | ||
| - | cat > / | ||
| - | #!/bin/bash | ||
| - | # Скрипт парсинга логов nginx-proxy-manager для fail2ban | ||
| - | # Обрабатывает все access логи из папки nginxpm | ||
| - | |||
| - | 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 | ||
| - | |||
| - | # Обрабатываем все файлы с окончанием *_access.log | ||
| - | 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 " | ||
| - | # Создаем пустой файл чтобы fail2ban не ругался | ||
| - | touch " | ||
| - | fi | ||
| - | |||
| - | # Устанавливаем права доступа | ||
| - | chmod 644 " | ||
| - | |||
| - | # Логируем статистику каждый час (когда минуты = 00) | ||
| - | MINUTE=$(date +%M) | ||
| - | if [ " | ||
| - | final_lines=$(wc -l < " | ||
| - | echo " | ||
| - | fi | ||
| - | |||
| - | # Ротация логов parser.log (если больше 5MB) | ||
| - | if [ -f " | ||
| - | mv " | ||
| - | touch " | ||
| - | chmod 644 " | ||
| - | fi | ||
| - | |||
| - | # Удаление записей старше 30 дней из лог-файла | ||
| - | if [ -f " | ||
| - | CUTOFF_DATE=$(date -d '30 days ago' ' | ||
| - | TEMP_FILTERED="/ | ||
| - | | ||
| - | # Фильтруем записи не старше 30 дней | ||
| - | awk -v cutoff=" | ||
| - | { | ||
| - | # Извлекаем дату из строки лога (формат: | ||
| - | match($0, / | ||
| - | if (date_match[1]) { | ||
| - | # Преобразуем дату в timestamp для сравнения | ||
| - | cmd = "date -d \"" | ||
| - | cmd | getline log_timestamp | ||
| - | close(cmd) | ||
| - | | ||
| - | cmd2 = "date -d \"" | ||
| - | cmd2 | getline cutoff_timestamp | ||
| - | close(cmd2) | ||
| - | | ||
| - | # Если дата лога >= даты отсечки, | ||
| - | if (log_timestamp >= cutoff_timestamp) { | ||
| - | print $0 | ||
| - | } | ||
| - | } else { | ||
| - | # Если не удалось извлечь дату, оставляем запись | ||
| - | print $0 | ||
| - | } | ||
| - | }' " | ||
| - | | ||
| - | # Заменяем оригинальный файл отфильтрованным | ||
| - | if [ -f " | ||
| - | mv " | ||
| - | chmod 644 " | ||
| - | fi | ||
| - | fi | ||
| - | |||
| - | # Ротация основного лог-файла (если больше 10MB) | ||
| - | if [ -f " | ||
| - | mv " | ||
| - | touch " | ||
| - | chmod 644 " | ||
| - | echo " | ||
| - | fi | ||
| - | |||
| - | exit 0 | ||
| - | EOF | ||
| - | </ | ||
| - | |||
| - | Установка прав на скрипт: | ||
| - | |||
| - | <code bash> | ||
| - | chmod +x / | ||
| - | </ | ||
| - | |||
| - | Первый запуск парсера: | ||
| - | |||
| - | <code bash> | ||
| - | / | ||
| - | ls -lh / | ||
| - | tail -10 / | ||
| - | </ | ||
| - | |||
| - | Добавление скрипта в cron: | ||
| - | |||
| - | <code bash> | ||
| - | (crontab -l 2>/ | ||
| - | </ | ||
| - | |||
| - | Проверка добавления в cron: | ||
| - | |||
| - | <code bash> | ||
| - | crontab -l | ||
| - | </ | ||
| - | |||
| - | ==== Настройка фильтров Fail2ban ==== | ||
| - | |||
| - | Создание фильтра для блокировки сканирования: | ||
| - | |||
| - | <code bash> | ||
| - | cat > / | ||
| - | [Definition] | ||
| - | |||
| - | # Формат NPM: [DATE] - STATUS STATUS - METHOD PROTOCOL DOMAIN " | ||
| - | 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 флуда: | ||
| - | |||
| - | <code bash> | ||
| - | cat > / | ||
| - | [Definition] | ||
| - | |||
| - | # Блокировка множественных 404 ошибок | ||
| - | failregex = ^\[.*\] - 404 \d+ - (GET|POST|HEAD) https? .* " | ||
| - | |||
| - | ignoreregex = | ||
| - | EOF | ||
| - | </ | ||
| - | |||
| - | Создание фильтра для блокировки DoS: | ||
| - | |||
| - | <code bash> | ||
| - | cat > / | ||
| - | [Definition] | ||
| - | |||
| - | # Блокировка слишком частых запросов (DoS) | ||
| - | failregex = ^\[.*\] - \d+ \d+ - (GET|POST|HEAD) https? .* " | ||
| - | |||
| - | ignoreregex = ^\[.*\] - \d+ \d+ - (GET|POST) https? .* " | ||
| - | EOF | ||
| - | </ | ||
| - | |||
| - | Создание символических ссылок на фильтры: | ||
| - | |||
| - | <code bash> | ||
| - | ln -sf / | ||
| - | ln -sf / | ||
| - | ln -sf / | ||
| - | </ | ||
| - | |||
| - | ==== Настройка jail для Nginx Proxy Manager ==== | ||
| - | |||
| - | **ВАЖНО: | ||
| - | |||
| - | <code bash> | ||
| - | cat > / | ||
| - | # Jail конфигурация для nginx защиты | ||
| - | [DEFAULT] | ||
| - | # Время бана в секундах (1 час = 3600) | ||
| - | bantime = 3600 | ||
| - | # Время поиска нарушений (5 минут = 300) | ||
| - | findtime = 300 | ||
| - | # Игнорировать локальные IP | ||
| - | 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 | ||
| - | </ | ||
| - | |||
| - | Создание символической ссылки на jail: | ||
| - | |||
| - | <code bash> | ||
| - | ln -sf / | ||
| - | </ | ||
| - | |||
| - | ==== Тестирование конфигурации ==== | ||
| - | |||
| - | Проверка синтаксиса конфигурации: | ||
| - | |||
| - | <code bash> | ||
| - | fail2ban-client -t | ||
| - | </ | ||
| - | |||
| - | Ожидаемый результат: | ||
| - | < | ||
| - | OK: configuration test is successful | ||
| - | </ | ||
| - | |||
| - | Тестирование фильтров на реальных логах: | ||
| - | |||
| - | <code bash> | ||
| - | fail2ban-regex / | ||
| - | fail2ban-regex / | ||
| - | fail2ban-regex / | ||
| - | </ | ||
| - | |||
| - | Должны быть найдены совпадения (matched > 0). | ||
| - | |||
| - | ==== Запуск и включение автозагрузки ==== | ||
| - | |||
| - | <code bash> | ||
| - | # Включить автозагрузку | ||
| - | systemctl enable fail2ban | ||
| - | |||
| - | # Запустить службу | ||
| - | systemctl start fail2ban | ||
| - | |||
| - | # Проверить статус | ||
| - | systemctl status fail2ban | ||
| - | </ | ||
| - | |||
| - | ===== Проверка работы ===== | ||
| - | |||
| - | ==== Проверка активных jail ==== | ||
| - | |||
| - | <code bash> | ||
| - | fail2ban-client status | ||
| - | </ | ||
| - | |||
| - | Ожидаемый вывод: | ||
| - | < | ||
| - | Status | ||
| - | |- Number of jail: 4 | ||
| - | `- Jail list: | ||
| - | </ | ||
| - | |||
| - | ==== Проверка статуса конкретного jail ==== | ||
| - | |||
| - | <code bash> | ||
| - | fail2ban-client status nginx-scan-block | ||
| - | fail2ban-client status nginx-404-flood | ||
| - | fail2ban-client status nginx-dos-block | ||
| - | </ | ||
| - | |||
| - | Пример вывода: | ||
| - | < | ||
| - | Status for the jail: nginx-scan-block | ||
| - | |- Filter | ||
| - | | |- Currently failed: 5 | ||
| - | | |- Total failed: | ||
| - | | `- File list: / | ||
| - | `- Actions | ||
| - | |- Currently banned: 2 | ||
| - | |- Total banned: | ||
| - | `- Banned IP list: | ||
| - | </ | ||
| - | |||
| - | ==== Проверка правил iptables ==== | ||
| - | |||
| - | <code bash> | ||
| - | iptables -L -n | grep -E " | ||
| - | </ | ||
| - | |||
| - | Ожидаемый результат: | ||
| - | < | ||
| - | Chain INPUT (policy ACCEPT) | ||
| - | f2b-nginx-dos | ||
| - | f2b-nginx-404 | ||
| - | f2b-nginx-scan | ||
| - | Chain f2b-nginx-404 (1 references) | ||
| - | Chain f2b-nginx-dos (1 references) | ||
| - | Chain f2b-nginx-scan (1 references) | ||
| - | </ | ||
| - | |||
| - | Детальный просмотр забаненных IP: | ||
| - | <code bash> | ||
| - | iptables -L f2b-nginx-scan -n -v | ||
| - | iptables -L f2b-nginx-404 -n -v | ||
| - | iptables -L f2b-nginx-dos -n -v | ||
| - | </ | ||
| - | |||
| - | ===== Мониторинг ===== | ||
| - | |||
| - | ==== Просмотр логов Fail2ban ==== | ||
| - | |||
| - | <code bash> | ||
| - | # Последние 50 строк | ||
| - | tail -50 / | ||
| - | |||
| - | # Только баны | ||
| - | tail -100 / | ||
| - | |||
| - | # Мониторинг в реальном времени | ||
| - | tail -f / | ||
| - | </ | ||
| - | |||
| - | ==== Просмотр логов парсера ==== | ||
| - | |||
| - | <code bash> | ||
| - | tail -50 / | ||
| - | </ | ||
| - | |||
| - | ==== Общая статистика ==== | ||
| - | |||
| - | <code bash> | ||
| - | echo "=== NGINX SCAN BLOCK ===" | ||
| - | fail2ban-client status nginx-scan-block | ||
| - | echo "" | ||
| - | echo "=== NGINX 404 FLOOD ===" | ||
| - | fail2ban-client status nginx-404-flood | ||
| - | echo "" | ||
| - | echo "=== NGINX DOS BLOCK ===" | ||
| - | fail2ban-client status nginx-dos-block | ||
| - | </ | ||
| - | |||
| - | ===== Управление банами ===== | ||
| - | |||
| - | ==== Разбан IP адреса ==== | ||
| - | |||
| - | <code bash> | ||
| - | # Разбан в конкретном jail | ||
| - | fail2ban-client set nginx-scan-block unbanip 1.2.3.4 | ||
| - | |||
| - | # Разбан во всех jail | ||
| - | fail2ban-client unban 1.2.3.4 | ||
| - | </ | ||
| - | |||
| - | ==== Ручной бан IP адреса ==== | ||
| - | |||
| - | <code bash> | ||
| - | fail2ban-client set nginx-scan-block banip 1.2.3.4 | ||
| - | </ | ||
| - | |||
| - | ===== Настройка параметров защиты ===== | ||
| - | |||
| - | ==== Описание параметров jail ==== | ||
| - | |||
| - | ^ Параметр ^ Описание ^ Рекомендуемое значение ^ | ||
| - | | '' | ||
| - | | '' | ||
| - | | '' | ||
| - | |||
| - | ==== nginx-scan-block (сканирование) ==== | ||
| - | |||
| - | * **maxretry**: | ||
| - | * **findtime**: | ||
| - | * **bantime**: | ||
| - | |||
| - | Блокирует попытки доступа к: | ||
| - | * Конфигурационным файлам (.env, .git, wp-config.php) | ||
| - | * Скриптам (.php, .asp, .jsp, .cgi) | ||
| - | * SQL инъекциям | ||
| - | * XSS атакам | ||
| - | * Path traversal | ||
| - | |||
| - | ==== nginx-404-flood (404 флуд) ==== | ||
| - | |||
| - | * **maxretry**: | ||
| - | * **findtime**: | ||
| - | * **bantime**: | ||
| - | |||
| - | Блокирует множественные запросы к несуществующим страницам. | ||
| - | |||
| - | ==== nginx-dos-block (DoS атаки) ==== | ||
| - | |||
| - | * **maxretry**: | ||
| - | * **findtime**: | ||
| - | * **bantime**: | ||
| - | |||
| - | Блокирует слишком частые запросы, | ||
| - | |||
| - | ===== Troubleshooting ===== | ||
| - | |||
| - | ==== Fail2ban не запускается ==== | ||
| - | |||
| - | Проверка логов: | ||
| - | <code bash> | ||
| - | journalctl -xeu fail2ban | ||
| - | systemctl status fail2ban | ||
| - | </ | ||
| - | |||
| - | Проверка конфигурации: | ||
| - | <code bash> | ||
| - | fail2ban-client -d | ||
| - | </ | ||
| - | |||
| - | ==== Jail не банит атаки ==== | ||
| - | |||
| - | Проверка чтения лог-файла: | ||
| - | <code bash> | ||
| - | fail2ban-client status nginx-scan-block | ||
| - | </ | ||
| - | |||
| - | Должно быть '' | ||
| - | |||
| - | Если видите '' | ||
| - | |||
| - | ==== Фильтры не находят совпадений ==== | ||
| - | |||
| - | Тестирование фильтра: | ||
| - | <code bash> | ||
| - | fail2ban-regex / | ||
| - | </ | ||
| - | |||
| - | Проверка формата логов: | ||
| - | <code bash> | ||
| - | head -3 / | ||
| - | </ | ||
| - | |||
| - | Формат должен быть: | ||
| - | < | ||
| - | [DATE] - STATUS STATUS - METHOD PROTOCOL DOMAIN " | ||
| - | </ | ||
| - | |||
| - | ==== Парсер не создает лог-файл ==== | ||
| - | |||
| - | Проверка работы парсера: | ||
| - | <code bash> | ||
| - | bash -x / | ||
| - | cat / | ||
| - | </ | ||
| - | |||
| - | Проверка наличия логов Nginx Proxy Manager: | ||
| - | <code bash> | ||
| - | ls -la / | ||
| - | </ | ||
| - | |||
| - | Проверка работы контейнера: | ||
| - | <code bash> | ||
| - | docker ps | grep nginxpm | ||
| - | </ | ||
| - | |||
| - | ===== Автоматическое обновление ===== | ||
| - | |||
| - | Fail2ban обновляется вместе с системой: | ||
| - | |||
| - | <code bash> | ||
| - | apt update | ||
| - | apt upgrade fail2ban -y | ||
| - | systemctl restart fail2ban | ||
| - | </ | ||
| - | |||
| - | ===== Резервное копирование ===== | ||
| - | |||
| - | ==== Файлы для бэкапа ==== | ||
| - | |||
| - | <code bash> | ||
| - | # Конфигурация | ||
| - | / | ||
| - | |||
| - | # Скрипты | ||
| - | / | ||
| - | |||
| - | # Логи (опционально) | ||
| - | / | ||
| - | </ | ||
| - | |||
| - | ==== Создание бэкапа ==== | ||
| - | |||
| - | <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 / | ||
| - | rm -f / | ||
| - | rm -f / | ||
| - | |||
| - | # Удалить из cron | ||
| - | crontab -e | ||
| - | # Удалить строку с parse-nginx-logs.sh | ||
| - | |||
| - | # Очистить правила iptables | ||
| - | iptables -F | ||
| - | </ | ||
| - | |||
| - | ===== Заключение ===== | ||
| - | |||
| - | После выполнения всех шагов ваш сервер будет защищен от: | ||
| - | * ✅ Сканирования уязвимостей | ||
| - | * ✅ 404 флуда | ||
| - | * ✅ DoS атак | ||
| - | * ✅ SSH брутфорса | ||
| - | |||
| - | Fail2ban автоматически: | ||
| - | * Собирает логи из Nginx Proxy Manager каждые 2 минуты | ||
| - | * Анализирует запросы на предмет атак | ||
| - | * Блокирует подозрительные IP на уровне iptables | ||
| - | * Автоматически разбанивает IP после истечения времени бана | ||
| - | |||
| - | ===== Полезные ссылки ===== | ||
| - | |||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | * [[https:// | ||
| - | |||
| - | ---- | ||
| - | |||
| - | **Автор: | ||
| - | **Дата создания: | ||
| - | **Последнее обновление: | ||