- Saved searches
- Use saved searches to filter your results more quickly
- lmsecure/LMS.NetMap
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- Визуализация топологии сети с помощью скрипта Python и NeXt UI
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
lmsecure/LMS.NetMap
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
LMS.NetMap — сетевой анализатор трафика с возможностью автоматического построения топологии сети.
- Разделение на проекты. Чтобы «не держать все яйца в одной корзинке» реализовано разделение на проекты. Определение принадлежности пользователя к проекту осуществляется через cookie. Пока у пользователя нет cookie, он не может начать работу с проектом.
- Активное сканирование с использованием nmap. Произведена интеграция с нативно установленным nmap . На данный момент из результатов сканирования вытягиваются:
- информация о хосте (IP, MAC, hostname);
- сведения о трассировке;
- сведения об порта (номер порта, состояние, сведения о ПО на порту).
- Парсинг xml-логов сканирования nmap. Провели сканирование на удаленной машине и хотите загрузить логи в проект? Не проблема, NetMap поддерживает парсинг xml-логов nmap
- Пассивное сканирование с использованием scapy. Scapy — мощный инструмент для работы с сетью. Приложение создает асинхронный сниффер и налету «потрошит пакеты». Сейчас можно получить информацию из следующих типо пакетов:
- ARP;
- LLNMR;
- NBNS;
- TCP.
- Парсинг pcap-файлов. Сделали сниффиинг пакетов и хотите загрузить данные в проект? Не проблема, NetMap поддерживает парсинг pcap-файлов.
- Получение информации организовано в виде задач. Все сканирования парсиг логов организовано в виде задач и выполняется на стороне сервера в отдельных планировщиках. Есть возможность настроить каждый планировщик индивидуально с целью контороля исходящего траффика.
- Построение топологии сети. На основе данных о сканированиях автоматический строится топология сети со следующими функциями:
- автоматическое перестроение карты сети при получении новых данных;
- интерактивная карта сети с возможностью работы в полноэкранном режиме;
- получение данных об открытых портах по выделенному узлу сети;
- возможность установить роль узла сети и установить иконку;
- объединение узлов сети в кластер по 24 маске. Очень удобно, когда на карте 100500 узлов;
- экспорт топологии сети в SVG , PNG и JSON (структура данных vis.js);
- импорт топологии сети из JSON (структура данных vis.js);
- Уведомления. При изменении статуса задачи всплывает уведомление, информирующее пользователя
- Работа с базой через веб-интерфейс. В веб-интерфейсе есть элемент для работы с базой, поддерживающий следующий функционал:
- отображение записи;
- создание записи;
- редактирование записи;
- удаление записи.
- Использование REST API. Для работы с серверной частью используется REST API, поэтому есть возможность написать свой интерфейс (tui, gui native, mobile) или интегрировать в свой проект.
aiohttp==3.8.1 aiohttp_jinja2==1.5 aiohttp_session==2.11.0 aiojobs==1.1.0 alembic==1.9.2 cryptography==3.4.8 iptools==0.7.0 Jinja2==3.1.2 mac_vendor_lookup==0.1.12 nest-asyncio==1.5.6 pandas==1.4.1 scapy==2.4.5 setuptools==59.6.0 SQLAlchemy==1.4.32 sqlalchemy_schemadisplay==1.3 xmltodict==0.12.0 xlsxwriter==3.0.8
git clone https://github.com/lmsecure/LMS.NetMap.git cd LMS.NetMap
sudo apt install nmap python3.8
2.1. Рекомендуется использовать venv
sudo apt install -y python3-venv python3 -m venv venv source venv/bin/activate
pip3 install -r requirements.txt
sudo setcap cap_net_raw=eip /usr/bin/python3.8 sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip `which nmap`
From github pyz-file from last release
wget https://github.com/lmsecure/LMS.NetMap/releases/download/v0.4a/app-v0.4a.pyz cd LMS.NetMap
sudo apt install nmap python3.8
sudo setcap cap_net_raw=eip /usr/bin/python3.8 sudo setcap cap_net_raw,cap_net_admin,cap_net_bind_service+eip `which nmap`
P.S.: файл app.pyz сгенерирован с помощью shiv и содержит в себе все зависимые python -пакеты
docker pull lmsecure/lms.netmap
mkdir ~/lms.netmap cd ~/lms.netmap
docker run -p 8008:8008 -v ~/lms.netmap/projects:/lms.netmap/projects -v ~/lms.netmap/logs:/lms.netmap/logs -d lmsecure/lms.netmap:latest
После запуска перейти http://localhost:8008
- Возможность скармливать логи других инструментов:
- whatweb
- crackmapexec
- nikto
- gobuster
- и другие
- Расширенный анализ nmap сканирования
- Увеличить количество типов анализуруемых пакетов и качество парсинга пакетов
- Работа с доменными именами
- Поиск сервисов по dns записям и субдоменам
- Создание скриншотов веб-приложений
- Проксирование запросов
Визуализация топологии сети с помощью скрипта Python и NeXt UI
В данный момент в сети существует немало утилит и программ с открытым кодом для визуализации сетевых топологий. Исходными данными, как правило, для них выступают данные таких протоколов, как Cisco Discovery Protocol (CDP), Link Layer Discovery Protocol (LLDP), Open Shortest Path First (OSPF), Intermediate System to Intermediate System (ISIS).
Реализации CDP и LLDP могут использоваться в качестве решения для небольших доменов, с ограниченным количеством сетевых устройств. В отношении CDP, следует заметить, что данный протокол является исключительно проприетарным и может применяться в сетях только с оборудованием Cisco.
OSPF и ISIS относятся к категории Interior Gateway Protocol (IGP), являются по сути Link State протоколами, и их базы Link State Database (LSDB) содержат информацию о всех хостах домена, состоянии и типе линков, метриках для расчета дерева кратчайшего пути (shortest-path tree, используется алгоритм Dijkstra), т. е. всю необходимую информацию о топологии сети. Любой из этих протоколов в большинстве случаев является неотъемлемым атрибутом дизайна любой сети, будь-то Internet Service Provider, Data Center или Enterprise.
В этой статье речь пойдет о небольшом скрипте Python и наборе шаблонов TextFSM, с помощью которых, в связке с open source решением NeXt UI (применяется в SDN контроллере ODL), используя LSDB протоколов ISIS, OSPF, легко и просто визуализировать топологию сети, содержащую от несколько десятков до несколько сотен устройств. Следует отметить, что решение может применяться в мультивендорных сетях (в текущей версии поддерживаются протоколы следующих вендоров: Nokia — OSPF и ISIS;Juniper — OSPF и ISIS; Cisco — OSPF и ISIS; Huawei — ISIS).
Для запуска скрипта необходимо:
1. Загрузить все содержимое из git clone:
2. Зайти в каталог igp_topo_multi и проверить его содержимое:
3. Отредактировать файл config.yaml, используя текстовый редактор:
В нем необходимо указать тип хоста (nokia, juniper, cisco, huawei), протокол (ospf или isis), путь и название текстового файла с выводом LSDB (используется каталог test_files, в котором уже содержится несколько файлов с тестовыми топологиями). Сохранить данные и закрыть редактор:
5. В открывшемся окне браузера по умолчанию, отобразится топология сети:
- Загрузку файлов из github.com желательно выполнять в пользовательский каталог без sudo. В противном случае скрипт не сможет запустить браузер. Если браузер не запустится по каким-либо причинам, страницу index.html, которая находится в каталоге nextUI, можно открыть самостоятельно.
- Пиктограммы маленьких коммутаторов в топологии обозначают broadcast линки (не р2р). Повод задуматься, оправдан ли этот тип для каждого конкретного случая.
- Цветовые темы NeXt UI можно применять разные из доступных.
- Положение хостов в браузере можно изменять их перетаскиванием.