Мой блог
Как установить и настроить фаервол CSF в Debian 12

Обзор возможностей Config Server Firewall (CSF) и важные изменения
Config Server Firewall, более известный под аббревиатурой CSF, представляет собой фаервол с глубоким анализом сетевых пакетов с учетом состояния соединений (Stateful Packet Inspection, или SPI). В его основе лежат подсистема IPtables и язык программирования Perl. Данное решение поставляется с фоновым демоном, который непрерывно отслеживает работу системных служб на предмет сбоев, аномалий и попыток несанкционированной аутентификации. Помимо консольного управления, CSF поддерживает интеграцию с популярными графическими веб-панелями администрирования серверов, такими как Webmin, cPanel и DirectAdmin, что делает управление защитой удобным и наглядным.
В этом руководстве мы подробнейшим образом разберем процесс развертывания межсетевого экрана CSF на сервере под управлением операционной системы Debian 12. Вы освоите базовое конфигурирование параметров брандмауэра, научитесь блокировать нежелательные IP-адреса двумя независимыми методами, а также настроите встроенный веб-интерфейс CSF Web UI для комфортного мониторинга и администрирования через браузер.
Важное обновление касательно статуса проекта: Разработка оригинального брандмауэра CSF была официально прекращена в августе 2025 года. Администраторам рекомендуется использовать его актуальный форк — Sentinel Firewall. Для перевода существующих серверов или новых инсталляций на Sentinel Firewall доступен официальный сайт проекта (sentinelfirewall.org) и специализированное руководство по обновлению (sentinelfirewall.org/docs/upgrade-from-csf/).
Предварительные требования для развертывания
Перед тем как переходить к шагам установки и настройки фаервола, убедитесь, что ваше рабочее окружение соответствует следующим условиям:
- Развернутый сервер: В вашем распоряжении должен быть рабочий сервер под управлением операционной системы Debian 12.
- Права доступа: Необходим учетная запись стандартного пользователя (не root), обладающая правами административного доступа через механизмы sudo.
Подготовка операционной системы Debian 12 к установке
Прежде чем приступать к сборке и инсталляции CSF, требуется подготовить операционную систему и установить все необходимые зависимости. В их число входят системный интерпретатор Perl, специализированные модули и утилита iptables. Кроме того, если в системе запущен иной межсетевой экран (например, UFW — Uncomplicated Firewall), его необходимо предварительно полностью отключить во избежание конфликтов фильтрации.

Обновление репозиториев и установка системных зависимостей
Первым делом обновите индекс системных пакетов Debian, чтобы гарантировать загрузку самых актуальных версий компонентов из репозиториев. Для этого выполните команду:
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 в качестве ключевого механизма фильтрации сетевых пакетов. Наличие параллельно работающего утилитарного фаервола UFW способно нарушить правила маршрутизации и заблокировать легитимный трафик. Если на вашем сервере Debian активен UFW, деактивируйте его следующей командой:
sudo ufw disable
Загрузка и пошаговая установка CSF из исходного кода
В этом разделе мы скачаем актуальный архив с исходным кодом CSF (Config Server Firewall) из первоисточника и выполним его ручную инсталляцию в систему.
Воспользуйтесь утилитой wget для загрузки дистрибутива CSF. В результате выполнения команды в вашей рабочей директории будет сохранен архив с именем csf.tgz:

wget http://download.configserver.com/csf.tgz
Распакуйте загруженный архив csf.tgz с помощью команды tar. Все исходные файлы фаервола будут извлечены в созданную папку csf:
sudo tar -xvzf csf.tgz
Перейдите в директорию csf и запустите скрипт инсталляции install.sh для начала процесса установки:
cd csf; sh install.sh

