15%

Сэкономьте 15% на всех хостинговых услугах

Проверьте свои навыки и получите скидку на любой тарифный план

Используйте код:

Skills
Начать
23.10.2024

Что такое CSF (ConfigServer Security and Firewall)? Полное техническое руководство

CSF, или ConfigServer Security & Firewall, — это межсетевой экран с контролем состояния пакетов (SPI), демон обнаружения сбоев входа и комплекс усиления безопасности для Linux-серверов. Он функционирует как многофункциональный интерфейс для iptablesnftables на более новых ядрах), абстрагируя сложное управление правилами в структурированный конфигурационный уровень и добавляя активное обнаружение угроз через сопутствующий демон 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.allow
  • CT_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 иногда изменяют значения конфигурации по умолчанию, которые требуют проверки перед развёртыванием.

    15%

    Сэкономьте 15% на всех хостинговых услугах

    Проверьте свои навыки и получите скидку на любой тарифный план

    Используйте код:

    Skills
    Начать