Name: honeypod
A simple SSH honeypot written on Go. Strictly not a honeypot as it doesnt trap or jail anything, it simply collects data on attempts to login to a generic SSH server open to the internet.
The tool runs an SSH server that rejects all login attempts. There is no session created it just allows a login attempt and records the user name and password and source IP for later analysis.
- DB_TYPE - sqlite, postgres, nodb
- DB_FILE - (sqlite only).
- DB_HOST
- DB_PORT
- DB_NAME
- DB_USER
- DB_PASS
- GEOIP_COUNTRY_FILE
- GEOIP_CITY_FILE
- LOG_LOCAL_IPS=true/false (default: false)
- CONFIG_FILE
-
MVP (honeypod, json logs, geoip)
-
Module struct: params jne
-
Systemd daemon
-
Grafana Dashboard and loki config manual
-
Raw Metrics
-
Internals: HostKeyProvider, config
-
ELK
-
Record data to Database (SQLite and Postgres)
-
Docker
-
Readme
-
Branding: logo jne
- Multiport support
- Simple API to expose data (w/ Gin Gonic)
Базовая версия
Слушаем порт. Пришло сообщение -делаем struct NameHere и кидаем в канал.
Горутина, которая делает логи конвёртит эту структуру в другую (ака json) и срёт в логи. Конвертилка взаимодействует с функцией, которая с айпи делает геоданные
Ещё 2 идеи
В main или даже в init: конфигурим аппу (флаги и все дела)
Надо как-то фоново парсить поля запроса и сразу давать ответ клиенту, иначе мы тупые терминалы или клиент сорвётся во время парса.
Посередине го-суслик (аля траефик) На вход: три строки (username,password,1.2.3.4) На выход: строки JSON log, ELK, SQLite, Slon (iz Postgres) Вверх и вниз: Prometheus Metrics, Raw metrics