Cómo funciona
Pon Entorno en Producción en un servidor o un grupo. Antes de que una línea se ejecute ahí, Wardterm la lee. Si encuentra un comando arriesgado, dice qué hace y cuál es el paso seguro, y pregunta ¿Ejecutar en producción?. La misma revisión cubre un pegado, un comando guardado, un comando del Historial y un comando enviado a varios servidores.
Un aviso rojo es para lo que no se puede deshacer: un disco borrado, una base de datos eliminada, un servidor destruido, un servidor al que ya no llegas. Los demás piden una segunda mirada.
Qué detecta
- Archivos: borrados recursivos de carpetas del sistema, carpetas personales y datos de bases de datos,
rm -rf "$DIR/"*con una variable que puede estar vacía, carpetas del sistema movidas o abiertas a todos, sobrescritura de/etc/passwdo/etc/fstab. - Discos:
dd,mkfs,wipefs, tablas de particiones, LVM y ZFS,diskutil eraseDisken macOS,Format-Volumeycleanen diskpart en servidores Windows. - Quedarse fuera: reglas del firewall que bloquean SSH o descartan todo, servidor SSH parado o reiniciado sin probarlo,
sshd_config, sudoers o PAM editados a mano, red desactivada,authorized_keyseliminado, bloqueo de la cuenta que usas. - Energía: apagado, reinicio, modo de rescate,
Restart-Computer. - Bases de datos:
DROP,TRUNCATE,DELETEyUPDATEsinWHERE, escritos en un prompt SQL o enviados conpsqlymysql; borrados en MongoDB,FLUSHALLde Redis, peticiones HTTPDELETE. - Contenedores y nube: volúmenes y limpiezas de Docker,
kubectl delete,helm uninstall,terraform destroy, borrado de servidores, buckets y proyectos con las herramientas de AWS, Google Cloud, Azure y otras nubes. - Git: push forzados, borrado de ramas remotas,
reset --hard,clean -fdx. - Código de fuera: una descarga pasada a un shell, como
curl | shoiwr | iex, y texto codificado ejecutado por un shell. - En servidores Windows:
Remove-Item -Recurse -Forceen rutas del sistema, instantáneas y recuperación, claves de registro de la máquina, servicios y firewall.
Lee a través de sudo, ssh host '...', bash -c, xargs, find -exec, docker exec, powershell -Command y varios comandos en una línea, con las opciones juntas o separadas.
El paso seguro
Cada aviso dice qué puede salir mal y qué hacer antes. Antes de ufw enable sin una regla para SSH, permítelo:
ufw allow OpenSSH
Antes de reiniciar el servidor SSH tras un cambio en su configuración, pruébala, y deja abierta esta sesión mientras pruebas una nueva:
sshd -t && systemctl restart sshd
Los comandos de todos los días no dicen nada: rm file.txt, git push, DELETE ... WHERE id = 1 o systemctl restart nginx se ejecutan sin preguntas.
Qué no puede ver
Wardterm lee la línea que envías, no lo que el servidor hace con ella. Esto se ejecuta sin aviso:
- alias, funciones y scripts, como
./cleanup.sh; - atajos del historial que expande el shell, como
!!; - nombres y rutas creados al ejecutarse, como
$(echo rm)o una variable que contiene una ruta; - texto codificado o comprimido que no está en la propia línea;
- teclas escritas dentro de programas a pantalla completa, como un editor.
El aviso te da una segunda mirada. Las copias de seguridad y los permisos limitados en el servidor hacen el resto. Más información en la página sobre seguridad en producción.