Что агент KIPBan устанавливает на сервер Windows и Linux

9 мин чтения · обновлено 8 октября 2026

Агент KIPBan работает на сервере с правами SYSTEM на Windows и root на Linux, управляет брандмауэром и читает журналы входа. Перед установкой такой программы администратор вправе знать, что именно она кладёт на диск, какие службы и правила создаёт, куда ходит по сети и что остаётся после удаления. Здесь собрано всё, что агент KIPBan устанавливает на сервер, с реальным выводом команд.

Коротко

  • Сеть: только исходящий HTTPS на api.kipban.ru:443 и, если включены уведомления, запросы к Telegram. Входящих портов агент не открывает.
  • Windows: папка C:\Program Files\Kipban, служба KIPBan, две задачи планировщика, правила брандмауэра KIPBan_*.
  • Linux: папка /opt/kipban, служба и три таймера systemd, наборы ipset и правила iptables, два файла в конфигурации fail2ban.
  • Данные: в центр уходят атакующие IP и срок бана, раз в сутки базовые метрики сервера. Логины, которые пытался подобрать атакующий, в центр не передаются.

Windows: файлы

Всё, что агент хранит, лежит в одной папке. Так она выглядит на рабочем сервере:

Name                          Length  LastWriteTime
----                          ------  -------------
scripts                               30.09.2026 13:45:59
agent.log                     1461224 30.09.2026 13:45:59
agent_settings.json           496     30.09.2026 13:46:00
agent_state.json              192991  30.09.2026 13:45:59
agent_status.json             498     30.09.2026 13:45:37
central_push.log              2632939 30.09.2026 13:46:00
installed_scripts_version.txt 8       30.09.2026 13:46:00
KIPBan.exe                    115712  30.09.2026 13:45:59
rules.local.example.json      433     30.09.2026 13:46:00
secrets.dat                   422     30.09.2026 13:45:59
sync_key                      32      30.09.2026 13:45:56
ФайлНазначение
KIPBan.exeагент, собранный на этом сервере
secrets.datтокен сервера и секреты Telegram, зашифрованы
sync_keyключ привязки к машине
agent_state.jsonбаны и счётчики нарушений
agent_status.jsonтекущее состояние агента
agent_settings.jsonнастройки банов и правила из кабинета
rules.local.example.jsonпример своих правил обнаружения
rules.local.jsonваши правила, появляется, только если вы их создали
ban.txt, unban.txtочереди ручного бана и разбана, появляются при использовании
agent.log, agent.log.1лог агента, при 10 МБ переименовывается в .1
central_push.logлог ночного обновления и сбора метрик
installed_scripts_version.txtустановленная версия
curl\только если в системе нет curl.exe
scripts\kipban_client_config.jsonадреса центра и флаги уведомлений
scripts\update-from-central.ps1скрипт ночного обновления
scripts\collect-metrics.ps1скрипт сбора метрик

В ProgramData агент ничего не пишет. В %TEMP% на время установки и обновления появляются временные файлы, потом они удаляются. В реестре создаётся только раздел службы HKLM\SYSTEM\CurrentControlSet\Services\KIPBan.

Кроме того, установщик включает аудит неудачных входов (без него Windows не пишет событие 4625) и переводит службу брандмауэра Windows в автозапуск.

Windows: служба, задачи и правила брандмауэра

  • Служба KIPBan (в списке служб «KIPBan Agent»): работает от LocalSystem, запускается автоматически. При сбое перезапускается через 5 секунд, потом через 10, дальше каждую минуту.
  • Задача KIPBan update, 03:00, от SYSTEM: сверяет настройки с кабинетом и при выходе новой версии запускает обновление. Её же запускает кнопка «Обновить сейчас». До версии 22.3.3 задача называлась KIPBan daily update, при обновлении агент переименовывает её сам. Раз в 30 минут агент проверяет, что задача и её скрипт на месте: если их удалила другая программа, кабинет покажет проблему у сервера и пришлёт письмо.
  • Задача KIPBan metrics collect, 07:00, от SYSTEM: отправляет метрики сервера.
  • Правила KIPBan_Block_1, KIPBan_Block_2…: входящие, блокирующие, любой протокол, все профили, до 1 000 адресов IPv4 и IPv6 в правиле, группа KIPBan.
  • Правило KIPBan_Whitelist: разрешает входящие подключения с адресов белого списка на все порты.

