хуйу нас не матерятся
Т.к работаю я сейчас в компании по защите от ддоса, то и в голову лезут всякие с этим связанные мысли. В этот раз захотелось посмотреть кто сканирует интернет. И не только http, а все сканы. Да ещё и на хабре появился похожий пост, но только о http сканах.
Нам понадобится нода, на ней мы будем слушать 2 процесса tcpdump:
tcpdump -n "tcp[tcpflags] & (tcp-syn) != 0" - слушает только syn пакеты, это запросы на установление tcp соединения
tcpdump -n inbound and udp - слушает все входящие udp пакеты, т.к. у меня не будет стоять никаких udp сервисов, весь входящий udp- это боты
Минимально рабочий код под логгер будет такой:
const spawn = require('child_process').spawn;
const udpdump = spawn('tcpdump', ['-n', 'inbound', 'and', 'udp']); // спавним процессы, которые будем слушать
const tcpdump = spawn('tcpdump', ['-n', 'tcp[tcpflags] & (tcp-syn) != 0']);
udpdump.stdout.on('data', (data) => { // вешаем листенер
let lines = `${data}`.split('
'); // разбиваем полученный блок данных на строки
console.log(lines); // что-то с этим делаем
});
tcpdump.stdout.on('data', (data) => { // и то же самое для tcp
let lines = `${data}`.split('
');
console.log(lines);
});
Полные исходники на гитхабе: https://github.com/hololoev/honeypot_tcpdump_logger
В моём случае я всё фигачу в локальную mysql базу, с ней проще работать, чем с файлами. Затем раз в минуту по, крону, данные аггрегируются и складываются в /downloads. Таким образом при каждом обновлении страницы не приходится обращаться в мускуль и выкачивать тысячи строк, данные уже готовы.
Под ханипот поднята отдельная виртуалка, на которую не направлен никакой домен, но там поднят http сервер, который тоже отлавливает http сканы и складывает в ту же бд: https://github.com/hololoev/honeypot_http_logger
Как ни странно был свободен домен honeypot.pro, не долго думая я его зарегал и зафигачил по-быстрому страничку со статой.
За почти неделю honeypot отловил:
Total adresses | tcp Scans | udp Scans | http Scans |
---|---|---|---|
5011 | 44167 | 621 | 132 |
Как я и говорил в начале, tcp сканов в разы больше чем http. Именно по tcp перебираются пароли от ssh, ftp, rdp и ещё много от чего.
Карта топ 100 самых активных IP адресов:
Там же доступны дампы данных. Логи пока планирую хранить за неделю, дальше будет видно.
Т.к я из Штормвола уволился, то и надобность в этом проекте отпала. Поэтому сорян, сайт закрыл. Но код на гитхабе так и остаётся, юзайте.