Documentación de Wardterm

Avisos antes de los comandos arriesgados

Qué comandos arriesgados detecta Wardterm antes de que se ejecuten en producción: borrados, discos, acceso perdido, bases de datos, contenedores y nube.

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/passwd o /etc/fstab.
  • Discos: dd, mkfs, wipefs, tablas de particiones, LVM y ZFS, diskutil eraseDisk en macOS, Format-Volume y clean en 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_keys eliminado, bloqueo de la cuenta que usas.
  • Energía: apagado, reinicio, modo de rescate, Restart-Computer.
  • Bases de datos: DROP, TRUNCATE, DELETE y UPDATE sin WHERE, escritos en un prompt SQL o enviados con psql y mysql; borrados en MongoDB, FLUSHALL de Redis, peticiones HTTP DELETE.
  • 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 | sh o iwr | iex, y texto codificado ejecutado por un shell.
  • En servidores Windows: Remove-Item -Recurse -Force en 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.