
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 :
http://www.cipherdyne.org/psad/docs/config.html
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 :
http://www.cipherdyne.org/LinuxFirewalls/ch01/
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 :