Blog

Trucs et astuces Linux

Julien-Aubin
Share Button

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 :

  1. Sauvegardez la liste de vos paquets avec la commande dpkg --get-selections > <fichier_de_votre_choix>
  2. 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
  3. 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 :

  1. Réinstallez votre système, et installez le package dselect.
  2. 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 dossier sources.list.d dans /etc/apt/sources.list.d, puis tapez sudo apt-get update.
  3. Montez votre support externe, et tapez sudo dpkg --set-selections < <le_fichier_contenant_la_liste_de_vos_packages>.
  4. 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, tapez sudo apt-get install linux-generic:amd64 et tout devrait rentrer dans l’ordre.
  5. 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 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.
  6. 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 :

JulienJulien
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.

Son Twitter - Son LinkedIn

Share Button

2 commentaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>