Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Durcir comptes, SSH et modes de fichier

Après cette leçon: Je peux trouver les comptes, les réglages SSH et les modes de fichier faibles d'un serveur, et les corriger.

Leçon de 55 min10 commandesLab d’administration Linux : utilisateurs, droits, cron et systemd dans le navigateur

Le compte que personne n'avait gardé en tête

Une petite boutique avait gardé le compte d'un fournisseur parti depuis un an. Il n'exigeait aucun mot de passe, et le serveur laissait root se connecter par le réseau.

Personne ne l'a attaqué. Un scan l'a trouvé le premier. La correction a pris cinq minutes, mais il fallait la faire dès le premier jour.

Cette leçon apprend à faire ce travail d'abord, avant que quelqu'un attaque.

À la fin de cette leçon

Remarque

Je peux trouver les comptes, les réglages SSH et les modes de fichier faibles d'un serveur, et les corriger.

Mots clés

MotCe que ça veut direExemple
Durcissementretirer ce dont un serveur n'a pas besoin, pour avoir moins à défendre
Compteun nom que le système laisse se connecter, avec ses propres droits
Mode de fichiertrois chiffres qui disent qui peut lire, écrire et lancer un fichier640
Modifiable par tousun fichier que tous les utilisateurs de la machine peuvent changer
SSHl'outil qui permet de se connecter à un serveur par le réseau
Réglageune ligne d'un fichier de configuration : un nom et une valeur

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Lister les comptes, puis demander qui s'en sert

On ne protège pas un compte qu'on ne connaît pas. Le durcissement commence donc par une liste.

Les personnes ordinaires ont un numéro de compte de 1000 ou plus, appelé UID. Root a l'UID 0, et lui seul doit l'avoir.

Lister les comptes ordinaires et leur shell

Commande
awk -F: '$3 >= 1000 && $3 < 65534 {print $1, $7}' /etc/passwd

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Quels comptes ont l'UID 0 ?

Commande
awk -F: '$3 == 0 {print $1}' /etc/passwd

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Lire les deux listes

Le premier Run écrit une ligne par compte ordinaire : son nom et son shell de connexion, par exemple /bin/bash. Demandez pour chaque ligne : une personne en a-t-elle encore besoin ?

Le second Run écrit un seul mot, root. Un second nom serait un second root, et une raison d'ouvrir un incident.

Un mode dit qui peut faire quoi

Chaque fichier a un mode de trois chiffres : le propriétaire, le groupe et tous les autres. Chaque chiffre ajoute 4 pour lire, 2 pour écrire et 1 pour lancer.

La liste des comptes est publique, tout le monde peut la lire. Le fichier des empreintes de mots de passe ne doit pas l'être.

Voir le mode de deux fichiers

Commande
stat -c '%a %U:%G %n' /etc/passwd /etc/shadow

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Compter les comptes sans mot de passe

Commande
sudo awk -F: '$2 == "" {print $1}' /etc/shadow | wc -l

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Exemple : ce que veulent dire quatre modes

ModePropriétaireGroupeTous les autres
644lire et écrirelirelire
640lire et écrirelirerien
2770lire, écrire et entrerlire, écrire et entrerrien
777touttouttout, donc modifiable par tous

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Ce que le terminal a écrit

Le Run stat a écrit deux lignes : 644 root:root /etc/passwd et 640 root:shadow /etc/shadow. Tout le monde peut lire la liste des comptes. Seuls root et le groupe shadow peuvent lire les empreintes.

Le Run de comptage a écrit 0. Tout autre nombre serait des comptes où l'on se connecte sans mot de passe.

La porte SSH et sa serrure : les réglages

Le serveur SSH lit un fichier de réglages. Trois de ses lignes décident de l'essentiel du risque. Root peut-il se connecter ? Un mot de passe est-il permis ? Un mot de passe vide l'est-il ?

Vous vous entraînez sur une copie dans votre dossier. Le vrai fichier n'est jamais touché, donc personne n'est enfermé dehors.

Écrire un fichier d'essai faible

Commande
printf 'PermitRootLogin yes\nPasswordAuthentication yes\nPermitEmptyPasswords no\n' > sshd-essai.conf

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Trouver les deux lignes faibles

Commande
grep -E '^(PermitRootLogin|PasswordAuthentication) yes' sshd-essai.conf

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Corriger les deux avec sed

Commande
sed -i 's/^PermitRootLogin yes/PermitRootLogin no/; s/^PasswordAuthentication yes/PasswordAuthentication no/' sshd-essai.conf

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Revoir le fichier

Commande
grep -E '^(PermitRootLogin|PasswordAuthentication)' sshd-essai.conf

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Pourquoi la première valeur compte

Le premier Run du groupe a trouvé deux lignes. Après la correction, les deux disent no. On se connecte alors avec une clé, pas avec un mot de passe, et personne ne se connecte en root.

Encore une règle : le serveur SSH utilise la première valeur qu'il trouve pour un réglage. Une ligne faible au-dessus d'une ligne sûre l'emporte.

Voir quelle ligne compte

Commande
printf 'PermitRootLogin no\nPermitRootLogin yes\n' | grep -m1 '^PermitRootLogin'

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Une erreur fréquente

Attention

Beaucoup de gens pensent que la dernière ligne d'un fichier de réglages gagne, et ajoutent la ligne sûre en bas. Pour le serveur SSH, la première gagne, et la ligne faible du dessus reste en vigueur. Modifiez la ligne qui existe. N'en ajoutez pas une seconde.

Supprimer le fichier d'essai

Commande
rm sshd-essai.conf

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Aller plus loin : le dossier du labo

Quand vous aurez fini la tâche 2 du labo, lancez ls -ld /srv/projects et stat -c '%a %U:%G %n' /srv/projects. Dites en une phrase qui peut y entrer, et quel chiffre tient tous les autres dehors.

La vérification du labo note l'utilisateur, le dossier, la tâche cron et le service. Elle ne note pas cette leçon. Le devoir ci-dessus est sa tâche vérifiée.

À propos de ce labo et de sa source: Lab d’administration Linux : utilisateurs, droits, cron et systemd dans le navigateur

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.