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

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.

Если у вас запущен 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”.


Проверьте установку тестовой утилитой:
perl /usr/local/csf/bin/csftest.plУбедитесь, что все тесты возвращают OK.

Проверьте расположение бинарников и версию CSF:
which csf
csf -vПример: CSF v14.20 в /usr/sbin/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"
Ограничение одновременных подключений
Параметр 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

Блокировка 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
Пояснения к полям:
- Имя блока (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 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
Откройте в браузере https://


Риски и когда CSF может не подойти
- Виртуальные среды с сетевым контролем на уровне гипервизора: правила iptables на гостевой ОС могут игнорироваться владельцем сети.
- Конфликты с другими фаерволами (pf, nftables, облачные сетевые ACL). Всегда отключайте/удаляйте конфликты.
- Огромные внешние блок-листы могут привести к высоким задержкам при загрузке и к превышению лимитов ipset/iptables.
Практическое руководство оператора (SOP)
Шаги для быстрого развёртывания и проверки:
- Обновите пакеты: sudo apt update
- Установите зависимости (см. раздел выше)
- Скачайте и установите CSF
- Запустите perl /usr/local/csf/bin/csftest.pl и исправьте ошибки
- Откройте минимальный набор портов в csf.conf
- Установите TESTING = “0”
- Добавьте ваша администратора IP в /etc/csf/csf.allow и /etc/csf/ui/ui.allow
- Включите UI только с локальной привязкой и закрытым портом в TCP_IN
- Перезапустите csf: sudo csf -ra
- Наблюдайте логи: 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, если применяется.
Отказоустойчивость и откат
Если после применения правил вы потеряли доступ к серверу:
- Подключитесь через консоль провайдера (VNC/Serial)
- Откатите тестирование: откройте /etc/csf/csf.conf и установите TESTING = “1”
- Перезапустите csf: sudo csf -ra
- Восстановите доступ и повторно скорректируйте правила
Альтернативы и сравнение
- nftables + ferm/shorewall: современная замена iptables с более гибким синтаксисом
- Облачные сетевые ACL (AWS Security Groups, GCP firewall): работают на уровне гипервизора/провайдера
- fail2ban: фокусируется на временнЫх блокировках по логам, CSF включает lfd с похожей функциональностью
Выбор зависит от инфраструктуры: в VPS/generic Linux окружении CSF удобен; в управляемом облаке часто лучше использовать сетевые ACL провайдера.
Мини-методология принятия правил
- Открыть минимальный набор портов для сервисов
- Добавить белый список для операторских IP
- Включать внешние блок-листы постепенно и мониторить производительность
- Настроить мониторинг и оповещения для 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 для управления пакетами и защиты.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента