Les systèmes Linux sont sécurisés par conception et fournissent des outils d'administration robustes. Mais aussi bien conçu qu'un système soit, sa sécurité dépend de l'utilisateur.
Les débutants mettent souvent des années à trouver les meilleures politiques de sécurité pour leurs machines. C'est pourquoi nous partageons ces conseils essentiels de durcissement Linux pour les nouveaux utilisateurs comme vous. Essayez-les.
Les mots de passe sont la principale méthode d'authentification pour la plupart des systèmes. Que vous soyez un utilisateur à domicile ou un professionnel, l'application de mots de passe solides est indispensable. Tout d'abord, désactivez les mots de passe vides. Vous ne croirez pas combien de personnes les utilisent encore.
awk -F :'($2 =="") {print}' /etc/shadow
Exécutez la commande ci-dessus en tant que root pour voir quels comptes ont des mots de passe vides. Si vous trouvez quelqu'un avec un mot de passe vide, verrouillez l'utilisateur immédiatement. Vous pouvez le faire en utilisant ce qui suit.
passwd -l USERNAME
Vous pouvez également configurer le vieillissement du mot de passe pour vous assurer que les utilisateurs ne peuvent pas utiliser d'anciens mots de passe. Utilisez la commande chage pour le faire depuis votre terminal.
chage -l USERNAME
Cette commande affiche la date d'expiration actuelle. Pour définir l'expiration du mot de passe après 30 jours, utilisez la commande ci-dessous. Les utilisateurs peuvent utiliser les gestionnaires de mots de passe Linux pour sécuriser les comptes en ligne.
chage -M 30 USERNAME
Si vous êtes sérieux au sujet de vos données, configurez des sauvegardes régulières. De cette façon, même si votre système tombe en panne, vous pouvez récupérer les données rapidement. Mais, choisir la bonne méthode de sauvegarde est crucial pour le durcissement de Linux.
Si vous êtes un utilisateur à domicile, le clonage des données sur un disque dur peut suffire. Cependant, les entreprises ont besoin de systèmes de sauvegarde sophistiqués offrant une récupération rapide.
Linux prend en charge de nombreuses méthodes de communication à distance. Cependant, les services Unix hérités tels que telnet, rlogin et ftp peuvent poser de sérieux problèmes de sécurité. Alors, essayez de les éviter. Vous pouvez les supprimer complètement pour réduire les problèmes de sécurité qui leur sont associés.
apt-get --purge remove xinetd nis tftpd tftpd-hpa telnetd \
> rsh-server rsh-redone-server
Cette commande supprime certains services largement utilisés mais obsolètes des machines Ubuntu/Debian. Si vous utilisez un système basé sur RPM, utilisez plutôt ce qui suit.
yum erase xinetd ypserv tftp-server telnet-server rsh-server
Le protocole SSH est la méthode de communication à distance recommandée pour Linux. Assurez-vous de sécuriser la configuration de votre serveur OpenSSH (sshd). Vous pouvez en savoir plus sur la configuration d'un serveur SSH ici.
Modifiez le fichier /etc/ssh/sshd_config fichier pour définir les politiques de sécurité pour ssh. Vous trouverez ci-dessous quelques règles de sécurité courantes que tout le monde peut utiliser.
PermitRootLogin no # désactive la connexion root
MaxAuthTries 3 # limite les tentatives d'authentification
PasswordAuthentication non # désactive l'authentification par mot de passe
PermitEmptyPasswords no # désactive les mots de passe vides
X11Forwarding no # désactive la transmission de l'interface graphique
DebianBanner no # disbale la bannière verbeuse
AllowUsers *@XXX.X.XXX.0/24 # restreindre les utilisateurs à une plage IP
CRON est un planificateur de tâches robuste pour Linux. Il permet aux administrateurs de planifier des tâches sous Linux à l'aide de la crontab. Il est donc crucial de limiter les personnes autorisées à exécuter des tâches CRON. Vous pouvez trouver tous les cronjobs actifs pour un utilisateur en utilisant la commande suivante.
crontab -l -u USERNAME
Vérifiez les tâches de chaque utilisateur pour savoir si quelqu'un exploite CRON. Vous voudrez peut-être empêcher tous les utilisateurs d'utiliser crontab sauf vous. Exécutez la commande suivante pour cela.
echo $(whoami)>> /etc/cron.d/cron.allow
# echo ALL>> /etc/cron.d/cron.deny
Linux PAM (Pluggable Authentication Modules) offre de puissantes fonctionnalités d'authentification pour les applications et les services. Vous pouvez utiliser diverses politiques PAM pour sécuriser la connexion au système. Par exemple, les commandes ci-dessous limitent la réutilisation des mots de passe.
# CentOS/RHEL
echo 'mot de passe suffisant pam_unix.so use_authtok md5 shadow Remember=5'>> \
> /etc/pam.d/system-auth
#Ubuntu/Debian
echo 'mot de passe suffisant pam_unix.so use_authtok md5 shadow Remember=5'>> \
> /etc/pam.d/common-password
Ils limitent l'utilisation des mots de passe qui ont été utilisés au cours des cinq dernières semaines. Il existe de nombreuses autres politiques PAM qui fournissent des couches de sécurité supplémentaires.
La suppression des packages inutilisés réduit la surface d'attaque sur votre machine. Nous vous recommandons donc de supprimer les packages rarement utilisés. Vous pouvez afficher tous les packages actuellement installés à l'aide des commandes ci-dessous.
liste yum installée # CentOS/RHEL
apt list --installed # Ubuntu/Debian
Supposons que vous souhaitiez supprimer le package inutilisé vlc. Vous pouvez le faire en exécutant les commandes suivantes en tant que root.
yum supprimer vlc # CentOS/RHEL
apt supprimer vlc # Ubuntu/Debian
Un autre moyen efficace de renforcer Linux consiste à sécuriser les paramètres du noyau. Vous pouvez configurer ces paramètres en utilisant sysctl ou en modifiant le fichier de configuration. Vous trouverez ci-dessous quelques configurations courantes.
kernel.randomize_va_space=2 # base d'adresse aléatoire pour mmap, tas et pile
kernel.panic=10 # redémarrage après 10 secondes suite à une panique du noyau
net.ipv4.icmp_ignore_bogus_error_responses # protège les mauvais messages d'erreur
net.ipv4.ip_forward=0 # désactive le transfert IP
net.ipv4.icmp_ignore_bogus_error_responses=1 # ignore les erreurs ICP
Ce ne sont que quelques configurations de base. Vous apprendrez différentes manières de configurer le noyau avec l'expérience.
Les noyaux Linux fournissent des méthodes de filtrage robustes pour les paquets réseau via son API Netfilter. Vous pouvez utiliser iptables pour interagir avec cette API et configurer des filtres personnalisés pour les requêtes réseau. Vous trouverez ci-dessous quelques règles iptables de base pour les utilisateurs soucieux de la sécurité.
-A INPUT -j REJECT # rejeter toutes les requêtes entrantes
-A FORWARD -j REJECT # rejeter le transfert de trafic
-A ENTRÉE -i lo -j ACCEPTER
-A OUTPUT -o lo -j ACCEPT # autoriser le trafic sur l'hôte local
# autoriser les requêtes ping
-A OUTPUT -p icmp -j ACCEPT # autoriser les pings sortants
# autoriser les connexions établies/associées
-A ENTRÉE -m état --état ÉTABLI, CONNEXE -j ACCEPTER
-A SORTIE -m état --état ÉTABLI, CONNEXE -j ACCEPTER
# autoriser les recherches DNS
-A SORTIE -p udp -m udp --dport 53 -j ACCEPTER
# autoriser les requêtes http/https
-A SORTIE -p tcp -m tcp --dport 80 -m état --état NOUVEAU -j ACCEPTER
-A SORTIE -p tcp -m tcp --dport 443 -m état --état NOUVEAU -j ACCEPTER
# autoriser l'accès SSH
-A ENTRÉE -p tcp -m tcp --dport 22 -j ACCEPTER
-A SORTIE -p tcp -m tcp --dport 22 -j ACCEPTER
Vous pouvez utiliser les journaux pour mieux comprendre votre machine Linux. Votre système stocke plusieurs fichiers journaux pour les applications et les services. Nous décrivons ici les éléments essentiels.
Sécuriser un système Linux n'est pas aussi difficile que vous le pensez. Vous pouvez renforcer la sécurité en suivant certains des conseils mentionnés dans ce guide. Vous maîtriserez d'autres moyens de sécuriser Linux au fur et à mesure que vous acquerrez de l'expérience.