В современной инфраструктуре безопасность сервера — критически важный аспект. Один из способов защиты — использование iptables для фильтрации сетевого трафика и Fail2Ban для автоматической блокировки подозрительных подключений. В этой статье разберём настройку этих инструментов для базовой защиты Linux-сервера.
Устанавливаем Fail2Ban из репозитория и включаем автозагрузку:
apt install fail2ban systemctl enable --now fail2ban
Основные настройки хранятся в:
Создаём или редактируем конфигурацию:
nano /etc/fail2ban/jail.d/custom.conf
Добавляем следующие параметры:
[DEFAULT] ignoreip = 127.0.0.1/8 ::1 217.25.227.207 # IP, которые не блокируются bantime = 30d # Время блокировки (30 дней) findtime = 5m # Окно анализа попыток входа maxretry = 3 # Макс. число попыток до бана banaction = iptables-multiport # Действие при бане (по портам) banaction_allports = iptables-allports # Блокировка всех портов
Проверим статус защиты для SSH:
fail2ban-client status sshd
Посмотрим правила iptables, созданные Fail2Ban:
iptables -L -n -v | grep -A 10 "f2b-sshd"
Перед применением политики 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
Если нужно удалить правило:
iptables -L --line-numbers # Просмотр правил с номерами iptables -D INPUT 3 # Удаление правила №3 из цепочки INPUT
Комбинация Fail2Ban и iptables даёт:
✅ Автоматическую защиту от брутфорса (Fail2Ban)
✅ Гибкую фильтрацию трафика (iptables)
✅ Контроль доступа к критическим сервисам (SSH, Zabbix)
Рекомендуется:
🔹 Регулярно проверять логи Fail2Ban (journalctl -u fail2ban -f)
🔹 Обновлять список ignoreip для доверенных IP
🔹 Тестировать правила iptables перед применением в production
Такая настройка обеспечит базовый уровень безопасности сервера, минимизируя риски несанкционированного доступа.
🔐 Дополнительные меры: