[Abstract]
[Copyright Notice]
Firewalling sous Linux - Chapitre 7
Les outils d'administration et de surveillance
On étudiera ici les divers outils d'administration permettant
d'assurer une gestion optimale de la configuration et de la surveillance
du firewall et du réseau interne abrité.
De façon complémentaire au firewall, qui doit assurer la sécurité du
réseau en filtrant le trafic extérieur en un seul point, la détection
d'intrusion a pour objectif la détection d'accès non autorisés (et de
tentatives) sur l'ensemble du réseau, quelle que soit leur origine, et
par différents moyens.
Alors que le pare-feu joue un rôle actif en bloquant le trafic non
autorisé, la détection d'intrusion se fait grâce à une surveillance
constante du trafic et de l'état des machines. La variété des menaces
potentielles requiert la mise en place de différents systèmes
d'écoute, de journalisation et de génération d'alertes. L'ensemble de
ces dispositions est organisée par une politique de sécurité qu'il
faut définir en tenant compte des objectifs, mais aussi des moyens
disponibles.
Les attaques et autres actes de malveillances menaçant l'intégrité du
du réseau sont de types variés. Comme présenté plus haut, les
individus ou entités malveillants pouvant représenter une menace ont à
leur disposition une grande variété d'outils utilisant des méthodes
différentes : flood (surcharge), spoofing (usurpation d'identité au
niveau 3 de la couche OSI), exploits détournant certains bogues connus
dans un but malveillant, scanners et autres outils permettant
l'exploration du réseau, etc.
Voici un certain nombre de menaces potentielles, ainsi que des
propositions de parades :
- l'accès physique aux machines : les machines sensibles
du réseau (en particulier le firewall et son accès vers
l'extérieur) devraient se trouver dans un local à accès
restreint ;
- l'usurpation d'identité : un intrus peut se faire
passer pour un utilisateur autorisé du réseau par différents
moyens : aux niveaux 2 et 3 (spoof) : si l'intrus a un accès
physique au réseau interne, il peut introduire une machine dont
il a le contrôle afin de la faire passer pour une autre machine
du réseau. Pour s'en prémunir, on peut recenser
les adresses MAC et IP, et repérer tout changement suspect :
arpwatch analyse le trafic ARP circulant sur le réseau et
génère des alertes en cas d'événement anormal. On peut cependant
regretter qu'il n'analyse pas les paquets IP afin de repérer
les tentatives de spoofing ;
- aux niveaux supérieurs : l'intrus peut aussi abuser les
services et les applications disposant de mécanismes
d'authentification peu robustes, voire inexistants.
L'utilisation de ces mécanismes doit être proscrite à chaque fois
que c'est possible, afin d'utiliser des méthodes sûres. Par
exemple, les protocoles d'authentification qui font circuler
des mots de passe non protégés sur le réseau, comme telnet et
rlogin, doivent être remplacés par des protocoles plus sûrs
comme ssh, qui crypte les sessions, y compris (et surtout) les
mots de passe ;
- les écoutes non autorisées : des informations
sensibles transitent sur le réseau, il faut les protéger :
cryptage lors du transit sur le réseau (avec ssh et syslog-ng
par exemple), mais aussi sur le support de stockage (grâce au
système de fichiers crypté CIFS) ; aux niveaux inférieurs, il
est aussi possible de collecter des informations sur le système
lui-même (topologie du réseau, noms et adresses IP des
machines, systèmes d'exploitation, services), il faut donc
empêcher ces collectes (difficile), ou au moins les repérer :
snort, argus, iplog et portsentry permettent d'être alertés
lors de tentatives de scans. Les principaux scans sont du type
Vanilla (établissement d'une connexion TCP), SYN (envoi d'un
paquet TCP portant le flag SYN), FIN (paquet TCP FIN), NULL
(paquet TCP sans aucun flag), XMAS (paquet TCP avec tous les
flags), et UDP (paquet UDP vide). En général, l'envoi de ces
paquets à différents ports permet de déterminer si des
services utilisent ces ports, pour ensuite déterminer le type
des services et finalement essayer de les exploiter à des fins
malveillantes ;
- le déni de service : la bonne marche du système
repose sur la disponibilité de certains services du réseau (DNS,
courrier, site web, syslog, dhcp, etc.) qu'il faut protéger :
le filtrage au niveau du firewall doit éliminer la plupart des
attaques, et snort permet l'identification d'exploits sur le
réseau. De plus, un suivi constant des correctifs de sécurité
pour les applications utilisées sur le réseau est nécessaire.
On voit émerger, entre autres, deux grandes catégories de logiciels
disponibles :
- les logiciels de détection d'intrusion réseau : il
s'agit de "sondes" qui écoutent tout ce qui passe sur le réseau
local et extraient de la masse d'information qui transite les
éventuelles attaques.
- les logiciels de détection d'intrusion par machines :
il s'agit de programmes qui pour une machine donnée surveillent
les attaques, mais qui permettent également de découvrir si la
machine a été victime d'intrusions (modifications de fichiers par
exemple).
- les outils de journalisation :
Il existe plusieurs outils de ce type, parmi lesquels :
- Argus : il lit l'activité sur le réseau et garde trace des
paquets qui correspondent à un filtre (de type tcpdump) de manière
compacte : pour les paquets simples (UDP, ICMP, ...) seules les
informations de l'en-tête sont conservées, les plus complexes
(connexions TCP) sont analysés complètement (par exemple, une
connexion TCP ne représente qu'une entrée).
Le fichier généré peut ensuite être relu par un outil annexe et
exploité par des scripts recherchant des anomalies. En revanche
on peut reprocher à Argus de ne pas fournir de tels scripts (le
seul outil fourni sert à vérifier l'efficacité d'un pare-feu)
qui doivent donc être réalisés par l'administrateur selon ses
besoins et ... ses informations ou sa connaissance des
différentes attaques contre lesquelles il doit protéger son
réseau ;
- Snort : Snort fonctionne de manière analogue à Argus,
mais au lieu de conserver les informations sur les paquets,
ceux-ci sont traités par un ensemble de règles dont le résultat
est l'envoi d'une alerte potentielle. Snort est fourni avec un
grand nombre de règles caractérisant de nombreuses attaques
connues et permet d'envoyer les alertes de diverses façons ;
- Arpwatch : cet outil simple surveille ce qui passe sur
le réseau et maintient en permanence une table de correspondance entre
adresses IP et adresses MAC. Ce mécanisme permet de détecter
d'éventuelles nouvelles machines (qui pourraient être
suspectes) ou des changements d'adresse IP anormaux sur le
réseau (tentatives de spoofing) ;
- Iplog : cet outil, plutôt orienté sécurité d'une
machine, est conçu pour journaliser toute connexion TCP
entrante sur une machine (et éventuellement l'activité en
UDP). Il détecte en particulier de nombreuses tentatives
d'intrusion, tel les scans de ports : de type Vanilla connect
bien sûr, mais également SYN, FIN, NULL, XMAS, UDP, et les
divers floods. Ce qui le rend particulièrement intéressant,
c'est qu'il peut appliquer cette détection à l'ensemble d'un
réseau (par passage en mode promiscuous. En revanche, il
souffre d'un problème courant sur les produits détectant les
scans : un grand nombre de transferts en FTP depuis la machine
surveillée produit souvent une alerte de scan en provenance du
serveur FTP, puisqu'en mode actif (par défaut), le serveur se
connecte pour chaque tranfert à un port local.
Il existe une myriade d'outils de ce type, dont :
- Tripwire (ou Aide, son équivalent libre) : ces outils
maintiennent une base de signatures pour les différents
fichiers système d'une machine et la vérifient régulièrement,
ce qui permet de détecter les modifications, éventuellement
anormales (en particulier sur les binaires ou les logs du
système). Tripwire sait collecter et vérifier les signatures de
façon intelligente : cet outil peut surveiller tous types de
fichiers (normaux ou spéciaux), leurs attributs (dates d'accès,
permissions), ainsi que certaines propriétés : par exemple, un
fichier de log n'a pas le droit d'être tronqué mais peut se
voir ajouter des lignes. Les informations collectées sont
éventuellement cryptées, et stockées sur un support sûr (de
préférence physiquement séparé du système). Il est ainsi
possible de "photographier" l'état du système de fichiers à
intervalles réguliers, et d'en vérifier l'intégrité ;
- Iplog (ou ippl) : ces outils permettent de garder
trace de toutes les connections entrantes sur un système et de
détecter certaines attaques ;
- Portsentry : il s'agit d'un outil adapté à la
détection de scans intelligent, qui gère par exemple
correctement le problème des transferts FTP. En revanche il
semble qu'il produise quelques fausses alertes quant aux scans
"furtifs" ;
- Lids (Linux Intruction Detection System) : cet outil
(basé sur un patch noyau) permet de bloquer complètement des
opérations qui en temps normal sont possibles pour un
utilisateur normal ou pour root, en neutralisant ou en
restreignant certains appels système, permettant ainsi
d'obtenir un très haut niveau de sécurité. Lors du boot du
système, on "scelle" le noyau, ce qui active certaines
protections (restrictions d'accès direct à la mémoire et aux
périphériques, aux tables de routage, de chargement de modules,
d'envoi de signaux, etc.) ; on peut aussi imposer des
restrictions avant cette opération (comme l'interdiction
d'exécuter certains processus réputés non sûrs). Utilisé de
façon "paranoïaque", cet outil peut gêner l'administration
courante (par exemple, on peut devoir rebooter pour changer la
table de routage).
Afin de sécuriser l'ensemble du réseau, on souhaite pouvoir
centraliser les alertes tout en conservant une architecture réseau
autonome, c'est-à-dire en minimisant les confiances entre machines, et
les points critiques.
Secured syslog ou syslog-ng auraient dû fournir un mécanisme de syslog
authentifié et chiffré, mais ces outils sont encore incomplets. S'il
on désire absolument un mécanisme de journalisation centralisée,
on peut malgré tout utiliser syslog, qui présente pourtant certains
risques :
- les messages émis par un syslog sur le réseau à destination
d'une machine de journalisation circulent en clair sur le réseau, ce
qui n'est pas forcément souhaitable : pour un intrus, toute
information sur les machines du réseau est bonne à prendre ;
- le syslog de la machine de journalisation ne dispose d'aucune
protection contre de faux logs : un filtrage du port syslog (513/udp)
évite les attaques grossières mais ne met pas à l'abri du spoofing et
de la pollution des logs.
Administrer et surveiller efficacement un réseau demande de se munir
d'un grand nombre d'outils complémentaires, de bien connaître ces
outils et de rester à la pointe sur les techniques d'attaque. Les
outils de détection d'intrusion existants manquent encore
d'intelligence, ce qui se traduit par de nombreuses fausses
alertes. Il est clair que les règles de génération d'alertes de ces
outils ont besoin d'être affinées et continuellement mises à jour,
afin de simplifier le travail d'administration.
Pour l'instant, rien ne saurait remplacer complètement la surveillance
constante d'un administrateur sécurité compétent.
[Abstract]
[Copyright Notice]
Firewalling sous Linux
Hervé Eychenne herve.eychenne@alcove.fr