Windows: токен, сборка и обновление

Токен сервера хранится в secrets.dat, зашифрованный через DPAPI в области машины. Права на файл есть только у SYSTEM и администраторов.

Готовый исполняемый файл агент не скачивает. Установщик загружает архив исходников по HTTPS с api.kipban.ru, проверяет его SHA-256 по хэшу, записанному в самом установщике, и собирает KIPBan.exe встроенным в Windows компилятором .NET Framework. После сборки временная папка с исходниками удаляется. Сам установщик — открытый скрипт PowerShell, его можно прочитать до запуска.

При обновлении агент собирается заново тем же способом. Новая сборка проходит самопроверку до того, как трогать работающую службу. Если сборка не удалась, на сервере ничего не меняется. Подписи Authenticode у агента нет: целостность обеспечивают HTTPS и проверка хэша архива.

Windows: как проверить агент

Команда selftest проверяет конфигурацию, правила обнаружения, журналы событий, брандмауэр, аудит входов и связь с центром. Фрагмент вывода на рабочем сервере, часть строк пропущена:

PS> & "C:\Program Files\Kipban\KIPBan.exe" selftest
OK    secrets readable (4 keys)
OK    client config: srv-01 -> https://api.kipban.ru/sync.php
OK    ban settings: threshold=3 window=300s tiers=259200/2592000/0 whitelist=7
OK    rules: 20 compiled of 20 enabled (20 total, central 0, local 0)
      absent file-msexchange (0 file(s))
      absent file-smartermail (0 file(s))
      absent file-mailenable (0 file(s))
      absent file-apache (0 file(s))
      absent file-rdweb (0 file(s))
      …
      active evt-rdp-security [Security]
      active evt-rdp-security-2 [Security]
      active evt-mssql-application [Application]
      active evt-mysql-application [Application]
      active evt-postgresql-application [Application]
      active evt-msexchange-system [System]
      active evt-phpmyadmin-application [Application]
      active evt-ssh-openssh [OpenSSH/Operational]
      active evt-ssh-application [Application]
      active evt-rdp-remotedesktopservices-rdpcorets [Microsoft-Windows-RemoteDesktopServices-RdpCoreTS/Operational]
      active evt-vnc-application [Application]
      active evt-rras-system [System]
      absent evt-svn-visualsvnserver [VisualSVNServer]
OK    firewall COM: 5 KIPBan rule(s) / 1101 IPs …
OK    logon failure auditing (event 4625) enabled
OK    central reachable, token accepted: {"total_banned_ips":2137}
selftest passed
  • threshold=3 window=300s: бан после 3 неудачных попыток за 5 минут.
  • tiers=259200/2592000/0: первый бан на 3 дня, повторный на 30 дней, дальше навсегда.
  • active: агент следит за этим журналом или файлом. absent: такого источника на сервере нет, например не установлен Exchange. Правило включится само, когда источник появится.
  • firewall COM: сколько правил KIPBan_Block_* создано и сколько адресов в них.

Другие команды KIPBan.exe: status (состояние агента), version (версия), run (запуск в консоли), test-rule (показать, что находит правило, без бана). Так выглядит лог агента:

