Установка CSF (Config Server Firewall) на любом VPS: пошаговая инструкция

Что такое CSF

CSF (ConfigServer Security & Firewall) — это надстройка над iptables/nftables для Linux, которая делает управление файрволом понятным и удобным даже без графического интерфейса. Вместе с самим файрволом идёт демон LFD (Login Failure Daemon) — он следит за логами сервера и автоматически блокирует IP-адреса, с которых пытаются подобрать пароль методом брутфорса (SSH, FTP, почтовые сервисы, админки сайтов и так далее).

Исторически CSF ассоциировался преимущественно с панелями управления (cPanel, DirectAdmin, Webmin), но это обычный набор Perl-скриптов, который прекрасно устанавливается и работает на голом сервере — без какой-либо панели.

В этой статье мы рассмотрим защиту VPS — сервер на Ubuntu или Almalinux от атак, за закрыть/открыть необходимые порты без знаний iptables и опыта в системном администрировании.

Основные возможности

  • Пакетный файрвол на базе iptables/nftables — гибкое управление входящим и исходящим трафиком по портам, протоколам и IP-адресам.
  • LFD (Login Failure Daemon) — автоматическая блокировка IP после нескольких неудачных попыток входа.
  • Защита от флуда соединений — ограничение количества одновременных подключений с одного IP-адреса.
  • Блокировка по странам — можно закрыть доступ к серверу для целых регионов мира.
  • Собственные чёрные/белые списки — быстрое добавление исключений для доверенных или заблокированных адресов.
  • Уведомления на почту — о подозрительной активности, изменениях системных файлов, превышении нагрузки.
  • Управление через CLI — всё настраивается командами или редактированием текстовых конфигов, без обязательного веб-интерфейса.

Что нужно подготовить заранее

  • VPS с Ubuntu 20.04/22.04/24.04 или AlmaLinux 8/9 с доступом к sudo
  • Активная SSH-сессия с доступом к консоли провайдера (VNC/KVM) на случай, если неправильная настройка файрвола заблокирует вам доступ
  • На сервере не должно быть одновременно двух активных систем управления пакетным фильтром (например, UFW или firewalld вместе с CSF) — об этом ниже

Обновите систему перед началом.

Ubuntu:

sudo apt update && sudo apt upgrade -y

AlmaLinux:

sudo dnf upgrade -y

Установка на Ubuntu

Шаг 1. Установка зависимостей

CSF написан на Perl, поэтому нужны соответствующие модули и утилиты для работы с сетью.

sudo apt install -y wget curl perl libwww-perl liblwp-protocol-https-perl iptables

Шаг 2. Отключение UFW (если он активен)

CSF управляет iptables напрямую, и если одновременно активен UFW, они будут конфликтовать между собой — правила одного будут перезаписывать или противоречить правилам другого.

sudo ufw disable

Шаг 3. Загрузка и установка Sentinel Firewall

cd /usr/src
sudo wget https://github.com/sentinelfirewall/sentinel/raw/refs/heads/main/csf.tgz
sudo tar -xzf csf.tgz
cd csf
sudo sh install.sh

Скрипт установки сам создаст нужные каталоги (/etc/csf, /usr/local/csf), настроит systemd-службы csf и lfd и применит базовый набор правил.

Установка на AlmaLinux

Шаг 1. Установка зависимостей

На AlmaLinux некоторые Perl-модули (в частности, для работы с HTTPS и графиками в отчётах LFD) могут отсутствовать в базовом репозитории — тогда понадобится EPEL.

sudo dnf install -y epel-release
sudo dnf install -y wget curl perl perl-libwww-perl perl-LWP-Protocol-https perl-GDGraph

Если какой-то из модулей не найден даже после подключения EPEL — проверьте точное название пакета командой dnf search perl-<название>, оно иногда отличается между версиями AlmaLinux 8 и 9.

Шаг 2. Отключение firewalld (если он активен)

На AlmaLinux по умолчанию активен firewalld. Так же, как и с UFW на Ubuntu, держать одновременно два независимых механизма управления пакетным фильтром — плохая идея.

sudo systemctl stop firewalld
sudo systemctl disable firewalld

Шаг 3. Загрузка и установка Sentinel Firewall

cd /usr/src
sudo wget https://github.com/sentinelfirewall/sentinel/raw/refs/heads/main/csf.tgz
sudo tar -xzf csf.tgz
cd csf
sudo sh install.sh
Примечание про SELinux: на AlmaLinux с включённым SELinux (типовая конфигурация) CSF обычно работает без дополнительных настроек, поскольку взаимодействует с ядром через стандартные механизмы iptables/nftables. Если после установки увидите в логах отказы, связанные с SELinux, проверьте sudo ausearch -m avc -ts recent для диагностики конкретной причины, вместо того чтобы сразу отключать SELinux полностью.

