Note : les commandes appliquées ici concernent principalement Ubuntu Linux ou les distributions à base Debian comme Mint. Toutefois vous trouverez facilement des équivalents pour RHEL ou autres.
Débloque les + belles offres tech en 10 mins
Dans cet article nous voyons quelques astuces qui permettent d’améliorer les performances ou la sécurité d’un système GNU/Linux. Il s’agit de configurations basées sur mon expérience, que je partage ici. Vous pouvez en trouver aussi un paquet sur ubuntu-fr.
Surveillance de vos disques durs
Un paquet très utile à installer pour surveiller vos disques durs est smartmontools. Ce dernier contient un certain nombre d’utilitaires pour monitorer l’état S.M.A.R.T. de vos disques durs. L’intérêt est de pouvoir prédire vos pannes en avance, et de sauvegarder vos données le cas échéant. Pour être tout à fait honnête l’outil n’est capable de prédire une panne de disque que dans un cas sur deux, alors, quoi qu’il en soit sauvegardez vos données !
Pour activer la surveillance S.M.A.R.T. de vos disques, éditez tout d’abord le fichier /etc/default/smartmontools, et décommentez la ligne start_smartd=yes
puis enregistrez le fichier. Vous pouvez ensuite redémarrer le service avec la commande sudo service smartmontools restart
.
Pour afficher l’état S.M.A.R.T. d’un disque, tapez la commande suivante : sudo smartctl -a /dev/sdX
, où X représente la lettre du disque dur que vous trouverez sous /dev/
.
Enfin, si vous avez un doute sur un disque, vous pouvez toujours lancer la commande sudo smartctl -t long /dev/sdX
, allez vous faire un resto et afficher le résultat du test avec la commande d’état vue ci-dessus.
Régler le SWAP
Par défaut, l’ordinateur commence à swapper à partir du moment où 40% de la RAM de votre système est utilisée. Si ce comportement est souhaitable dans le cas d’un serveur, dans le cas d’un PC de bureau on cherchera au contraire à swapper le plus tard possible.
Pour paramétrer le seuil de déclenchement du SWAP, il suffit d’éditer le fichier /proc/sys/vm/swappiness
comme expliqué ici, jusqu’à trouver la valeur qui vous convient. Une fois cette valeur trouvée, il vous suffit d’ajouter la ligne suivante à la fin du fichier /etc/sysctl.conf
: vm.swappiness=<votre_valeur>
. Pour un usage de bureau une valeur à 5% ou à 10% suffit largement.
Activer la compression de la RAM
Lors de la sortie de MacOS X 10.9 (Mavericks), Apple a vanté une nouvelle fonctionnalité appelée la compression de mémoire. Le système est en fait simple : plutôt que de mettre directement une page mémoire dans le SWAP quand le système arrive à court, on va d’abord la mettre dans une zone mémoire compressée, toujours en RAM. Ainsi le système n’aura plus besoin de swapper autant, du moins pendant un temps.
Eh bien vous savez quoi ? Ca existe depuis longtemps sous Linux. Il vous suffit d’installer le paquet zram-config
et de redémarrer, voilà c’est fait !
sudo pour les paranos
Par défaut, l’utilitaire sudo vous laisse une période de « grâce » durant laquelle vous pouvez tapez des commandes sudo sans avoir besoin de réentrer votre mot de passe. Cette situation peut être satisfaisante… ou pas, notamment si votre ordinateur est dans un lieu public où vous pourriez oublier de le verrouiller (pas bien…)
Pour résoudre le problème, il vous suffit de lancer la commande sudo visudo
, puis de localiser les lignes Defaults
. A la fin de ces lignes, ajouter le contenu suivant : Defaults timestamp_timeout = 0
. Sauvegardez, et sudo
vous demandera désormais votre mot de passe à chaque fois que vous entrerez une commande l’utilisant !
Ah et dernière chose : un compte avec les droits sudo doit être traité comme un compte root.
Configurer votre démon ssh de manière sécurisée
Par défaut, le serveur ssh que vous allez installer sur votre machine va écouter sur le port 22, et bien souvent autoriser directement les connexions en tant que root. Le problème est que de nombreux bots se basent sur ces caractéristiques pour tenter des attaques en force brute sur votre machine, que vous verrez très bien en scrutant le fichier /var/log/auth.log/
.
La première chose à faire pour sortir de là est de vous créer un utilisateur avec des droits restreints, c’est à dire un compte qui ne soit pas root et qui n’ait pas non plus les droits sudo. Appelons user_ssh
.
La configuration de votre serveur ssh se trouve dans le fichier /etc/ssh/sshd_config
. Editez-le, et cherchez tout d’abord la ligne Port 22
. Celle-ci dit au serveur d’écouter sur le port 22. Changez cette valeur par une de votre choix, qui soit comprise dans l’intervalle [1024 – 65535] afin d’éviter d’interférer avec d’autres services existants, et voilà, votre serveur écoutera sur un autre port. A noter que vous pouvez déclarer plusieurs lignes Port
, et dans ce cas votre démon ssh écoutera sur plusieurs ports différents.
Ensuite, il faut empêcher les connexions root. Pour ce faire, c’est très simple, cherchez la ligne PermitRootLogin yes
et changez-la en PermitRootLogin no
.
Puis, pour limiter les attaques en force brute, ajoutez la ligne suivante : MaxStartups 10:70:15
. Elle signifie qu’au bout de 10 connexions concurrentes non authentifiées, le démon ssh va refuser 70% des nouvelles connexions entrantes, et cette valeur va augmenter linéairement jusqu’à 100% à partir de 15 connexions concurrentes. Pratique pour ralentir les bots !
Enfin, pour restreindre la possibilité de se connecter à un utilisateur donné, ici user_ssh
, ajoutez la ligne suivante dans votre fichier : AllowUsers user_ssh
. Vous pouvez créer autant de ligne AllowUsers
qu’il y a d’utilisateurs que vous souhaitez voir pouvoir se connecter. L’intérêt est que là encore seuls les utilisateurs explicitement autorisés à se connecter par SSH pourront le faire, et pas les autres, réduisant d’autant la surface d’attaque de votre démon ssh.
Après vous pourrez autoriser uniquement la connexion par clef avec mot de passe, mais là c’est une autre histoire.
Configurer un firewall
GNU/Linux possède un module très puissant de filtrage des paquets réseau appelé NetFilter. Ce dernier accepte par défaut tous les paquets entrants et sortants, néanmoins on peut le configurer. L’utilitaire par défaut pour le faire est iptables
, mais il n’est pas vraiment convivial. Il existe des frontends plus faciles à utiliser tels que shorewall ou encore ufw. J’avoue que le premier est mon préféré, probablement parce que j’ai commencé avec, mais ce n’est pas forcément le plus convivial. Pour le second, il existe en particulier une interface graphique, gufw
, rendant nettement plus conviviale sa configuration. Quoiqu’il en soit ces deux utilitaires ne sont que des surcouches d’iptablessudo iptables -L
.
Sauvegarder et restaurer votre système
Sauvegarder un système GNU/Linux est bien souvent nettement plus simple qu’un système Windows. Dans bien des cas toutes les données utilisateur sont dans /home. Attention, si vous utilisez des applications de type bases de données notamment, veillez à noter les chemins où se trouvent les données de vos bases, et à les arrêter avant de faire la manip, le mieux étant de demander à l’administrateur de votre machine de le faire pour vous.
Les étapes sont donc les suivantes :
- Sauvegardez la liste de vos paquets avec la commande
dpkg --get-selections > <fichier_de_votre_choix>
- Puis sauvegardez le contenu de votre dossier /etc avec un utilisateur ayant les droits sudo ou root :
sudo tar zcf <fichier_de_votre_choix.tgz> /etc
- Puis pour chaque utilisateur, connectez vous en tant que cet utilisateur, positionnez-vous dans /home et tapez
tar zcf <le_fichier_de_votre_choix.tgz> <nom_du_user>
Ne reste qu’à copier les fichiers ainsi créés sur un support externe et surtout le faire régulièrement. Pour ma part je grave un DVD par mois, oui je sais le DVD c’est has been mais ça marche encore bien. :p
Maintenant pour restaurer, en partant du principe que vous utilisez la même version de la distribution que celle que vous avez sauvegardée :
- Réinstallez votre système, et installez le package
dselect
. - Décompressez votre archive de votre vieux /etc dans /tmp, et recopiez le fichier
sources.list
dans/etc/apt
, et le contenu de votre ancien dossiersources.list.d
dans/etc/apt/sources.list.d
, puis tapezsudo apt-get update
. - Montez votre support externe, et tapez
sudo dpkg --set-selections < <le_fichier_contenant_la_liste_de_vos_packages>
. - Tapez
sudo apt-get dselect-upgrade
et allez prendre un bon café, cette commande s’occupant de restaurer tous vos paquets précédemment installés. A la fin, vérifiez en particulier les paquets désinstallés par cette commande pour les réinstaller si besoin, et si vous êtes en 64 bits que la commande ne vous a pas installé à la place un kernel 32 bits. Si c’est le cas, tapezsudo apt-get install linux-generic:amd64
et tout devrait rentrer dans l’ordre. - Ensuite restaurez les fichiers qui vous intéressent dans /etc depuis votre archive. Pour ma part il y a notamment la configuration ssh, la configuration shorewall, la configuration réseau
/etc/network/interfaces
et mon fichierbash.bashrc
car j’y ai mis des alias. Parmis les fichiers à ne pas restaurer mais dans lequels vous pouvez pomper des infos :/etc/fstab
,/etc/passwd
,/etc/shadow
,/etc/group
le répertoire/etc/udev
, et plus généralement ce qui est réellement dépendant de l’installation courante du système et pour lequel une version du fichier provenant d’une autre install pourrait mettre le bazar. - Recréez vos utilisateurs en les réaffectants aux bons groupes (pour ce faire, lisez le contenu de votre ancien fichier etc/group), et restaurez leurs archives de comptes utilisateurs dans /home. Au besoin faites un
chown -R
sur chacun des répertoires ainsi restaurez pour redéfinir les droits.
Débloque les + belles offres tech en 10 mins
Cet article vous a plu ? Vous aimerez sûrement aussi :
- Réparer le mode veille sur un PC Linux avec chipset NForce
- Réparer l’erreur 0×80070002 du Windows Store
- Trucs et astuces pour les tests de charge
- La sécurisation d’applis web
Julien
Moi c’est Julien, ingénieur en informatique avec quelques années d’expérience. Je suis tombé dans la marmite étant petit, mon père avait acheté un Apple – avant même ma naissance (oui ça date !). Et maintenant je me passionne essentiellement pour tout ce qui est du monde Java et du système, les OS open source en particulier.
Au quotidien, je suis devops, bref je fais du dév, je discute avec les opérationnels, et je fais du conseil auprès des clients.
Oui, merci pour le lien. Il y a aussi un paquet d’autres sites dont http://www.lea-linux.org, http://developpez.com et tout ça. Le problème est qu’un certain nombre d’entre eux ne fournissent que des recettes qu’on trouve dans les manpages et les tutoriaux, cela dit ils sont loin d’être inutiles. Donc tout site qui reflèterait le fruit d’années d’expérience est le bienvenu ! 🙂
Bonjour,
Merci pour ces astuces, elles peuvent toujours servir 😉
J’ai aussi un petit pense-bête pour Linux/Unix par ici : http://pierreau.fr/pro/Historique.php
Ou plus précisément par là : http://pierreau.fr/pro/Historique/Linux.pdf
Bonne lecture 😉