Как настроить SSH‑honeypot (endlessh) и ловить автоматические атаки

Что такое SSH honeypot
SSH honeypot — это «приманка», имитирующая уязвимый SSH‑сервер, чтобы отвлечь или задержать автоматизированные сканеры и боты. Honeypot может быть простой заглушкой, которая ничего не отдаёт, или полноценным эмулятором сервиса, собирающим данные об атакующих. Цель — снизить риск для реальных служб и получить время/информацию для защиты.

Краткое определение: honeypot — контролируемая, вынужденная уязвимость, используемая для наблюдения и замедления атакующих.
Важно: honeypot не заменяет базовую безопасность (крепкие пароли, ключи, брандмауэр), а дополняет её.
Почему используют именно endlessh
endlessh — минималистичный проект с единственной задачей: изматывать автоматические боты, задерживая их соединения. Он лёгкий, легко компилируется и не запускает полноценную оболочку, поэтому безопаснее широких эмуляторов.
Преимущества:
- Простая установка и минимальные зависимости.
- Низкая нагрузка на систему (обычно одно-процессный, асинхронный ввод/вывод).
- Работает на порту 22 (с помощью capability), повышая шанс привлечь ботов.
Ограничения:
- Не ловит целевых, внимательных злоумышленников.
- Не заменяет логирование и блокировку реальных атакующих IP.
Когда это работает и когда нет
Когда работает:
- Массовые, автоматические попытки перебора паролей (brute force).
- Нечувствительные к задержкам бот‑скрипты.
Когда не работает:
- Целевые, ручные атаки, где оператор замечает задержку и меняет тактику.
- Сканирование нестандартных портов — если ваш настоящий SSH открыт на другом порту, 공격ник может перейти туда.
Требования и подготовка
Минимальные требования:
- Доступ root или sudo на сервере.
- Компилятор (gcc/make) и git.
- systemd (подходящая служба).
Подготовка зависимостей (примеры):
- Debian/Ubuntu: sudo apt update && sudo apt install -y build-essential git libcap2-bin
- RHEL/CentOS/Fedora: sudo dnf install -y gcc make git libcap
- Arch: sudo pacman -S –needed base-devel git libcap
Совет: установите пакеты через пакетный менеджер вашей ОС перед компиляцией.
Установка endlessh — пошагово
- Клонируйте репозиторий:
git clone https://github.com/skeeto/endlessh- Перейдите в каталог и соберите:
cd endlessh
makeЕсли сборка выдаёт ошибки — внимательно прочитайте сообщение: скорее всего, не хватает dev‑пакета или компилятора. Установите необходимые инструменты и повторите.
- Переместите исполняемый файл в директорию в PATH:
sudo mv endlessh /usr/local/bin/- Проверьте, что бинарник доступен:
which endlesshОжидаемый вывод: /usr/local/bin/endlessh
- Установите unit для systemd:
sudo cp util/endlessh.service /etc/systemd/system/- Откройте unit для редактирования (пример с nano):
sudo nano /etc/systemd/system/endlessh.serviceНайдите строку (в примере):
#AmbientCapabilities=CAP_NET_BIND_SERVICEУдалите символ #, чтобы дать service право слушать привилегированные порты, и закомментируйте или удалите строку PrivateUsers, если она установлена в true:
AmbientCapabilities=CAP_NET_BIND_SERVICE
#PrivateUsers=trueСохраните файл.
- Присвойте бинарнику capability для привязки к порту 22 без запуска от root:
sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/endlessh- Создайте конфигурацию и укажите порт:
sudo mkdir -p /etc/endlessh
sudo tee /etc/endlessh/config > /dev/null <<'EOF'
Port 22
#Delay 1000 # пример: задержка между строками в мс (опция зависит от версии)
EOFПримечание: файл config обычно содержит только строку Port 22, но репозиторий может иметь дополнительные опции — смотрите SAMPLE config в репо.
- Перезапустите и включите службу:
sudo systemctl daemon-reload
sudo systemctl enable --now endlessh
sudo systemctl status endlesshПроверяйте статус сервиса и журналы через:
journalctl -u endlessh -fТестирование работы honeypot
Чтобы проверить поведение клиента «изнутри», выполните обычное подключение и с verbose:
ssh root@Команда должна «зависнуть» при ожидании баннера. Чтобы увидеть подробные шаги SSH‑клиента, добавьте флаг -vvv:
ssh -vvv root@Вы увидите обмен по протоколу — endlessh медленно шлёт длинный баннер, и соединение долго не проходит аутентификацию. Для автоматических ботов это значит: соединение подвисло, скрипт ждёт или таймаутится позже.

