
Cybersécurité : carte d'attaque geoip qui suit syslog et analyse les adresses IP/numéros de port pour visualiser les attaquants en temps réel.
Je n'ai pas beaucoup de temps dans ma vie en ce moment pour maintenir ce projet. J'ai entrepris ce défi comme un moyen d'apprendre JavaScript et d'améliorer le Python que je connaissais déjà. Je suis sûr qu'il y a plusieurs choses que j'aurais pu faire différemment dans mon implémentation, et je ne serai pas offensé si quelqu'un qui télécharge et examine mon code me fait des critiques constructives. Je sais que j'ai énormément appris en travaillant sur ce projet, et j'espère que la communauté open source continuera de m'apprendre des choses :)
NOTE : Comme je ne maintiens pas ce projet, certaines fonctionnalités ne fonctionnent probablement pas directement, par exemple, la carte ne s'affichera probablement pas car je ne paie pas pour une clé API MapBox légitime. Pour résoudre ce problème, vous devrez probablement créer votre propre compte MapBox et utiliser votre propre clé.
Ce visualiseur de carte d'attaque GeoIP a été développé pour afficher en temps réel les attaques réseau contre votre organisation. Le serveur de données suit un fichier syslog et extrait l'IP source, l'IP de destination, le port source et le port de destination. Les protocoles sont déterminés via les ports courants, et les visualisations changent de couleur en fonction du type de protocole. CLIQUEZ ICI pour une vidéo de démonstration. Ce projet n'aurait pas été possible sans Sam Cappella, qui a créé un visualiseur de trafic réseau pour un concours de défense cybernétique lors du Palmetto Cyber Defense Competition 2015. J'ai principalement utilisé son code comme référence, mais j'ai emprunté quelques fonctions pour créer le serveur d'affichage et les aspects visuels de l'application web. Je tiens également à remercier tout particulièrement Dylan Madisetti pour ses conseils sur certains aspects de mon implémentation.
Ce programme repose entièrement sur syslog, et comme tous les appareils formatent les journaux différemment, vous devrez personnaliser la ou les fonctions d'analyse des journaux. Si votre organisation utilise un système de gestion des informations et des événements de sécurité (SIEM), celui-ci peut probablement normaliser les journaux pour vous faire gagner un temps précieux dans l'écriture d'expressions régulières.
Si vous trouvez des erreurs ou des bugs, merci de me le faire savoir. Les questions et commentaires sont également les bienvenus, et peuvent être envoyés à [email protected], ou ouvrir une issue dans ce dépôt.
Testé sur Ubuntu 16.04 LTS.
Cloner l'application :
git clone https://github.com/matthewclarkmay/geoip-attack-map.git
Installer les dépendances système :
sudo apt install python3-pip redis-server
Installer les dépendances Python :
cd geoip-attack-map
sudo pip3 install -U -r requirements.txt
Démarrer le serveur Redis :
redis-server
Configurer la base de données du serveur de données :
cd DataServerDB
./db-dl.sh
cd ..
Démarrer le serveur de données :
cd DataServer
sudo python3 DataServer.py
Démarrer le script de génération syslog, dans le répertoire DataServer :
Ouvrez un nouvel onglet de terminal (Ctrl+Shift+T, sous Ubuntu).
./syslog-gen.py
./syslog-gen.sh
Configurer le serveur de carte d'attaque, extraire les drapeaux au bon endroit :
Ouvrez un nouvel onglet de terminal (Ctrl+Shift+T, sous Ubuntu).
cd AttackMapServer/
unzip static/flags.zip
Démarrer le serveur de carte d'attaque :
sudo python3 AttackMapServer.py
Accéder au serveur de carte d'attaque depuis le navigateur :
Pour y accéder depuis un autre ordinateur via le navigateur, utilisez l'IP externe de la machine exécutant l'AttackMapServer.
Modifiez l'adresse IP dans le fichier "/static/map.js" du répertoire "AttackMapServer". De :
var webSock = new WebSocket("ws:/127.0.0.1:8888/websocket");
Vers, par exemple :
var webSock = new WebSocket("ws:/192.168.1.100:8888/websocket");
Redémarrez le serveur de carte d'attaque :
sudo python3 AttackMapServer.py
Sur l'autre ordinateur, pointez le navigateur vers :
http://192.168.1.100:8888/