Msec
Un article de Wiki de la communauté Mandriva.
CETTE PAGE EST UNE VERSION RÉVISÉE DE LA PAGE MAINTENANT OBSOLÈTE DE L'ANCIENNE BASE DE CONNAISSANCES : http://club.mandriva.com/xwiki/bin/view/KB/SecureSmsec ptyxs 8 mars 2008 à 13:08 (CET)
[modifier] Introduction
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.
Veuillez noter qu'il y a des différences entre la version actuelle de msec et les versions précédentes ; par conséquent, bien que la plus grande partie de l'information fournie ici soit applicable aux versions antérieures de msec, elle n'est peut-être pas toujours tout à fait exacte en ce qui les concerne.
Le fonctionnement de base de msec est, cependant, resté le même. Chaque utilisateur, consciemment ou pas, a utilisé msec à un certain niveau : DrakX, l'installateur graphique de Mandriva Linux, lorsqu'il demande le niveau de sécurité désiré pour votre système (Très faible, Standard, Élevé, Plus Élevé, Paranoïaque) appelle msec pour sécuriser votre machine.
[modifier] Accèder à l'interface graphique de MSEC et déterminer le niveau de sécurité de votre système
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.
Pour accéder à cette interface, faites :
- Menu > Outils > Outils système > Configurer votre ordinateur > Sécurité > Configurer le niveau de sécurité du système et l'audit de sécurité
ou bien :
- ouvrez une console graphique (par exemple ainsi : Menu > Outils > Konsole), passer sous root (su+<ENTREE>+mot de passe de root), puis taper draksec et presser la touche <ENTREE>.
Le niveau de sécurité actuel de votre système est affiché vers le bas de la fenêtre qui apparaît alors, dans une liste déroulante.
Dans chaque onglet autre que Options de base vous pouvez découvrir quelles sont les valeurs par défaut des diverses options de msec pour votre niveau de sécurité, en cliquant sur le bouton Aide.
[modifier] Accès par l'interface graphique aux permissions par défaut définies par MSEC
[modifier] Permissions imposées à des fichiers ou répertoires existants : drakperm
msec impose aussi des permissions spécifiques à certains fichiers ou répertoires de votre système.
Pour accéder à l'interface qui permet d'examiner, de modifier ou de compléter ces permissions, vous pourrez :
- Ouvrir une console graphique (par exemple ainsi : Menu > Outils > Konsole - Terminal, passer sous root (su+<ENTREE>+mot de passe de root), puis taper drakperm et presser la touche <ENTREE>.
ou bien faire :
- Menu > Outils > Outils système > Configurer votre ordinateur > Sécurité > Ajuster finement les permissions du système.
Les permissions imposées par le système (ou par vos règles personnelles) seront alors visibles.
Vous trouverez un tutoriel détaillé sur la façon de modifier ces permissions dans cette section : Permissions#Imposer des permissions à certains répertoires avec drakperm.
[modifier] Permissions par défaut à la création d'un fichier : l'umask
Pour voir quelles permissions par défaut sont imposées par msec lors de la création de fichier (umask) pour votre niveau de sécurité actuel :
- Menu > Outils > Outils système > Configurer votre ordinateur > Sécurité > Configurer le niveau de sécurité du système et l'audit de sécurité > Options système, faire défiler le contenu du bouton Aide jusqu'aux rubriques Masque de permissions pour la création de fichier par les utilisateurs et Masque de permissions pour la création de fichier par root.
(pour obtenir la même information, on peut aussi taper en console umask ou umask -S).
Vous pouvez ensuite modifier ces permissions par l'interface (attention : ne faites cela que si vous savez vraiment ce que vous faites !!).
Mais naturellement, comme vous allez le voir, msec ne se limite pas à aux deux fonctionnalités décrites dans cette section et dans la section précédente…
[modifier] Quel niveau de sécurité choisir ?
Historiquement, les niveaux de sécurité de msec avaient des noms significatifs. Pour le niveau 0, le nom était "Bienvenue aux pirates", pour le 1 c'était "Médiocre", le 2 "Faible", le 3 "Moyen", le 4 "Haut" et le 5 était "Paranoïaque". Ces noms allaient bien avec ce que faisait chaque niveau.
Comment déterminer le niveau qui vous convient ? Il y a évidemment une idée derrière chaque niveau, et vous devez déterminer la frontière entre sécurité et facilité d'utilisation pour vous-même. Ci-après des scénarios typiques pour chaque niveau de sécurité.
-
Niveau 0 : Bienvenue aux pirates Ce niveau est le moins sécurisé de tous et doit être utilisé avec des précautions extrèmes. En fait, ce niveau n'est pas sélectionable via l'interface graphique draksec. Il rend votre système très facile d'utilisation, mais aux dépens de la sécurité. Vous devriez vous poser les questions suivantes, et si vous répondez 'oui' à l'une d'entre elle, vous ne devriez pas utiliser ce niveau :
- Est-ce que ma machine est connectée à Internet ?
- Est-ce que ma machine est connectée à un autre ordinateur par un réseau ?
- Est-ce que cette machine sera utilisée par une autre personne que moi (intentionnellement ou pas) ?
- Il y a-t-il des données confidentielles dans cet ordinateur qui ne devraient être accessibles à personne d'autre:
- J'ai une petite expérience de Linux et j'aime tout faire sous root (qu'on peut traduire par 'je ne sais pas ce que je fais et je peux casser des choses) ?
- Niveau 1 : Très Faible L'amélioration de la sécurité par rapport au niveau 0 est la protection des données par des noms et des mots de passe. Cela rend le système utilisable avec plusieurs utilisateurs locaux, mais ne devrait pas être utilisé si le système est sur un réseau (internet ou local (LAN)).
- Niveau 2 : Standard L'amélioration de la sécurité par rapport au niveau 1 est que msec envoie davantage d'alerte de sécurité et réalise plus de contrôles. C'est le niveau approprié pour une machine utilisée par plusieurs utilisateurs. Ce niveau correspond plus ou moins au niveau de sécurité que l'on peut retrouver par défaut dans les autres distributions Linux ou les Unix.
- Niveau 3 : Élevé C'est le niveau de sécurité minimum recommandé pour les ordinateurs connectés à un réseau. La plupart des contrôles de sécurité sont utilisés dans ce niveau, tel que la vérification des ports ouverts. Cependant, dans ce niveau, les ports ouverts sont laissés ouverts et leur accès est autorisé. Ce niveau n'est donc pas approprié aux systèmes qui proposent des services sur l'Internet (serveur web, ssh, ftp, ...) à moins que vous soyez derrière un pare-feu approprié. Ce niveau de sécurité offre une bonne base si vous voulez sécuriser votre système par vous-même en modifiant manuellement les fichiers de configuration des différents services, etc.
- Niveau 4 : Plus Élevé C'est le niveau de sécurité recommandé pour des serveurs réseau ou des systèmes connectés en permanence à Internet. Ce niveau autorise des connexions distantes à des serveurs pré-déterminés et toutes les connexions locales. Par défaut, certains services sont désactivés. Vous aurez donc à les activer manuellement en étant connecté sous une identité d'administrateur. De plus, les contrôles de sécurité que réalise msec sont plus poussés, tels qu'indiqués dans les tables de la page précédente.
- Niveau 5 : Paranoïaque C'est le plus haut niveau et il verrouille tout le système. Tous les contrôles de sécurité sont activés et l'administrateur doit activer les ports manuellement pour autoriser les services, et donner explicitement une autorisation à ces services.
[modifier] Modifier votre niveau de sécurité
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.
[modifier] En ligne de commande
En ligne de commande, la seule chose à faire est de lancer msec et lui dire quel niveau de sécurité utiliser. Cela peut être fait en exécutant en console, sous root :
où numero_de_niveau est le chiffre correspondant au nouveau niveau de sécurité souhaité. Par exemple pour passer au niveau 3 Elevé vous taperez :
Pour mémoire voici le tableau de correspondance entre les niveaux et leur numéro :
msec 1 | Très Faible |
msec 2 | Standard |
msec 3 | Elevé |
msec 4 | Plus élevé |
msec 5 | Paranoïaque |
Vous pouvez aussi demander à msec d'afficher ce qu'il fait exactement lorsque vous changez le niveau de sécurité. Voici un exemple qui affiche les changements réalisés lors du passage au niveau 4 :
Vous pouvez recueillir ces informations dans un fichier pour les examiner ensuite tout à loisir :
Lorsque vous utilisez les deux commandes précédentes, les messages affichés à l'écran, ou redirigés vers le fichier de sortie, ne sont pas envoyés vers les journaux système ou vers le mail local, contrairement à ce qui est d'ordinaire le cas.
[modifier] Par l'interface graphique
Mais vous pouvez aussi utiliser l'interface graphique. Par exemple comme ceci :
- Menu > Outils > Outils système > Configurer votre ordinateur > Sécurité > Configurer le niveau de sécurité du système et l'audit de l'ordinateur. Dans la liste déroulante Niveau de sécurité sélectionnez le niveau qui vous convient puis cliquez sur OK.
Pour vous rendre compte à quels résultats concrets vous êtes ainsi parvenu, sachez que toutes les propriétés activées correspondant au niveau choisi sont visibles dans les onglets Options réseau, Options système et Vérifications périodiques (les valeurs par défaut peuvent être affichées via le bouton Aide). D'autre part, les permissions par défaut imposées par msec, pour le niveau choisi, à certains fichiers ou répertoires peuvent être visionnées comme indiqué en haut de cette page.
[modifier] Modifier seulement quelques options dans l'interface graphique sans changer de niveau
Pour personnaliser msec votre seule possibilité n'est pas uniquement de passer en bloc d'un niveau à un autre. Vous pouvez parfaitement aussi modifier une ou plusieurs options, sans changer de niveau. Vous vous créez ainsi une sorte de niveau de sécurité personnel...
Vous pourrez faire cela très facilement par l'interface graphique, à laquelle vous pourrez accéder, soit en faisant :
- Menu > Outils > Outils système > Configurer votre ordinateur > Sécurité > Configurer le niveau de sécurité du système et l'audit de l'ordinateur
soit :
- en tapant draksec dans une console sous root.
Vous pourrez également personnaliser vos choix en éditant les fichiers de configuration de msec, comme nous l'illustrerons plus bas.
[modifier] Que fait MSEC ?
Un premier contact avec msec plonge généralement l'utilisateur dans un abîme de perplexité quant à ce que fait exactement ce logiciel. C'est bien joli, en effet, de savoir que vous pouvez choisir un niveau de sécurité qui va de Peu sécurisé à Hautement sécurisé, voire à Paranoïaque, mais que fait exactement msec pour différencier le choix Peu sécurisé du choix Hautement sécurisé, et que fait-il pour chacun des niveaux intermédiaires ?
Le tableau suivant illustre les différences fondamentales entre les 6 niveaux de sécurité disponibles.
Noter que le niveau 0 (colonne Aucun) ne peut pas être sélectionné avec l'interface graphique, pour le choisir on doit lancer la commande en tant que root (ce niveau étant très peu sécurisé ne faites cela que si vous n'êtes ni en réseau, ni en multiutilisateur, ni connecté à Internet...).Comme nous l'avons signalé au début de cette page, une description en français pour chaque fonctionnalité concernée, parfois un peu plus détaillée que dans le tableau, peut être trouvée dans l'interface graphique. Pour y accéder, faites :
Menu > Outils > Outils système > Configurer votre ordinateur > Configurer le niveau de sécurité du système et l'audit de sécurité
vous pouvez alors parcourir les divers onglets pour les différents niveaux de sécurité : le bouton Aide vous donne une description sommaire en français des différentes fonctionnalités et la valeur de chacune d'elles pour le niveau de sécurité concerné.
Une description un peu plus détaillée encore se trouve (en anglais) dans la page de manuel que l'on peut appeler à l'aide de la commande :
Liste d'actions/Niveau de Sécurité | Aucun (0) | Très Faible (1) | Standard (2) | Élevé (3) | Plus Élevé (4) | Paranoïaque (5) |
---|---|---|---|---|---|---|
Options de Base | ||||||
Configurer le niveau de sécurité set_secure_level |
0 | 1 | 2 | 3 | 4 | 5 |
Options Réseau | ||||||
Accepter l'écho ICMP accept_icmp_echo |
yes | yes | yes | yes | no | no |
Accepter l'écho ICMP émis par diffusion accept_broadcasted_icmp_echo |
yes | yes | yes | yes | no | no |
Accepter les messages d'erreur icv4 bogués accept_bogus_error_responses |
yes | yes | yes | yes | no | no |
Activer la protection contre l'usurpation d'adresse IP enable_ip_spoofing_protection |
no | no | no | yes | yes | yes |
Activer la vérification du mode espion des cartes réseau enable_promisc_check |
no | no | no | no | yes | yes |
Activer le traçage de tous les paquets ipv4 étranges enable_log_strange_packets |
no | no | no | yes | yes | yes |
Protection contre l'usurpation de résolution de nom enable_dns_spoofing_protection |
no | no | no | yes | yes | yes |
Options Système | ||||||
/etc/issue* existent allow_issues |
ALL | ALL | ALL | LOCAL | LOCAL | NONE |
Activer la demande de mot de passe en mode mono-utilisateur enable_sulogin |
no | no | no | no | yes | yes |
Activer les vérifications de msec toutes les heures enable_msec_cron |
yes | yes | yes | yes | yes | yes |
Afficher les messages système sur la console 12 enable_console_log |
no | no | no | yes | yes | yes |
Autoriser les connections X Window via TCP allow_xserver_to_listen |
system default | yes | yes | yes | no | no |
Autoriser les connections à X Window allow_x_connections |
ALL | LOCAL | LOCAL | NONE | NONE | NONE |
Autoriser tous les services contrôlés par tcp_wrappers authorize_services |
ALL | ALL | ALL | ALL | LOCAL | NONE |
Autoriser "crontab" et "at" pour les utilisateurs enable_at_crontab |
yes | yes | yes | yes | no | no |
Autoriser "su" seulement pour les membres du groupe "wheel" enable_pam_wheel_for_su |
no | no | no | no | no | yes |
Connection automatique allow_autologin |
yes | yes | no | no | no | no |
Délai d'expiration de l'interpréteur de commandes set_shell_timeout |
0 | 0 | 0 | 0 | 3600 | 900 |
Exporter l'affichage lorsque l'on passe du superutilisateur à un autre utilisateur allow_xauth_from_root |
1 | 1 | 1 | 1 | 0 | 0 |
L'utilisateur peut redémarrer l'ordinateur depuis la console allow_reboot |
yes | yes | yes | yes | no | no |
Lister les utilisateurs dans les gestionnaires de connexion (kdm et gdm) allow_user_list |
yes | yes | yes | yes | no | no |
Login root direct allow_root_login |
yes | yes | yes | yes | no | no |
Longueur minimum du mot de passe ainsi que le nombre de chiffres et de majuscules password_length |
0 0 0 | 0 0 0 | 2 0 0 | 4 0 0 | 6 1 1 | 8 1 1 |
Masque de permissions pour la création de fichiers par les utilisateurs set_user_umask |
022 | 022 | 022 | 022 | 077 | 077 |
Masque de permissions pour la création de fichier par root set_root_umask |
022 | 022 | 022 | 022 | 022 | 077 |
Permettre la connexion distante en tant que root allow_remote_root_login |
yes | yes | yes | yes | without_password | no |
Régler la durée de vie des mots de passe et le délai d'inactivation du compte password_aging |
99999 | 99999 | 99999 | 99999 | 60 30 | 30 15 |
Taille (en lignes) de l'historique du shell set_shell_history_size |
system default | system default | system default | system default | 10 | 10 |
Taille de l'historique des mots de passe password_history |
0 | 0 | 0 | 0 | 0 | 5 |
Utiliser un mot de passe pour authentifier les utilisateurs enable_password |
no | yes | yes | yes | yes | yes |
Vérifications journalières de sécurité enable_security_check |
no | yes | yes | yes | yes | yes |
Le tableau suivant indique quels contrôles périodiques msec réalise pour les différents niveaux de sécurité :
Contrôles périodiques/Niveau de Sécurité | Aucun (0) | Très Faible (1) | Standard (2) | Élevé (3) | Plus Élevé (4) | Paranoïaque (5) |
---|---|---|---|---|---|---|
Options de Base | ||||||
Afficher le rapport de vérification dans le terminal TTY_WARN |
no | no | no | no | yes | yes |
Effectuer les vérifications de chkrootkit CHKROOTKIT_CHECK |
no | no | no | yes | yes | yes |
Effectuer les vérifications quotidiennes de sécurité CHECK_SECURITY |
no | yes | yes | yes | yes | yes |
Enregistrer le rapport de vérification via syslog SYSLOG_WARN |
no | no | yes | yes | yes | yes |
Ne pas envoyer de mail quand cela n'est pas nécessaire MAIL_EMPTY_CONTENT |
no | no | no | no | yes | yes |
Rechercher les comptes non sécurisés CHECK_PASSWD |
no | no | no | yes | yes | yes |
Rechercher les fichiers n'appartenant à aucun utilisateur CHECK_UNOWNED |
no | no | no | no | yes | yes |
Vérifier les droits des fichiers dans les dossiers personnels CHECK_PERMS |
no | no | no | yes | yes | yes |
Vérifier les fichiers des paquetages rpm par rapport à la base de données RPM_CHECK |
no | no | no | yes | yes | yes |
Vérifier l'utilisation du mode espion par les périphériques réseau CHECK_PROMISC |
no | no | no | no | yes | yes |
Vérifier la liste des ports ouverts CHECK_OPEN_PORT |
no | no | no | yes | yes | yes |
Vérifier les ajouts/retraits des fichiers qui ont la permission "suid root" CHECK_SUID_ROOT |
no | no | yes | yes | yes | yes |
Vérifier les ajouts/retraits des fichiers sgid CHECK_SGID |
no | no | yes | yes | yes | yes |
Vérifier les fichiers et/ou dossiers modifiables par tout un chacun CHECK_WRITABLE |
no | no | yes | yes | yes | yes |
Vérifier les mots de passe vides dans /etc/shadow CHECK_SHADOW |
no | no | no | yes | yes | yes |
Vérifier les sommes de contrôle des fichiers ayant la permission suid/sgid CHECK_SUID_MD5 |
no | no | yes | yes | yes | yes |
[modifier] Les entrailles de MSEC
[modifier] Les fichiers de configuration
Les choix présentés dans ce dernier tableau sont stockés dans les fichiers :
- /etc/sysconfig/msec
et
- /var/lib/msec/security.conf
Chaque fois que vous modifiez le niveau actif de sécurité de msec, ils sont réécrits avec les nouvelles valeurs par défaut.
Notez que l'ensemble de tous les choix par défaut que nous venons de décrire sont entreposés pour chacun des six niveaux de sécurité dans les six fichiers :
- /usr/share/msec/level.[0-6]
A cela s'ajoutent les permissions par défaut que chaque niveau associe à certains répertoires et qui seront évoquées plus bas et qui sont entreposées dans les fichiers :
- /usr/share/msec/perm.[0-6].
Le fichier /etc/sysconfig/msec est utilisé dans de nombreux scripts shell (il est par exemple appelé par le script /etc/profile.d/msec.sh, qui est lui-même appelé par /etc/bashrc et par /etc/profile, qui sont des fichiers de configuration du shell), tandis que les fichiers /var/lib/msec/security.conf et /etc/security/msec/security.conf sont utilisés dans le contrôle quotidien CHECK_SECURITY.
Il est aussi possible de personnaliser msec en créant un fichier /etc/security/msec/level.local. Voir là-dessus la section #Personnaliser MSEC en modifiant les fichiers de configuration
Vous trouverez ci-dessous une description plus détaillée des variables configurables.
[modifier] 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é.
[modifier] Périodicité de l'application des choix de MSEC
Une dernière chose à noter : les choix sont appliqués toutes les heures, pour un maximum de protection.
[modifier] Journalisation des modifications
Chaque modification que réalise msec est journalisée par syslog dans /var/log/messages. Les changements effectués en ligne de commande ou dans l'interface graphique sont aussi enregistrés dans /var/log/explanations.
[modifier] Comment voir MSEC en action
Une façon simple de voir les modifications réalisées par msec sur votre système est d'utiliser la commande grep et de taper la ligne de commande suivante :
Notez que vous pouvez aussi être avisé de ce que fait msec par le mail local.
[modifier] Personnaliser MSEC en modifiant les fichiers de configuration
Comme nous l'avons vu plus haut dans cette page, vous pouvez utiliser l'interface draksec pour modifier les paramètres individuellement. Vous pouvez aussi créer le fichier /etc/security/msec/level.local avec vos personnalisations. Par exemple, vous pouvez avoir un fichier level.local qui ressemble à :
from mseclib import * set_security_conf('MAIL_USER', 'vdanen') set_security_conf('CHECK_PROMISC', 'no') allow_reboot(1)
Pour avoir une liste des différentes commandes que vous pouvez utiliser dans le fichier level.local, lisez la page du manuel mseclib (man mseclib). Elle décrit toutes les fonctions que vous pouvez utiliser dans le fichier et à quoi chaque fonction sert.
La première ligne est obligatoire afin d'importer les fonctions utilisées ensuite (à vrai dire ceci ne semble plus être vrai dans les versions les plus récentes de msec). Les autres lignes de notre exemple demandent à msec d'envoyer tous les emails à l'utilisateur vdanen et de ne pas réaliser le contrôle de l'état "promiscuous" (le "mode espion") des interfaces (CHECK_PROMISC) quel que soit le niveau de sécurité défini. Elles indiquent aussi à msec qu'il doit autoriser les utilisateurs à redémarrer la machine sans se soucier du niveau de sécurité.
Au lieu de level.local, vous pouvez utiliser /etc/security/msec/security.conf qui propose un format plus facile à employer. Il n'est pas aussi souple que celui du fichier level.local, puisqu'il est utilisé pour positionner les variables shell qu'utilise msec, mais dans la plupart des cas c'est amplement suffisant.
Par exemple, vous pouvez utiliser ce qui suit dans le fichier security.conf :
MAIL_USER=vdanen CHECK_PROMISC=no
et ceci dans le fichier level.local :
from mseclib import * allow_reboot(1)
Si vous voulez modifier les permissions sur les fichiers ou répertoires contrôlés par msec, vous pouvez le faire par l'interface graphique de drakperm ou dans le fichier /etc/security/msec/perm.local. Chaque niveau de sécurité a son propre jeu de permission sur certains fichiers ou répertoires. Si vous voulez connaitre les valeurs par défaut pour chaque niveau, regardez les fichiers /usr/share/msec/perm.[0-6]. Ils contiennent le nom du fichier (ou du répertoire), l'utilisateur et le groupe à qui le fichier devrait appartenir, ainsi que le mode (en format numérique) appliqué. Par exemple, supposons que vous utilisiez le niveau 4 (Très élevé) mais que vous ne vouliez pas des permissions de msec pour le répertoire /boot qui est en mode 700 (-rwx------). Vous devez alors rajouter la ligne suivante à /etc/security/msec/perm.local (créer le fichier s'il n'existe pas déjà) :
/boot/ root.root 755
Ensuite, lancez la commande msec (simplement en tapant msec dans une console sous root), patientez un petit moment pour que msec vérifie tous les répertoires, puis vous verrez que les permissions du répertoire /boot auront changé pour devenir 755 (-rwxr-xr-x). Ainsi n'importe quel utilisateur pourra accéder à ce répertoire, sans pouvoir le modifier.
Il est aussi possible d'utiliser current pour remplacer le deuxième champ (username.group) : msec laissera alors inchangé le username et le groupe du fichier.
[modifier] Activation des services par défaut
msec a une nouvelle fonctionnalité qui ne permet l'activation que des services sûrs lors de l'installation. Ceci n'est valable que pour les niveaux 4 et 5. Fondamentalement, cela signifie que seulement certains services prédéfinis seront activés après l'installation des paquetages du serveur. Par exemple, si vous choisissez le niveau 4 et ensuite que vous installez proftpd, proftpd ne sera pas activé immédiatement. Typiquement, lorsqu'un serveur est installé, les scripts inclus dans le RPM activent le serveur ; donc, si vous ne voulez pas le lancer, vous devez l'arrêter. msec travaille différemment et n'activera que les services qui sont listés dans le fichier /etc/security/msec/server.4 pour le niveau 4 ou dans le fichier /etc/security/msec/server.5 pour le niveau 5. Il existe aussi des services qui sont automatiquement mis en route dans le niveau 5 et pas dans le niveau 4 : il s'agit des services qui protègent votre machine (par exemple iptables).
Ssh, par exemple est autorisé dans le niveau 4 mais pas dans le niveau 5. Cela ne veut pas dire que vous ne pouvez pas activer le service vous-même, cela empêche seulement qu'il soit activé automatiquement lors de l'installation, ce qui est une bonne méthode après tout.
Pour activer un service donné, faites simplement en tant que root :
chkconfig --add service
où "service" est le nom du service à activer (proftpd, httpd, etc.).
Si vous mettez à jour un paquetage, msec ne fera rien concernant l'activation du service. Cela veut dire que si vous avez déjà activé httpd, puis mettez à jour apache, vous n'aurez pas besoin de le réactiver.
[modifier] MSEC et mail local
msec adresse des messages quotidiens à root, pour pouvoir lire ces messages vous devez installer le mail local.
[modifier] 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 !
[modifier] Autres sources de documentation sur MSEC
- Les fichiers dans /usr/share/doc/msec-<version>