## Descripción Este proyecto permite conocer el estado de conexión de las comunidades (servidores) conectadas a un MISP mediante alertas que se envian a través de correo electrónico. El envio de estas alertas puede ser programado en diferentes intervalos de tiempo (cada x minutos, cada x horas, etc) ### Características: - Envio de alertas del estado de conexión de servidores conectados y/o no conectados. - Programación de envio se puede configurar en diferentes intervalos (minutos, horas, semanas, meses). - Utiliza cualquier servidor SMTP estándar (Microsoft (O365), Google (Gmail)). - Excel adjunto con alertas (opcional) ## Componentes - Libreria SMTP clásica de python (smtplib) - Libreria PyMISP (pymisp): https://pypi.org/project/pymisp/ - Libreria para programar tareas en crontab: https://pypi.org/project/python-crontab/ ## Descarga 1. Descargar ZIP del repositorio desde: https://git.csirt.gob.cl/public/misp-alertas/archive/main.zip 2. El archivo se descargará con nombre "misp-alertas-main.zip" 3. Al descomprimir quedará proyecto en ./misp-alertas-main/misp-alertas 4. Mover carpeta "misp-alertas" dentro de carpeta "home" u otra ubicación definida. ## Configuración inicial 1. En el archivo settings.py se debe definir los parametros según caso: ``` python WORK_DIR = os.getcwd() # Si desea adjuntar datos como un archivo adjunto en cada alerta DATA_ATTACH = False # Solo servidores desconectados SERVERS_OFF = True # Si no va a ejecutar entorno virtual, puede llamar directo a main.py, sino cambiar por .sh FNAME = 'run.sh' PATH_EXEC = os.path.join(WORK_DIR, FNAME) COMANDO_CRON = "echo 'TEST'" if FNAME.endswith(".py"): COMANDO_CRON = "cd "+WORK_DIR+" && python3 "+FNAME elif FNAME.endswith(".sh"): COMANDO_CRON = "bash "+PATH_EXEC MISP_CONFIG = { 'URL_MISP':'', 'AUTHKEY':'' } EMAIL_CONFIG = { 'server_smtp_host':'', 'server_smtp_port': 587, 'smtp_username': '', 'smtp_password': '', 'email_recipient':'', 'tls': True, # si utiliza TLS, sino False 'email_subject':'', 'output_color_status':'#16b606',# Color HEX alerta conectado 'output_color_status_error':'#f71005'# Color HEX alerta } CRON_CONFIG = { "interval": { "minutes": None, "hours": 1, # Esto indica "cada hora" (Por defecto) "days": None, "months": None }, "command": COMANDO_CRON } ``` En settings.py podemos configurar: - DATA_ATACH: En True, se adjuntará un excel con los mismos datos que vienen en el cuerpo del correo de las alertas. Caso contrario (False), se enviara correo de alerta sin adjunto. - SERVERS_OFF: En True, solo se enviarán alertas con los servidores MISP no conectados. - MISP_CONFIG: Configuración asociada a MISP - FNAME: Nombre de archivo ejecutable (main.py). Si utiliza entorno virtual de Python, se debe llamar a plantilla "run.sh" - EMAIL_CONFIG: Configuración de SMTP que se utilizará para enviar alertas. - CRON_CONFIG: Configuración de intervalos que serán agregados a crontab. Se debe solo utilizar un parametro (por defecto). - minutes (cada cuantos minutos) - hours (cada cuantas horas) - days (cada cuantos dias. Se ejecuta por defecto a las 00:00) - months (cada cuantos meses. Se ejecuta por defecto el dia 1 de cada mes a las 00:00) ## Instalación en entorno virtual Una vez configurado "settings.py" procedemos con la instalación 1. Se crea entorno virtual de Python ``` shell cd ./misp-alertas python3 -m venv venv ``` 2. Se activa entorno virtual: ``` shell source venv/bin/activate ``` 3. Instalar librerias de Python: ``` shell pip install -r requirements.txt ``` ## Agengar Podemos agendar utilizando el archivo "save_job.sh": ```shell #!/bin/bash # Activate source /home/user/misp-alertas/venv/bin/activate # Enter folder cd /home/user/misp-alertas/ # Llamar al script Python python save_job.py # Deactivate deactivate ``` 1. Debe ajustar las rutas en "source" y "cd" para la ejecución correcta del archivo. 2. Ejecutamos: ```shell bash save_job.sh ``` Esto creara en crontab una entrada con la ejecución programada, dependiendo que usuario del sistema operativo ejecuto el script. (Si fue como 'root', quedará en crontab de 'root') ``` shell @hourly bash ./misp-alertas/run.sh ``` La entrada se creara para que se ejecute el archivo "run.sh": ```shell #!/bin/bash # Activate source /home/user/misp-alertas/venv/bin/activate # Enter folder cd /home/user/misp-alertas/ # Llamar al script Python python main.py # Deactivate deactivate ``` Al igual que en el archivo "save_job.sh", debe ajustar las rutas en "source" y "cd" para la ejecución correcta del archivo. Cada vez que se quiera modificar el agendamiento dentro de settings.py se debe volver a ejecutar punto 2.