Sécuriser sa machine Debian

De Ikoula Wiki
Révision datée du 20 octobre 2015 à 11:58 par Tallartazzola50781 (discussion | contributions) (Première version de la page. Peut être améliorer la partie PuTTYgen et IPTables ?)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Jump to navigation Jump to search

Introduction

Assurer la sécurité de sa machine est un point essentiel qui ne doit pas être sous-estimé sous peine de devenir la cible de diverses attaques. La puissance actuelle des ordinateurs rendant aujourd'hui des techniques d'intrusions comme l'attaque par force brute ou bruteforce très simple à mettre en oeuvre pour obtenir un accès administrateur à la machine cible en un temps réduit.

Vous trouverez sur cette page une liste non exhaustive de pistes afin de sécuriser votre serveur Debian sur différents points tels que le compte root, l'accès ssh, le pare-feu, etc...

Avertissement: Avant toute modification de vôtre système prévoyez toujours une sauvegarde de vos fichiers en cas de mauvaise manipulation.

Pré-requis

L'un des pré-requis essentiel à la sécurité de son serveur est de maintenir ses paquets dans leur version la plus à jour possible. Un nombre important de failles découvertes sont rapidement corrigées par les développeurs des paquets et applications concernées, dans la mesure du possible il faut toujours conserver son système à jour et ainsi éviter les failles de sécurité. Afin de conserver votre système Debian à jour, assurez-vous de posséder une liste des dépôts officiels à jour. Vous pourrez trouver une liste des dépôts disponibles chez Ikoula et les instructions d'installation à cette adresse.

L'accès root

Autoriser la connexion du compte root après la première utilisation n'est en général pas une bonne idée. En effet le compte root ou super-utilisateur possède un accès total à votre système.
Si une personne malveillante vient à gagner l'accès au compte super-utilisateur elle aura le contrôle total de votre machine.

La commande sudo

Afin de réduire les risques vous pouvez, par exemple, ajouter un utilisateur qui, au besoin, obtiendra les droits de notre super-utilisateur par l'utilisation de la commande sudo.

Il nous faut tout d'abord créer un nouvel utilisateur
 adduser votre_utilisateur

Remplissez ensuite les différents champs ainsi que le mot de passe qui, de préférence, sera composé de minuscules, majuscules et chiffres.

Nous allons maintenant installer sudo
 apt-get install sudo
Maintenant que notre utilisateur est créé et que sudo est installé il va devoir être dans le groupe sudo pour pouvoir utiliser la commande
 usermod -a -G sudo votre_utilisateur

A partir de maintenant notre utilisateur pourra, au besoin, faire précéder la commande souhaitée de sudo afin de l'exécuter avec les permissions du super-utilisateur.
Son mot de passe lui sera demandé avant d'exécuter toute commande.

 sudo cat /etc/password

Interdire le login root

Maintenant que nous disposons d'un autre utilisateur nous pouvons par exemple empêcher la connexion à notre système à partir du compte root.

Tout d'abord il vous faut éditer le fichier de configuration du service ssh
  vi /etc/ssh/sshd_config
Trouvez et éditez la ligne suivante dans votre fichier sshd_config, en modifiant le yes par no. Au besoin dé-commentez la ligne en supprimant le symbole #.
  PermitRootLogin no

N'oubliez pas ensuite de sauvegarder et de fermer le fichier de configuration.

Lorsque le service SSH sera relancé vos modifications prendront effet.
 systemctl restart ssh


Conseil: Nous vous conseillons de toujours garder le terminal SSH connecté en root pendant la durée des tests. En effet une mauvaise manipulation rendrait la connexion à votre système impossible.
L'ouverture d'un second terminal afin de tester la connexion et l'utilisation des modifications sur le nouvel utilisateur est donc recommandée.

L'accès SSH

Grâce aux solutions apportées précédemment notre système est déjà bien sécurisé, mais nous pouvons encore renforcer cette sécurité en mettant en place une authentification par fichier de clé.
Habituellement la connexion et l'authentification sur votre système s'effectue grâce à une paire login/mot de passe. Nous pouvons remplacer cette méthode qui n'est pas infaillible par une authentification par clé.
Une fois la modification mise en place lors de chaque nouvelle connexion le système va regarder si l'utilisateur qui tente de se connecter possède une clé valide et si cette-ci est bien autorisée à effectuer une connexion pour cet utilisateur.
Bien qu'aucune méthode ne soit infaillible l'authentification par fichier de clé requiert de la personne voulant s'introduire dans le système qu'elle possède ce fichier. Nous pouvons donc renforcer la sécurité par rapport à un mot de passe qui peut être deviné par brute force
Plusieurs inconvénients sont cependant présents lorsque cette méthode est choisie, en effet il est impératif de devoir posséder le fichier de clé quelque soit l'endroit de la connexion, par exemple entre des ordinateurs au travail et à la maison.
Vous devrez également ajouté manuellement chaque nouveau fichier de clé qui sera autorisé à accéder à votre système, dans le cas par exemple de l'ajout d'un nouvel utilisateur ou de l'accès d'une personne autorisée à votre système.

Générer une paire de clé

Windows

PuTTYgen sous Windows

Vous pouvez générer votre paire de clé depuis le logiciel PuTTYgen disponible sous Windows.

Linux

Sous linux vous pouvez taper la commande suivante :

 ssh-keygen

Copier une paire de clé

Lorsque la paire est générée nous devons à présent indiquer sur le serveur quelles sont les personnes autorisées à se connecter à notre nouvel utilisateur. Pour ce faire chaque utilisateur de notre système dispose d'un fichier ssh/authorized_keys présent dans son répertoire local.

Si vous êtes actuellement en train de générer la paire de clé sur votre système Debian vous pouvez utiliser la commande suivante afin de copier automatiquement la clé dans le fichier.
 ssh-copy-id votre_utilisateur@IP_VotreServeur
SInon vous pouvez manuellement ajouter votre clé publique au fichier des personnes autorisées

Si le dossier .ssh n'existe pas dans le dossier local de notre utilisateur nous devons le créer

mkdir .ssh
chmod 700 .ssh

Maintenant nous devons créer un fichier authorized_keys dans notre dossier .ssh

 vi .ssh/authorized_keys

# Nous ajoutons la ligne suivante
ssh-rsa AAAB3NzaC1yc2EAAAADAQaSdMTJXMy3MtlQhva+j9CgguyVbU3nCKneB+KjKiS/1rggpFmu3HbXBnWSUdf votre_utilisateur@machine.locale

On enregistre et on ferme le fichier.

Par mesure de sécurité restreignons l'accès à notre fichier
 chmod 600 .ssh/authorized_keys

A partir de maintenant notre utilisateur est autorisé à se connecter à la machine.


Pare-feu

L'utilisation d'un pare-feu est fortement recommandée pour la sécurisation de votre système.
IPTables est surement le plus connu des pare-feu logiciels disponible pour Debian.

Voici quelques commandes pratiques concernant le logiciel :

Installation d'iptables
 sudo apt-get install iptables
Lister les règles actuellement établies
 sudo iptables -L
Purger les règles établies
sudo iptables -F
sudo iptables -X
Ajouter une règle
# Autoriser les connexions entrantes sur le port 22 tcp
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Supprimer une règle
# Supprimer la règle n°2 de la catégorie OUTPUT
sudo iptables -D OUTPUT 2