Строим карту IP коннектов домашних девайсов, без регистрации и смс

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Вы никогда не задумывались, а куда вообще коннектится все то что у вас дома в сети ? Все эти Windows, MacOS, iOS и прочие проприетарные и умные утюги ? А это не сложно посмотреть. Сегодня в нашем кружке 'Оч.умелые ручки' мы будем следить за теми, кто следит за нами.

Наша цель - построить карту и графики того куда коннектится все то что сидит в сети дома. И не по трафику, понятно что какая-то там условная Амедиатека будет в топе, а именно про то, куда устанавливаются соединения. Готовить будем на Mikrotik, Grafana и Victoria Logs. В результаты мы получим что-то вроде вот этого:

Для изготовления 'блюда' нам понадобится всего 4 ингредиента:

  1. Mikrotik

  2. Linux или MacOS

  3. Docker (вместе с его другом, composerом)

  4. Немного умения консольных команд

1. Mikrotik это просто

Для начала зальём в mikrotik вот примерно такой конфиг, который будет следить за всеми новыми коннектами и вероломно сливать их нам по UDP syslog протоколу в victoria logs. Не забываем заменить x.x.x.x на адрес машины где будет поднята victoria logs, а y.y.y.y на внутренний адрес роутера

Скрытый текст
/system logging action set 3 remote=x.x.x.x remote-port=5514 src-address=y.y.y.y syslog-facility=local0
/system logging add action=remote prefix=:Firewall topics=firewall
/ip firewall filter add action=passthrough chain=forward comment="all new connections" connection-state=new log=yes log-prefix=new-connection

2. Готовим микросервисы

Дальше все еще проще

  1. Ставим на машину git, docker и docker compose если у вас Linux и git, orbstack и docker compose если у вас MacOS

  2. Клонируем себе заранее приготовленную репку https://github.com/sergeygalkin/habr.git

  3. Виртуозно исполняем всего пару команд

cd habr/mikrotik-victorialogs-mapip
docker compose up -d

В результате которых должно:

  1. Cтартануть 3 сервиса

  2. Появится два docker volume (для графаны и victoria logs)

  3. Собраться один имидж тупенького сервиса на питоне, который по запросу графаны лезет в victoria logs, запрашивает статистику за последний час, конвертит адреса в города, страны и координаты и отдает в виде json

  4. Запустится графана с одной дашбордой IP Map и datasource настроенный на сервис из пункта 3

3. Как пользоваться этой шнягой

Если вы все настроили правильно то должно произойти следующее

  1. На адресе http://127.0.0.1:9428/select/vmui у вас должен появится вот такой симпатишный UI, который можно использовать для поиска всякого по ip адресам и портам

  1. Команда`curl http://127.0.0.1:5555/city_data` должна отдавать что-то такоe:

Скрытый текст

[{"city":"Moscow","count":19},{"city":"Paris","count":3},{"city":"Falkenstein","count":2},{"city":"Engel's","count":6},{"city":"Frankfurt am Main","count":32},{"city":"Dublin","count":19},{"city":"San Jose","count":1},{"city":"Stockholm","count":19},{"city":"Victoria","count":1},{"city":"Khasavyurt","count":1},{"city":"Boardman","count":3},{"city":"Helsinki","count":6},{"city":"Amsterdam","count":7},{"city":"Los Angeles","count":2},{"city":"M\u00fcnchwilen","count":1},{"city":"San Francisco","count":6},{"city":"Marseille","count":1},{"city":"Hangzhou","count":1},{"city":"London","count":2},{"city":"Newark","count":1},{"city":"Kansas City","count":7},{"city":"Perm","count":1},{"city":"Ashburn","count":32},{"city":"Kista","count":6},{"city":"Warsaw","count":7},{"city":"Sassenburg","count":1},{"city":"Bucharest","count":6},{"city":"Mountain View","count":1},{"city":"Tokyo","count":3},{"city":"Phoenix","count":1},{"city":"D\u00fcsseldorf","count":3},{"city":"Montreal","count":2},{"city":"Edison","count":1},{"city":"Groningen","count":2},{"city":"Boydton","count":5},{"city":"Lappeenranta","count":3},{"city":"B\u00f6nen","count":1},{"city":"Chicago","count":1}]

  1. На урле http://127.0.0.1:3000/d/geiop/ после ввода логина и пароля admin/SuperSecret должна появится дашборда как на первом скриншоте.

Особенности 'блюда'

  1. Секурность у описанного сетапа близка к нулю, пароль только на графане, http вместо https, порты торчат наружу, так что не надо это разворачивать на виртуалке в интернете, но для дома вполне сойдет.

  2. Самописный сервис на питоне не зря пишет при старте `WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead` он именно такой, исключительно для домашней нагрузки

  3. Если вы заметили на дашборде графны нельзя выбрать интервал времени как обычно, интервал в 1 день захардокожен в строке " _time:1d"

  4. Надо понимать что запись в логе микротика new-connection говорит о том что что-то внутри пыталось установить соединение, но это не значит что это сделать удалось

Бон аппетит.

Источник: https://habr.com/ru/articles/882770/


Интересные статьи

Интересные статьи

Представьте, что к вам приходит владелец с видео-концептом новой фичи для клиента, функционал которой отдаленно напоминает космический корабль, а у вас всего два месяца на разработку, и один — на тест...
Представляю вашему вниманию цикл статей по работе с пока еще мало знакомым многим битрикс-разработчикам инструментом оперирования данными с CRM Битрикс24 через абстрактные фабрики. В первой статье мы ...
Привет, Хабр! Гитаристы шутят, что на пути творческого развития каждого любителя гитары ожидают несколько неминуемых этапов. Когда узнаёшь, что кроме зелёного 0.88 мм существуют медиаторы всевозмо...
31 марта — это такой Хэллоуин безопасников: по легенде именно в этот день всякая нечисть вылезает из даркнета и бомбит атаками ИТ-инфраструктуру компаний. Кто-то нацеливается на компании ...
Получить трафик для интернет-магазина сегодня не проблема. Есть много каналов его привлечения: органическая выдача, контекстная реклама, контент-маркетинг, RTB-сети и т. д. Вопрос в том, как вы распор...