Гид по технологиям

Установка и настройка CSF на Debian 12

• 8 min read • Безопасность • Обновлено 28 Nov 2025
Установка CSF на Debian 12 — быстрый гайд
Установка CSF на Debian 12 — быстрый гайд

Логотип CSF и схема взаимодействия сервисов

CSF (Config Server Firewall) — это stateful firewall с инспекцией пакетов (SPI), реализованный на базе iptables и Perl. CSF запускает демон, который отслеживает попытки аутентификации и отказа сервисов, а также предоставляет веб-интерфейс для удобного управления (Webmin, cPanel, DirectAdmin и др.).

В этом пошаговом руководстве вы увидите практическую установку CSF на сервер Debian 12, базовую настройку, способы блокировки IP-адресов и включение Web UI для удалённого управления.

О чём статья

  • Подготовка системы и зависимостей
  • Ручная загрузка и установка CSF
  • Базовая настройка портов, ICMP, SYN-flood, ограничение соединений
  • Блокировка IP через блок-листы и GeoIP
  • Включение и защита Web UI
  • Практические шаблоны, чек-листы и шаги для оператора

Требования

  • Сервер с Debian 12
  • Непривилегированный пользователь с правами sudo
  • Доступ к консоли/SSH

Подготовка системы

Перед установкой убедитесь, что на сервере установлены необходимые пакеты (Perl, iptables и сопутствующие модули) и что другой фаервол, например UFW, отключён, чтобы не было конфликтов.

Обновите индексы пакетов:

sudo apt update

Обновление репозиториев и индексов пакетов

Установите зависимости CSF (одна строка команды для удобства):

sudo apt install libio-socket-inet6-perl libsocket6-perl sendmail dnsutils unzip libio-socket-ssl-perl libcrypt-ssleay-perl git perl iptables libnet-libidn-perl libwww-perl liblwp-protocol-https-perl libgd-graph-perl

Подтвердите установку, набрав Y и ENTER.

Установка зависимостей для CSF

Если у вас запущен UFW, отключите его (CSF использует iptables):

sudo ufw disable

Загрузка и установка CSF

Скачайте исходники CSF с официального зеркала и распакуйте их:

wget http://download.configserver.com/csf.tgz
sudo tar -xvzf csf.tgz
cd csf
sh install.sh

Во время сборки вы увидите сообщения установки и в конце строку “Installation Completed”.

Процесс сборки CSF

Установка завершена

Проверьте установку тестовой утилитой:

perl /usr/local/csf/bin/csftest.pl

Убедитесь, что все тесты возвращают OK.

Результат проверок — OK

Проверьте расположение бинарников и версию CSF:

which csf
csf -v

Пример: CSF v14.20 в /usr/sbin/csf

Проверка версии CSF и пути

Базовая конфигурация CSF

Файл конфигурации CSF находится в /etc/csf/csf.conf. Основные параметры редактируются в нём. Откройте файл в редакторе:

sudo nano /etc/csf/csf.conf

Разрешение трафика по портам

Найдите параметры TCP* и UDP* и укажите порты, которые должны быть открыты. Пример конфигурации (сниппет приведён как образец — адаптируйте под свои сервисы):

# Allow incoming TCP ports  
TCP_IN = "20,21,22,25,53,853,80,110,143,443,465,587,993,995"  
  
# Allow outgoing TCP ports  
TCP_OUT = "20,21,22,25,53,853,80,110,113,443,587,993,995"  
  
# Allow incoming UDP ports  
UDP_IN = "20,21,53,853,80,443"  
  
# Allow outgoing UDP ports  
# To allow outgoing traceroute add 33434:33523 to this list  
UDP_OUT = "20,21,53,853,113,123"

Пример настройки входящих и исходящих портов

Коротко о параметрах:

  • TCP_IN: входящие TCP-порты
  • TCP_OUT: исходящие TCP-порты
  • UDP_IN: входящие UDP-порты
  • UDP_OUT: исходящие UDP-порты

Совет: перечисляйте только те порты, которые действительно нужны. Меньше открытых портов — меньше поверхность атаки.

Разрешить или запретить Ping (ICMP)

Опции ICMP_IN и ICMP_OUT управляют разрешением ping-входящих и исходящих пакетов. По умолчанию ping полезен для диагностики, но в защищённых окружениях можно ограничить:

