Linux : Sécuriser les accès

23 avril 2014 rdorigny 0 commentaires

Un chapitre pour détailler comment sécuriser les accès d'une machine ou un serveur Linux. Il n'y a rien de très compliqué, juste appliquer méthodiquement quelques principes.








1)La gestion des mots de passe

1.1)Principes Linux

Le fichier /etc/passwd contient la définition des comptes utilisateurs UNIX. Chaque ligne correspond à un compte structuré comme ci-dessous :
User:Motdepasse:UID:GID:GeCos:Repertoireprivé:Shelldeconnexion

Avec : UID : le user Id, 0 pour root, inférieur à 500 pour un compte machine et supérieure à 500 pour un compte humain,
Gid: Group Id de l'utilisateur,
GECOS: champ pour commenter la fonction de ce compte.

Voici un exemple:
root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh

Bizarre me dirait vous, le mot de passe est symbolisé par x. En effet, ce fichier doit être accessible de tout de le monde et donc il est lecture, ce qui le rend un peut trop accessible pour un fichier aussi sensible. Il a donc été jugé plus cohérent de retirer les mots de passe et de les placer dans le fichier /etc/shadow, seul l'utilisateur root accède à ce fichier.

Le fichier shadow stocke le mot de passe qui est chiffré pour le protéger. Un second mécanisme de sécurité est implémenté, le grain de sel (salt), il vient du constat que souvent les usagers utilisent les mêmes mots de passes (ou pour éviter les comparaisons par dictionnaire), et donc le mot de passe chiffré aurait le même résultat, ce qui est déjà une indication pour l'attaquant.

La solution de chiffrement du mot de vient de la commande crypt(motdepasse,salt) qui a plusieurs mode de fonctionnement selon l'algorithme de chiffrement utilisé:
$1 : MD5,
$2 : BLOWFISH,
$5 : SHA256,
$6 : SHA512.
Le sel a une taille de 8 ou 16 caractère selon le mode de chiffrement, et en SHA512 le mot de passe chiffré fait 86 caractères.

Par exemple:
root:$6$ia42ujud$ojMLgziZcg2/j.qkW/K3CjuyFZmeGSfzsC9wpq6PuBxkk.wlfb0oLQjcRdRDao.HaDAb0XIdS0zzaWkmVH9js0:16167:0:99999:7::: daemon:*:15830:0:99999:7::: bin:*:15830:0:99999:7::: sys:*:15830:0:99999:7::: sync:*:15830:0:99999:7::: games:*:15830:0:99999:7::: man:*:15830:0:99999:7::: lp:*:15830:0:99999:7::: mail:*:15830:0:99999:7:::

Ici, le mot de passe root est codé en SHA256 (chiffrement fort) avec un sel de ia42ujud et le mot de passe chiffré ojMLgziZcg2/j.qkW/K3CjuyFZmeGSfzsC9wpq6PuBxkk.wlfb0oLQjcRdRDao.HaDAb0XIdS0zzaWkmVH9js0 . Vous noterez que certain compte ne dispose pas de mot de passe, ce sont des comptes de services, on ne peut pas se connecter avec.

1.2)Cracker un mot de passe

Pour cela, il faut installer l'application John the ripper, sous debian : apt-get install john
J'ai positionné un mot de passe facile (1234) simple afin que la recherche ne prenne pas trop de temps. Ensuite, il suffit de lancer la commande : john /etc/shadow

1.2)Contrôle des connexions

