Настройка базовой защиты сервера: iptables и Fail2Ban
В современной инфраструктуре безопасность сервера — критически важный аспект. Один из способов защиты — использование iptables для фильтрации сетевого трафика и Fail2Ban для автоматической блокировки подозрительных подключений. В этой статье разберём настройку этих инструментов для базовой защиты Linux-сервера.
1. Установка и настройка Fail2Ban
1.1. Установка и активация
Устанавливаем Fail2Ban из репозитория и включаем автозагрузку:
apt install fail2ban systemctl enable --now fail2ban
1.2. Базовая конфигурация
Основные настройки хранятся в:
- /etc/fail2ban/jail.conf — основной конфиг (лучше не редактировать напрямую)
- /etc/fail2ban/jail.d/*.conf — кастомные настройки (предпочтительный способ)
Создаём или редактируем конфигурацию:
nano /etc/fail2ban/jail.d/custom.conf
Добавляем следующие параметры:
[DEFAULT] ignoreip = 127.0.0.1/8 ::1 217.218.27.29 # IP, которые не блокируются bantime = 30d # Время блокировки (30 дней) findtime = 5m # Окно анализа попыток входа maxretry = 3 # Макс. число попыток до бана banaction = iptables-multiport # Действие при бане (по портам) banaction_allports = iptables-allports # Блокировка всех портов
1.3. Проверка работы Fail2Ban
Проверим статус защиты для SSH:
fail2ban-client status sshd
Посмотрим правила iptables, созданные Fail2Ban:
iptables -L -n -v | grep -A 10 "f2b-sshd"
2. Настройка iptables для базовой защиты
2.1. Основные правила
Перед применением политики DROP на INPUT разрешим необходимый трафик:
# Разрешаем ICMP (ping) iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT # Разрешаем порт для Zabbix-агента iptables -A INPUT -p tcp --dport 10050 -j ACCEPT # Разрешаем SSH (порт 22) iptables -A INPUT -p tcp --dport 22 -j ACCEPT # Разрешаем ответы на исходящие соединения iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT # Разрешаем локальный интерфейс (loopback) iptables -A INPUT -i lo -j ACCEPT # Запрещаем весь остальной входящий трафик iptables -P INPUT DROP # Сохраняем правила iptables-save > /etc/iptables/rules.v4
2.2. Управление правилами iptables
Если нужно удалить правило:
iptables -L --line-numbers # Просмотр правил с номерами iptables -D INPUT 3 # Удаление правила №3 из цепочки INPUT
3. Что получаем на выходе всех настроек
Комбинация Fail2Ban и iptables даёт:
✅ Автоматическую защиту от брутфорса (Fail2Ban)
✅ Гибкую фильтрацию трафика (iptables)
✅ Контроль доступа к критическим сервисам (SSH, Zabbix)
Рекомендуется:
🔹 Регулярно проверять логи Fail2Ban (journalctl -u fail2ban -f)
🔹 Обновлять список ignoreip для доверенных IP
🔹 Тестировать правила iptables перед применением в production
Такая настройка обеспечит базовый уровень безопасности сервера, минимизируя риски несанкционированного доступа.
🔐 Дополнительные меры:
- Настройка SSH-доступа по ключам вместо пароля
- Использование UFW (если iptables кажется сложным)
- Мониторинг с помощью Zabbix/Grafana для отслеживания атак