2026-09-30T13:30:56 INFO ban 203.0.113.10 (central-sync) -> tier=259200s (offense #1)
2026-09-30T13:30:56 INFO firewall: 1095 blocked IP(s), rules written=1 deleted=0
2026-09-30T13:38:14 INFO unban 203.0.113.11 -> ban expired locally (BanTime elapsed)
2026-09-30T13:45:57 INFO ban 203.0.113.12 (central-sync) -> tier=2592000s (offense #2)

Linux: файлы

Скрипты агента лежат в /opt/kipban/scripts:

ФайлНазначение
kipban_agent.pyслужба агента
kipban_common.pyобщий код
sync-from-central.pyсинхронизация с центром раз в 5 минут
update-from-central.pyночное обновление
collect-metrics.pyсбор метрик
fail2ban_report.pyпринимает баны от fail2ban
fail2ban_sync_jails.pyподключает интеграцию ко всем активным jail
kipban_client_config.jsonадреса центра и флаги
secrets.credтокен и секреты Telegram, зашифрованы systemd-creds, права 600
*.bak_*копии прошлых версий

Состояние хранится в самой папке /opt/kipban: баны и счётчики нарушений (agent_state.json), очереди ban.txt и unban.txt, лог central_push.log, состояние синхронизации, ключ привязки к машине sync_key с правами 600 и номер версии. Если в системе нет systemd-creds, токен хранится в kipban_client_config.json с правами 600.

Все скрипты написаны на Python и лежат открытым текстом: любой из них можно прочитать.

Linux: изменения в fail2ban

  • /etc/fail2ban/action.d/kipban-report.conf: действие, которое передаёт бан агенту.
  • /etc/fail2ban/jail.d/99-kipban-integration.local: всем активным jail назначается это действие и bantime = -1. Fail2ban продолжает находить атаки по своим фильтрам, а блокировкой и сроками банов управляет агент.
  • Только если fail2ban ставил установщик KIPBan: в jail.local добавляются ignoreip и [sshd] enabled = true.

Недостающие пакеты установщик ставит сам: curl, ipset, iptables, python3 и fail2ban. На RHEL-подобных системах он включает репозиторий EPEL.

Linux: службы systemd

ЮнитЧто делает
kipban-agent.serviceпостоянная служба агента, перезапуск через 5 секунд при любом сбое
kipban-sync.timerсинхронизация каждые 5 минут, у каждого сервера своё смещение до 4 минут
kipban-daily-update.timerночное обновление, 03:00–03:30
kipban-metrics.timerотправка метрик, 07:00–07:15

Все юниты работают от root без дополнительных ограничений песочницы: агенту нужно управлять ipset и iptables. Секреты передаются службе через LoadCredentialEncrypted и не лежат в конфигурации юнита.

Проверить, что агент работает:

systemctl status kipban-agent
ipset list kipban-blocklist | head -8

Linux: правила ipset и iptables

Агент создаёт два набора и два правила в таблице raw:

ipset create kipban-blocklist  hash:ip timeout 0
ipset create kipban-blocklist6 hash:ip family inet6 timeout 0
iptables  -t raw -I PREROUTING 1 -m set --match-set kipban-blocklist  src -j DROP
ip6tables -t raw -I PREROUTING 1 -m set --match-set kipban-blocklist6 src -j DROP
  • Почему raw. Пакет отбрасывается до маршрутизации, поэтому закрыт не только сам сервер, но и порты, опубликованные через Docker, и трафик виртуальных машин. От ufw, firewalld и Docker правило не зависит.
  • Самовосстановление. Раз в минуту агент проверяет, что правила на месте, и возвращает их, если их сбросил другой файрвол.
  • После перезагрузки. Наборы в ядре после перезагрузки пустые. При старте агент возвращает в них все активные баны из agent_state.json с оставшимся сроком.
  • Ядро без таблицы raw (встречается на некоторых OpenVZ и LXC): правило ставится в цепочку INPUT, и порты Docker тогда не защищены.
  • Без ip6tables IPv4 работает как обычно, а IPv6-адреса пропускаются с записью в лог.
  • Баны длиннее 24,8 суток (предел таймера ipset) ставятся без таймера, и агент снимает их сам, когда срок истекает.

Лог агента пишется в /opt/kipban/central_push.log. При 10 МБ он переименовывается в .1, так что на диске не больше примерно 20 МБ логов:

2026-09-30T14:37:48 sync ok: +4 added, +1 removed, since -> 1790768263 (cycle 5666)
2026-09-30T14:37:57 ban 203.0.113.10 (central-sync) -> tier=259200s (offense #1)
2026-09-30T14:39:07 inserted iptables raw PREROUTING DROP rule for ipset kipban-blocklist
2026-09-30T14:39:07 inserted ip6tables raw PREROUTING DROP rule for ipset kipban-blocklist6
2026-09-30T14:39:07 restored 1129 active ban(s) from agent_state.json into ipset
2026-09-30T14:39:07 kipban_agent starting (pid 1322133)

Какие данные агент отправляет

С каждым баном центр получает IP атакующего и срок локального бана. Логины, которые пытался подобрать атакующий, в центр не уходят. Уведомления в Telegram, где этот логин виден, агент отправляет напрямую вашему боту, минуя центр.

Раз в сутки уходят метрики сервера, чтобы в кабинете было видно его состояние:

  • Windows: загрузка процессора, память, диск, время работы, название ОС, число ошибок в журналах System и Application за сутки и три самых частых из них (источник и код события).
  • Linux: загрузка процессора, память, диск /, время работы, название ОС из /etc/os-release, число ошибок в системном журнале за сутки и три самых частых текста ошибок (по 60 символов), число адресов в наборах ipset.

В текстах системных ошибок на Linux иногда встречаются имена хостов или адреса, поэтому они могут попасть в эти 60 символов.

Удаление агента

Проще всего удалить агент из кабинета: на странице сервера запросите удаление, и при следующей синхронизации, в течение 5 минут, сервер получит деинсталлятор. После этого центр отзывает токен сервера.

  • Windows: удаляются служба, папка C:\Program Files\Kipban, обе задачи и все правила KIPBan_*. Остаются включённый аудит входов и автозапуск брандмауэра Windows.
  • Linux: удаляются служба и таймеры, папка /opt/kipban, правила iptables и ip6tables, оба набора ipset. Интеграция с fail2ban откатывается: jail возвращаются к прежним bantime и действиям. Остаются установленные пакеты, а также ignoreip и [sshd] в jail.local, если их добавлял установщик.

Удаление вручную

Windows, PowerShell от имени администратора:

Stop-Service KIPBan; sc.exe delete KIPBan
Unregister-ScheduledTask "KIPBan update","KIPBan daily update","KIPBan metrics collect" -Confirm:$false -ErrorAction SilentlyContinue
Get-NetFirewallRule -DisplayName "KIPBan_*" | Remove-NetFirewallRule
Remove-Item -Recurse -Force "C:\Program Files\Kipban"

Linux, от root:

systemctl disable --now kipban-agent kipban-sync.timer kipban-daily-update.timer kipban-metrics.timer
rm -f /etc/systemd/system/kipban-*.service /etc/systemd/system/kipban-*.timer && systemctl daemon-reload
rm -f /etc/fail2ban/jail.d/99-kipban-integration.local /etc/fail2ban/action.d/kipban-report.conf && systemctl restart fail2ban
iptables  -t raw -D PREROUTING -m set --match-set kipban-blocklist  src -j DROP
ip6tables -t raw -D PREROUTING -m set --match-set kipban-blocklist6 src -j DROP
ipset destroy kipban-blocklist; ipset destroy kipban-blocklist6
rm -rf /opt/kipban

Ручное удаление не отзывает токен, поэтому после него удалите сервер и в кабинете.

Как агент устроен с точки зрения защиты и чем отличается от других программ, читайте в статьях «Fail2ban для Windows» и «Общий бан-лист fail2ban». Подробнее о шифровании секретов в systemd написано в документации systemd.

Вопросы про агент KIPBan

Открывает ли агент KIPBan входящие порты?

Нет. Агент только сам обращается к api.kipban.ru по HTTPS на порт 443 и, если включены уведомления, к Telegram напрямую или через SOCKS5-прокси из настроек кабинета.

Где агент хранит токен сервера?

На Windows в файле secrets.dat, зашифрованном через DPAPI в области машины, с доступом только для SYSTEM и администраторов. На Linux в secrets.cred, зашифрованном systemd-creds, с правами 600. Если systemd-creds нет, токен лежит в конфигурационном файле с правами 600.

Скачивает ли агент исполняемые файлы?

На Windows нет: установщик скачивает архив исходников, проверяет его SHA-256 и собирает агент встроенным компилятором .NET Framework. На Linux агент состоит из скриптов Python, которые лежат открытым текстом.

Что остаётся на сервере после удаления агента?

На Windows остаются включённый аудит неудачных входов и автозапуск брандмауэра. На Linux остаются установленные пакеты и, если fail2ban ставил установщик, строки ignoreip и [sshd] в jail.local. Всё остальное удаляется, а конфигурация fail2ban возвращается к прежней.