Il y a deux commandes à connaitre pour contrôler et suivre les connexions sur vos machines Linux, il s'agit de :
  • w : affiche les terminaux ouverts,
  • last : affiche les dernières connexions.

  • 1.3)Utilisation de sudo

    Sur certains systèmes Linux, le compte root n'est plus accessible, il faut utiliser la commande sudo pour exécuter en tant que. Cette commande se paramètre dans le fichier /etc/sudoers , mais il est vivement conseillé de l'éditer par la commande visudo pour compiler les paramètres et éviter de verrouiller ainsi votre machine! A noter qu'il est possible préciser l'éditeur de votre choix avec le paramètre Editor=nano .

    Le paramétrage du fichier sudoers suit le formalisme suivant:
    utilisateur hostnamemachine=(utilisateur) commande1, commande2
    On peut ainsi autoriser un utilisateur à exécuter certaines commandes en tant que untel, mais il devra taper le mot de passe de untel. Par exemple:
    # Host alias specification # User alias specification User_Alias STAFF=gaelle,barnabe,chris # Cmnd alias specification Cmnd_Alias NET=/bin/ping,/usr/bin/traceroute,/usr/bin/ftp,/usr/bin/nmap # User privilege specification root ALL=(ALL) ALL STAFF ALL=(ALL) NET

    Pour éviter de taper le mot de passe vous pouvez utiliser la commande NOPASSWD (user1 ALL=(ALL) NOPASSWD:ALL), très utile pour les scripts.

    1.4)Utilisation de PAM

    PAM signifie Pluggable Authentification Modules. C'est un système d'authentification des utilisateurs. On peut gérer les comptes d'applications en spécifiant les contextes d'utilisation. PAM est devenu un standard qui permet de développer des applications indépendantes du mode d'authentification.

    PAM permet de ne pas réinventer la poudre et d'utiliser un système d'authentification reconnu en en utilisant les fichier standard tel que /etc/passwd. Les applications qui utilisent PAM ont un fichier de configuration sous /etc/pam.d . Par exemple si vous installez ftp, il y aura un fichier dans ce répertoire, il vous faudra le configurer.

    PAM est basé sur fonctionnement autour de module, vous trouverez toute la documentation nécessaire ici.

    Les modules PAM sont des bibliothèques dynamiques (par ex. pam_unix.so) fournissant les six primitives d'authentification définies dans la norme, regroupées dans quatre mécanismes :
  • Le mécanisme account fournit une seule primitive : il vérifie si le compte demandé est disponible (si le compte n'est pas arrivé à expiration, si l'utilisateur est autorisé à se connecter à cette heure de la journée, etc.).
  • Le mécanisme auth fournit deux primitives ; il assure l'authentification réelle, éventuellement en demandant et en vérifiant un mot de passe, et il définit des « certificats d'identité » tels que l'appartenance à un groupe ou des « tickets » kerberos.
  • Le mécanisme password fournit une seule primitive : il permet de mettre à jour le jeton d'authentification (en général un mot de passe), soit parce qu'il a expiré, soit parce que l'utilisateur souhaite le modifier.
  • Le mécanisme session fournit deux primitives : mise en place et fermeture de la session. Il est activé une fois qu'un utilisateur a été autorisé afin de lui permettre d'utiliser son compte. Il lui fournit certaines ressources et certains services, par exemple en montant son répertoire personnel, en rendant sa boîte aux lettres disponible, en lançant un agent ssh, etc.

  • Le format de configuration suit le modèle suivant:
    action prioritè_de_traitement module

    Par exemple, si on veut interdire le ftp à certains utilisateurs, vous pouvez configurer le fichier /etc/pam.d/ftpd tel que:
    # # deny ftp-access to users listed in the /etc/ftpusers file # auth required pam_listfile.so onerr=succeed item=user sense=deny file=/etc/ftpusers

    Le fichier /etc/ftpusers énumère les utilisateurs impactés par la règle. Une autre méthode consiste à paramétrer le fichier /etc/pam.d/pam.conf, il faudra préciser le nom du service en début de format de configuration.

    2)La gestion des utilisateurs, droits et des groupes

    2.1)La gestion des utilisateurs

    Voyons les commandes de gestion des utilisateurs sous Linux.
  • chpasswd : pour changer le mot de passe,
  • useradd : pour ajouter un utilisateur,
  • userdel user : pour supprimer un utilisateur,
  • usermod : pour modifier un compte Linux à posteriori.

  • Exemple: useradd doritique -d /home/doritique
    Créé le compte doritique (il suffit de regarder la fin du fichier /etc/passwd) et positionne son répertoire home.

    2.2)La gestion des groupes

    Le partage des données sur Unix se fait par un système d'inclusion de groupes. Linux définit deux fichiers comme pour les mot de passe avec le même mode de fonctionnement:
  • /etc/group : groupe:motdepasse:gid:membre1,membre2...
  • /etc/gshadow : motdepasse:admindugroupe:membres

  • La commande pour créer un groupe est groupadd groupe et pour le supprimer groupdel groupe .
    Voici un exemple de liste de commande Linux pour créer un répertoire avec des droits sur usager avec héritage:
    mkdir /home/partage : création du répertoire groupadd partage : création du groupe chown :partage /home/partage : application du groupe sur le répertoire chmod u+rw,g+w,o-rx /home/partage : modification des droits u:user, g:group et o:others usermod -G partage -a doritique : ajoute l'utilisateur doritique au groupe partage chmod g+s /home/partage/ : applique l'héritage des droits sur le répertoire (c'est le droit s qui se rajoute au rwx du ls -l soit rwxs)

    Conclusion

    Voila vous avez les bases pour sécuriser votre machine Linux. N'oubliez pas de mettre des règles de firewall pour limiter les accès extérieures et de n'ouvrir que les services nécessaires. Enfin, le mieux reste d'appliquer les correctifs de sécurité de votre distribution.






    Pseudonyme (obligatoire) :
    Adresse mail (obligatoire) :
    Site web :




    © 2017 www.doritique.fr par Robert DORIGNY