# Allow incoming PING. Disabling PING will likely break external uptime  
# monitoring  
ICMP_IN = "1"  
...  
# Allow outgoing PING  
#  
# Unless there is a specific reason, this option should NOT be disabled as it  
# could break OS functionality  
ICMP_OUT = "1"

Важно: полное отключение ICMP может нарушить мониторинг и некоторые сетевые функции.

Защита от SYN-flood

Включайте SYNFLOOD только при необходимости, например при реальной атаке. Пример:

###############################################################################  
# SECTION:Port Flood Settings  
###############################################################################  
# Enable SYN Flood Protection. This option configures iptables to offer some  
# protection from tcp SYN packet DOS attempts.   
...  
SYNFLOOD = "0"  
SYNFLOOD_RATE = "100/s"  
SYNFLOOD_BURST = "150"

Настройка защиты от SYN-флудов

Ограничение одновременных подключений

Параметр CONNLIMIT позволяет ограничивать количество одновременных соединений к портам. Формат: PORT;LIMIT. Пример:

# Connection Limit Protection. This option configures iptables to offer more  
# protection from DOS attacks against specific ports. It can also be used as a  
# way to simply limit resource usage by IP address to specific server services.  
# Note: Run /etc/csf/csftest.pl to check whether this option will function on  
# this server  
CONNLIMIT = "22;5,21;10"

В примере SSH (22) ограничен 5 одновременными соединениями от одного IP.

Ограничение числа соединений

Отключение режима TESTING и ограничение доступа к rsyslog

После внесения настроек установите TESTING = “0” и ограничьте доступ к syslog, чтобы lfd мог корректно работать:

# lfd will not start while this is enabled  
TESTING = "0"  
  
...  
# 0 = Allow those options listed above to be used and configured  
# 1 = Disable all the options listed above and prevent them from being used  
# 2 = Disable only alerts about this feature and do nothing else  
# 3 = Restrict syslog/rsyslog access to RESTRICT_SYSLOG_GROUP  RECOMMENDED   
RESTRICT_SYSLOG = "3"

Сохраните файл и закройте редактор.

Запуск и тестирование CSF

Проверьте синтаксис и версию:

csf -v

Запустите службы csf и lfd:

sudo systemctl start csf lfd

При запуске вас может разорвать сессия из-за новых правил; переподключитесь и проверьте статус:

sudo systemctl status csf lfd

Статус службы csf

Статус службы lfd

Блокировка IP адресов через CSF

CSF поддерживает несколько методов блокировки: локальные списки allow/deny, внешние blocklists и GeoIP.

IP блок-листы (blocklists)

Файл /etc/csf/csf.blocklists содержит описания внешних списков. Откройте его:

sudo nano /etc/csf/csf.blocklists

Рекомендуется использовать проверенные источники, например Spamhaus. Раскомментируйте нужные строки:

# Spamhaus Don't Route Or Peer List (DROP)  
# Details: http://www.spamhaus.org/drop/  
SPAMDROP|86400|0|http://www.spamhaus.org/drop/drop.txt  
  
# Spamhaus IPv6 Don't Route Or Peer List (DROPv6)  
# Details: http://www.spamhaus.org/drop/  
SPAMDROPV6|86400|0|https://www.spamhaus.org/drop/dropv6.txt  
  
# Spamhaus Extended DROP List (EDROP)  
# Details: http://www.spamhaus.org/drop/  
SPAMEDROP|86400|0|http://www.spamhaus.org/drop/edrop.txt

Конфигурация внешних блок-листов CSF

Пояснения к полям:

  • Имя блока (SPAMDROP): используются имена в UPPERCASE, до 25 символов
  • 86400: интервал обновления в секундах
  • 0: значение MAX (0 = все IP будут использованы)
  • URL: адрес для загрузки списков

Примечание: добавление больших списков может нагрузить память/iptables. Тестируйте нагрузку перед включением на продуктивных серверах.

Блокировка по GeoIP

Если нужно блокировать или разрешать трафик по странам, используйте CC_DENY и CC_ALLOW в /etc/csf/csf.conf:

# Each option is a comma-separated list of CC's, e.g. "US,GB,DE"  
CC_DENY = "RU,CN"  
CC_ALLOW = "US,GB,DE,NL,SG"