В процессе выполнения скрипта на экран будет выводиться служебная информация о ходе копирования и настройки файлов. По завершении работы инсталлятора в терминале отобразится статусное сообщение «Installation Completed».
Тестирование функций и проверка установленного бинарного файла
Сразу после завершения развертывания необходимо убедиться, что система удовлетворяет всем требованиям и модули CSF способны корректно функционировать в вашем окружении. Для этого запустите специальный проверочный Perl-скрипт:
perl /usr/local/csf/bin/csftest.pl
Убедитесь, что результат проверки по каждому тесту системных возможностей содержит положительный статус OK.
В завершение проверки выясните точное местоположение исполняемого файла CSF и его текущую версию, выполнив две последовательные команды:
which csfcsf -v
Результат работы команд подтвердит, что бинарный файл размещен по адресу /usr/sbin/csf, а в системе установлена версия фаервола (например, CSF v14.20).
Базовая конфигурация CSF: настройка правил и параметров
После завершения инсталляции перейдем к рассмотрению основных настроек CSF. Основной конфигурационный каталог межсетевого экрана расположен по пути /etc/csf, а ключевой файл настроек носит имя csf.conf.

Откройте главный конфигурационный файл /etc/csf/csf.conf в текстовом редакторе nano с правами администратора:
sudo nano /etc/csf/csf.conf
Управление сетевыми портами для входящего и исходящего трафика
Найдите в конфигурации секции параметров TCP_* и UDP_*. Внесите в них списки открытых портов, требуемых для корректной работы ваших сетевых служб и сервисов:
# Разрешенные входящие TCP-порты
TCP_IN = "20,21,22,25,53,853,80,110,143,443,465,587,993,995"
# Разрешенные исходящие TCP-порты
TCP_OUT = "20,21,22,25,53,853,80,110,113,443,587,993,995"
# Разрешенные входящие UDP-порты
UDP_IN = "20,21,53,853,80,443"
# Разрешенные исходящие UDP-порты
# Чтобы разрешить работу исходящей утилиты traceroute, добавьте диапазон 33434:33523 в этот список
UDP_OUT = "20,21,53,853,113,123"
Подробное описание используемых параметров:
- TCP_IN: Определяет входящие TCP-порты, на которые разрешено принимать сетевые подключения.
- TCP_OUT: Задает список исходящих TCP-портов, через которые серверу разрешено устанавливать внешние соединения.
- UDP_IN: Отвечает за список разрешенных входящих портов по протоколу UDP.
- UDP_OUT: Задает перечень исходящих UDP-портов, доступных для отправки трафика с сервера.
Контроль обработки ICMP и управления PING-запросами
Если для защиты сервера или выполнения специфических требований безопасности вам необходимо отключить обработку входящих или исходящих ICMP/PING-запросов, используйте параметры ниже. Установка параметра ICMP_IN = “1” разрешает входящие пинги, тогда как ICMP_OUT = “1” позволяет самому серверу выполнять PING-запросы к внешним узлам сети:
# Разрешить входящие PING-запросы. Отключение PING, вероятно, нарушит работу внешних систем мониторинга доступности
ICMP_IN = "1"
...
# Разрешить исходящие PING-запросы
# За исключением особых случаев, эту опцию НЕ следует отключать, так как это может нарушить функциональность ОС
ICMP_OUT = "1"
Защита от SYN-флуда и ограничение параллельных соединений
Включайте защиту от SYN-флуда ИСКЛЮЧИТЕЛЬНО по мере необходимости — например, при фиксировании активных DoS-атак на ваш сервер:
###############################################################################
# SECTION: Port Flood Settings
###############################################################################
# Включение защиты от SYN Flood. Эта опция настраивает iptables для обеспечения определенной защиты от DOS-атак TCP SYN пакетами.
...
SYNFLOOD = "0"
SYNFLOOD_RATE = "100/s"
SYNFLOOD_BURST = "150"

