Webmin

Cas pratiques

Configurations

Exemple 1: Netfilter

Nous allons maintenant faire le parallèle entre une configuration simple du filtre de paquets Netfilter en mode console et la même configuration via Webmin. Cette configuration rudimentaire ne permet un accès que sur quelques ports en entrée sur la machine. L'utilisateur souhaite effectuer les actions suivantes :

Voici les 8 commandes à entrer respectivement en mode console pour cet exemple :

sudo iptables -F
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 10000 -j ACCEPT
sudo iptables -I INPUT 2 -i lo -j ACCEPT
sudo iptables -P INPUT DROP
sudo iptables -L -v

Considérons maintenant que nous voulions faire cette même configuration via l'interface de Webmin. L'ajout d'une règle se fait par les menus suivants :

Voici comment remplir le formulaire proposé par Webmin pour créer la régle «  Accepter les connections entrantes http (port 80) »

L'avantage réside dans le fait que l'ensemble des paramètres de configuration d'une règle Iptables est proposé dans le formulaire. Ceci permet alors à l'utilisateur de n'en oublier aucun. Notons que le menu principal de ce module « Linux Firewall » rappel l'ensemble des règles Iptables de la machine. Les autres règles vues ci-dessus doivent alors être entrée via ce formulaire de la même façon.

Illustration 2: Le menu ajouter une règle iptables

Ajouter une règle iptables


Exemple 2: Protéger un répertoire dans Apache

Pour protéger l'accès à ses répertoires, Apache fournit un outil permettant de générer des mots de passe cryptés (aussi bien sous Windows que sous Unix). Il s'agit de l'utilitaire htpasswd accessible dans le sous-répertoire bin d'Apache. Ainsi l'utilisateur devra saisir un nom d'utilisateur et un mot de passe valides pour accèder aux répertoires protégés. La syntaxe de cet utilitaire est la suivante :

Pour créer un nouveau fichier de mots de passe dans le répertoire à protéger :

htpasswd -c {chemin du fichier de mot de passe} utilisateur

Pour ajouter un nouvel utilisateur/mot de passe à un fichier existant dans le répertoire à protéger :

htpasswd {chemin du fichier de mot de passe} utilisateur

Le mot de passe sera demandé en ligne de commande avec une confirmation.

Voici l’analogie sous Webmin, via les menus :

L'utilisateur doit créer le répertoire Apache en indiquant son chemin

Créer un répertoire Apache

Puis dans le menu : contrôle d’accès. Il faut renseigner les champs suivants :

Contrôle d'accès des répertores Apache

Ces deux exemples mettent bien en évidence l'utilité des formulaires de Webmin pour réaliser une configuration sous Linux. L'ensemble des options est suggéré de façon clair et synthétique.

Maintenance du système

Exemple 1: Consulter les logs d'Apache

Pour un système donné, Webmin permet la consultation d'une quinzaine de fichiers de log (en français : journaux).  Voici les menus pour y accèder:

Pour la consultation des accès sur le serveur web Apache, nous allons utiliser le formulaire suivant qui permet d'ajouter un journal dans Webmin:

Illustration 3: Le menu ajouter un journal système

Ajouter un journal système

Il est conseillé de choisir un journalisation non active pour les journaux qui changent souvent afin d'économiser des ressources. Après quelques temps d'utilisation, voici des extraits d'attaques "bateau" qui peuvent être recencées dans ce fichier access.log en filtrant par exemple sur le mot « 404 » :

Premier extrait: Attaque sur le serveur par recherche de l'interpréteur de commande Windows

218.92.71.31 - - [15/Oct/2006:05:27:20 +0200] "GET
/scripts/root.exe?/c+dir" 404 338 "-" "-"

218.92.71.31 - - [15/Oct/2006:05:27:21 +0200] "GET
/msadc/..%c0%2f..%c0%2f..%c0%2f../winnt/system32/cmd.exe?/c+dir" 404
365 "-" "-"

218.92.71.31 - - [15/Oct/2006:05:27:26 +0200] "GET
/msadc/..%c0%2f../..%c0%2f../..%c0%2f../winnt/system32/cmd.exe?/c+dir"
404 371 "-" "-"

