
MISP 인스턴스에서 위협 인텔리전스의 실시간 개요를 제공하는 라이브 대시보드
하나 이상의 MISP 인스턴스의 ZMQ 피드에서 실시간 데이터와 통계를 보여주는 대시보드입니다. 이 대시보드는 위협 인텔리전스 정보를 수집하기 위한 실시간 상황 인식 도구로 사용할 수 있습니다. misp-dashboard에는 각 조직의 기여도와 시간에 따른 순위를 보여주는 게이미피케이션 도구가 포함되어 있습니다. 이 대시보드는 SOC(보안 운영 센터), 보안 팀 또는 사이버 훈련 중에 여러 MISP 인스턴스에서 처리되는 내용을 추적하는 데 사용할 수 있습니다.


표시 항목:
포함:



설치 전, 지원되는 시스템은 Linux와 같은 오픈 소스 Unix 계열 운영 체제임을 고려하십시오.
./install_dependencies.sh 실행 (멱등성 유사)config.cfg 업데이트
./install_dependencies.sh 재실행config.cfg.default의 변경 사항을 비교하여 구성 파일 config.cfg 재업데이트⚠️ zmq python3 스크립트가 실행 중인지 확인하십시오. 업데이트를 차단합니다.
+ 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 또는 ./start_zmq.sh 및 ./server.py &⚠️ root로 실행해서는 안 됩니다. 일반 권한으로 충분합니다.
redis-server --port 6250. ./DASHENV/bin/activate./zmq_subscriber.py &./zmq_dispatcher.py &./server.py &http://localhost:8001/에서 인터페이스 접속또는, 위 명령을 실행하는 start_all.sh 스크립트를 사용할 수 있습니다.
config/config.cfg에서 auth_enabled = True로 설정하여 인증을 활성화할 수 있습니다.
사용자는 MISP에 로그인해야 하며, MISP 사용자 계정의 User Setting dashboard_access가 1로 설정된 경우에만 계속 진행이 허용됩니다.
디버그는 재미있으며 문제 발생 시 더 자세한 정보를 제공합니다. Flask를 디버그 모드로 실행하는 것은 프로덕션에 적합하지 않으며, 활성화된 경우 Python 셸로 떨어져 추가 조사를 수행할 수 있습니다.
./server.py 실행 직전에 다음을 수행하십시오:
export FLASK_DEBUG=1
export FLASK_APP=server.py
flask run --host=0.0.0.0 --port=8001 # <- 여기서 주의: 모든 IP 주소에 노출됩니다. 로컬에서 실행하는 경우 --host=127.0.0.1이 이상적입니다.
또는 start_all.sh 또는 config.cfg에서 디버그 플래그를 전환하기만 하면 됩니다.
즐거운 해킹 되세요 ;)
대시보드의 모든 데이터를 비우고 처음부터 다시 시작하려면 전용 정리 스크립트 clean.py를 사용할 수 있습니다.
구성 파일에 지정된 redis 서버에 저장된 데이터 정리
선택적 인수:
-h, --help 도움말 메시지 표시 후 종료
-b, --brutal Redis 데이터베이스에서 FLUSHALL 수행. 설정하지 않으면 MISP-Dashboard에서 사용하는 키만 삭제하는 소프트 방식 사용.
misp-dashboard는 MISP에 대해 상태 비저장(stateless)이므로 수신한 데이터만 처리할 수 있습니다. 즉, MISP가 모든 알림을 ZMQ에 게시하지 않으면 misp-dashboard는 해당 데이터를 가질 수 없습니다.
가장 대표적인 예는 사용자 로그인 펀치카드입니다. MISP의 Plugin.ZeroMQ_audit_notifications_enable 옵션이 true로 설정되어 있지 않으면 펀치카드는 비어 있게 됩니다.
misp-dashboard에 결과가 표시되지 않으면 먼저 MISP 내 zmq 모듈이 제대로 설치되었는지 확인하십시오.
관리, 플러그인 설정, ZeroMQ에서 Plugin.ZeroMQ_enable이 True로 설정되어 있는지 확인하십시오.
이벤트 액션, 이벤트를 ZMQ에 게시를 통해 MISP에서 ZMQ로 테스트 이벤트를 게시하십시오.
로그 파일 확인
${PATH_TO_MISP}/app/tmp/log/mispzmq.error.log
${PATH_TO_MISP}/app/tmp/log/mispzmq.log
오류 **ModuleNotFoundError: No module named 'zmq'**가 있으면 pyzmq를 설치하십시오.
$SUDO_WWW ${PATH_TO_MISP}/venv/bin/pip install pyzmq
ZMQ 구독자. ZMQ에 구독한 후 MISP 대시보드로 재전송합니다.
선택적 인수:
-h, --help 도움말 메시지 표시 후 종료
-n ZMQNAME, --name ZMQNAME
ZMQ 피드 이름
-u ZMQURL, --url ZMQURL
연결할 URL
Python3용 Apache mod-wsgi 설치
sudo apt-get install libapache2-mod-wsgi-py3
주의: Python2용 mod-wsgi가 이미 설치되어 있으면 대체됩니다!
다음 패키지가 제거됩니다:
libapache2-mod-wsgi
다음 새 패키지가 설치됩니다:
libapache2-mod-wsgi-py3
구성 파일 /etc/apache2/sites-available/misp-dashboard.conf는 misp-dashboard가 /var/www/misp-dashboard에 복제되었다고 가정합니다. 이 예에서는 misp 사용자로 실행됩니다. 권한을 사용자 정의 폴더와 파일에 맞게 변경하십시오.
<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/>.
이미지와 로고는 다음을 위해 수작업으로 제작되었습니다:
참고:
MISPHonorableIcons/1.svg의 일부는 octicons.github.com (CC0 - 저작권 없음)에서 가져왔습니다.MISPHonorableIcons/2.svg의 일부는 Zeptozephyr (CC0 - 저작권 없음)에서 가져왔습니다.MISPHonorableIcons/3.svg의 일부는 octicons.github.com (CC0 - 저작권 없음)에서 가져왔습니다.MISPHonorableIcons/4.svg의 일부는 Zeptozephyr 및 octicons.github.com (CC0 - 저작권 없음)에서 가져왔습니다.MISPHonorableIcons/5.svg의 일부는 Zeptozephyr 및 octicons.github.com (CC0 - 저작권 없음)에서 가져왔습니다.