Далее воспользуйтесь параметром CONNLIMIT для ограничения количества одновременных параллельных соединений к выбранным портам. Настройка задается в формате ПОРТ;ЛИМИТ. К примеру, конфигурация 22;5 будет ограничивать SSH-порт максимум 5 одновременными подключениями с одного адреса:
# Защита ограничением соединений. Эта опция настраивает iptables для дополнительной защиты от DOS-атак на конкретные порты.
# Она также может использоваться как простой способ ограничения использования ресурсов определенными службами сервера по IP-адресу.
# Примечание: Запустите /etc/csf/csftest.pl, чтобы проверить, будет ли работать эта функция на данном сервере.
CONNLIMIT = "22;5,21;10"
Отключение тестового режима и ограничение доступа к Syslog
Завершив настройку портов и параметров безопасности, измените значение переменной TESTING на 0, чтобы ввести фаервол в рабочий режим (пока активен режим 1, демон lfd запускаться не будет). Также рекомендуется ограничить доступ к сокетам rsyslog с помощью опции RESTRICT_SYSLOG = “3”:
# lfd не запустится, пока включен этот параметр
TESTING = "0"
...
# 0 = Разрешить использование и настройку опций, перечисленных выше
# 1 = Отключить все опции, перечисленные выше, и предотвратить их использование
# 2 = Отключить только оповещения об этой функции и ничего больше не делать
# 3 = Ограничить доступ к syslog/rsyslog для группы RESTRICT_SYSLOG_GROUP ** РЕКОМЕНДУЕТСЯ **
RESTRICT_SYSLOG = "3"
По окончании редактирования сохраните изменения и закройте текстовый редактор nano.

Запуск, тестирование и проверка статуса служб CSF и LFD
Перед запуском фаервола выполните проверку правильности созданной конфигурации с помощью команды csf. Если все параметры заданы верно, утилита выведет статусную информацию. В случае ошибки на экран будут выведены подробные сведения о сбое:
csf -v
Далее запустите службы csf и lfd с помощью утилиты systemctl:
sudo systemctl start csf lfd
Важная деталь: В момент запуска службы csf ваше текущее SSH-соединение с сервером может быть автоматически разорвано. В этом случае просто авторизуйтесь на сервере повторно, после чего проверьте текущий рабочий статус обеих служб:
sudo systemctl status csf lfd
В выводе консоли вы должны увидеть, что и служба csf, и демон защиты lfd находятся в активном рабочем состоянии (running).
Методы блокировки IP-адресов в CSF
К этому моменту вы уже освоили базовое конфигурирование фаервола CSF. Теперь изучим практические механизмы блокировки нежелательных IP-адресов.
Использование списков автоматической блокировки (IP Block Lists)
Откройте файл конфигурации списков автоматической блокировки адресов /etc/csf/csf.blocklists через текстовый редактор nano:
sudo nano /etc/csf/csf.blocklists
Раскомментируйте приведенные ниже строки, чтобы включить автоматический импорт и блокировку компрометированных IP-адресов из баз данных Spamhaus (списки DROP, DROPv6 и EDROP):
# Spamhaus Don't Route Or Peer List (DROP)
# Подробности: http://www.spamhaus.org/drop/
SPAMDROP|86400|0|http://www.spamhaus.org/drop/drop.txt
# Spamhaus IPv6 Don't Route Or Peer List (DROPv6)
# Подробности: http://www.spamhaus.org/drop/
SPAMDROPV6|86400|0|https://www.spamhaus.org/drop/dropv6.txt
# Spamhaus Extended DROP List (EDROP)
# Подробности: http://www.spamhaus.org/drop/
SPAMEDROP|86400|0|http://www.spamhaus.org/drop/edrop.txt
Сохраните файл и закройте редактор. Ниже приводятся подробности по полям этой конфигурации:
- SPAMDROP: Имя правила блокировки, которое используется в качестве названия цепочки iptables. Разрешено использовать только ПРОПИСНЫЕ буквы, максимальная длина — 25 символов.
- 86400: Интервал обновления списка IP-адресов в секундах (86400 секунд соответствуют 24 часам).
- MAX (0): Максимальное количество IP-адресов, загружаемых из списка. Значение 0 означает импорт абсолютно всех адресов из файла.
- URL: Прямая ссылка для скачивания файла со списком заблокированных IP-адресов.
Географическая блокировка трафика по странам через GeoIP
Вторым способом блокировки адресов является географический фильтр GeoIP, который дает возможность блокировать весь входящий трафик, поступающий из конкретных государств. Откройте главный конфигурационный файл CSF:
sudo nano /etc/csf/csf.conf
Найдите параметры CC_DENY и CC_ALLOW для настройки правил фильтрации по странам (используются двухбуквенные коды стран ISO):
# Каждый параметр представляет собой список кодов стран через запятую, например "US,GB,DE"
CC_DENY = "RU,CN"
CC_ALLOW = "US,GB,DE,NL,SG"

