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.
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.
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.
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 !
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.
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.
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 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 :
dpkg --get-selections > <fichier_de_votre_choix>
sudo tar zcf <fichier_de_votre_choix.tgz> /etc
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 :
dselect
.sources.list
dans /etc/apt
, et le contenu de votre ancien dossier sources.list.d
dans /etc/apt/sources.list.d
, puis tapez sudo apt-get update
.sudo dpkg --set-selections < <le_fichier_contenant_la_liste_de_vos_packages>
.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, tapez sudo apt-get install linux-generic:amd64
et tout devrait rentrer dans l’ordre./etc/network/interfaces
et mon fichier bash.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.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 :
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.
Les maladies inflammatoires chroniques de l’intestin ou "MICI" sont invisibles, mais leurs impacts sur la…
Depuis l'été, j'ai un Pixel qui intègre à la fois un TPU (Tensor Processing Unit)…
On se retrouve dans un nouvel article avec toutes les infos sur cette nouvelle saison…
Pourquoi l’inclusion numérique est essentielle : le point avec Mathieu Froidure. Dans un monde de…
Elles sont passées où les femmes dans la tech ? Entre le manque de représentation…
View Comments
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 ;-)