Проверка совместимости с ядром сервера

Независимо от дистрибутива, сразу после установки стоит проверить, поддерживает ли ядро сервера все нужные модули iptables/nftables. Это особенно актуально для некоторых урезанных VPS-образов (например, OpenVZ-контейнеров), где часть модулей ядра может быть недоступна.

sudo perl /usr/local/csf/bin/csftest.pl

Если в конце вывода видите строку RESULT: csf should function on this server — всё в порядке, можно двигаться дальше. Если есть предупреждения об отсутствующих модулях — это не всегда критично (часть функций CSF просто будет недоступна), но стоит обратить внимание, не касается ли это базовых функций блокировки.

Выход из тестового режима

По умолчанию CSF устанавливается в режиме тестирования (TESTING) — это защита от того, чтобы неправильно настроенные правила сразу же заблокировали вам доступ к серверу. В этом режиме файрвол автоматически очищает все правила каждый час.

Прежде чем отключать тестовый режим, обязательно добавьте свой текущий IP-адрес в белый список, иначе есть реальный риск заблокировать самому себе доступ по SSH.

Узнать свой текущий внешний IP-адрес:

curl ifconfig.me

Добавьте его в файл исключений:

sudo nano /etc/csf/csf.allow

Впишите адрес отдельной строкой, например:

123.45.67.89

После этого отредактируйте основной конфиг:

sudo nano /etc/csf/csf.conf

Найдите строку:

TESTING = "1"

и измените на:

TESTING = "0"

Заодно проверьте секцию TCP_IN — убедитесь, что там точно присутствует порт, которым вы подключаетесь по SSH (по умолчанию 22, но если вы его меняли — укажите свой).

Сохраните файл и перезапустите файрвол:

sudo csf -r

Держите открытой вторую SSH-сессию, пока проверяете, что новая конфигурация не заблокировала соединение — если что-то пошло не так, через эту вторую сессию можно будет откатить изменения, не дожидаясь доступа через консоль хостинг-провайдера.

Базовые команды для повседневной работы

Команда Что делает
sudo csf -e Включить файрвол
sudo csf -x Отключить файрвол (все правила снимаются)
sudo csf -r Перезапустить и применить конфигурацию заново
sudo csf -a IP комментарий Добавить IP в белый список (разрешить)
sudo csf -d IP комментарий Заблокировать конкретный IP-адрес
sudo csf -tr IP Снять временную блокировку с IP
sudo csf -l Показать текущие правила файрвола
sudo csf -lf Просмотреть список временно заблокированных IP
sudo tail -f /var/log/lfd.log Следить за работой LFD в реальном времени

Типичные ошибки и как их избежать

  • Забыли добавить свой IP в белый список перед отключением TESTING — самая распространённая причина, почему администраторы «теряют» доступ к собственному серверу. Всегда проверяйте csf.allow перед отключением тестового режима.
  • Одновременно активны CSF и UFW/firewalld — приводит к непредсказуемому поведению файрвола: одни правила блокируют, другие разрешают тот же трафик. CSF должен быть единственным инструментом управления пакетным фильтром на сервере.
  • Попытка установить CSF по старым инструкциям со ссылкой на download.configserver.com — сервис не работает, установка завершится ошибкой подключения ещё на этапе загрузки архива.
  • Забыли открыть порты реальных сервисов — если на сервере работает, например, веб-сервер на порту 443 или почтовый сервис, а в TCP_IN этих портов нет — сервис станет недоступен извне сразу после отключения тестового режима.

Теперь у вас установлен и настроен CSF (в виде актуального форка Sentinel Firewall) на VPS с Ubuntu или AlmaLinux — без привязки к какой-либо панели управления. Такой подход даёт гибкий контроль над сетевым трафиком сервера, автоматическую защиту от брутфорс-атак через LFD, и при этом остаётся управляемым исключительно через командную строку, что удобно для любого «чистого» сервера. Обращаем внимание, что в LFD также есть интегрированная система проверки файлов на конфигурации (MD5 Integrity check), которая может нагружать дисковую систему сервера, если она базируется на HDD дисках. Поэтому мы рекомендуем приобрести VPS сервер на NVME/SSD дисках для более быстрой работы системы.

Прокрутить вверх