Что такое CSF (ConfigServer Security and Firewall)? Полное техническое руководство
CSF, или ConfigServer Security & Firewall, — это межсетевой экран с контролем состояния пакетов (SPI), демон обнаружения сбоев входа и комплекс усиления безопасности для Linux-серверов. Он функционирует как многофункциональный интерфейс для iptables (и nftables на более новых ядрах), абстрагируя сложное управление правилами в структурированный конфигурационный уровень и добавляя активное обнаружение угроз через сопутствующий демон LFD (Login Failure Daemon).
Для любого производственного Linux-сервера — будь то общий хостинг, VPS или выделенный сервер на физическом железе — CSF обеспечивает многоуровневую защиту периметра: фильтрацию входящего/исходящего трафика, анализ журналов в реальном времени, защиту от брутфорса, обнаружение сканирования портов и контроль доступа на уровне стран — всё это управляется через CLI или веб-интерфейс, интегрированный с cPanel, DirectAdmin или Webmin.
Как работает CSF изнутри
CSF не заменяет iptables или nftables — он управляет ими. Когда вы определяете правила в /etc/csf/csf.conf или работаете со списками IP, CSF транслирует эти директивы в правила netfilter на уровне ядра и применяет их атомарно.
Архитектура имеет два основных компонента, работающих параллельно:
- csf — движок правил межсетевого экрана, который читает конфигурационные файлы и заполняет цепочки
iptables/ip6tables. - lfd — постоянный демон, который в реальном времени отслеживает системные журналы, оценивает события аутентификации по настраиваемым порогам и инструктирует
csfдинамически блокировать или разблокировать IP-адреса.
При запуске CSF сбрасывает существующие цепочки и перестраивает их с нуля на основе своей конфигурации. Такой подход «чистого листа» предотвращает накопление правил и гарантирует, что состояние межсетевого экрана всегда детерминировано и поддаётся аудиту.
Режимы работы CSF
CSF работает в одном из двух основных режимов обработки трафика:
Режим разрешения (по умолчанию для большинства развёртываний): весь входящий и исходящий трафик по умолчанию запрещён. Разрешены только порты, явно указанные в директивах TCP_IN, TCP_OUT, UDP_IN и UDP_OUT. Это рекомендуемый производственный режим.
Режим тестирования (TESTING = "1"): CSF загружает правила, но LFD не применяет блокировки. Это предотвращает блокировку самого себя при начальной настройке. Всегда отключайте режим тестирования перед запуском в эксплуатацию:
# In /etc/csf/csf.conf, set:
TESTING = "0"
# Then restart CSF:
csf -rОсновные возможности CSF
Движок правил межсетевого экрана
CSF управляет четырьмя основными списками портов в csf.conf:
TCP_IN / UDP_IN — порты, открытые для входящих подключений
TCP_OUT / UDP_OUT — порты, разрешённые для исходящих подключений
Минимальная конфигурация веб-сервера может выглядеть следующим образом:
TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995,2077,2078,2082,2083,2086,2087,2095,2096"
TCP_OUT = "20,21,22,25,53,80,110,113,443,587,993,995"
UDP_IN = "20,21,53"
UDP_OUT = "20,21,53,113,123"
Помимо управления портами, CSF поддерживает правила на основе CIDR, позволяя разрешать или запрещать целые диапазоны сетей. Правила хранятся в плоских файлах для удобного управления версиями:
Файл
Назначение
/etc/csf/csf.allow
Постоянно разрешённые IP-адреса или CIDR
/etc/csf/csf.deny
Постоянно заблокированные IP-адреса или CIDR
/etc/csf/csf.ignore
IP-адреса, которые LFD никогда не заблокирует автоматически
/etc/csf/csf.dyndns
Динамические DNS-имена для автоматического разрешения и разрешения доступа
Демон обнаружения сбоев входа (LFD)
LFD — это активный интеллектуальный уровень CSF. Он отслеживает файлы журналов — включая /var/log/secure, /var/log/maillog, /var/log/exim_mainlog и другие — и подсчитывает ошибки аутентификации по исходному IP в пределах настраиваемого временного окна.
Основные директивы конфигурации LFD:
LF_TRIGGER — количество сбоев перед выдачей блокировки
LF_INTERVAL — скользящее временное окно (в секундах) для подсчёта сбоев
LF_DURATION — продолжительность временной блокировки (0 = постоянная)
LF_SSH, LF_FTPD, LF_SMTPAUTH, LF_POP3D, LF_IMAPD — пороги сбоев для отдельных сервисов
Практический пример усиления безопасности: установите LF_SSH = "5" с LF_INTERVAL = "300", чтобы блокировать любой IP, который 5 раз не прошёл аутентификацию SSH в течение 5 минут. Эта единственная директива устраняет подавляющее большинство автоматизированных атак с подбором учётных данных, нацеленных на порт 22.
Важный граничный случай: если ваша система мониторинга или агент резервного копирования аутентифицируется с динамического IP, он в конечном итоге сработает в LFD. Всегда добавляйте эти исходные IP-адреса в /etc/csf/csf.ignore перед ужесточением порогов.
Обнаружение вторжений и отслеживание процессов
Помимо мониторинга входа, LFD выполняет несколько функций обнаружения вторжений на уровне хоста:
PT_LOAD — отслеживает нагрузку на CPU и выдаёт предупреждения или блокирует, если процесс превышает заданные пороги; полезно для обнаружения майнинга криптовалюты или неуправляемых процессов в общей инфраструктуре.
PT_USERMEM и PT_USERTIME — ограничения памяти и процессорного времени на пользователя, критически важные для сред общего веб-хостинга, где необходима изоляция ресурсов.
LF_DIRWATCH — отслеживает изменения файлов в указанных каталогах, обеспечивая базовый мониторинг целостности файлов.
LF_SCRIPT_ALERT — обнаруживает скрипты, отправляющие чрезмерное количество писем, что является распространённым признаком скомпрометированного PHP-приложения.
Обнаружение сканирования портов
CSF использует отслеживание модуля iptables recent для выявления хостов, зондирующих несколько портов в быстрой последовательности. Директивы PS_INTERVAL, PS_LIMIT и PS_PORTS управляют чувствительностью. При обнаружении сканирования портов исходный IP немедленно добавляется в список запрещённых и отправляется оповещение.
Важный нюанс: агрессивное обнаружение сканирования портов может генерировать ложные срабатывания от легитимных сетевых сканеров, используемых командами безопасности или службами мониторинга доступности. Заблаговременно добавляйте IP-адреса таких сканеров в csf.ignore.
DDoS и ограничение скорости подключений
CSF предоставляет несколько механизмов для поглощения или отражения объёмных атак:
CT_LIMIT — максимальное количество одновременных подключений с одного IP. Установка значения 100–300 для веб-серверов предотвращает монополизацию слотов подключений одним хостом.
CT_INTERVAL — как часто запускается трекер подключений.
SYNFLOOD и SYNFLOOD_RATE — включает защиту от SYN-флуда iptables с настраиваемым ограничением скорости пакетов.
UDPFLOOD — ограничивает скорость UDP-пакетов на IP, снижая эффективность UDP-атак с усилением.
Важно понимать область применения защиты CSF от DDoS: она эффективна против атак на прикладном уровне и низкообъёмных атак на сетевом уровне, исходящих от ограниченного числа источников. Против масштабной объёмной DDoS-атаки (десятки Gbps) требуется нулевая маршрутизация на стороне провайдера или специализированный сервис очистки трафика. CSF дополняет, но не заменяет защиту на уровне сети провайдера.
Контроль доступа на уровне стран (CC_DENY / CC_ALLOW)
CSF интегрируется с базами данных MaxMind GeoIP для применения географических политик доступа. Директива CC_DENY принимает двухбуквенные коды стран по ISO 3166-1:
CC_DENY = "CN,RU,KP,IR"
В качестве альтернативы CC_ALLOW_FILTER в сочетании с CC_DENY = "ALL" создаёт географическую политику только на основе белого списка — полезно для сервисов, которые юридически или операционно обслуживают только определённые юрисдикции.
Операционная ловушка: базы данных GeoIP не являются абсолютно точными. Легитимные пользователи за корпоративными VPN или узлами CDN могут казаться находящимися в заблокированной стране. Сочетайте блокировку по стране с добавлением IP известных партнёров в белый список.
Временные блокировки и разблокировка
CSF поддерживает блокировки с ограниченным сроком действия, которые предпочтительнее постоянных запретов в неоднозначных случаях:
# Block an IP for 3600 seconds (1 hour)
csf -td 192.168.1.100 3600 "Suspicious scan activity"
# Remove a temporary block manually
csf -tr 192.168.1.100
# Check if an IP is currently blocked
csf -g 192.168.1.100
Оповещения по электронной почте и отчётность
CSF отправляет уведомления по электронной почте для широкого спектра событий. Директива LF_ALERT_TO задаёт адрес получателя. Категории оповещений включают:
Превышение порогов неудачных попыток входа
Успешные входы под root
Обнаружение сканирования портов
Нарушения ограничений ресурсов процессов
Изменения правил межсетевого экрана
Подозрительные изменения файлов (если включён LF_DIRWATCH)
Для серверов с высоким трафиком усталость от оповещений является реальным операционным риском. Используйте пороги LF_EMAIL_ALERT и рассмотрите возможность направления оповещений CSF в выделенный почтовый ящик или интеграцию с SIEM, а не в общий почтовый ящик. Надёжная доставка оповещений зависит от правильно настроенного почтового стека — если вы используете собственную почтовую инфраструктуру, почтовый хостинг с правильным выравниванием SPF/DKIM гарантирует, что оповещения CSF не будут молча отброшены как спам.
Установка CSF на Linux-сервер
CSF недоступен в стандартных репозиториях дистрибутивов. Установка проста:
# Download the latest release
cd /usr/src
wget https://download.configserver.com/csf.tgz
# Extract and install
tar -xzf csf.tgz
cd csf
sh install.sh
После установки убедитесь, что все необходимые модули iptables доступны:
perl /usr/local/csf/bin/csftest.pl
Любые результаты FATAL указывают на отсутствующие модули ядра, которые необходимо устранить до того, как CSF начнёт корректно работать. Результаты WARN носят информационный характер и, как правило, не блокируют работу.
Начальная конфигурация находится в /etc/csf/csf.conf. Наиболее важный первый шаг — отключить режим тестирования и определить разрешённые порты перед перезапуском демона.
Интеграция CSF с панелями управления
CSF поставляется с нативными плагинами пользовательского интерфейса для трёх основных панелей управления Linux-хостингом:
Панель управления
Метод интеграции
Расположение в интерфейсе
cPanel / WHM
Плагин CSF для WHM
WHM > Plugins > ConfigServer Security & Firewall
DirectAdmin
Плагин CSF
Панель администратора > Extra Features
Webmin
Модуль CSF для Webmin
Webmin > Networking > ConfigServer Security & Firewall
Интеграция с WHM является наиболее полнофункциональной: она предоставляет полный редактор конфигурационных файлов, поиск IP, управление временными блокировками и просмотр журналов прямо в интерфейсе WHM. Для администраторов, использующих VPS с cPanel, CSF фактически является стандартным решением межсетевого экрана — он предустановлен или легко устанавливается практически на каждом образе VPS с cPanel.
Для сред без панели управления CLI полностью функционален. Основные команды:
csf -s # Start firewall
csf -f # Stop (flush) firewall
csf -r # Restart firewall
csf -l # List current iptables rules
csf -a 203.0.113.5 # Allow an IP permanently
csf -d 203.0.113.5 # Deny an IP permanently
csf -g 203.0.113.5 # Check block status of an IP
csf -u # Check for CSF updates
CSF в сравнении с альтернативными решениями межсетевого экрана для Linux
Понимание места CSF в более широкой экосистеме поможет вам принять обоснованное архитектурное решение.
Функция
CSF + LFD
UFW
firewalld
Fail2ban + iptables
Основной уровень абстракции
iptables / nftables
iptables / nftables
nftables / iptables
iptables / nftables
Активная защита от брутфорса
Встроенная (LFD)
Отсутствует (требует дополнения)
Отсутствует (требует дополнения)
Основная функция
Интеграция с панелью управления
Нативная (cPanel, DA, Webmin)
Отсутствует
Отсутствует
Ограниченная
GeoIP / блокировка по стране
Встроенная
Отсутствует
Отсутствует
Через плагин
Обнаружение сканирования портов
Встроенное
Отсутствует
Отсутствует
Через фильтр
Мониторинг процессов/ресурсов
Встроенный (PT_*)
Отсутствует
Отсутствует
Отсутствует
Сложность конфигурации
Средняя–высокая
Низкая
Средняя
Средняя
Подходит для общего хостинга
Да
Нет
Нет
Частично
Поддержка IPv6
Да (ip6tables)
Да
Да
Да
Когда выбирать CSF: вы используете сервер с cPanel/DirectAdmin/Webmin, VPS или выделенный сервер в многопользовательском или хостинговом контексте, либо вам нужен единый инструмент, объединяющий управление межсетевым экраном, обнаружение брутфорса и мониторинг хоста без необходимости собирать несколько отдельных инструментов.
Когда рассматривать альтернативы: вы используете контейнеризованную среду микросервисов, где сетевая политика управляется на уровне оркестрации (Kubernetes NetworkPolicy, Calico), или вам нужно нативное управление nftables на современном дистрибутиве без устаревших прокладок совместимости iptables.
Распространённые сценарии использования и развёртывания
Защита сервера веб-хостинга
На типичном сервере cPanel CSF следует настроить так, чтобы:
Открыть только порты, необходимые для активных сервисов (HTTP, HTTPS, SMTP, IMAP, POP3, FTP, SSH, DNS)
Включить LF_SCRIPT_ALERT для обнаружения скомпрометированных PHP-мейлеров
Установить CT_LIMIT для предотвращения исчерпания подключений с одного источника
Включить интеграцию MODSEC, если установлен ModSecurity, для корреляции блокировок WAF с блокировками на уровне межсетевого экрана
Усиление защиты SSH
Сочетание CSF с аутентификацией SSH по ключу и нестандартным портом SSH создаёт надёжную систему контроля доступа:
# Allow only your management IP on the SSH port
# In /etc/csf/csf.allow:
tcp|in|d=2222|s=203.0.113.10 # Replace with your actual management IP and SSH port
Установите LF_SSH = "3" для блокировки любого IP после трёх неудачных попыток и добавьте ваш управляющий IP в csf.ignore для предотвращения случайной самоблокировки.
Защита почтовой инфраструктуры
Почтовые серверы являются ценными целями для брутфорса. Пороги LFD для отдельных сервисов CSF (LF_SMTPAUTH, LF_POP3D, LF_IMAPD) следует устанавливать агрессивно (3–5 сбоев) на любом сервере, обрабатывающем аутентифицированный SMTP. Дополните это правильно настроенными SSL-сертификатами на всех почтовых портах, чтобы предотвратить перехват учётных данных, который сделал бы защиту от брутфорса бессмысленной.
GPU и высокопроизводительные рабочие нагрузки
Для сред GPU-хостинга, запускающих API вывода ML или сервисы рендеринга, защита CT_LIMIT и SYNFLOOD в CSF особенно ценна — эти сервисы часто открывают высокоценные конечные точки API, привлекающие автоматизированное зондирование. Ограничьте порты API известными клиентскими CIDR через csf.allow и используйте CC_DENY для фильтрации географических регионов без легитимной пользовательской базы.
Контрольный список усиления конфигурации CSF
Перед тем как считать развёртывание CSF готовым к производству, проверьте следующее:
TESTING = "0" установлен и CSF перезапущен
TCP_IN и TCP_OUT содержат только порты, необходимые для активных сервисов — удалите неприменимые значения по умолчанию
Пороги LF_SSH, LF_FTPD, LF_SMTPAUTH установлены на 3–5 сбоев
Ваши управляющие IP-адреса находятся в /etc/csf/csf.ignore и /etc/csf/csf.allowCT_LIMIT включён и установлен на разумное значение (100–300 для веб-серверов)SYNFLOOD = "1" включён на серверах, доступных из интернетаLF_SCRIPT_ALERT = "1" включён на серверах, запускающих PHP-приложенияLF_ALERT_TO указывает на отслеживаемый почтовый ящикcsf -u запускается периодически или автоматизирован через cron для поддержания CSF в актуальном состоянииperl /usr/local/csf/bin/csftest.pl не возвращает ошибок FATAL после любого обновления ядраМатрица решений: подходит ли CSF для вашей среды?
| Среда | Рекомендуется CSF? | Примечания |
|---|---|---|
| VPS или выделенный сервер с cPanel / WHM | Да, настоятельно | Нативная интеграция, отраслевой стандарт |
| Сервер DirectAdmin | Да | Полная поддержка плагина |
| Чистый Linux VPS без панели управления | Да | Управление через CLI, полный набор функций |
| Общий хостинг (конечный пользователь) | Н/П | Управляется хостером, а не конечным пользователем |
| Кластер Docker / Kubernetes | Нет | Используйте сетевые политики и инструменты на основе eBPF |
| Windows Server | Нет | CSF работает только на Linux |
| Источник CDN с высоким трафиком | Частично | Сочетайте с защитой от DDoS на стороне провайдера |
Часто задаваемые вопросы
В чём разница между CSF и Fail2ban?
Оба инструмента выполняют блокировку IP при брутфорсе путём анализа файлов журналов, однако CSF является полным комплексом безопасности, который также управляет базовыми правилами межсетевого экрана, доступом к портам, ограничением скорости подключений, мониторингом процессов и фильтрацией GeoIP. Fail2ban — это специализированный инструмент предотвращения вторжений, который для применения блокировок полагается на внешний межсетевой экран (iptables, nftables или firewalld). На хостинговых серверах с панелями управления CSF является более операционно полным решением. На минимальных Linux-системах или в контейнерах Fail2ban в паре с firewalld может быть легче и более уместен.
Может ли CSF блокировать IPv6-трафик?
Да. CSF управляет наборами правил как iptables (IPv4), так и ip6tables (IPv6). Поддержка IPv6 включена по умолчанию, если ядро её поддерживает. Убедитесь, что в csf.conf установлен IPV6 = "1" и настроены списки портов TCP6_IN / TCP6_OUT, поскольку по умолчанию они зеркалируют настройки IPv4, но могут быть настроены независимо.
Как предотвратить случайную блокировку самого себя при настройке CSF?
Добавьте ваш управляющий IP в /etc/csf/csf.allow и /etc/csf/csf.ignore перед внесением любых ограничительных изменений. Сохраняйте TESTING = "1" при начальной настройке — в режиме тестирования CSF загружает правила, но LFD не применяет блокировки, а правила автоматически сбрасываются через 5 минут, если не подтверждены. Устанавливайте TESTING = "0" только после проверки подключения.
Работает ли CSF на серверах без панели управления?
Да, в полной мере. CSF устанавливается и управляется полностью через командную строку. Веб-интерфейс является необязательным удобным уровнем для сред с панелями управления. Вся конфигурация выполняется через плоские файлы в /etc/csf/ и бинарный файл CLI csf. Многие администраторы предпочитают управление только через CLI ради возможности аудита и автоматизации с помощью инструментов управления конфигурацией, таких как Ansible или Puppet.
Как часто следует обновлять CSF и как это делается?
CSF следует обновлять при каждом выходе новой версии, особенно при изменениях, связанных с безопасностью. Проверьте наличие обновлений с помощью csf -u, который сравнивает установленную версию с последним выпуском на сервере загрузки ConfigServer. Обновления можно применять непосредственно из плагина WHM или через CLI. Автоматизируйте проверку с помощью еженедельного задания cron, но применяйте обновления вручную после ознакомления с журналом изменений — обновления CSF иногда изменяют значения конфигурации по умолчанию, которые требуют проверки перед развёртыванием.
