Skip to content

This Python script automates the process of scanning a network using Nmap and stores the results with MariaDB.

License

Notifications You must be signed in to change notification settings

danielcba/nmap_to_database

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation


README

Propósito del Script

Este script automatiza el proceso de escaneo de una red para identificar dispositivos conectados y los servicios que están ejecutando, y luego almacena estos resultados en una base de datos para su análisis y consulta posterior. Es útil para administradores de red y profesionales de seguridad informática que necesitan monitorizar y gestionar la infraestructura de red de manera eficiente.

Funciones Clave del Script

  1. Escaneo de Red:

    • Utiliza nmap, una poderosa herramienta de escaneo de redes, para buscar todos los dispositivos en una red específica y detectar los servicios y versiones de software que están ejecutando.
    • El escaneo abarca un rango de direcciones IP y utiliza técnicas avanzadas para identificar servicios activos y versiones de software con gran precisión.
  2. Generación de Resultados:

    • Los resultados del escaneo se guardan en un archivo en formato CSV (valores separados por comas), que facilita la organización y el análisis de los datos recolectados.
  3. Almacenamiento en Base de Datos:

    • Conecta a una base de datos MariaDB y carga los resultados del escaneo en una tabla específica.
    • Almacenar los resultados en una base de datos permite consultas rápidas y eficientes, y facilita la integración con otras herramientas de análisis y reporte.

Beneficios del Script

  • Automatización: El script automatiza todo el proceso, desde el escaneo hasta el almacenamiento de datos, ahorrando tiempo y reduciendo errores humanos.
  • Monitorización Continua: Se puede ejecutar periódicamente para mantener una visión actualizada de la red, ayudando a detectar cambios no autorizados o problemas potenciales.
  • Análisis de Seguridad: Ayuda a identificar servicios y versiones de software en la red que podrían ser vulnerables, facilitando la gestión de parches y actualizaciones de seguridad.
  • Inventario de Red: Proporciona un inventario detallado de todos los dispositivos y servicios en la red, útil para la gestión de activos y planificación de capacidad.

Uso Típico

  1. Administradores de Red: Pueden utilizar el script para obtener una visión general de la infraestructura de red, identificar dispositivos y servicios, y mantener un inventario actualizado.
  2. Profesionales de Seguridad: Pueden usar los datos para realizar evaluaciones de seguridad, identificar posibles vulnerabilidades y planificar acciones correctivas.
  3. Auditores: Pueden emplear el script como parte de auditorías de red para verificar la conformidad con políticas y normativas de seguridad.

Consideraciones de Seguridad

  • Manejo de Credenciales: Es importante no almacenar credenciales directamente en el código. Se recomienda usar variables de entorno o archivos de configuración seguros.
  • Permisos y Accesos: Asegurarse de que solo personal autorizado pueda ejecutar el script y acceder a los resultados almacenados.

Este script es una herramienta poderosa y versátil para la gestión y seguridad de redes, proporcionando información crítica de manera automatizada y eficiente.


Archivo requirements.txt

Este archivo especifica las dependencias necesarias para ejecutar el script de Python.

python-nmap
mysql-connector-python

Líneas SQL para la creación de la base de datos y la tabla

CREATE SCHEMA `basenmap`;

CREATE TABLE `basenmap`.`nmap` (
  `host` VARCHAR(15) NULL,
  `hostname` VARCHAR(64) NULL,
  `hostname_type` VARCHAR(16) NULL,
  `protocol` VARCHAR(8) NULL,
  `port` VARCHAR(5) NULL,
  `name` VARCHAR(20) NULL,
  `state` VARCHAR(16) NULL,
  `product` VARCHAR(32) NULL,
  `extrainfo` VARCHAR(64) NULL,
  `reason` VARCHAR(16) NULL,
  `version` VARCHAR(32) NULL,
  `conf` VARCHAR(3) NULL,
  `cpe` VARCHAR(64) NULL
);

Instalación de Dependencias

  1. Crear y activar un entorno virtual (opcional pero recomendado):

    python3 -m venv venv
    source venv/bin/activate
  2. Instalar las dependencias necesarias:

    pip install -r requirements.txt

Configuración de la Base de Datos

  1. Conéctate a tu servidor MariaDB/MySQL y crea la base de datos y la tabla necesarias ejecutando las siguientes líneas SQL:

    CREATE SCHEMA `basenmap`;
    
    CREATE TABLE `basenmap`.`nmap` (
      `host` VARCHAR(15) NULL,
      `hostname` VARCHAR(64) NULL,
      `hostname_type` VARCHAR(16) NULL,
      `protocol` VARCHAR(8) NULL,
      `port` VARCHAR(5) NULL,
      `name` VARCHAR(20) NULL,
      `state` VARCHAR(16) NULL,
      `product` VARCHAR(32) NULL,
      `extrainfo` VARCHAR(64) NULL,
      `reason` VARCHAR(16) NULL,
      `version` VARCHAR(32) NULL,
      `conf` VARCHAR(3) NULL,
      `cpe` VARCHAR(64) NULL
    );

Programación de la Ejecución del Script

Si deseas que el script se ejecute automáticamente cada cierto tiempo, puedes configurarlo como una tarea programada (cron job) en tu sistema operativo. A continuación, se explica cómo hacerlo.

Configuración de Crontab

  1. Abre el editor de crontab para el usuario actual:

    crontab -e
  2. Añade la siguiente línea al final del archivo para ejecutar el script cada 2 minutos:

    */2 * * * * /usr/bin/python3 /home/username/base-nmap/nmap_to_database.py

    Esta línea programa la ejecución del script nmap_to_database.py cada 2 minutos. Si deseas cambiar la frecuencia, ajusta el primer campo (*/2) según tus necesidades. Aquí hay algunos ejemplos:

    • Cada 5 minutos:
      */5 * * * * /usr/bin/python3 /home/username/base-nmap/nmap_to_database.py
    • Cada hora:
      0 * * * * /usr/bin/python3 /home/username/base-nmap/nmap_to_database.py
    • Todos los días a las 3 AM:
      0 3 * * * /usr/bin/python3 /home/username/base-nmap/nmap_to_database.py

Guardar y Salir

  • En el editor de crontab, guarda los cambios y cierra el editor. En nano, por ejemplo, presiona CTRL+O para guardar y CTRL+X para salir.

Verificación

  • Para verificar que la tarea se ha añadido correctamente, puedes listar las tareas programadas:
    crontab -l

Nota de Seguridad

Asegúrate de que el script nmap_to_database.py tenga permisos de ejecución y que el usuario que configura el cron job tenga los permisos necesarios para ejecutar el script y acceder a la base de datos.

Resultado

Screenshot from 2024-10-22 16-54-04

Licencia

Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.


Este script es una herramienta potente y versátil para la gestión y seguridad de la red, proporcionando información crítica de forma automatizada y eficiente.

About

This Python script automates the process of scanning a network using Nmap and stores the results with MariaDB.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published