Що таке CSF
CSF (ConfigServer Security & Firewall) — це надбудова над iptables/nftables для Linux, яка робить керування фаєрволом зрозумілим і зручним навіть без графічного інтерфейсу. Разом із самим фаєрволом іде демон LFD (Login Failure Daemon) — він стежить за логами сервера і автоматично блокує IP-адреси, з яких намагаються підібрати пароль методом брутфорсу (SSH, FTP, поштові сервіси, адмінки сайтів тощо).
Історично CSF асоціювався переважно з панелями керування (cPanel, DirectAdmin, Webmin), але це звичайний набір Perl-скриптів, який чудово ставиться і працює на голому сервері — без жодної панелі.
В цій статті ми розглянемо яз захистити VPS – сервер на Ubuntu aбо 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-образів, де частина модулів ядра може бути недоступна.
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 дисках для швидшої роботи системи.

