15%

Збережіть 15% на всі хостинг-послуги

Перевірте свої навички і отримайте Знижку на будь-який план хостингу

Використовуй код:

Skills
Почати
23.10.2024

Що таке CSF (ConfigServer Security and Firewall)? Повний технічний посібник

CSF, або ConfigServer Security & Firewall, — це міжмережевий екран із перевіркою стану пакетів (SPI), демон виявлення невдалих спроб входу та набір інструментів для підвищення безпеки Linux-серверів. Він функціонує як багатофункціональний інтерфейс для iptablesnftables на новіших ядрах), перетворюючи складне управління правилами на структурований конфігураційний рівень, а також забезпечує активне виявлення загроз через супутній демон 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.allow
  • CT_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 іноді змінюють значення конфігурації за замовчуванням, які потребують перевірки перед розгортанням.

    15%

    Збережіть 15% на всі хостинг-послуги

    Перевірте свої навички і отримайте Знижку на будь-який план хостингу

    Використовуй код:

    Skills
    Почати