Мониторинг и логирование
Что логировать:
- Подключённые IP и длительность их сессии.
- Частота попыток от одного IP.
- Исключительные ошибки и аварийные падения.
Способы мониторинга:
- journalctl -u endlessh — журналы systemd.
- Дополнительно: rsyslog или Filebeat для отправки логов в централизованную систему.
Авто‑реакция — блокировка злонамеренных IP:
- Используйте fail2ban или nftables/iptables‑правила, чтобы блокировать IP, которые делают слишком много попыток.
- Модель: лог → анализатор (fail2ban) → блокировка (firewall). Это уменьшит повторные обращения к honeypot от тех же адресов.
Пример простого fail2ban‑фильтра и action для endlessh можно найти/настроить по вашему формату логов.
Альтернативы и дополнения
Если вы хотите больше возможностей (сбор пользовательских команд, эмуляция сессий), посмотрите:
- Cowrie — SSH/Telnet honeypot с эмуляцией среды и логированием команд.
- Kippo (устаревший) — исторический проект с похожей функциональностью.
- sshguard — инструмент для блокировки IP‑адресов, обнаруживающий попытки SSH.
Сравнение (коротко):
- endlessh: минималистичный, задерживает соединения.
- cowrie: полноценный эмулятор, собирает команды и данные.
- sshguard/fail2ban: автоматическая блокировка, но не ловушка.
Выбор зависит от целей: простая задержка vs сбор разведданных.
Практический плейбук для админа (SOP)
Шаги для развёртывания (быстрый чек‑лист):
- Обновить пакеты и установить зависимости.
- Клонировать repo и собрать endlessh.
- Переместить бинарник и настроить capability.
- Скопировать unit и отредактировать его (AmbientCapabilities).
- Создать /etc/endlessh/config с Port 22.
- Включить и запустить systemd‑сервис.
- Настроить логирование и fail2ban/блокировки.
- Тестировать из внешней сети и мониторить.
Критерии приёмки:
- Сервис активен: systemctl status показывает active (running).
- SSH соединение к серверу на порт 22 «зависает» и выдаёт медленный баннер.
- Логи фиксируют IP и длительность сессии.
- fail2ban (если установлен) блокирует подозрительные повторные попытки.
Инструменты и роли:
- Хоббист: минимум — установить и наблюдать логи.
- Сисадмин: дополнительно — интеграция с SIEM, правила блокировок.
- Безопасник: анализ данных, корреляция, создание IOC (indicator of compromise).
Инцидентный план и откат
Если endlessh вызывает конфликт с рабочим SSH:
- Шаг 1: Отключите endlessh: sudo systemctl stop endlessh && sudo systemctl disable endlessh
- Шаг 2: Проверьте, что OpenSSHD запущен на нужном порту: sudo systemctl start sshd
- Шаг 3: Удалите capability (если необходимо): sudo setcap -r /usr/local/bin/endlessh
- Шаг 4: Верните unit в исходное состояние или удалите /etc/systemd/system/endlessh.service и выполните systemctl daemon-reload
Если honeypot вызывает перегрузку: уменьшите количество одновременно обрабатываемых соединений на уровне systemd (LimitNOFILE/TasksMax) или настройте firewall, чтобы ограничить скорость подключений.
Тестовые случаи (приёмочные)
- Установленный бинарник в PATH
- Действие: which endlessh
- Условие: возвращён /usr/local/bin/endlessh
- Сервис запускается и слушает порт 22
- Действие: sudo ss -tlnp | grep :22
- Условие: вывод показывает endlessh или занят порт 22
- Клиент ssh зависает
- Действие: ssh -vvv root@
- Условие: клиент ожидает баннер в течение >30 сек (в тестовых условиях)
- Логи фиксируют соединение
- Действие: journalctl -u endlessh
- Условие: записи о подключении с IP и времени
Безопасность и hardening
Рекомендации:
- Никогда не запускайте honeypot с реальной оболочкой или как root‑shell.
- Ограничьте права бинарника с помощью setcap, а не постоянным запуском под root.
- Изолируйте honeypot в отдельной виртуальной машине или контейнере, если вы собираете данные атакующих.
- Настройте централизованное логирование и мониторинг, чтобы не потерять данные при падении сервиса.
- Обновляйте endlessh и ОС — даже простые бинарники иногда получают патчи.
Риск‑матрица (высокий/средний/низкий):
- Утечка логов с персональными данными атакующих: средний — храните логи защищённо.
- Непреднамеренная блокировка легитимных IP: низкий — используйте белые списки.
- Обход honeypot целевым атакующим: высокий — ожидаемо, принять как ограничение.
Закон и конфиденциальность (советы для EU/RU)
Honeypot‑сервер собирает данные о подключающихся IP и активностях — это персональные данные в широком смысле. Рекомендации:
- Собирайте только то, что необходимо для защиты и анализа.
- Храните логи безопасно и удаляйте их по политике хранения.
- Для коммерческих/корпоративных сред проконсультируйтесь с юридическим отделом по требованиям локального законодательства (GDPR/ФЗ). Для личных хобби‑серверов — минимизируйте сбор и шифруйте логи.
Дополнительно: настройки и параметры endlessh
Пример опций, которые можно задать в файле /etc/endlessh/config (зависит от версии):
- Port — порт для прослушивания (22)
- Banner — путь к файлу баннера
- Timeout — таймаут соединения
- MaxConn — максимум одновременно открытых сессий (если опция поддерживается)
Проверьте README на Github для точного списка опций вашей версии.
Чек‑листы по ролям
Хоббист:
- Установлен и запущен endlessh
- Простой мониторинг через journalctl
- Проверка подключения ssh -vvv
Системный администратор:
- Интеграция с fail2ban/iptables
- Централизованное логирование
- Резервная конфигурация и инструктаж по откату
Команда безопасности:
- Анализ логов и идентификация IOC
- Корреляция с SIEM
- Политика хранения и удаления логов
Часто задаваемые вопросы
Это гарантированно остановит всех хакеров? Нет. Это эффективный барьер против массовых автоматизированных сканеров, но не против целевых, ручных атак.
Как мне при этом пользоваться SSH самому? Переходите SSH‑демон на нестандартный порт (напр., 2222) и блокируйте порт 22 для легитимных клиентов через правила firewall/iptables, оставив honeypot отдельно.
Можно ли изменить скорость задержки баннера? Да — в конфиге возможно задать задержки или выбрать другой баннер. См. параметры в репозитории.
Какие альтернативы есть для сбора команд атакующих? Cowrie — более «тяжёлый» эмулятор, который логирует вводимые команды и может сохранить сессии.
Итог и рекомендации
Endlessh — простой и эффективный инструмент для отвлечения и задержки автоматических SSH‑ботов. Он не заменяет хорошую практику безопасности, но служит полезным дополнением:
- Используйте его как первую линию защиты или как часть системы обнаружения.
- Интегрируйте с fail2ban и централизованным логированием.
- Изолируйте honeypot и опишите процедуры отката.
Короткие шаги для запуска прямо сейчас:
- Установите зависимости → 2) git clone → make → 3) setcap + systemd → 4) включите и тестируйте.

Image credit: Honey in pot, honeycomb and stick by Yay Images
Краткое резюме
Endlessh даёт недорогой и безопасный способ тратить время автоматизированных атакующих, уменьшать шум в логах и получать дополнительную временную защиту для ваших настоящих служб. Комбинация honeypot + блокировка повторных попыток (fail2ban) + централизованное логирование — хороший старт для небольшого сервера.
Important: Перед развёртыванием в продакшн уточните соответствие законодательству о хранении сетевых данных и разработайте политику хранения логов.
Похожие материалы
Multiopen: открыть несколько ссылок в Firefox
PhM Registry Editor для Windows Mobile
Генераторы списков в Python — полное руководство
Как сбросить Logitech G Pro Wireless
Отключить виджеты в Windows 11 — 3 способа