Установка и базовая настройка CSF на Debian 11
CSF (ConfigServer Firewall) — лёгкий в установке и мощный брандмауэр для Linux, подходящий для управления портами, блокировок по IP и интеграции с панелями управления. В этом руководстве пошагово показана установка на Debian 11, проверка модулей, базовая настройка /etc/csf/csf.conf, основные команды и рекомендации по безопасности.

Что такое CSF
CSF (ConfigServer Firewall) — свободный брандмауэр для Linux. Он реализует управление входящими и исходящими подключениями, детектирование взломов, защиту от флуда и блокировку по правилам. Коротко: это оболочка и набор правил для iptables/nftables (зависит от системы), плюс демон lfd для логики обнаружения атак.
Определение в одну строку: CSF — конфигурируемый фронтенд для управления сетевой безопасностью на сервере.
Варианты использования
- Защита виртуальных хостов и VPS на Debian 11.
- Интеграция с хостинг-панелями (cPanel, DirectAdmin, Webmin).
- Быстрая настройка белых/чёрных списков IP.
Перед началом
Требования
- Сервер с Debian 11.
- Доступ root или эквивалент sudo.
- Пароль root настроен или доступ по sudo.
Рекомендация: перед установкой сделайте резервную копию конфигураций iptables/nftables и текущих файрволов.
Обновление системы и зависимости
Обновите индексы пакетов:
apt-get update -yУстановите зависимости, которые потребуются CSF и скриптам установки:
apt-get install sendmail dnsutils unzip libio-socket-ssl-perl libcrypt-ssleay-perl git perl iptables libnet-libidn-perl libio-socket-inet6-perl libsocket6-perl -yПримечание: список пакетов сохраняет совместимость с Debian 11. Если вы используете nftables как бекенд, проверьте совместимость с выбранной версией CSF.
Скачивание и установка CSF
CSF не всегда доступен в стандартных репозиториях Debian — скачиваем официальный архив и запускаем инсталлятор:
wget http://download.configserver.com/csf.tgzРаспакуйте архив:
tar -xvzf csf.tgzПерейдите в папку и запустите установку:
cd csf
bash install.shПосле установки инсталлятор выдаст подсказки — пример вывода сохранён ниже и встречается на многих системах:
Don't forget to:
1. Configure the following options in the csf configuration to suite your server: TCP_*, UDP_*
2. Restart csf and lfd
3. Set TESTING to 0 once you're happy with the firewall, lfd will not run until you do so
Adding current SSH session IP address to the csf whitelist in csf.allow:
*WARNING* URLGET set to use LWP but perl module is not installed, fallback to using CURL/WGET
Adding 106.222.22.32 to csf.allow only while in TESTING mode (not iptables ACCEPT)
*WARNING* TESTING mode is enabled - do not forget to disable it in the configuration
'lfd.service' -> '/usr/lib/systemd/system/lfd.service'
'csf.service' -> '/usr/lib/systemd/system/csf.service'
Created symlink /etc/systemd/system/multi-user.target.wants/csf.service
-> /lib/systemd/system/csf.service.
Created symlink /etc/systemd/system/multi-user.target.wants/lfd.service
-> /lib/systemd/system/lfd.service.
Failed to disable unit: Unit file firewalld.service does not exist.
Failed to stop firewalld.service: Unit firewalld.service not loaded.
Unit firewalld.service does not exist, proceeding anyway.
Created symlink /etc/systemd/system/firewalld.service -> /dev/null.
'/etc/csf/csfwebmin.tgz' -> '/usr/local/csf/csfwebmin.tgz'
Installation Completed
Important: внимательно прочтите сообщения инсталлятора — в частности предупреждение про TESTING mode (тестовый режим), при котором lfd может не работать.
Проверка модулей iptables
После установки выполните тест совместимости:
perl /usr/local/csf/bin/csftest.plОжидаемый успешный вывод:
Testing ip_tables/iptable_filter...OK
Testing ipt_LOG...OK
Testing ipt_multiport/xt_multiport...OK
Testing ipt_REJECT...OK
Testing ipt_state/xt_state...OK
Testing ipt_limit/xt_limit...OK
Testing ipt_recent...OK
Testing xt_connlimit...OK
Testing ipt_owner/xt_owner...OK
Testing iptable_nat/ipt_REDIRECT...OK
Testing iptable_nat/ipt_DNAT...OK
RESULT: csf should function on this server
Если какие-то модули помечены как FAILED, проверьте наличие соответствующих пакетов ядра или загрузку модулей. На виртуальных хостингах некоторые модули могут быть недоступны — в этом случае CSF будет работать в ограниченном режиме.
Базовая конфигурация /etc/csf/csf.conf
Откройте файл конфигурации для правок:
nano /etc/csf/csf.confОсновные изменения, которые обычно требуются сразу после установки:
- Включить CSF: найдите строку TESTING и установите значение 0.
TESTING = "0"- Ограничить доступ к системным логам (если нужно): RESTRICT_SYSLOG задаёт режим доступа; значение 3 ограничит доступ только для группы, указанной в RESTRICT_SYSLOG_GROUP.
RESTRICT_SYSLOG = "3"- Настройка разрешённых входящих TCP-портов (пример):
TCP_IN = "20,21,22,25,53,80,110,143,443,465,587,993,995"- Настройка разрешённых исходящих TCP-портов (пример):
TCP_OUT = "20,21,22,25,53,80,110,113,443,587,993,995"- Входящие UDP:
UDP_IN = "20,21,53,80,443"- Исходящие UDP:
UDP_OUT = "20,21,53,113,123"После внесения изменений перезагрузите CSF, чтобы применить конфигурацию:
csf -rВажно: убедитесь, что вы не закрыли свой SSH-доступ. Всегда оставляйте порт SSH в TCP_IN или добавьте временную белую запись для своего IP.
Основные команды управления CSF
- Остановить CSF (централизованное отключение правил):
csf -s- Очистить (flush) правила CSF/iptables:
csf -f- Показать правила, добавленные CSF:
csf -l- Запустить и включить автозапуск systemd:
systemctl start csf
systemctl enable csf- Проверить статус сервиса:
systemctl status csfПример вывода статуса сервиса (сокращённый):
? csf.service - ConfigServer Firewall & Security - csf
Loaded: loaded (/lib/systemd/system/csf.service; enabled; vendor preset: enabled)
Active: active (exited) since Sat 2021-09-18 15:42:04 UTC; 11s ago
Process: 8022 ExecStart=/usr/sbin/csf --initup (code=exited, status=0/SUCCESS)
Main PID: 8022 (code=exited, status=0/SUCCESS)
CPU: 705ms
Sep 18 15:42:04 debian11 csf[8022]: ACCEPT all opt in * out lo ::/0 -> ::/0
Sep 18 15:42:04 debian11 csf[8022]: LOGDROPOUT all opt in * out !lo ::/0 -> ::/0
Sep 18 15:42:04 debian11 csf[8022]: LOCALOUTPUT all opt -- in * out !lo 0.0.0.0/0 -> 0.0.0.0/0
Sep 18 15:42:04 debian11 csf[8022]: LOCALINPUT all opt -- in !lo out * 0.0.0.0/0 -> 0.0.0.0/0
Sep 18 15:42:04 debian11 systemd[1]: Finished ConfigServer Firewall & Security - csf.
- Разрешить IP (добавить в белый список):
csf -a 192.168.100.10- Заблокировать IP (чёрный список):
csf -d 192.168.100.11- Удалить из белого списка:
csf -ar 192.168.100.10- Удалить из чёрного списка:
csf -dr 192.168.100.11Альтернативно можно редактировать файлы вручную:
nano /etc/csf/csf.allowДобавьте доверенные IP, по одному в строке:
192.168.100.10И список запрещённых IP:
nano /etc/csf/csf.deny192.168.100.11После редактирования файлов примените:
csf -rРекомендации по безопасности и лучшие практики
- Всегда оставляйте текущую сессию SSH в белом списке перед отключением/перезагрузкой брандмауэра.
- Устанавливайте TESTING = 0 только после проверки правил в тестовом режиме.
- Используйте автоматическое оповещение lfd для обнаружения повторных попыток входа.
- Ограничивайте доступ к логам через RESTRICT_SYSLOG и управляйте правами групп.
- Планируйте регулярную проверку списка deny/allow и удаление устаревших записей.
Точки отказа и когда CSF может не подойти
- На выполненном провайдером хостинге без доступа к kernel modules некоторые необходимые модули iptables могут отсутствовать — CSF будет ограничен.
- Если инфраструктура использует исключительно nftables и нет совместимости, подумайте о nativer nftables-решении или настройке совместимости.
- Для очень крупных сетей с сотнями тысяч правил iptables может стать узким местом; в таких случаях потребуются более специализированные решения для управления сетевой политикой.
Альтернативные подходы
- UFW — проще для пользователей Ubuntu и базовых сценариев.
- nftables — современная замена iptables в новых дистрибутивах.
- Аппаратные и облачные WAF/NGFW — для комплексной фильтрации трафика на уровне сети и приложений.
Быстрый чек-лист (роль: админ)
- Выполнено обновление apt-get.
- Установлены зависимости.
- Скачан и распакован csf.tgz.
- Запущен install.sh.
- Выполнен perl /usr/local/csf/bin/csftest.pl и модулей OK.
- TESTING = 0 в /etc/csf/csf.conf.
- SSH-порт добавлен в TCP_IN.
- Добавлены доверенные IP в csf.allow.
- Перезагружен csf: csf -r.
Мини-методология внедрения (SOP)
- На тестовом сервере выполнить установку и настройку, сохранить конфигурации.
- Прогнать набор тестов доступа из разных сетей (SSH, HTTP, почта).
- Перенести конфигурацию на продукцию, включив TESTING=0.
- Мониторить логи lfd в течение 48–72 часов и откалибровать пороги.
Критерии приёмки
- csf успешно запускается и сервис active.
- csftest.pl возвращает RESULT: csf should function on this server или эквивалент.
- Доступ по SSH сохранён и порты приложения работают.
- Логи lfd/CSF не содержат критических ошибок в течение контрольного периода.
Тестовые сценарии
- Попытка подключения к закрытому порту должна завершаться отказом.
- Попытка из заблокированного IP — должна быть записана в логи и продолжать блокироваться.
- Добавление IP в csf.allow — проверка доступа с этого IP.
Краткий словарь терминов
- CSF — ConfigServer Firewall.
- lfd — Login Failure Daemon, демон для обнаружения попыток входа.
- TCP_IN / TCP_OUT — списки разрешённых TCP-портов.
- csf.allow / csf.deny — файлы белого и чёрного списков IP.
Заключение
Установка CSF на Debian 11 — относительно простой процесс: скачивание архива, запуск install.sh, проверка модулей и базовая настройка /etc/csf/csf.conf. Ключевые моменты — не потерять SSH-подключение, отключить TESTING после проверки и настроить белый/чёрный списки. CSF остаётся хорошим выбором для небольших и средних серверов, где требуется гибкое управление правилами и интеграция с хостинг-панелями.
Важно
Перед массовым переносом конфигураций между серверами всегда тестируйте правила в контролируемой среде.
Ссылки
Для подробной документации и дополнительных опций смотрите официальную документацию CSF на сайте проекта.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента