![]() |
Afficher en temps quasi réel le trafic transitant sur les différentes interfaces réseau d'une passerelle ADSL peut intéresser toute personne qui désire administrer sa passerelle de près. Nous montrons dans cet article comment faire cela à l'aide de SNMP et du logiciel MRTG, le Multi Router Traffic Grapher. Afin de rendre cette fonctionnalité plus utile encore, nous la rendrons accessible depuis l'extérieur en mettant en place un accès crypté à l'aide de apache-ssl et sécurisé à l'aide d'un fichier .htaccess pour garder ces données potentiellement sensibles à l'abri des regards indiscrets. Plan de ce document : |
De manière générale, les données échangées entre un client et un serveur web (apache par exemple) transitent en clair sur le réseau. Un logiciel tel que Ethereal permet alors de capturer les paquets contenant ces échanges et d'en lire facilement le contenu. Apache-SSL est un serveur web sécurisé permettant la mise en place de connexions cryptés grâce au protocole SSL avec une clé de 128 bits pour assurer une bonne confidentialité des données transitant entre le client et le serveur web.
L'installation se fait simplement à l'aide d'apt :
apt-get install apache-ssl
Activer suExec : Non
Entrez simplement les informations demandées par l'utilitaire de configuration. Celles-ci seront visibles par les internautes voulant se connecter à votre site, faites donc attention à ce que vous mettez.
pays : FR département ville organisation division host name adresse email
En cas de problème un 'dpkg-recofigure apache-ssl' devrait permettre de le résoudre.
Configurer le fichier httpd.conf du serveur apache-ssl en faisant 'vi /etc/apache-ssl/httpd.conf'. Changer le DocumentRoot par exemple en :
DocumentRoot /var/www/apache-ssl
Penser à ajouter une règle iptables pour autoriser le port 443 (port du protocole http sécurisé https) :
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
A ce stade, la connexion SSL fonctionne. Vous pouvez le vérifier avec un navigateur web directement sur la passerelle en tapant l'adresse 'https://localhost'. Une fenêtre vous alerte sur le certificat de sécurité. En cas de problème, vérifiez qu'il y a une page d'index dans le dossier que vous avez utilisé en DocumentRoot.
Vous pouvez vérifier les informations contenues dans le certificat de sécurité en cliquant sur le bouton 'Voir le certificat'.
Les fichiers htaccess sont des fichiers de configuration d'Apache permettant de définir des règles dans un répertoire. On peut les utiliser notamment pour protéger l'accès à un répertoire par mot de passe, ce que nous allons faire ici. A noter qu'il est plus sur d'utiliser SSL en plus car même si le login/mot de passe envoyé pour l'authentification htaccess, un pirate peut facilement utiliser les paquets capturés pour se connecter.
Effectuons la configuration de l'accès sécurisé : htaccess/htpasswd en tapant 'vi /var/www/apache-ssl/.htaccess'.
AuthUserFile /var/www/apache-ssl/.htpasswd AuthGroupFile /dev/null AuthName "Veuillez vous identifier" AuthType Basic <Limit GET POST> require valid-user </Limit>
Dans ce fichier, nous avons défini quel fichier contient la liste des comptes (utilisateurs et mot de passe associé) autorisés pour le répértoire 'apache-ssl'. Il faut maintenant remplir ce fichier .htpasswd de la manière suivante :
htpasswd -c /var/www/apache-ssl/.htpasswd utilisateur
Il faut également modifier le fichier httpd.conf pour lui dire de prendre en compte les fichiers .htaccess dans les répertoires. Pour cela, il faut remplacer l'instruction 'AllowOverride None' en 'AllowOverride All' :
<Directory /var/www/apache-ssl> Options Indexes Includes FollowSymLinks MultiViews AllowOverride All Order allow,deny Allow from all </Directory>
Maintenant, l'accès par login et mot de passe devrait fonctionner. Essayer de vous connecter à 'https://localhost' avec un navigateur pour voir si on vous demande bien de vous identifier comme l'illustration suivante le montre.
SNMP, Simple Network Management Protocol est un protocole pas si simple qui permet de monitorer et de gérer des équipements informatiques. Il permet d'accéder à une énorme quantité d'informations et éventuellement de les modifier, à l'aide de requêtes simples envoyées à distance.
Pour renvoyer toutes ces informations, un agent SNMP accède à la MIB, Management Information Base, qui est une énorme base de données contenant plein d'informations sur la machine. Organisée en arbre, on accède aux informations en naviguant à travers les branches. Pour cela, on utilise la notation pointée comme ça : .1.3.6.1.2.1.1.3.0 . Nous allons installer un agent SNMP (serveur) sur la passerelle de façon à pouvoir accéder à la MIB de la passerelle.
apt-get install snmpd
Editons le fichier de configuration de snmpd en tapant 'vi /etc/snmp.snmpd.conf'.
syscontact adresse.administrateur@domaine.org syslocation Emplacement de la passerelle # Relations entre les communautés et des noms de sécurité com2sec AccesLocal localhost private #com2sec nomsecurise source communaute # Relations entre des noms de groupes et les noms de sécurité group ROGroup v1 AccesLocal #group nomdugroupe version nomsecurise # Vues qui seront autorisées aux groupes view tout included .1 # Accès aux vues suivant les groupes access ROGroup "" v1 noauth exact tout none none #access nomdugroupe contexte modelesecu niveausecu prefixe lecture ecriture notification
Pour vérifier que nous avons correctement installé l'agent SNMP, nous installons un client SNMP qui va nous permettre de l'interroger. Comme nous avons autorisé un accès local uniquement, cela devrait fonctionner. L'installation se fait simplement :
apt-get install snmp
On fait un test :
snmpget -v 1 -c private localhost system.sysUpTime.0
Si tout se passe bien, on récupère un résultat du type : 'SNMPv2-MIB::sysUpTime.0 = Timeticks: (15888) 0:02:38.88'. A ce stade, tout ce qui concerne SNMP fonctionne. Notez qu'on ne modifie pas les régles du firewall pour éviter les connexions distantes à SNMP. La sécurisation de la passerelle est essentielle. En effet, l'accès à la MIB de la passerelle représente une porte donnant beaucoup de possibilités à un pirate. Il vaut mieux éviter de donner un accès distant à l'agent SNMP, quitte à n'autoriser que l'accès local (et même pas LAN), et bien configurer votre firewall pour bloquer les ports de l'agent SNMP (l'agent écoute sur le port 161 en UDP et le client récupère les réponses sur le port 162 en UDP).
MRTG est un programme qui questionne l'agent SNMP de la passerelle afin de connaître régulièrement l'état du trafic circulant sur les différentes interfaces réseau de la machine. Il génère alors des pages HTML rapportant les résultats sous forme graphique. Notez que MRTG peut aussi mettre en forme d'autres données telles que la charge CPU, l'utilisation mémoire, etc. Pour l'installation, on fait comme d'habitude sous Debian :
apt-get install mrtg
Réserver le fichier /etc/mrtg.conf à l'utilisateur de mrtg ? oui
Ensuite, nous générons un fichier de configuration .cfg a placer dans le dossier '/var/apache-ssl'. pour cela, nous tapons la longue commande suivante (notez les antislashes qui permettent de taper une commande sur plusieurs lignes) :
cfgmaker \ > --global 'WorkDir: /var/www/apache-ssl' \ > --global 'Language: french' \ > --global 'Options[_]: bits,growright' \ > --ifdesc=descr private@localhost \ > --output /var/www/apache-ssl/local.cfg
Il s'agit alors de modifier la crontab de root pour automatiser le lancement régulier de mrtg (en l'occurence, toutes les 5 minutes) pour ela, on tape 'crontab -e', on ajoute la ligne suivante et on quitte l'éditeur 'vi' :
0-59/5 * * * * /usr/bin/mrtg /var/www/apache-ssl/local.cfg
A ce stade tout fonctionne, il ne reste plus qu'à se faire une jolie page index.html permettant de renvoyer aux autres pages et éventuellement affichant quelques graphes. Vous pouvez attendre que les graphiques soient créés petit à ou lancer manuellement MRTG en tapant : '/usr/bin/mrtg /var/www/apache-ssl/local.cfg'
Vous pouvez consulter un exemple de page généré par MRTG (les adresses IP ont été modifiées).