Что такое 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
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 дисках для более быстрой работы системы.

