Що таке CSF (ConfigServer Security and Firewall)? Повний технічний посібник
CSF, або ConfigServer Security & Firewall, — це міжмережевий екран із перевіркою стану пакетів (SPI), демон виявлення невдалих спроб входу та набір інструментів для підвищення безпеки Linux-серверів. Він функціонує як багатофункціональний інтерфейс для iptables (і nftables на новіших ядрах), перетворюючи складне управління правилами на структурований конфігураційний рівень, а також забезпечує активне виявлення загроз через супутній демон LFD (Login Failure Daemon).
Для будь-якого виробничого Linux-сервера — незалежно від того, чи працює він на спільному хостингу, VPS або виділеному сервері на bare-metal — 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) необхідне нульове маршрутизування на рівні провайдера або спеціалізований сервіс очищення трафіку від DDoS. 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.allowCT_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 увімкнена за замовчуванням, якщо ядро її підтримує. Переконайтеся, що IPV6 = "1" встановлено в csf.conf і що ваші списки портів 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 іноді змінюють значення конфігурації за замовчуванням, які потребують перевірки перед розгортанням.
