
Un panel en vivo para una visión general en tiempo real de inteligencia de amenazas desde instancias MISP
Un dashboard que muestra datos en vivo y estadísticas de los feeds ZMQ de una o más instancias de MISP. El dashboard puede utilizarse como una herramienta de conciencia situacional en tiempo real para recopilar información sobre amenazas. El misp-dashboard incluye una herramienta de gamificación para mostrar las contribuciones de cada organización y cómo se clasifican a lo largo del tiempo. El dashboard puede usarse en SOC (Centros de Operaciones de Seguridad), equipos de seguridad o durante ejercicios cibernéticos para realizar un seguimiento de lo que se procesa en sus diversas instancias de MISP.


Muestra:
Incluye:



Antes de instalar, tenga en cuenta que los únicos sistemas compatibles son sistemas operativos tipo Unix de código abierto, como Linux y otros.
./install_dependencies.sh desde el directorio de MISP-Dashboard (idempotente-ish)config.cfg para que coincida con su sistema
./install_dependencies.sh para obtener nuevas dependencias requeridasconfig.cfg comparando posibles cambios en config.cfg.default⚠️ Asegúrese de que no haya scripts zmq de python3 en ejecución. Bloquean la actualización.
+ virtualenv -p python3 DASHENV
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /home/steve/code/misp-dashboard/DASHENV/bin/python3
Traceback (most recent call last):
File "/usr/bin/virtualenv", line 9, in <module>
load_entry_point('virtualenv==15.0.1', 'console_scripts', 'virtualenv')()
File "/usr/lib/python3/dist-packages/virtualenv.py", line 719, in main
symlink=options.symlink)
File "/usr/lib/python3/dist-packages/virtualenv.py", line 942, in create_environment
site_packages=site_packages, clear=clear, symlink=symlink))
File "/usr/lib/python3/dist-packages/virtualenv.py", line 1261, in install_python
shutil.copyfile(executable, py_executable)
File "/usr/lib/python3.5/shutil.py", line 115, in copyfile
with open(dst, 'wb') as fdst:
OSError: [Errno 26] Text file busy: '/home/steve/code/misp-dashboard/DASHENV/bin/python3'
./start_all.sh O ./start_zmq.sh y ./server.py &⚠️ No debe ejecutarlo como root. Los privilegios normales son suficientes.
redis-server --port 6250. ./DASHENV/bin/activate./zmq_subscriber.py &./zmq_dispatcher.py &./server.py &http://localhost:8001/Alternativamente, puede ejecutar el script start_all.sh para ejecutar los comandos descritos anteriormente.
La autenticación se puede habilitar en config/config.cfg estableciendo auth_enabled = True.
Se requerirá que los usuarios inicien sesión en MISP y se les permitirá continuar si tienen la Configuración de Usuario dashboard_access establecida en 1 para la cuenta de usuario de MISP.
La depuración es divertida y le da más detalles sobre lo que sucede cuando algo falla. Tenga en cuenta que ejecutar Flask en modo de depuración NO es adecuado para producción, ya que lo llevará a un shell de Python si está habilitado, para investigar más a fondo.
Justo antes de ejecutar ./server.py haga:
export FLASK_DEBUG=1
export FLASK_APP=server.py
flask run --host=0.0.0.0 --port=8001 # <- Tenga cuidado aquí, esto lo expone en TODAS las direcciones IP. Idealmente, si se ejecuta localmente --host=127.0.0.1
O, simplemente, alterne el indicador de depuración en start_all.sh o config.cfg.
Feliz hacking ;)
Para reiniciar desde cero y vaciar todos los datos de su dashboard, puede usar el script de limpieza dedicado clean.py
Clean data stored in the redis server specified in the configuration file
optional arguments:
-h, --help show this help message and exit
-b, --brutal Perfom a FLUSHALL on the redis database. If not set, will use
a soft method to delete only keys used by MISP-Dashboard.
El misp-dashboard, al ser sin estado con respecto a MISP, solo puede procesar datos que haya recibido. Esto significa que si su MISP no está publicando todas las notificaciones en su ZMQ, el misp-dashboard no las tendrá.
El ejemplo más relevante podría ser la tarjeta perforada de inicio de sesión de usuario. Si su MISP no tiene la opción Plugin.ZeroMQ_audit_notifications_enable configurada en true, la tarjeta perforada estará vacía.
Cuando el misp-dashboard no muestra resultados, primero verifique si el módulo zmq dentro de MISP está instalado correctamente.
En Administración, Configuración de plugins, ZeroMQ verifique que Plugin.ZeroMQ_enable esté configurado en True.
Publique un evento de prueba desde MISP a ZMQ mediante Acciones de evento, Publicar evento en ZMQ.
Verifique los archivos de registro
${PATH_TO_MISP}/app/tmp/log/mispzmq.error.log
${PATH_TO_MISP}/app/tmp/log/mispzmq.log
Si hay un error ModuleNotFoundError: No module named 'zmq', instale pyzmq.
$SUDO_WWW ${PATH_TO_MISP}/venv/bin/pip install pyzmq
A zmq subscriber. It subscribe to a ZMQ then redispatch it to the MISP-dashboard
optional arguments:
-h, --help show this help message and exit
-n ZMQNAME, --name ZMQNAME
The ZMQ feed name
-u ZMQURL, --url ZMQURL
The URL to connect to
Instale Apache mod-wsgi para Python3
sudo apt-get install libapache2-mod-wsgi-py3
Advertencia: Si ya tiene mod-wsgi instalado para Python2, ¡será reemplazado!
The following packages will be REMOVED:
libapache2-mod-wsgi
The following NEW packages will be installed:
libapache2-mod-wsgi-py3
El archivo de configuración /etc/apache2/sites-available/misp-dashboard.conf asume que misp-dashboard está clonado en /var/www/misp-dashboard. En este ejemplo se ejecuta como usuario misp. Cambie los permisos a su carpeta y archivos personalizados en consecuencia.
<VirtualHost *:8001>
ServerAdmin [email protected]
ServerName misp.local
DocumentRoot /var/www/misp-dashboard
WSGIDaemonProcess misp-dashboard \
user=misp group=misp \
python-home=/var/www/misp-dashboard/DASHENV \
processes=1 \
threads=15 \
maximum-requests=5000 \
listen-backlog=100 \
queue-timeout=45 \
socket-timeout=60 \
connect-timeout=15 \
request-timeout=60 \
inactivity-timeout=0 \
deadlock-timeout=60 \
graceful-timeout=15 \
eviction-timeout=0 \
shutdown-timeout=5 \
send-buffer-size=0 \
receive-buffer-size=0 \
header-buffer-size=0 \
response-buffer-size=0 \
server-metrics=Off
WSGIScriptAlias / /var/www/misp-dashboard/misp-dashboard.wsgi
<Directory /var/www/misp-dashboard>
WSGIProcessGroup misp-dashboard
WSGIApplicationGroup %{GLOBAL}
Require all granted
</Directory>
LogLevel info
ErrorLog /var/log/apache2/misp-dashboard.local_error.log
CustomLog /var/log/apache2/misp-dashboard.local_access.log combined
ServerSignature Off
</VirtualHost>
Copyright (C) 2017-2021 CIRCL - Computer Incident Response Center Luxembourg (c/o smile, security made in Lëtzebuerg, Groupement d'Intérêt Economique)
Copyright (c) 2017-2020 Sami Mokaddem
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Las imágenes y logotipos están hechos a mano para:
Tenga en cuenta que:
MISPHonorableIcons/1.svg proviene de octicons.github.com (CC0 - Sin derechos reservados)MISPHonorableIcons/2.svg proviene de Zeptozephyr (CC0 - Sin derechos reservados)MISPHonorableIcons/3.svg proviene de octicons.github.com (CC0 - Sin derechos reservados)MISPHonorableIcons/4.svg proviene de Zeptozephyr & octicons.github.com (CC0 - Sin derechos reservados)MISPHonorableIcons/5.svg proviene de Zeptozephyr & octicons.github.com (CC0 - Sin derechos reservados)