Установка и настройка ConfigServer Firewall (CSF) на Rocky Linux 9
CSF — это iptables-ориентированный фильтр пакетов с поддержкой stateful packet inspection, LFD и web‑интерфейса. Руководство пошагово показывает: отключение firewalld, установку зависимостей, установку CSF, базовую конфигурацию портов и правил, защиту от DDoS, включение GUI и автоматизацию SSL с помощью Certbot. В конце — чеклисты, runbook для инцидентов и тесты приёмки.

Что такое CSF в одной строке
CSF (ConfigServer Security and Firewall) — удобный набор утилит поверх iptables/iptables‑modules, который добавляет автоматическую блокировку по попыткам входа, интеграцию с блоклистами и веб‑панель управления.
Ключевые варианты поискового запроса
- Установка CSF на Rocky Linux 9
- Настройка ConfigServer Firewall
- CSF tutorial Rocky Linux
- CSF GUI настройка и SSL
Требования (Prerequisites)
- Сервер с Rocky Linux 9, минимум 1 ГБ оперативной памяти.
- Непользователь root с правами sudo.
- FQDN (например, csf.example.com), указывающий на ваш сервер.
- Система обновлена:
$ sudo dnf update- Установлены базовые пакеты (если их нет):
$ sudo dnf install wget curl nano unzip yum-utils policycoreutils-python-utils -yВажно: многие команды далее выполняются от имени sudo. Кодовые примеры и пути файлов сохранены как в оригинале и применимы на Rocky Linux 9.
Шаг 1 — Отключение firewalld
По умолчанию Rocky Linux использует firewalld. CSF работает поверх iptables, поэтому лучше отключить firewalld, чтобы избежать конфликтов.
Проверка статуса:
$ sudo systemctl status firewalldОстановка и отключение:
$ sudo systemctl stop firewalld
$ sudo systemctl disable firewalldВажно: перед отключением убедитесь, что у вас есть консольный доступ (консоль провайдера или KVM) на случай, если после изменений вы потеряете доступ по сети.
Шаг 2 — Установка необходимых Perl‑модулей
CSF зависит от ряда Perl‑пакетов. Сначала установите EPEL репозиторий:
$ sudo dnf install epel-releaseЗатем установите модули:
$ sudo dnf install perl-core perl-libwww-perl.noarch perl-LWP-Protocol-https.noarch perl-GDGraph -yЕсли у вас минимальная система, некоторые зависимости могут требовать дополнительных библиотек — dnf подскажет, какие пакеты добавить.
Шаг 3 — Загрузка и установка CSF
CSF не входит в стандартные репозитории, поэтому устанавливаем вручную.
Скачивание архива:
$ wget https://download.configserver.com/csf.tgzРаспаковка и установка:
$ tar xzf csf.tgz
$ cd csf
$ sudo ./install.shПосле установки скрипт сообщит о создании системных юнитов для csf и lfd. Проверьте наличие необходимых модулей iptables:
$ sudo perl /usr/local/csf/bin/csftest.plОжидаемый вывод подтверждает, что модульный набор присутствует и CSF может работать.
Проверка версии CSF:
$ sudo csf -v
csf: v14.20 (generic)
*WARNING* TESTING mode is enabled - do not forget to disable it in the configurationШаг 4 — Базовая конфигурация CSF
Основной файл конфигурации: /etc/csf/csf.conf.
Откройте его в редакторе:
$ sudo nano /etc/csf/csf.confПереключите режим тестирования (обязательно перед выводом в прод):
TESTING = "0"Ограничение доступа к системным логам (рекомендуется для хостинга с несколькими сервисами):
Измените RESTRICT_SYSLOG = "0" на RESTRICT_SYSLOG = "3". Пользователи, которым разрешён доступ к syslog, хранятся в /etc/csf/csf.syslogusers.
Важно: сохраните резервную копию файла конфигурации перед масштабными правками:
$ sudo cp /etc/csf/csf.conf /etc/csf/csf.conf.bakШаг 5 — Открытые порты и IPv6
По умолчанию CSF открывает набор портов для входящих и исходящих соединений. В файле конфигурации это определяется переменными TCP_IN, TCP_OUT, UDP_IN, UDP_OUT и их IPv6‑аналогами TCP6_IN и т.д.
Пример из конфигурации:
# Allow incoming TCP ports
TCP_IN = "20,21,22,25,53,853,80,110,143,443,465,587,993,995"
# Allow outgoing TCP ports
TCP_OUT = "20,21,22,25,53,853,80,110,113,443,587,993,995"
# Allow incoming UDP ports
UDP_IN = "20,21,53,853,80,443"
# Allow outgoing UDP ports
# To allow outgoing traceroute add 33434:33523 to this list
UDP_OUT = "20,21,53,853,113,123"Сопоставление портов и сервисов (перевод и расшифровка):
- 20 — FTP data
- 21 — FTP control
- 22 — SSH (Secure Shell)
- 25 — SMTP
- 53 — DNS
- 80 — HTTP
- 110 — POP3
- 113 — идентификация (ident)
- 123 — NTP
- 143 — IMAP
- 443 — HTTPS
- 465 — SMTPS / устаревшее (используется редко)
- 587 — SMTP submission
- 993 — IMAPS
- 995 — POP3S
Рекомендация: оставляйте открытыми только те порты, которые действительно используются серверами/службами. Для IPv6 настройте TCP6_* и UDP6_* соответствующим образом.
Шаг 6 — Важные дополнительные настройки
Краткое объяснение ключевых переменных (в файле /etc/csf/csf.conf):
- ICMP_IN — разрешает ли пинги (1) или блокирует (0). Для публичных сервисов обычно оставляют 1.
- ICMP_IN_LIMIT — ограничение частоты ICMP-запросов от одного IP.
- DENY_IP_LIMIT — максимальное количество зон для постоянного бана; важно не ставить слишком высоко на слабых машинах.
- DENY_TEMP_IP_LIMIT — то же для временных банов.
- PACKET_FILTER — фильтрует «нелегальные» пакеты.
- CONNLIMIT — лимит одновременных соединений по порту в формате: “порт;лимит;порт2;лимит2”.
Пример CONNLIMIT:
CONNLIMIT = "22;5;443;20"Это значит: не более 5 одновременных соединений на порт 22 с одного IP и не более 20 на порт 443.
PORTFLOOD — ограничение частоты новых подключений к определённым портам. Формат:
PORTFLOOD = "порт;протокол;макс_подключений;период"Пример:
PORTFLOOD = "22;tcp;5;250"Блок будет снят через указанный период (в секундах).
После правок перезапустите сервисы:
$ sudo systemctl start csf lfd
$ sudo systemctl enable csf lfdПроверка статуса:
$ sudo systemctl status csfПроверка слушающих портов через CSF:
$ sudo csf -pСекция AUTO_UPDATES — включение автообновлений CSF (cron запускает обновления раз в сутки):
AUTO_UPDATES = "1"ETHDEVICE — применить правила только к конкретному интерфейсу (например, eth0). LF* — параметры работы LFD (Login Failure Daemon):
- LF_DAEMON = 1 — включить LFD
- LF_CSF = 1 — автоперезапуск CSF при необходимости
- LF_SELECT = 1 — блокировать только сервис, по которому совершались неудачные попытки логина
- LF_SSHD — число неудачных попыток перед блокировкой
CT_LIMIT — лимит количества соединений с одного IP.
Шаг 7 — Разрешение и блокировка IP адресов
CSF использует три конфигурационных файла для управления списками:
/etc/csf/csf.deny— постоянный deny (черный список)/etc/csf/csf.allow— whitelist (разрешённые IP)/etc/csf/csf.ignore— игнорировать (обход фильтрации)
Добавление в csf.deny:
$ sudo nano /etc/csf/csf.denyФормат: одна запись на строку, возможен CIDR:
1.2.3.4 2.3.0.0/16Добавление в csf.allow — записанные IP всегда имеют приоритет перед deny.
После любых изменений примените правило:
$ sudo csf -rВажно: порядок правил и приоритет whitelist перед deny — ключевой момент.
Шаг 8 — Защита от DDoS и дополнительные механизмы
CSF помогает защититься от некоторых типов DDoS‑атак через настройки ограничений частоты и подключений, блоклисты и country‑blocking.
Защита от SYN flood
Включается через:
SYNFLOOD = "1"
SYNFLOOD_RATE = "100/s"
SYNFLOOD_BURST = "150"Эти настройки следует активировать только во время атаки — в противном случае возможны задержки при установлении новых соединений.
Блоклисты (blocklists)
CSF поддерживает внешние IP‑листинги: Spamhaus, Project Honey Pot, Blocklist.de и пр. Файл конфигурации для списков: /etc/csf/csf.blocklists.
Формат собственной записи:
NAME|INTERVAL|MAX|URL- NAME — название списка (MAKS. 25 символов, капсом)
- INTERVAL — частота обновления в секундах (минимум 3600)
- MAX — максимальное количество адресов из списка (0 — взять все)
- URL — ссылка на список
Блокировка по странам
CSF умеет блокировать по странам. Две модели сопоставления IP→страна:
- БЕСПЛАТНО: DB‑IP, ipdeny.com, iptoasn.com (могут быть менее точны).
- Платно/точно: MaxMind GeoIP2 с лицензионным ключом (есть бесплатная опция для базовой БД).
Пример настройки для MaxMind:
MM_LICENSE_KEY = "XXXXXXXXXXX"
CC_SRC = "1"Блокировка страны (RU):
CC_DENY = "RU"Разрешение только для конкретных стран:
CC_ALLOW_FILTER = "IN,GB"Важно: country‑blocking может повредить пользователям, использующим прокси или CDN; тестируйте в staging.
Шаг 9 — Часто используемые команды CSF
Краткая шпаргалка по командам (оставлены точно как в исходнике):
- Включить и активировать CSF:
$ sudo csf -e- Отключить CSF:
$ sudo csf -x- Запустить правила:
$ sudo csf -s- Сброс/остановка правил:
$ sudo csf -f- Перезапуск:
$ sudo csf -r- Временный бан IP:
$ sudo csf -td 1.2.3.4
$ sudo csf -tr 1.2.3.4 # снять временный бан
$ sudo csf -tf # удалить все временные блокировки- Добавить в deny:
$ sudo csf -d 1.2.3.4
$ sudo csf -dr 1.2.3.4 # удалить из deny
$ sudo csf -dr # удалить все из deny- Добавить/удалить allow:
$ sudo csf -a 1.2.3.4
$ sudo csf -ar 1.2.3.4- Поиск ip/port в правилах:
$ sudo csf -g 1.2.3.4
$ sudo csf -g 80Шаг 10 — Включение GUI панели CSF
Дополнительные Perl‑модули для GUI:
$ sudo dnf install perl-IO-Socket-SSL.noarch perl-Net-SSLeay perl-IO-Socket-INET6 perl-Socket6 -yОткройте /etc/csf/csf.conf и измените:
UI = "1"Порт веб‑панели по умолчанию 6666 блокируется некоторыми браузерами. Выберите порт >1024, например 1037:
UI_PORT = "1037"Ограничение IP, которые могут привязываться к веб‑панели:
UI_IP = "1.2.3.4"Укажите учётные данные:
UI_USER = "username"
UI_PASS = "password"По умолчанию GUI доступен только из /etc/csf/ui/ui.allow. Чтобы открыть всем, укажите:
UI_ALLOW = "0"CSF по умолчанию использует самоподписанные сертификаты; в разделе ниже показано, как заменить их на Let’s Encrypt.
Шаг 11 — Установка и автоматизация Let’s Encrypt (Certbot)
Установим snapd (если его ещё нет):
$ sudo dnf install -y snapd
$ sudo systemctl enable snapd --now
$ sudo snap install core && sudo snap refresh core
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.shУстановка Certbot:
$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbotПроверка версии (пример из исходного материала):
$ certbot --version
certbot 2.7.4Генерация сертификата (пример команды):
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m admin@example.com -d csf.example.comСертификаты будут лежать в /etc/letsencrypt/live/csf.example.com.
Сохраните старые сертификаты и скопируйте новые в директорию CSF UI:
$ sudo mv /etc/csf/ui/server.crt /etc/csf/ui/server.crt.old
$ sudo mv /etc/csf/ui/server.key /etc/csf/ui/server.key.old
$ sudo cp /etc/letsencrypt/live/csf.example.com/fullchain.pem /etc/csf/ui/server.crt
$ sudo cp /etc/letsencrypt/live/csf.example.com/privkey.pem /etc/csf/ui/server.key
$ sudo systemctl restart csf lfdАвтоматизация копирования после продления: создайте скрипт /etc/csf/certcopy.sh с содержимым:
#!/bin/sh
cp -f /etc/letsencrypt/live/csf.example.com/fullchain.pem /etc/csf/ui/server.crt
cp -f /etc/letsencrypt/live/csf.example.com/privkey.pem /etc/csf/ui/server.keyСделайте его исполняемым и добавьте post_hook в файл /etc/letsencrypt/renewal/csf.example.com.conf:
post_hook = /etc/csf/certcopy.shПроверьте таймеры:
$ sudo systemctl list-timersИ протестируйте dry‑run продления:
$ sudo certbot renew --dry-runЕсли ошибок нет — автоматизация корректна.
Шаг 12 — Доступ к веб‑панели CSF
Откройте в браузере:
https://csf.example.com:1037
Войдите под учётными данными, указанными в csf.conf.

