
psad : Détection d'intrusion et analyse des logs avec iptables
Le Port Scan Attack Detector psad est un démon système léger écrit en
conçu pour fonctionner avec le pare-feu Linux iptables/ip6tables/firewalld afin de
détecter le trafic suspect tel que les scans de ports et les balayages, les portes dérobées, les communications
de commande et contrôle de botnets, et plus encore. Il dispose d'un ensemble de seuils de danger hautement configurables
(avec des valeurs par défaut raisonnables fournies), des messages d'alerte détaillés
qui incluent la source, la destination, la plage de ports scannée, les heures de début et
de fin, les drapeaux TCP et les options nmap correspondantes, les informations DNS inversées, les alertes par
email et syslog, le blocage automatique des adresses IP offensantes via la configuration
dynamique des règles iptables, l'empreinte passive du système d'exploitation,
et les rapports DShield. De plus, psad incorpore de nombreuses signatures TCP, UDP,
et ICMP incluses dans le système de détection d'intrusion Snort.
pour détecter les scans hautement suspects de divers programmes de porte dérobée (par exemple EvilFTP,
GirlFriend, SubSeven), les outils DDoS (Mstream, Shaft), et les scans de ports avancés
(SYN, FIN, XMAS) qui sont facilement utilisés contre une machine via nmap. psad
peut également alerter sur les signatures Snort qui sont journalisées via
fwsnort, qui utilise l'extension de correspondance de chaîne iptables
pour détecter le trafic correspondant aux signatures de la couche application. Depuis la version 2.4.4, psad peut également détecter la phase de balayage des identifiants par défaut IoT du botnet Mirai.
La liste complète des fonctionnalités est ci-dessous.
psad peut générer des alertes pour les attaques de débordement de tampon de la couche application, les commandes applicatives suspectes, et autres trafic suspect de couche 7.psad offre une intégration avec gnuplot et afterglow pour produire des graphiques du trafic malveillant. Les deux graphiques suivants sont ceux du ver Nachi du défi Honeynet Scan30. D'abord, un graphique de liens produit par afterglow après analyse des données du journal iptables par psad :
"Graphique de liens du ver Nachi"
Le second montre le trafic du ver Nachi sur une base horaire à partir des données iptables de Scan30 :
"Graphique horaire du ver Nachi"
Les informations sur les mots-clés de configuration référencés par psad se trouvent à la fois dans la page de manuel psad(8) et ici :
Toutes les informations analysées par psad sont recueillies à partir des messages de journal iptables. Par défaut, psad lit le fichier /var/log/messages pour les nouveaux messages iptables et les écrit éventuellement dans un fichier dédié (/var/log/psad/fwdata). psad est ensuite responsable de l'application du seuil de danger et de la logique de signature afin de déterminer si un scan de ports a eu lieu, d'envoyer des emails d'alerte appropriés, et (éventuellement) de bloquer les adresses IP offensantes. psad inclut un gestionnaire de signaux tel que si un signal USR1 est reçu, psad videra le contenu de la structure de données du hachage de scan actuel dans /var/log/psad/scan_hash.$$ où "$$" représente le pid du démon psad en cours d'exécution.
NOTE : Étant donné que psad dépend d'iptables pour générer des messages de journal appropriés pour les paquets non autorisés, psad est aussi bon que les règles de journalisation incluses dans l'ensemble de règles iptables. Par conséquent, si votre pare-feu n'est pas configuré pour journaliser les paquets, psad NE détectera PAS les scans de ports ou quoi que ce soit d'autre. Habituellement, la meilleure façon de configurer le pare-feu est d'utiliser des règles de "rejeter et journaliser" par défaut à la fin de l'ensemble de règles, et d'inclure des règles au-dessus de cette dernière règle qui n'autorisent que le trafic qui doit être autorisé. Lors de l'exécution, le démon psad tentera de déterminer si une telle règle de rejet par défaut existe, et avertira l'utilisateur dans le cas contraire. Voir le fichier FW_EXAMPLE_RULES pour des exemples d'ensembles de règles de pare-feu compatibles avec psad.
De plus, une couverture approfondie de psad est incluse dans le livre "Linux Firewalls: Attack Detection and Response" publié par No Starch Press, et un script d'accompagnement de ce livre est compatible avec psad. Ce script peut être trouvé ici :
Selon la distribution Linux, psad peut déjà être disponible dans le dépôt de paquets par défaut. Par exemple, sur les systèmes Debian ou Ubuntu, l'installation se fait simplement par :
apt-get install psad
Si psad n'est pas disponible dans le dépôt de paquets, il peut être installé avec le script install.pl fourni dans les sources de psad. Le script install.pl gère également les mises à niveau si psad est déjà installé. psad nécessite plusieurs modules Perl qui peuvent ou non être déjà installés sur votre système Linux. Ces modules sont inclus dans le répertoire deps/ des sources de psad, et sont automatiquement installés par le script install.pl. La liste des modules est :
psad inclut également un client whois écrit par Marco d'Itri (voir le répertoire deps/whois). Ce client fait mieux que les autres pour collecter les informations whois correctes pour une adresse IP donnée.
La condition principale pour qu'une configuration iptables soit compatible avec psad est simplement qu'iptables journalise les paquets. Cela se fait généralement en ajoutant des règles aux chaînes INPUT et FORWARD comme ceci :
iptables -A INPUT -j LOG
iptables -A FORWARD -j LOG
Les règles ci-dessus doivent être ajoutées à la fin des chaînes INPUT et FORWARD après toutes les règles ACCEPT pour le trafic légitime et juste avant une règle DROP correspondante pour le trafic qui ne doit pas être autorisé via la politique. Notez que les politiques iptables peuvent être assez complexes avec des restrictions de protocole, de réseau, de port et d'interface, des chaînes définies par l'utilisateur, des règles de suivi de connexion, et bien plus encore. Il existe de nombreux logiciels tels que Shorewall et Firewall Builder, qui construisent des politiques iptables et tirent parti des capacités avancées de filtrage et de journalisation offertes par iptables. Généralement, les politiques construites par ces logiciels sont compatibles avec psad car elles ajoutent spécifiquement des règles qui ordonnent à iptables de journaliser les paquets qui ne font pas partie du trafic légitime. Psad peut être configuré pour analyser uniquement les messages iptables contenant des préfixes de journal spécifiques (qui sont ajoutés via l'option --log-prefix), mais par défaut, psad analyse tous les messages de journal iptables pour détecter des preuves de scans de ports, de sondages de programmes de porte dérobée, et d'autres trafic suspect.
psad fonctionne généralement sur les systèmes Linux et est disponible dans les dépôts de paquets de nombreuses distributions Linux majeures. En cas de problèmes opérationnels avec psad, veuillez ouvrir un ticket sur github
psad est publié en tant que logiciel open source sous les termes de la GNU General Public License (GPL v2+). La dernière version peut être trouvée sur https://github.com/mrash/psad/releases
psad utilise de nombreuses signatures TCP, UDP et ICMP disponibles dans Snort (écrit par Marty Roesch, voir http://www.snort.org). Snort est une marque déposée de Sourcefire, Inc.
Toutes les demandes de fonctionnalités et les corrections de bogues sont gérées via le suivi des tickets github. Cependant, vous pouvez m'envoyer un email (michael.rash_AT_gmail.com), ou me joindre via Twitter (@michaelrash)