По умолчанию CSF черпает данные GeoIP из открытых баз db-ip, ipdeny и iptoasn. Однако вы можете переключить систему на использование коммерческой базы MaxMind GeoIP. Для перехода на MaxMind измените параметр CC_SRC на 1 и укажите свой ключ лицензии в поле MM_LICENSE_KEY:
# Ключ лицензии MaxMind:
MM_LICENSE_KEY = ""
...
# Укажите предпочтительный источник данных:
# "1" - MaxMind
# "2" - db-ip, ipdeny, iptoasn
# По умолчанию на новых установках csf используется "2", либо установите "1" для использования баз данных MaxMind после получения лицензионного ключа
CC_SRC = "1"
Завершив редактирование, сохраните изменения и закройте файл. Проверьте корректность конфигурации CSF командами:
sudo csf -vsudo csf -ra

Флаг -ra перезапустит службы фаервола и фонового демона. По завершении убедитесь в их работоспособности через systemctl:
sudo systemctl status csf lfd
Настройка и включение веб-интерфейса CSF Web UI
Для мониторинга состояния сетевой защиты и управления фаерволом прямо из веб-браузера в CSF предусмотрена встроенная панель управления CSF Web UI. Рассмотрим порядок ее активации.
Откройте основной конфигурационный файл фаервола:
sudo nano /etc/csf/csf.conf

Установите опцию UI в значение 1 для активации панели. Затем укажите пользовательские значения для параметров UI_PORT, UI_IP, UI_USER и UI_PASS:
# 1 - включить, 0 - отключить
UI = "1"
...
# НЕ включайте доступ к этому порту в TCP_IN, вместо этого разрешайте доступ к порту только доверенным IP с помощью расширенных фильтров разрешений (см. readme.txt)
UI_PORT = "1048"
...
# Если сервер настроен для IPv6, но IP для привязки — IPv4, IP-адрес ДОЛЖЕН использовать представление IPv6. Например, 1.2.3.4 должен использовать ::ffff:1.2.3.4
# Оставьте пустым для привязки ко всем IP-адресам на сервере
UI_IP = "127.0.0.1"
...
# Это должно быть надежное, трудно угадываемое имя пользователя
# Оно должно быть обязательно изменено со значения по умолчанию
UI_USER = "alice"
...
# Содержит цифры и небуквенно-цифровые символы
# Пароль должен быть обязательно изменен со значения по умолчанию
UI_PASS = "passw0rd"
Сохраните файл и закройте текстовый редактор nano.
Теперь определите свой текущий внешний публичный IP-адрес, выполнив в консоли команду:
curl https://ipinfo.io/
Внесите полученный публичный IP-адрес в белые списки доступа, отредактировав файлы /etc/csf/csf.allow и /etc/csf/ui/ui.allow. Это позволит добавить ваш адрес в доверенный список и предотвратит случайную блокировку при подключении к панелям управления:
# отдельный ip: 192.168.5.1
# подсеть: 192.168.5.0/24
После внесения изменений перезапустите конфигурацию и службы фаервола:
sudo csf -vsudo csf -ra
Проверьте наличие вашего IP-адреса в цепочках разрешений iptables (цепочки ALLOWIN и ALLOWOUT):
sudo csf -l
Откройте веб-браузер и перейдите по адресу вашего сервера с указанием настроенного порта CSF Web UI (например: https://192.168.5.15:1048). Если все шаги выполнены верно, перед вами появится страница авторизации. Введите логин и пароль администратора, после чего нажмите ENTER для входа в дашборд управления CSF.
Заключительные выводы и подведение итогов
Поздравляем! Вы успешно развернули и настроили комплексный межсетевой экран CSF (Config Server Firewall) на сервере под управлением Debian 12. В рамках этой статьи вы освоили фундаментальные принципы работы с CSF: от открытия необходимых сетевых портов и управления обработкой ICMP-пакетов до применения ограничений на число одновременных подключений к сервисам. Кроме того, вы научились защищать сервер с помощью автоматических черных списков IP BLOCK Lists и географической блокировки по странам через GeoIP, а также развернули удобный веб-интерфейс CSF Web UI для эффективного администрирования своей инфраструктуры.

Источник: howtoforge.com