218.92.71.31 - - [15/Oct/2006:05:27:27 +0200] "GET
/msadc/..%c0%af..%c0%af..%c0%af../winnt/system32/cmd.exe?/c+dir" 404
365 "-" "-"

218.92.71.31 - - [15/Oct/2006:05:27:28 +0200] "GET
/msadc/..%c0%af../..%c0%af../..%c0%af../winnt/system32/cmd.exe?/c+dir"
404 371 "-" "-"

218.92.71.31 - - [15/Oct/2006:05:27:30 +0200] "GET
/msadc/..%c1%1c..%c1%1c..%c1%1c../winnt/system32/cmd.exe?/c+dir" 404

365 "-" "-"

2ème extrait: Attaque par recherche de dossier inexistant sur le serveur :

"GET
/gl HTTP/1.1" 404 323 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr;
rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7"

90.3.114.133 - - [15/Oct/2006:17:55:59 +0200] "GET /gl HTTP/1.1" 404
323 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.7)
Gecko/20060909 Firefox/1.5.0.7"

90.3.114.133 - - [15/Oct/2006:17:56:03 +0200] "GET /dawa HTTP/1.1" 404
325 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.7)
Gecko/20060909 Firefox/1.5.0.7"

90.3.114.133 - - [15/Oct/2006:17:56:25 +0200] "GET /liens.php$
HTTP/1.1" 404 331 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr;
rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7"

90.3.114.133 - - [15/Oct/2006:17:56:33 +0200] "GET /projet HTTP/1.1"
404 327 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.7)
Gecko/20060909 Firefox/1.5.0.7"

90.3.114.133 - - [15/Oct/2006:17:56:39 +0200] "GET /alfresco HTTP/1.1"
404 329 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.7)
Gecko/20060909 Firefox/1.5.0.7"

90.3.114.133 - - [15/Oct/2006:17:58:42 +0200] "GET /Dawa HTTP/1.1" 404
325 "-" "Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.7)
Gecko/20060909 Firefox/1.5.0.7"


Cette simple recherche sur le code d'erreur 404 « file note found » du protocole http met assez souvent en lumière les accès indésirables effectués sur un serveur web. D'une manière générale, Webmin offre un accès ergonomique aux journaux système ce qui se révèle être un vrais plus par rapport à la ligne de commande.

Exemple 2: Panne du serveur Web Apache ou d’un MTA (Serveur de mail)

En cas d'arrêt du serveur Web, Webmin devient inaccessible. Pour reprendre son contrôle, il faudra donc obligatoirement se connecter en console. Tout d'abord l'administrateur pourra vérifier les processus actifs avec la commande : ps -ax puis chercher les processus Apache :  4843 ?        Ss     0:00 /usr/sbin/apache2 -k start -DSSL. Une excellente idée serait ensuite de rechercher les erreurs eventuelles dans les journaux : /var/log/messages et /var/log/apache2/error.log. Enfin il pourra tenter de redémarrer Apache avec la commande : /etc/init.d/apache restart.

Pour un autre serveur, par exemple un serveur de mail Postfix ou le démon DHCP en panne, les menus de Webmin aiderons à la résolution du problème:

Développer ses modules pour Webmin

Webmin est conçu selon un principe modulaire. Voici un schéma représentant l’organisation des modules dans cette architecture:

Illustration 4: Schéma des modules de Webmin

Schéma des modules de Webmin

Chacun peut écrire un module et l'intégrer dans le module principal car l'ensemble des API de base sont fournies. Le serveur web et tous ses scripts cgi sont écrits pour Perl 5 et n'utilisent aucun module externe. Ainsi, seul le binaire Perl est nécessaire pour exécuter Webmin, ce qui fait de lui toute sa portabilité. Pour la création d'un module, il est possible de gérer différentes langues et différentes configurations pour les plates-formes supportées. Voici les règles qu'il faut respecter pour créer un nouveau module :

Ce qui donne le code suivant :

#!/usr/bin/perl
do '../web-lib.pl';
&init_config();
require './oracle-lib.pl';