Comment ça marche
Réglez Environnement sur Production pour un serveur ou un groupe. Avant qu'une ligne s'y exécute, Wardterm la lit. S'il trouve une commande risquée, il dit ce qu'elle fait et le geste sûr, et demande Exécuter en production ?. Le même contrôle couvre un collage, une commande enregistrée, une commande de l'historique et une commande envoyée à plusieurs serveurs.
Une alerte rouge concerne ce qui ne se défait pas : un disque effacé, une base supprimée, un serveur détruit, un serveur que vous ne pouvez plus joindre. Les autres demandent un second regard.
Ce qu'il repère
- Fichiers : suppressions récursives de dossiers système, de dossiers personnels et de données de bases,
rm -rf "$DIR/"*avec une variable qui peut être vide, dossiers système déplacés ou ouverts à tous, écrasement de/etc/passwdou/etc/fstab. - Disques :
dd,mkfs,wipefs, tables de partitions, LVM et ZFS,diskutil eraseDisksur macOS,Format-Volumeetcleandans diskpart sur les serveurs Windows. - Rester dehors : règles de pare-feu qui bloquent SSH ou rejettent tout, serveur SSH arrêté ou redémarré sans test,
sshd_config, sudoers ou PAM modifiés à la main, réseau coupé,authorized_keyssupprimé, verrouillage du compte que vous utilisez. - Alimentation : arrêt, redémarrage, mode de secours,
Restart-Computer. - Bases de données :
DROP,TRUNCATE,DELETEetUPDATEsansWHERE, tapés dans une invite SQL ou envoyés avecpsqletmysql; suppressions dans MongoDB,FLUSHALLde Redis, requêtes HTTPDELETE. - Conteneurs et cloud : volumes et nettoyages Docker,
kubectl delete,helm uninstall,terraform destroy, suppression de serveurs, buckets et projets avec les outils d'AWS, Google Cloud, Azure et d'autres clouds. - Git : push forcés, suppression de branches distantes,
reset --hard,clean -fdx. - Code venu d'ailleurs : un téléchargement envoyé à un shell, comme
curl | shouiwr | iex, et du texte encodé exécuté par un shell. - Sur les serveurs Windows :
Remove-Item -Recurse -Forcesur des chemins système, clichés instantanés et récupération, clés de registre de la machine, services et pare-feu.
Il lit à travers sudo, ssh host '...', bash -c, xargs, find -exec, docker exec, powershell -Command et plusieurs commandes sur une ligne, avec les options écrites ensemble ou séparées.
Le geste sûr
Chaque alerte dit ce qui peut mal tourner et ce qu'il faut faire d'abord. Avant ufw enable sans règle pour SSH, autorisez-le :
ufw allow OpenSSH
Avant de redémarrer le serveur SSH après un changement de sa configuration, testez-la, et gardez cette session ouverte pendant que vous en essayez une nouvelle :
sshd -t && systemctl restart sshd
Les commandes de tous les jours restent silencieuses : rm file.txt, git push, DELETE ... WHERE id = 1 ou systemctl restart nginx s'exécutent sans question.
Ce qu'il ne peut pas voir
Wardterm lit la ligne que vous envoyez, pas ce que le serveur en fait. Ceci s'exécute sans alerte :
- les alias, fonctions et scripts, comme
./cleanup.sh; - les raccourcis d'historique que le shell développe, comme
!!; - les noms et chemins construits à l'exécution, comme
$(echo rm)ou une variable qui contient un chemin ; - le texte encodé ou compressé qui n'est pas dans la ligne elle-même ;
- les touches tapées dans des programmes plein écran, comme un éditeur.
L'alerte vous donne un second regard. Les sauvegardes et des permissions limitées sur le serveur font le reste. Pour en savoir plus, voir la page sur la sécurité en production.