Панель имеет адаптивный вид и интегрируется с контрол‑панелями (см. матрицу совместимости далее).
Шаг 13 — Удаление CSF
Если нужно удалить CSF:
$ sudo sh /etc/csf/uninstall.shВключите и запустите firewalld вновь, если требуется:
$ sudo systemctl enable firewalld --nowМатрица совместимости и примечания по интеграции
- cPanel — интеграция возможна, CSF часто используется в cPanel окружениях.
- DirectAdmin — интеграция поддерживается через отдельные модули.
- Webmin — поставляется интеграция
csfwebmin.tgz(обычно устанавливается при инсталляции). - CyberPanel, Vesta — возможна ручная интеграция; проверяйте совместимость версий PHP/Perl.
Совет: для managed‑хостинга держите тестовую площадку и протестируйте интеграцию перед продакшеном.
Резервирование и откат (Rollback)
- Перед изменениями всегда сохраняйте копии конфигураций:
$ sudo cp /etc/csf/csf.conf /etc/csf/csf.conf.bak-`date +%F-%T`- Если после правок потерян доступ по SSH, используйте консоль провайдера и восстановите конфигурацию из бэкапа или временно отключите CSF:
$ sudo csf -x- Для возврата предыдущих сертификатов:
$ sudo mv /etc/csf/ui/server.crt.old /etc/csf/ui/server.crt
$ sudo mv /etc/csf/ui/server.key.old /etc/csf/ui/server.key
$ sudo systemctl restart csf lfdRunbook при DDoS или массовых попытках логина
- Быстрая диагностика:
- Просмотрите
csf -gдля подозрительных IP иsudo tail -n 200 /var/log/lfd.log. - Используйте
ss -tnpилиnetstat -tnpдля обнаружения большого количества соединений.
- Смягчение воздействия:
- Включите
SYNFLOODс жёсткими параметрами на время атаки. - Увеличьте агрессивность
PORTFLOODиCONNLIMITдля критичных портов. - Вручную заблокируйте подозрительные подсети в
csf.deny.
- Временные меры:
$ sudo csf -td 1.2.3.4 # временный бан конкретного IP
$ sudo csf -d 5.6.7.0/24 # постоянный блок подсети (только после проверки)- После атаки:
- Проанализируйте логи, сохраните их для пост‑инцидентного анализа.
- Откатите временные ограничения, если они мешают нормальной работе.
- Подумайте о внедрении CDN/балансировщика или DDoS‑защиты на уровне провайдера.
Тестовые случаи и критерии приёмки
Критерии приёмки для базового развёртывания:
- CSF установлен и сервисы
csfиlfdактивны. - TESTING = “0” в
/etc/csf/csf.conf. - Минимально необходимые порты открыты; лишние закрыты.
- Веб‑панель доступна по HTTPS и использует валидный сертификат.
- Корректная обработка временного и постоянного банов (
/var/lib/csf/csf.tempbanи/etc/csf/csf.deny).
Тестовые шаги:
- Попытка сделать 6 неудачных SSH‑входов с тестовой машины — убедиться, что LFD блокирует после LF_SSHD попыток.
- Сымитировать SYN flood с тестового стенда (осторожно!) и убедиться, что SYNFLOOD активируется.
- Обновить сертификат через Certbot dry‑run и проверить, что
post_hookкорректно копирует файлы.
Роль‑ориентированные чеклисты
Администратор (на развёртывании):
- Обновить систему
- Отключить firewalld
- Установить EPEL, Perl‑модули
- Установить CSF и протестировать csftest.pl
- Настроить базовую конфигурацию и TESTING=0
DevOps / SRE:
- Настроить порты и CONNLIMIT/PORTFLOOD
- Добавить мониторинг LFD и метрики (логирование ошибок)
- [ ] Настроить резервное копирование
/etc/csf
Специалист по безопасности:
- Включить LFD и настроить LF_* параметры
- Включить blocklists по необходимости
- Ограничить доступ к GUI через UI_IP
Шпаргалка команд (cheat sheet)
- Перезапуск правил:
sudo csf -r - Включить CSF:
sudo csf -e - Отключить CSF:
sudo csf -x - Проверка портов:
sudo csf -p - Временный бан:
sudo csf -td IP - Добавить в deny:
sudo csf -d IP - Удалить из deny:
sudo csf -dr IP
Ментальные модели и когда CSF не подходит
Когда CSF хорош:
- Нужен быстрый и проверенный iptables‑фронт с LFD и простым UI.
- Среды с cPanel/DirectAdmin/Webmin, где CSF давно используется.
Когда CSF не подходит:
- В окружениях, где используется только nftables, и вы хотите нативную поддержку nft.
- Когда нужна распределённая политика firewall‑as‑code с централизованным управлением (в больших облачных средах лучше использовать сетевые ACL провайдера или firewalls в рамках облачной платформы).
Альтернативы:
- firewalld (works well with systemd and nftables)
- nftables напрямую (современная замена iptables)
- Cloud provider native ACLs / WAF / CDN для защиты от крупных DDoS
Факты: ключевые параметры (Фактбокс)
- Путь установки CSF:
/usr/local/csf - Конфигурация:
/etc/csf/csf.conf - GUI конфигурация:
/etc/csf/ui - Логи LFD:
/var/log/lfd.log - Рекомендация по портам: используйте только необходимые TCP/UDP порты
Безопасность и hardening
- Закройте UI: используйте
UI_IPи сильный пароль или IP‑белый список. - Используйте Let’s Encrypt и автоматизируйте копирование сертификатов.
- Разрешения на
/etc/csf/uiдолжны быть ограничены:drw-------как минимум. - Храните бэкапы конфигураций и фиксируйте изменения в системе управления конфигурациями (Ansible/Puppet/Chef).
Конфиденциальность и логи
CSF и LFD логируют IP‑адреса и события входа. Если ваши логи содержат персональные данные (IP может считаться персональными данными в некоторых юрисдикциях), убедитесь в соответствии политики хранения логов правилам GDPR/локальным законам по хранению данных: задайте период хранения и доступ к логам только избранным операторам.
Диаграмма выбора (Mermaid)
flowchart TD
A[Нужно защитить сервер?] --> B{Используете ли вы nftables напрямую?}
B -- Да --> C[Рассмотрите native nftables]
B -- Нет --> D{Требуется GUI и быстрый старт?}
D -- Да --> E[CSF — простой развёртываемый выбор]
D -- Нет --> F{В облаке: нужен сетевой ACL?}
F -- Да --> G[Используйте сетевые возможности провайдера]
F -- Нет --> E
C --> H[Настройка через iptables‑compat если нужно]Краткое резюме
- CSF — удобное решение для большинства VPS/хостинг‑сред с быстрым развёртыванием и web‑интерфейсом.
- На Rocky Linux 9 последовательность: отключить firewalld → установить EPEL и Perl → установить CSF → настроить csf.conf → активировать LFD и GUI → настроить SSL через Certbot и автоматизировать копирование сертификатов.
- Для продакшена: тестируйте блоклисты, не включайте SYNFLOOD без необходимости и держите резервные копии конфигураций.
Если остались вопросы по конкретным настройкам (например, настройка CONNLIMIT под нагрузку или интеграция с cPanel), укажите сценарий — подготовлю конкретный playbook.
Краткое заключение
Этот материал даёт полный рабочий набор инструкций и операционных процедур для развёртывания CSF на Rocky Linux 9, проверку работоспособности, автоматизацию SSL и действия при инцидентах. Следуйте чеклистам и тестам приёмки перед переносом изменений в продакшен.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента