
Um painel ao vivo para uma visão geral em tempo real da inteligência de ameaças de instâncias MISP
Um painel que mostra dados ao vivo e estatísticas dos feeds ZMQ de uma ou mais instâncias MISP. O painel pode ser usado como uma ferramenta de consciencialização situacional em tempo real para recolher informações sobre ameaças. O misp-dashboard inclui uma ferramenta de gamificação para mostrar as contribuições de cada organização e como são classificadas ao longo do tempo. O painel pode ser usado por SOCs (Centros de Operações de Segurança), equipas de segurança ou durante exercícios cibernéticos para acompanhar o que está a ser processado nas suas várias instâncias MISP.


Mostra:
Inclui:



Antes de instalar, considere que os únicos sistemas suportados são sistemas operativos open source do tipo Unix, como Linux e outros.
./install_dependencies.sh a partir do diretório MISP-Dashboard (idempotente-ish)config.cfg para que corresponda ao seu sistema
./install_dependencies.sh para obter novas dependências necessáriasconfig.cfg comparando eventuais alterações em config.cfg.default⚠️ Certifique-se de que nenhum script zmq python3 está em execução. Eles bloqueiam a atualização.
+ 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 OU ./start_zmq.sh e ./server.py &⚠️ Não deve executá-lo como root. Privilégios normais são suficientes.
redis-server --port 6250. ./DASHENV/bin/activate./zmq_subscriber.py &./zmq_dispatcher.py &./server.py &http://localhost:8001/Alternativamente, pode executar o script start_all.sh para executar os comandos descritos acima.
A autenticação pode ser ativada em config/config.cfg definindo auth_enabled = True.
Os utilizadores terão de fazer login no MISP e poderão prosseguir se tiverem a Definição de Utilizador dashboard_access definida como 1 para a conta de utilizador do MISP.
A depuração é divertida e dá-lhe mais detalhes sobre o que está a acontecer quando as coisas falham. Tenha em mente que executar Flask em modo de depuração NÃO é adequado para produção, pois irá abrir uma shell Python se ativado, para investigação adicional.
Antes de executar ./server.py faça:
export FLASK_DEBUG=1
export FLASK_APP=server.py
flask run --host=0.0.0.0 --port=8001 # <- Cuidado aqui, isto expõe em TODOS os endereços IP. Idealmente, se executar localmente --host=127.0.0.1
OU, simplesmente altere a flag de depuração em start_all.sh ou config.cfg.
Boas hackeamentos ;)
Para reiniciar do zero e esvaziar todos os dados do seu painel, pode usar o script de limpeza 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.
O misp-dashboard sendo sem estado em relação ao MISP, só pode processar dados que recebeu. Isto significa que se o seu MISP não estiver a publicar todas as notificações no seu ZMQ, o misp-dashboard não as terá.
O exemplo mais relevante pode ser o cartão de ponto de login do utilizador. Se o seu MISP não tiver a opção Plugin.ZeroMQ_audit_notifications_enable definida como true, o cartão de ponto estará vazio.
Quando o misp-dashboard não mostra resultados, verifique primeiro se o módulo zmq dentro do MISP está instalado corretamente.
Em Administração, Definições de Plugins, ZeroMQ verifique se Plugin.ZeroMQ_enable está definido como True.
Publique um evento de teste do MISP para ZMQ através de Ações de Evento, Publicar evento no ZMQ.
Verifique os ficheiros de registo
${PATH_TO_MISP}/app/tmp/log/mispzmq.error.log
${PATH_TO_MISP}/app/tmp/log/mispzmq.log
Se houver um erro ModuleNotFoundError: No module named 'zmq' então 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 o Apache mod-wsgi para Python3
sudo apt-get install libapache2-mod-wsgi-py3
Aviso: Se já tiver o mod-wsgi instalado para Python2, será substituído!
The following packages will be REMOVED:
libapache2-mod-wsgi
The following NEW packages will be installed:
libapache2-mod-wsgi-py3
O ficheiro de configuração /etc/apache2/sites-available/misp-dashboard.conf assume que misp-dashboard foi clonado para /var/www/misp-dashboard. Neste exemplo, executa como utilizador misp. Altere as permissões para a sua pasta e ficheiros personalizados conforme necessário.
<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/>.
Imagens e logótipos são feitos à mão para:
Note que:
MISPHonorableIcons/1.svg provém de octicons.github.com (CC0 - Sem Direitos Reservados)MISPHonorableIcons/2.svg provém de Zeptozephyr (CC0 - Sem Direitos Reservados)MISPHonorableIcons/3.svg provém de octicons.github.com (CC0 - Sem Direitos Reservados)MISPHonorableIcons/4.svg provém de Zeptozephyr & octicons.github.com (CC0 - Sem Direitos Reservados)MISPHonorableIcons/5.svg provém de Zeptozephyr & octicons.github.com (CC0 - Sem Direitos Reservados)