0.1 Sécuriser une machine Unix/linux 0.2 Différencier les ...

flippantmewlingΑσφάλεια

19 Ιουν 2012 (πριν από 4 χρόνια και 11 μήνες)

707 εμφανίσεις

0.1 Sécuriser une machine Unix/linux
0.2 Différencier les comptes
Créer un compte administrateur et un compte utilisateur,même sur une
machine personnelle.
Toujours se connecter sur la machine en tant qu’utilisateur,et basculer en tant
qu’administrateur (commande su,sudo...) dès qu’il le faut.
Cependant,nous conseillons d’accomplir moins de tâches possibles en tant qu’ad-
ministrateur.En effet,si le compte utilisateur est compromis le pirate peut
prendre le contrôle de la machine en tant que root.
0.3 Bien choisir les mots de passe
Sous linux,la liste des utilisateurs du système est dans le fichier/etc/passwd,
accessible à tous en lecture seul.
Le mot de passe est chiffré et se trouve dans le fichier/etc/shadow.
Ce fichier n’est pas accessible aux utilisateurs même en lecture.
Le chiffrement du mot de passe est fait avec un algorithme non reversible:
* DES (Data Encryption Standard):le mot de passe est limité à 8 carac-
tères.
* MD5 (Message Digest 5)
Malgré le cryptage effectué par le système,la sécurité d’un système unix/linux
repose aussi sur une bonne stratégie dans le choix du mot de passe:
• Choisir des mots de passe de 8 caractères au minimum.
• Mélanger des caractères minuscules,majuscules,numériques,spéciaux.
Par exemple a3X7Z5*3
• Ne pas mettre des mots contenus dans un dictionnaire (noms propres,
noms communs...).
Certains outils libres comme John The Ripper permettent de tester la robus-
tesse d’un mot de passe.(voir la fin du document)
Sur certaines distributions Linux,il existe un compte guest sans mot de passe.
s’il existe,supprimer ce compte utilisateur et enlever la ligne correspondante
dans/etc/passwd.
0.4 Désactiver les services inutiles
Par défaut,plusieurs services réseau sont installés et démarrés sous Linux,
dont certains dangereux.
Il faut donc désactiver de tels services.Pour cela,éditer le fichier/etc/inetd.conf
1
et commenter la ligne contenant le nom du service.
Cependant,tous les services(apache,samba,ssh...) n’utilisent pas inetd,mais se
mettent en démon au démarrage de la machine.Pour ceux là il faut regarder les
fichiers/etc/init.d,/etc/rc2.d...
En particulier il faut se méfier de:
• httpd:Si la machine est un serveur web,faire attention aux bugs PHP.
Le site du CERT publie régulièrement des alertes de sécurité sur PHP.
Si la machine ne se sert pas de HTTP,désactiver ce service.
• telnetd:Il est conseillé de le désactiver:En effet,ce service permet au
mot de passe de transiter en clair sur le réseau,donc un sniffer sur le
réseau permettrait à l’attaquant d’obtenir le mot de passe.
Nous conseillons donc de préférer l’utilisation des outils permettant de
crypter les échanges sur le réseau,tels que ssh au lieu de telnet,scp au
lieu de ftp...pour éviter des sniffers très facile à mettre en oeuvre.
• Samba:Si la machine n’en a pas besoin,ne pas l’activer.En effet,il est
sujet à des bugs et ouvre des partages.
Si la machine l’utilise,attention à ne pas autoriser le partage sur des re-
pertoires sensibles (/etc,/bin,/sbin,/usr).
0.5 Filtrer les services
Sous Linux,un pare-feu peut être mis en place sur une machine à l’aide de
l’outil IPTables.Cela permet d’interdire des connexions sur certains ports de
la machine,de limiter le nombre de connexions,gérer le flux réseau.
Ainsi,lorsqu’un paquet arrive sur la machine,le système décide de le laisser
passer,de le modifier ou de l’interdire,grâce aux règles définies par l’adminis-
trateur.
Par exemple,pour interdire les connexions sur le port 22 (ssh):
iptables -A INPUT -p tcp –dport 22 -j DROP
Pour lister la table:iptables -L -v
Un tutorial sur le iptables est disponible sur http://www.linux-france.org/prj/inetdoc/guides/
0.6 Autoriser les services à certaines machines dis-
tantes
Dans le cas où certains services non désactivés peuvent être utilisés par
des machines distantes,n’autoriser que celle-là.Pour cela,utiliser le fichier
/etc/hosts.allow.
Le fichier/etc/hosts.deny permet d’interdire les connexions.Le plus simple est
d’interdire à tout le monde (mettre ALL:ALL dans le fichier) et de laisser les
2
autorisations dans/etc/hosts.allow
Cette technique ne permet pas de se protéger totalement des machines indé-
sirables.En effet,il existe des techniques de"spoof"qui permettent de se faire
passer pour une autre en usurpant son identité.Il faut donc rester prudent.
Remarque:Il nous semble important de rappeller que iptable s’applique sur-
tout au niveau réseau et/etc/hosts au niveau applications.
Cependant,tous les services(apache...) n’utilisent pas/etc/hosts,il faut donc
vérifier leur fichiers de configuration.
0.7 Vérifier les permissions
• Attention à ne pas oublier de remettre les bons droits après avoir changé
les permissions sur les fichiers ou des repertoires.
• Enlever le droit SUID root (chmod a-s nomdufichier) sur des fichiers exé-
cutables.De tels fichiers permettent d’agir en tant que root.
• Vérifier aussi que les fichiers de configuration ont comme propriétaire root
et sont en lecture seul.
0.8 Surveiller le système en lisant les logs
Les logs sont des fichiers texte produits par le système,dans lesquels celui-ci
renseigne sur les connexions qui arrivent sur la machine,les personnes qui s’y
connectent et sur ce que font les programmes.
Les logs se trouvent dans/var/log.
Les fichiers de log les plus importants sont:
• messages:C’est le fichier de log principal il contient tous les messages du
noyau,tous les messages des serveurs.
• auth.log:Il renseigne sur tout ce qui concerne les authentifications.
Lire régulièrement les logs permet d’une machine de savoir si elle est attaquée
et si le système ou le noyau fonctionne correctement.
Très souvent,les pirates effacent leurs traces des fichiers logs.Il est donc pré-
férable de délocaliser ou de dupliquer les logs sur une autre machine(Avoir un
serveur de logs pour les grosses unités).
0.9 Mettre régulièrement à jour son système
Il s’agit de mettre à jour le noyau du système,car une version récente du
noyau est souvent plus sécurisée que l’ancienne.
3
Mettre aussi à jour les applications.
0.10 Toujours travailler en mode utilisateur
Afin de ne pas donner les droits d’administrateur en cas de compromission,
il est recommandé de lancer les applications(mozilla-firefox,applications multi-
média...) en mode utilisateur.
0.11 Logiciels utiles pour la sécurisation
0.11.1 John The Ripper
Cet outil libre permet de vérifier la solidité des mots de passe des utilisa-
teurs.Il arrive malheureusement souvent que des utilisateurs aient des mots de
passe triviaux.Avec John,l’administrateur peut s’apercevoir qu’une personne
malintentionnée peut deviner ce type de mot de passe en quelques minutes.
Typiquement,le programme John s’applique aux fichiers/etc/passwd et/etc/shadow.
Il utilise simplement des listes de mots pour faire ses tests.John teste d’abord
les mots de la liste puis fait des combinaisons prédéfinies avec des mots (en
rajoutant un numéro derrière le mot par exemple).
Ces listes de mots peuvent être trouvées dans les dictionnaires sous linux.Par
exemple,le paquet wfrench permet d’installer le dictionnaire français.
Sous débian,le fichier/usr/share/dict/french contient toute une liste de mots
français.
Lancer en root john -wordfile:/usr/share/dict/french/etc/shadow
Si une ligne du type bidon (serge) s’affiche,elle signifie que l’utilisateur"serge"
a pour mot de passe"bidon".
0.11.2 Lsof
C’est un outil libre qui permet de lister tous les fichiers ouverts par tous les
processus et d’identifier les ports ouverts.
Lsof peut être récupéré sur ftp://vic.cc.purdue.edu/pub/tools/unix/lsof/
Un tutorial d’installation,de configuration et d’utilisation de lsof est disponible
sur http://secu-info.inpg.fr/S/->Prinicipes de Sécurisation ->Documentation
outils.
Cet outil permet surtout en cas d’intrusion d’analyser les données volatiles (don-
nées présentent en mémoire),pour rechercher des processus suspects presents
sur la machine.
4
0.11.3 AIDE/Tripwire
• AIDE(Advanced Intrusion Detection Environment)
C’est un outil libre permettant de vérifier l’intégrité des fichiers.
Le principe de fonctionnement est simple:Il s’agit de construire une base
de signatures de fichiers que l’on désire surveiller,et de re-calculer ces em-
preintes périodiquement ou au besoin,en les confrontant à la base.Si les
empreintes sont différentes (au niveau du fichier,de sa date,de ses droits
d’accès...),le logiciel aura ou pas détecté une modification de fichiers.
AIDE ne fonctionne que sur des systèmes unix.
Pour plus d’information sur AIDE:http://www.cs.tut.fi/rammer/aide.html.
• Tripwire
Ce logiciel libre permet aussi d’assurer l’intégrité des fichiers en identi-
fiant tout changement apporté à ceux-ci.
Tripwire compare des fichiers et des répertoires avec des informations,
contenues dans sa base de données référentielle créée à l’installation.Il
tient compte de l’emplacement,des dates de modification des fichiers lors
de la comparaison.
Les options de configuration de tripwire permettent non seulement l’envoi
d’un courrier électronique à l’administrateur lorsqu’un fichier sensible est
modifié,mais d’automatiser la vérification de l’intégrité du système de fi-
chiers à l’aide du cron.
Un tutorial d’installation,de configuration et d’utilisation de tripwire est
disponible sur http://secu-info.inpg.fr/S/-> Prinicipes de Sécurisation
-> Documentation outils.
Tripwire et AIDE sont très utiles en cas d’intrusion,afin de découvrir ce qui
a été changé (journaux modifiés,fichiers ajoutés à certains endroits,binaires
comme netstat,lsof...).
Cependant,ces logiciels ne protègent pas le système.
AIDEet Tripwire ne permettent pas d’améliorer la sécurité d’un système Unix/Linux.
Pour plus d’informations sur la sécurité Unix/linux,consulter le site de Ca-
therine Balleydier http://secu-info.inpg.fr/S/
5