Sécuriser sa machine Debian
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...
Sur un serveur de production, pensez à effectuer ces opérations pendant les heures creuses afin de minimiser l'impact de vos actions.
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
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.
Changer le port par défaut
L'un des moyens les plus efficace pour arrêter les tests automatiques lancés contre les serveurs est de changer le port par défaut de SSH sur votre machine. Pour ce faire éditez votre fichier sshd_config
vi /etc/ssh/sshd_config
- Trouvez et éditez la ligne suivante du fichier en remplaçant la valeur par celle choisie
# What ports, IPs and protocols we listen for
Port 22
- Redémarrez le service SSH
/etc/init.d/ssh restart
Générer une paire de clé
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
- On ajoute ensuite la clé publique au fichier, le résultat doit être semblable à cet exemple
ssh-rsa AAAB3NzaC1yc2EAAAADAQaSdMTJXMy3MtlQhva+j9CgguyVbU3nCKneB+KjKiS/1rggpFmu3HbXBnWSUdf votre_utilisateur@machine.locale
On enregistre et on ferme le fichier.
- Par mesure de sécurité nous allons restreindre 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 depuis l'adresse ip 10.0.0.1 par exemple
sudo iptables -A INPUT -p tcp --dport 22 -s 10.0.0.1 -j ACCEPT
- Supprimer une règle
# Supprimer la règle n°2 de la catégorie OUTPUT
sudo iptables -D OUTPUT 2