# Безопасная внешняя инвентаризация Набор скриптов для аккуратной первичной инвентаризации публичных IPv4-адресов и подготовки отчетов по открытым сервисам. Основной сценарий запускает умеренную проверку через `nmap`, собирает результаты в CSV/Markdown и помогает быстро выделить хосты, которые требуют ручной проверки. ## Что делает основной скрипт `scripts/safe_external_inventory.sh`: - валидирует и дедуплицирует IPv4-адреса из входного файла; - запускает `nmap` по top-20 TCP-портам; - выполняет легкое определение сервисов; - сохраняет сырые результаты `nmap`; - формирует краткие отчеты `summary.csv` и `summary.md`. Скрипт намеренно не запускает агрессивные vulnerability-проверки, OS fingerprinting и полный перебор портов. ## Использование Установить `nmap`, подготовить входной файл со списком IPv4-адресов и запустить: ```bash chmod +x scripts/safe_external_inventory.sh scripts/safe_external_inventory.sh ``` Optional arguments: ```bash scripts/safe_external_inventory.sh \ public_ipv4_from_master.txt \ reports/custom-run ``` ## Результаты Каждый запуск создает отдельную папку в `reports/`: - `targets.txt` - очищенный список валидных IP-адресов; - `nmap_inventory.nmap` - обычный вывод `nmap`; - `nmap_inventory.gnmap` - grepable-вывод; - `nmap_inventory.xml` - XML для дальнейшей обработки; - `summary.csv` - одна строка на каждый найденный открытый порт; - `summary.md` - краткая очередь на ручную проверку. ## Дополнительные скрипты - `scripts/check_ssh_auth_methods.py` - проверяет, какие методы SSH-аутентификации предлагает сервер. - `scripts/build_network_mapping.py` - собирает сетевую карту по IP, PTR, httpx-результатам и данным RIPE. - `scripts/build_final_excel.py` - формирует итоговый Excel-отчет. ## Как читать результаты В первую очередь стоит проверять хосты, у которых наружу открыты: - несколько сервисов одновременно; - административные порты, например SSH, RDP, WinRM или панели управления; - устаревшие или неожиданные баннеры сервисов; - plaintext-сервисы, например Telnet, FTP или HTTP-админки. Результаты инвентаризации стоит использовать как очередь для ручной проверки, уточнения владельцев, ограничения доступа и дальнейшего анализа в рамках согласованного процесса. ## Что не хранится в репозитории Файлы со списками реальных IP-адресов, временные отчеты и локальные артефакты не должны попадать в репозиторий. Для этого настроен `.gitignore`.