Гид по технологиям

Установка и настройка ConfigServer Firewall (CSF) на Rocky Linux 9

• 10 min read • DevOps • Обновлено 27 Nov 2025
Установка CSF на Rocky Linux 9 — руководство
Установка CSF на Rocky Linux 9 — руководство

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

Схема архитектуры CSF и компонентов LFD

Что такое 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

Войдите под учётными данными, указанными в csf.conf.

Мобильный вид панели управления CSF

Панель имеет адаптивный вид и интегрируется с контрол‑панелями (см. матрицу совместимости далее).

Шаг 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)

  1. Перед изменениями всегда сохраняйте копии конфигураций:
$ sudo cp /etc/csf/csf.conf /etc/csf/csf.conf.bak-`date +%F-%T`
  1. Если после правок потерян доступ по SSH, используйте консоль провайдера и восстановите конфигурацию из бэкапа или временно отключите CSF:
$ sudo csf -x
  1. Для возврата предыдущих сертификатов:
$ 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 lfd

Runbook при DDoS или массовых попытках логина

  1. Быстрая диагностика:
  • Просмотрите csf -g для подозрительных IP и sudo tail -n 200 /var/log/lfd.log.
  • Используйте ss -tnp или netstat -tnp для обнаружения большого количества соединений.
  1. Смягчение воздействия:
  • Включите SYNFLOOD с жёсткими параметрами на время атаки.
  • Увеличьте агрессивность PORTFLOOD и CONNLIMIT для критичных портов.
  • Вручную заблокируйте подозрительные подсети в csf.deny.
  1. Временные меры:
$ sudo csf -td 1.2.3.4  # временный бан конкретного IP
$ sudo csf -d 5.6.7.0/24  # постоянный блок подсети (только после проверки)
  1. После атаки:
  • Проанализируйте логи, сохраните их для пост‑инцидентного анализа.
  • Откатите временные ограничения, если они мешают нормальной работе.
  • Подумайте о внедрении 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 и действия при инцидентах. Следуйте чеклистам и тестам приёмки перед переносом изменений в продакшен.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро