CSF на CentOS 7: установка и настройка ConfigServer Firewall

Важно: перед установкой убедитесь, что у вас есть root-доступ и резервная консоль (например, доступ через контрольную панель или KVM), чтобы восстановить доступ в случае ошибки в правилах файрвола.
Что такое CSF
ConfigServer Firewall (CSF) — набор утилит для управления iptables и обнаружения вторжений (LFD — Login/Failure Daemon). Коротко: CSF реализует правила файрвола, LFD следит за попытками входа и выполняет автоматическую блокировку, рассылку уведомлений и интеграцию с панелями управления (cPanel/WHM, DirectAdmin, Webmin).
Определение в одну строку: CSF — приложение для управления правилами iptables с функциями обнаружения нештатных попыток входа и автоматической реакции.
Основные сценарии использования
- Хостинг-серверы и панели управления.
- Серверы SSH/FTP/почты, где важно автоматическое выявление брутфорс-атак.
- Среды, где нужно заменить или дополнить fail2ban универсальным инструментом.
Требования
- CentOS 7 (в примере сервер с IP 192.168.1.101).
- Права root или эквивалентные sudo.
Быстрый план установки
- Установить зависимости.
- Скачать и установить CSF.
- Прогнать тест работоспособности.
- Отключить firewalld и включить csf/lfd.
- Настроить csf.conf и применить правила.
Шаг 1 — Установка зависимостей
CSF основан на Perl. Установите Perl, wget и редактор (vim или любой другой). На CentOS установите пакетами yum:
yum install wget vim perl-libwww-perl.noarch perl-Time-HiRes
Если ваш сервер использует dnf вместо yum (новые релизы), замените команду соответственно.
Шаг 2 — Скачивание и установка CSF
Перейдите в каталог /usr/src/ и скачайте архив:
cd /usr/src/
wget https://download.configserver.com/csf.tgz
Распакуйте и установите:
tar -xzf csf.tgz
cd csf
sh install.sh
В конце установки вы должны увидеть сообщение, что установка завершена.
Теперь проверьте, что CSF совместим с вашей системой. Запустите тест в каталоге /usr/local/csf/bin/:
cd /usr/local/csf/bin/
perl csftest.pl
Ожидаемый результат:
RESULT: csf should function on this server
Если тест прошёл успешно, можно продолжать.
Важная заметка по firewalld
CentOS 7 по умолчанию использует firewalld. Перед запуском CSF остановите и отключите firewalld, чтобы избежать конфликтов с iptables:
systemctl stop firewalld
systemctl disable firewalld
Если вы планируете использовать firewalld и CSF одновременно, сначала изучите совместимость и режимы работы — в большинстве случаев рекомендуется использовать либо iptables/CSF, либо firewalld, но не оба одновременно.
Шаг 3 — Базовая конфигурация CSF
Откройте файл конфигурации:
cd /etc/csf/
vim csf.conf
Основные параметры для быстрой настройки:
- Отключите режим тестирования (обязательно при боевой настройке):
TESTING = "0"
- Если SSH работает на нестандартном порту, добавьте его в TCP_IN (строка примерно 139):
TCP_IN = "22,XXXXX"
После правок запустите службы:
systemctl start csf
systemctl start lfd
systemctl enable csf
systemctl enable lfd
Просмотреть текущие правила:
csf -l
Шаг 4 — Базовые команды CSF (команды управления)
- Включить правила (старт файрвола):
csf -s
- Очистить/выключить правила:
csf -f
- Перезагрузить правила:
csf -r
- Разрешить IP и добавить в csf.allow:
csf -a 192.168.1.109
Пример вывода показывает добавление правил ACCEPT для указанного IP.
- Удалить IP из csf.allow:
csf -ar 192.168.1.109
- Забанить IP и добавить в csf.deny:
csf -d 192.168.1.109
- Убрать IP из csf.deny:
csf -dr 192.168.1.109
- Очистить все записи из csf.deny:
csf -df
- Поиск по правилам (IP/CIDR/порт):
csf -g 192.168.1.110
Список команд CSF гораздо шире; вызовите man csf или csf –help для полного списка.
Шаг 5 — Расширенная конфигурация и полезные опции
Откройте /etc/csf/csf.conf для тонкой настройки.
- Не блокировать IP из csf.allow
По умолчанию LFD может блокировать IP, даже если они в csf.allow. Чтобы запретить LFD блокировать разрешённые адреса, установите:
IGNORE_ALLOW = "1"
Это полезно для статических IP администратора.
- Разрешить ICMP (ping)
ICMP_IN = "1"
ICMP_OUT = "1"
- Блокировка/разрешение по странам (через CC-коды)
CC_DENY = "CN,UK,US"
CC_ALLOW = "ID,MY,DE"
Используйте это с осторожностью: геоблокировка опирается на базы CIDR и может иметь ложно-положительные/отрицательные срабатывания.
- Уведомления по email о входах SSH и командах su
Включите отправку писем об SSH-login и запуске su:
LF_SSH_EMAIL_ALERT = "1"
LF_SU_EMAIL_ALERT = "1"
LF_ALERT_TO = "[email protected]"
Убедитесь, что почтовая система сервера способна отправлять письма (sendmail/postfix или внешний SMTP).
Рекомендации по безопасности и хардениг
- Всегда держите TESTING = “1” только на тестовых стендах. В проде — “0”.
- Добавьте ваши административные IP в csf.allow и включите IGNORE_ALLOW = “1”.
- Настройте LF* параметры (LF_SSH , LFSU) для чувствительных сервисов.
- Установите строгие правила для TCP_IN/TCP_OUT и минимизируйте открытые порты.
- Включите SYNFLOOD protection и CONNECTION tracking (параметры в csf.conf).
- Логи LFD анализируйте регулярно и настраивайте оповещения в централизованную систему мониторинга.
Когда CSF не подходит или где он слаб
- На микросервисной инфраструктуре с динамическими адресами и Kubernetes удобнее использовать сетевые политики CNI/Calico или облачные NSG.
- При сложных требованиях к stateful фильтрации на уровне L7 может потребоваться специализированный WAF.
- Если у вас уже активен firewalld и вы не готовы мигрировать — возможны конфликты.
Альтернативы и сочетания
- fail2ban — легче и проще для одиночных сервисов, но CSF предоставляет более полный набор возможностей и интеграций.
- nftables/firewalld — современная альтернатива iptables на уровне ядра.
- В облаке: security groups / network ACLs (AWS, GCP, Azure) решают сетевые ограничения вне ОС.
Чек-лист для быстрой проверки перед переходом в прод
- TESTING = “0”
- SSH-порт включён в TCP_IN
- Ваш административный IP в csf.allow
- IGNORE_ALLOW = “1” если нужна защита от блокировок
- Обновлены пакеты Perl и зависимости
- Логи LFD отправляются на reachable адрес
- Резервный доступ на случай блокировки SSH (KVM/console)
Руководство оператора — SOP развертывания (коротко)
- Создать снапшот/резерв сервера.
- Установить зависимости и CSF на тестовом стенде.
- Проверить csftest.pl и базовые команды.
- Перенести конфигурацию в прод, добавить админ-IP в csf.allow.
- Переключить TESTING = “0” и запустить csf/lfd.
- Наблюдать логи 24–48 часов, корректировать правило по необходимости.
Роль-ориентированные чек-листы
Администратор:
- Установить/обновить CSF.
- Настроить TCP_IN/TCP_OUT.
- Проверить уведомления по email.
Инженер безопасности:
- Проверить геоблокировку и правила SYNFLOOD.
- Интегрировать логи в SIEM.
Менеджер хостинга:
- Убедиться в интеграции с панелью управления.
- Настроить процедуры восстановления доступа.
Примеры тестов и критерии приёмки
- csftest.pl выводит рабочее состояние.
- SSH-подключение сохраняется после включения TESTING = “0”.
- IP из csf.allow не блокируется LFD (если IGNORE_ALLOW = “1”).
- Оповещения о проблемах приходят на указанный email.
Модель принятия решений (Mermaid)
flowchart TD
A[Нужен файрвол на сервере?] -->|Да| B{Используется firewalld?}
B -->|Да| C[Рассмотреть совместимость или миграцию в CSF]
B -->|Нет| D[Установить CSF + LFD]
D --> E{Паспорт доступа есть?}
E -->|Да| F[Добавить admin-IP в csf.allow и IGNORE_ALLOW]
E -->|Нет| G[Организовать резервный доступ 'KVM']
Отказ и откат (runbook)
Сценарий: после включения CSF вы потеряли SSH доступ.
- Сохраняйте доступ через консоль провайдера (KVM/IPMI).
- Откатите TESTING = “1” в /etc/csf/csf.conf или выполните csf -f для очистки правил.
- Перезапустите csf/lfd: systemctl restart csf lfd.
- Проверьте /var/log/lfd.log и /var/log/messages для диагностики.
Совместимость и миграция
- CSF работает с iptables; при переходе с firewalld — сначала отключите firewalld.
- При использовании cPanel/WHM интеграция происходит через модуль управления CSF.
- Для облачных инстансов проверьте взаимодействие с сетевыми группами в облаке.
Короткая памятка команд (cheat sheet)
- csf -s — старт
- csf -f — стоп/флаш
- csf -r — перезагрузка
- csf -a IP — разрешить IP
- csf -d IP — забанить IP
Заключение
CSF — практичное и мощное решение для управления iptables и обнаружения нештатных попыток входа на серверах Linux. Для хостинг-площадок и VPS с классическими сервисами (SSH, FTP, почта) CSF часто удобнее fail2ban за счёт интеграции и расширенных возможностей. Внимательно тестируйте правила и держите резервный доступ на случай ошибок при вводе правил.
Итого:
- Установите зависимости и CSF, прогоните csftest.pl.
- Отключите firewalld перед активацией CSF.
- Добавьте административные IP в csf.allow и включите IGNORE_ALLOW при необходимости.
- Настройте уведомления и мониторьте логи.
Примечание: никогда не экспериментируйте с правилами на проде без резервной консоли доступа.
Похожие материалы

Исправить ошибку Origin 65546:0 — пошагово

Исправить Feedburner: 0 подписчиков — быстро

Как передавать файлы между iPad и Android

Как строить винтовые лестницы в Conan Exiles

Как анонимно смотреть Instagram