По умолчанию CSF использует db-ip, ipdeny и iptoasn. Можно переключиться на MaxMind (требуется лицензионный ключ). Для этого установите CC_SRC = “1” и укажите MM_LICENSE_KEY.

# MaxMind License Key:  
MM_LICENSE_KEY = ""  
  
...  
# Set the following to your preferred source:  
#  
# "1" - MaxMind  
# "2" - db-ip, ipdeny, iptoasn  
#  
# The default is "2" on new installations of csf, or set to "1" to use the  
# MaxMind databases after obtaining a license key  
CC_SRC = "1"

Сохраните файл и перезапустите CSF:

sudo csf -v
sudo csf -ra
sudo systemctl status csf lfd

Перезапуск и проверка CSF

Включение CSF Web UI

Web UI позволяет управлять CSF через браузер. По умолчанию доступ нужно ограничить, чтобы не открыть интерфейс для всего интернета.

Откройте /etc/csf/csf.conf и включите UI:

#  
# 1 to enable, 0 to disable  
UI = "1"  
  
...  
UI_PORT = "1048"  
  
...  
UI_IP = "127.0.0.1"  
  
...  
UI_USER = "alice"  
...  
UI_PASS = "passw0rd"

Важно: не открывайте порт UI в TCP_IN. Вместо этого добавьте в /etc/csf/csf.allow только доверенные IP, с которых будет доступен Web UI.

Определите ваш публичный IP, например:

curl https://ipinfo.io/

Добавьте IP в файлы whitelist:

# single ip  
192.168.5.1  
  
# subnet  
192.168.5.0/24

После этого перезапустите CSF и lfd:

sudo csf -v
sudo csf -ra

Проверьте список разрешённых записей:

sudo csf -l

Проверка цепочек iptables и белого списка

Откройте в браузере https://:1048 и войдите под указанным UI_USER/UI_PASS.

Страница входа CSF Web UI

Панель управления CSF Web UI

Риски и когда CSF может не подойти

  • Виртуальные среды с сетевым контролем на уровне гипервизора: правила iptables на гостевой ОС могут игнорироваться владельцем сети.
  • Конфликты с другими фаерволами (pf, nftables, облачные сетевые ACL). Всегда отключайте/удаляйте конфликты.
  • Огромные внешние блок-листы могут привести к высоким задержкам при загрузке и к превышению лимитов ipset/iptables.

Практическое руководство оператора (SOP)

Шаги для быстрого развёртывания и проверки:

  1. Обновите пакеты: sudo apt update
  2. Установите зависимости (см. раздел выше)
  3. Скачайте и установите CSF
  4. Запустите perl /usr/local/csf/bin/csftest.pl и исправьте ошибки
  5. Откройте минимальный набор портов в csf.conf
  6. Установите TESTING = “0”
  7. Добавьте ваша администратора IP в /etc/csf/csf.allow и /etc/csf/ui/ui.allow
  8. Включите UI только с локальной привязкой и закрытым портом в TCP_IN
  9. Перезапустите csf: sudo csf -ra
  10. Наблюдайте логи: tail -f /var/log/lfd.log

Копия для быстрого исполнения (одной командой для опытного оператора):

# пример: обновление, установка, запуск теста
sudo apt update && sudo apt install -y libio-socket-inet6-perl libsocket6-perl sendmail dnsutils unzip libio-socket-ssl-perl libcrypt-ssleay-perl git perl iptables libnet-libidn-perl libwww-perl liblwp-protocol-https-perl libgd-graph-perl
wget http://download.configserver.com/csf.tgz && sudo tar -xvzf csf.tgz && cd csf && sudo sh install.sh
perl /usr/local/csf/bin/csftest.pl

Чек-листы по ролям

Администратор (операции):

  • Убедиться, что зависимости установлены
  • Проверить отсутствие конфликтов с UFW/nftables
  • Настроить минимальные порты
  • Добавить свой рабочий IP в allow
  • Перезапустить и проверить службы

Команда безопасности:

  • Настроить внешние blocklists и процедуру их мониторинга
  • Настроить CC_DENY и CC_ALLOW при необходимости
  • Провести нагрузочное тестирование при включении больших списков
  • Настроить оповещения lfd

