Боты — как тараканы: появляются сразу после включения сервера в интернет. Они сканируют, брутят, ищут уязвимости, долбятся в стандартные порты. Но вместо того чтобы просто блокировать — можно поставить ловушки. Заманить, проанализировать, забанить, а заодно собрать данные для своей безопасности.
Вот реальные ловушки, которые используют админы, чтобы не только защититься, но и посмеяться над ботами.
1. SSH-ловушка: порт 22 как капкан
Как уже говорили — перенос SSH с 22 на другой порт (например, 2222), а на 22-м — ничего не слушать, только банить.
Любое подключение к порту 22 — автоматом в бан через fail2ban или iptables.
# Баним всех, кто стучится на 22 порт
iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH-BOT: "
iptables -A INPUT -p tcp --dport 22 -j DROP
Можно даже логировать пакеты и собирать IP для дальнейшего blacklisting.
2. Фейковый SSH-сервер (Honeypot)
Ещё жестче — поставить на 22 порт фейковый SSH-сервер, который имитирует вход, но ничего не даёт.
Решения:
- Kippo / Dionaea — старые, но рабочие
- SSHoney — легковесный ханипот
- cowrie — современный, с поддержкой Telnet, SFTP, логированием команд и паролей
Бот подключается, вводит root:123456, пытается запустить скрипт — а ты записываешь всё. Потом анализируешь: откуда идут атаки, какие пейлоады используют.
3. Фейковый веб-сервер (HTTP/HTTPS ловушка)
Запусти на 80/443 портах фейковый сайт с видимостью уязвимого сервиса:
- Страница
/wp-login.php(даже если у тебя не WordPress) - Форма входа с логированием всех попыток
- Фейковый
/admin,/phpmyadmin,/login
Как только кто-то пытается залогиниться — бан по IP. Можно даже подсунуть боту "успешный вход", а потом показать: «У вас нет прав. Обратитесь к админу.» — и заодно собрать User-Agent, IP, страну.
Такие штуки делают через Nginx + Python-бэк или honeynginx.
4. База данных: ловушка на 3306 (MySQL), 5432 (PostgreSQL)
Боты постоянно сканируют порты баз данных. Можно:
- Оставить порт открытым, но с fake-сервером, который принимает подключение и сразу рвёт его с ошибкой.
- Или — поставить MySQL Honeypot, который логирует все попытки подключения.
Пример: MySQL蜜罐 (на GitHub), OpenCanary — умеет имитировать PostgreSQL, Redis, MySQL.
Как только бот пытается подключиться с root:password — ты получаешь алерт.
5. FTP и Telnet — мусорные порты
FTP (21), Telnet (23) — устарели, но боты всё ещё долбятся. Используй это.
Запусти на этих портах:
- Фейковый FTP-сервер с доступом к "важным файлам" (вроде
passwd.zip,backup.tar), которые на самом деле — шелл-скрипты, вызывающие бан. - Или просто лови подключение и сразу закрывай с логом.
Решение: dionaea, glastopf, OpenCanary.
6. Redis, MongoDB, Elasticsearch — NoSQL-ловушки
Боты ищут незащищённые NoSQL-базы. Многие из них пытаются записать свой ключ в Redis или создать индекс в ES.
Можно поставить fake Redis server, который:
- Принимает
CONFIG SET,SLAVEOF - Логирует команду
- Отвечает "OK", но ничего не делает
- И банит IP
Так ты узнаешь, кто и как атакует, и при этом не пострадаешь.
7. DNS-ловушка (порт 53)
Если у тебя нет DNS-сервера — а кто-то стучится на 53 порт, это 100% сканирование или DDoS-отражение.
Можно:
- Банить все входящие UDP-пакеты на 53 порт.
- Или поставить DNS Honeypot, который отвечает случайными A-записями и логирует источники.
8. API-ловушки: фейковые эндпоинты
Если у тебя веб-приложение — добавь в Nginx фейковые пути:
/api/v1/admin/debug/internal
При доступе — не 404, а 200 OK + JSON с "данными", но при этом триггерится алерт и бан.
Так ты поймаешь ботов, которые сканируют на предмет утечек API.
9. Сетевые ловушки: dummy-интерфейс и мёртвые IP
Создай фейковый сетевой интерфейс или выдели "мёртвый" IP в подсети, который нигде не используется.
Любое подключение к нему — 100% сканирование. Лови через tcpdump или socat и бань.
Пример:
# Ловим всё, что идёт на 192.168.1.99
tcpdump -i eth0 host 192.168.1.99 -w honeypot.pcap
10. Автоматический бан через fail2ban + IPset
Объедини все ловушки в одну систему через fail2ban.
Создай кастомные фильтры для каждого сервиса (SSH, HTTP, MySQL и т.д.) и добавляй нарушителей в ipset, который блокируется через iptables или nftables.
Пример:
# Создаём сет ipset create botnet hash:ip timeout 86400 # В fail2ban в действии actionban = ipset add botnettimeout 86400
Бонус: делай это весело
Можно добавить юмора:
- После 3 попыток входа — отвечай:
Too many failed attempts. The virtual panda is disappointed in you. - В ханипте — показывай боту фейковую консоль с
# rm -rf /systemи анимацией "удаления". - Отправляй себе Telegram-уведомление:
🤖 Бот пойман: 45.122.88.101 пытался зайти как admin:admin
Итог
Боты — не враги, а бесплатные тестировщики твоей безопасности. Используй их:
- Не просто блокируй — лови.
- Не просто прячься — провоцируй.
- Собирай данные, учишься, улучшаешь защиту.
Чем больше ловушек — тем тише в логах и спокойнее сон.
Комментарии
Пока нет комментариев. Будьте первым!