Msec
De Wiki de la communauté Mandriva.
Msec a été profondément remodelé pour la 2009 Spring. Cet article ne parle que de l'outil présent dans cette version (et les ultérieures). Si vous possédez une version de Mandriva Linux inférieure à 2009 Spring (2009, 2008 Spring, 2008, etc...), veuillez plutôt consulter l'article Msec (pour les versions avant 2009 Spring).
Interface graphique
Avant toute explication vous aurez peut-être envie de jeter un coup d'œil à l'interface graphique de msec. Nous commencerons donc par cela. Ce qui ne doit surtout pas vous empêcher de lire ce qui viendra ensuite.
L'interface graphique de msec est disponible en lançant msecgui, qui est inclus dans le paquetage msec-gui. Cette application ne peut être utilisé que par root car elle permet de configurer les aspects sécurité de la machine.
L'application est divisée en onglets, le premier onglet permettant de régler les paramètres globaux de msec (dont le niveau de sécurité).
Les différentes fonctionnalités de l'outil sont regroupées dans les onglets suivant :
- Sécurité locale (ou système)
- Sécurité réseau
- Vérifications périodiques
- Permissions
Si un paramètre est différent de la valeur par défaut pour le niveau de sécurité choisi, la ligne sera affichée en gras. Cela vous permet de vérifier rapidement les paramètres modifiés par rapport au niveau de sécurité en cours.
Lorsque vous changez un ou plusieurs paramètre, msecgui vous affichera une prévisualisation des changements avant de les enregistrer.
Faut-il activer MSEC sur mon système ?
Activer MSEC
Changer le niveau de sécurité de votre système Mandriva Linux est très simple, que ce soit en ligne de commande ou par l'interface graphique.
En ligne de commande
En ligne de commande,Par l'interface graphique
Lancer l'outil Fichier:MsecGUI-icon.png MsecGUI et cocher la case d'activation de MSEC, dans le premier onglet :
Personnaliser le niveau de sécurité
Vous n'êtes pas obligé d'utiliser les paramètres par défaut de MSEC, vous pouvez aussi modifier les paramètres système individuellement. Vous vous créez ainsi une sorte de niveau de sécurité personnel.
Pour modifier chaque option individuellement en mode graphique, parcourir les onglets de Fichier:MsecGUI-icon.png MsecGUI.
Vous pouvez également personnaliser vos choix en éditant les fichiers de configuration de msec.
Que fait MSEC ?
Le tableau suivant illustre les différents paramètres systèmes modifiés par msec. Une description un peu plus détaillée se trouve (en anglais) dans la page de manuel que l'on peut appeler à l'aide de la commmande man msec.
Les entrailles de MSEC
Les fichiers de configuration
Variables configurables
Regardons de plus près ce que permet chaque variable de configuration (vous trouverez certaines de ces variables positionnées dans les fichiers de configuration mentionnés à la section précédente) :
- CHECK_OPEN_PORT : si positionnée, msec fait un rapport sur tout changement sur les ports ouverts sur votre système. Cela vous permet de pister si un serveur a été redémarré, ou si un nouveau serveur se met à écouter sur un port. Cela peut produire de fausses alertes si des serveurs sont automatiquement redémarrés par logrotate.
- CHECK_PASSWD : si positionnée, msec vérifie que tous les utilisateurs ont un mot de passe et que les mots de passe sont codés ('shadow'). Ceci est un contrôle d'intégrité sur le fichier /etc/passwd et décourage les mots de passe vides.
- CHECK_PERMS : si positionnée, msec vérifie les permissions de certains fichiers dans les répertoires personnels de chaque utilisateur et fait un rapport. msec ne cha:nge pas les permissions, mais liste les problèmes potentiels. Il contrôle :
- les fichiers dont le propriétaire devrait être l'utilisateur et qui ne devraient être accessibles qu'en lecture : .netrc .rhosts .shosts .Xauthority .gnupg/secring.gpg .pgp/secring.pgp .ssh/identity .ssh/id_dsa .ssh/id_rsa .ssh/random_seed
- les fichiers dont le propriétaire devrait être l'utilisateur et qui ne devraient pas être accessibles en écriture pour les autres utilisateurs : .bashrc .bash_profile .bash_login .bash_logout .cshrc .emacs .exrc .forward .klogin .login .logout .profile .tcshrc .fvwmrc .inputrc .kshrc .nexrc .screenrc .ssh .ssh/config .ssh/authorized_keys .ssh/environment .ssh/known_hosts .ssh/rc .twmrc .xsession .xinitrc .Xdefaults
- le répertoires personnel (racine) des utilisateurs : ce répertoire ne devrait pas être la propriété d'un autre utilisateur que le véritable propriétaire ou accessibles en écriture pour les autres utilisateurs
- CHECK_PROMISC : si positionnée, msec contrôle toutes les cartes Ethernet pour savoir si elles sont en mode _promiscuous_. Les cartes en mode _promiscuous_ peuvent intercepter tout paquet IP reçu, y compris ceux qui ne lui sont pas directement adressés. C'est en général le cas lorsqu'un logiciel de sniffage de paquets (packet sniffer) tourne sur votre machine. En même temps, cela peut aussi vouloir dire que vous avez le logiciel prelude qui tourne sur votre machine. Prelude est un IDS : logiciel de détection des intrusions.
- CHECK_SECURITY : si positionnée, msec exécute le script /usr/share/msec/security_check.sh en prenant en compte toutes les variables CHECK_* (dans la deuxième table ci-dessus). Plusieurs tests sont effectués et un message d'avertissement est inscrit dans le mail si besoin. Voici quelques tests effectués :
- vérification de l'absence de systèmes de fichier NFS exportés globalement (car alors il n'y a aucune restriction pour ceux qui voudraient les monter)
- vérification que l'option "nosuid" est bien positionnée pour les montages NFS
- vérification de l'absence du caractère "+" dans certains fichiers qui autorisent les hôtes à se connecter sans authentification préalable (les fichiers contrôlés sont /etc/hosts.equiv, /etc/shosts.equiv et /etc/hosts.lpd)
- vérification de l'absence de référence à des fichiers exécutables dans les fichiers /etc/aliases et /etc/postfix/aliases
- CHECK_SGID : si positionnée, msec compare la somme MD5 des fichiers qui ont le bit _sgid_ avec les valeurs précédemment calculées. Cela vous permet de savoir si un fichier avec le bit _sgid_ a été modifié, même si sa taille et son horodatage sont identiques, mais pas si le fichier est nouveau ou a été supprimé.
- CHECK_SHADOW : si positionnée, msec vérifie que tous les utilisateurs ont un mot de passe non vide. Ceci est un contrôle d'intégrité sur le fichier /etc/shadow
- CHECK_SUID_MD5 : si positionnée, msec compare la somme MD5 des fichiers qui ont le bit _suid_ avec les valeurs précédemment calculées. Cela vous permet de savoir si un fichier avec le bit _suid_ a été modifié, même si sa taille et son horodatage sont identiques, mais pas si le fichier est nouveau ou a été supprimé.
- CHECK_SUID_ROOT : si positionnée, msec vérifie et fait un rapport sur toute modification sur les fichiers qui ont le bit _suid_. Cela vous permet de savoir si un nouveau fichier avec le bit _suid_ apparaît dans le système ou si des fichiers ayant précédemment le bit _suid_ ont été supprimés.
- CHECK_UNOWNED : si positionnée, msec recherche les fichiers qui sont la propriété de uids et des gids non référencés dans /etc/passwd (c'est dire des utilisateurs inconnus). Si de tels fichiers sont trouvés, msec change automatiquement le propriétaire à "nobody/nobody".
- CHECK_WRITABLE : si positionnée, msec recherche et fait un rapport sur les fichiers accessibles en écriture par tous les utilisateurs.
- CHKROOTKIT_CHECK : si positionnée, msec recherche sur votre système les rootkits connus. Un rootkit est un programme qui permet d'exploiter des failles sous Unix/Linux afin de prendre le contrôle du compte root.
- MAIL_EMPTY_CONTENT : si positionnée, le rapport de sécurité sera envoyé même s'il est vide. Cela permet de contrôler que msec fonctionne correctement et qu'il n'a pas été compromis en vérifiant qu'on reçoit bien le mail chaque jour. En effet, un pirate ou un programme malicieux tentera sûrement de se débarrasser de msec.
- MAIL_USER : permet l'envoi du rapport quotidien à un utilisateur. Si cette variable n'est pas positionnée, l'email est envoyé à l'utilisateur root (et, on l'espère du moins, transmis finalement à un autre utilisateur puisque root ne devrait pas recevoir de mails : pour cela, éditer /etc/aliases). La valeur de cette variable correspond à ce que vous tapez dans la zone "Administrateur sécurité" de l'onglet "Options de base" de l'interface graphique.
- MAIL_WARN : si positionnée, msec envoie un email d'alerte à l'utilisateur spécifié dans la variable MAIL_USER. Le positionnement de cette variable s'obtient en cochant la case "Alertes de sécurité" dans l'onglet "Options de base" de l'interface graphique.
- PERM_LEVEL : est utilisé pour déterminer quel fichier utiliser pour rétablir les permissions, les propriétaires et les groupes. Si positionnée, msec utilise le fichier /usr/share/msec/perm.$PERM_LEVEL. Si non positionnée, msec utilise alors la variable SECURE_LEVEL (qui est votre niveau de sécurité courant). De plus, pour une configuration spécifique du système, le fichier /etc/security/msec/perm.local est aussi utilisé, s'il existe.
- RPM_CHECK : si positionnée, msec vérifie les paquetages qui ont changé depuis la veille (même les ré-installations du même paquetage). Il contrôle aussi si un fichier appartenant à un paquetage a été modifié.
- SYSLOG_WARN : si positionnée, msec écrit aussi son rapport dans syslog.
- TTY_WARN : si positionnée, msec écrit son rapport sur toutes les consoles ouvertes en ce moment par root.
Il est aussi possible de positionner la variable CHKROOTKIT_OPTION. Sa valeur sera passée en argument à chkrootkit lorsqu'il est lancé périodiquement par msec. Par exemple CHKROOTKIT_OPTION="-q" permet d'avoir un rapport plus condensé.
Périodicité de l'application des choix de MSEC
Journalisation des modifications
Comment voir MSEC en action
Personnaliser MSEC en modifiant les fichiers de configuration
Activation des services par défaut
MSEC et mail local
msec adresse des messages quotidiens à root, pour pouvoir lire ces messages vous devez installer le mail local.
Note finale...
Comme vous pouvez le voir, msec est un très bon point de départ pour sécuriser votre système. Il ne peut pas tout faire pour rendre votre système sûr, et il n'a pas été prévu pour cela. La sécurité d'un système demande toujours beaucoup d'attention de la part de l'administrateur du système. Mais msec constitue un bon début et vous laisse la possibilité d'aller plus loin dans la sécurisation. Il comporte certes aussi quelques lacunes en matière de sécurité variables selon le type de système que vous voulez utiliser : à vous de corriger ces défauts !
Historique
Le paquetage Mandriva-Security, plus connu sous le nom de msec, a été l'un des paquetages de base dans Mandrakelinux dès son introduction dans la version 7.0. Depuis, msec a beaucoup évolué, il a en particulier été complètement réécrit en python pour la 8.2. Il était auparavant constitué d'un ensemble de scripts shell. Pour la 2009.1, l'interface graphique a été revue de fond en comble et il est maintenant basé sur un système de plugins, ce qui a longtemps été demandé : il est désormais possible de réaliser un plugin pour la sécurisation d'apache, par exemple.
Autres sources de documentation sur MSEC
- Les fichiers dans /usr/share/doc/
- Quelques informations utiles (en anglais) sur la nouvelle version sont sur le [blog d'Eugeni Dodonov http://dodonov.net/blog/]







