Агент 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 возвращается к прежней.