Встановлення 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 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
Примітка щодо SELinux: на AlmaLinux з увімкненим SELinux (типова конфігурація) CSF зазвичай працює без додаткових налаштувань, оскільки взаємодіє з ядром через стандартні механізми iptables/nftables. Якщо після встановлення побачите в логах відмови, пов’язані з SELinux, перевірте 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 дисках для швидшої роботи системи.

Прокрутка до верху