Разработчик (Dev):

  • Проверить, что нужные порты доступны и авто-тесты проходят
  • Договориться об IP белого списка для CI/CD систем

Тесты и критерии приёмки

Критерии приёмки для начальной установки:

  • csftest.pl завершился без ошибок
  • Службы csf и lfd запущены и active (systemctl status)
  • Подключение по SSH не блокируется после применения правил (если IP расположен в allow)
  • Web UI доступен только с разрешённых IP
  • Логи lfd не содержат критических ошибок после 24 часов работы

Тест-кейсы:

  • TC-01: попытаться подключиться по SSH с IP из whitelist — ожидается соединение
  • TC-02: попытаться подключиться по SSH с IP не в whitelist (если настроен deny) — ожидается отказ
  • TC-03: активировать и проверить внешний blocklist — ожидается появление цепочек iptables с именем блока

Жёсткое усиление безопасности

  • Отключите UI_IP привязку к 0.0.0.0, используйте localhost или конкретные адреса
  • Храните UI_PASS в безопасном хранилище, используйте длинный и уникальный пароль
  • Ограничьте доступ к портам через Advanced Allow Filters вместо внесения UI_PORT в TCP_IN
  • Рассмотрите применение fail2ban дополнительно (вместе с lfd это дублирует функции, но может дать дополнительные фильтры)

Тонкости приватности и соответствия

  • Внешние блоклисты содержат IP-адреса третьих сторон. Хранение и обработка этих списков не содержит персональных данных, но при интеграции GeoIP обратите внимание на локальные законы по обработке местоположения.
  • Логирование lfd/ufw/iptables может сохранять IP-адреса посетителей. Убедитесь, что это соответствует вашей политике хранения логов и требованиям GDPR, если применяется.

Отказоустойчивость и откат

Если после применения правил вы потеряли доступ к серверу:

  1. Подключитесь через консоль провайдера (VNC/Serial)
  2. Откатите тестирование: откройте /etc/csf/csf.conf и установите TESTING = “1”
  3. Перезапустите csf: sudo csf -ra
  4. Восстановите доступ и повторно скорректируйте правила

Альтернативы и сравнение

  • nftables + ferm/shorewall: современная замена iptables с более гибким синтаксисом
  • Облачные сетевые ACL (AWS Security Groups, GCP firewall): работают на уровне гипервизора/провайдера
  • fail2ban: фокусируется на временнЫх блокировках по логам, CSF включает lfd с похожей функциональностью

Выбор зависит от инфраструктуры: в VPS/generic Linux окружении CSF удобен; в управляемом облаке часто лучше использовать сетевые ACL провайдера.

Мини-методология принятия правил

  1. Открыть минимальный набор портов для сервисов
  2. Добавить белый список для операторских IP
  3. Включать внешние блок-листы постепенно и мониторить производительность
  4. Настроить мониторинг и оповещения для lfd

Диаграмма принятия решения (Mermaid)

flowchart TD
  A[Нужна защита от массовых атак?] -->|Да| B{Используется облачная сеть?}
  A -->|Нет| C[Ограничиться локальными правилами]
  B -->|Да| D[Рассмотреть облачные ACL и CSF как дополнение]
  B -->|Нет| E[Установить CSF и настроить блок-листы]
  E --> F{Большие внешние списки?}
  F -->|Да| G[Тестировать нагрузку и использовать ipset]
  F -->|Нет| H[Включить списки и мониторить]

Справочная информация и сокращения

  • CSF — Config Server Firewall
  • lfd — Login Failure Daemon (компонент CSF)
  • ICMP — Internet Control Message Protocol

Краткое резюме

  • CSF — удобный инструмент для управления iptables и защиты серверов
  • Начните с минимальных настроек и постепенно усиливайте защиту
  • Обязательно добавьте доверённые IP в allow перед применением правил
  • Тестируйте влияние внешних блок-листов на производительность

Заключение

Вы успешно узнали процесс установки и базовой настройки CSF на Debian 12. В руководстве показаны ключевые параметры конфигурации, способы блокировки IP через списки и GeoIP, включение веб-интерфейса и рекомендации по безопасности и откату. Следуйте SOP и чек-листам при развёртывании в продакшене.

1-line glossary:

  • CSF: firewall для Linux, использующий iptables и Perl для управления пакетами и защиты.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро