10 puntos por xguru 2024-08-27 | Aún no hay comentarios. | Compartir por WhatsApp
  • Una herramienta que ejecuta comandos enviando paquetes UDP al servidor
  • Los comandos se configuran del lado del servidor, por lo que el cliente no define qué comando ejecutar, sino que solo selecciona uno de los ya existentes
  • Consta de 3 binarios
    • client: se ejecuta en la computadora y envía el paquete UDP
    • server: recibe el paquete UDP y verifica si es válido
    • commander: ejecuta el comando codificado en los datos del paquete UDP si es válido
  • Seguridad
    • Como se envía por UDP, el servidor no responde en absoluto: no es posible hacer escaneo de puertos
    • Los datos enviados del cliente al servidor se cifran usando RSA
    • El cliente solo define qué comando ejecutar y los comandos se almacenan en el servidor -> el cliente puede seleccionar un comando, pero no definirlo
    • Ejecutar el software del servidor con la menor cantidad posible de privilegios del sistema operativo
    • Todos los paquetes recibidos por el servidor se agregan a una lista de bloqueo para proteger contra replay
    • (WIP) Protección contra DoS

Ejemplo de uso: single packet authorization (SPA)

Para reforzar la seguridad del servidor, en lugar de bloquear SSH por completo, se puede adoptar un método que abre el puerto SSH brevemente y luego lo vuelve a cerrar

address = "0.0.0.0:8080"  # Dirección donde el servidor Ruroco queda escuchando (si no se usa systemd/ruroco.socket)  
config_dir = "/etc/ruroco/"  # Ruta donde se guardan los archivos de configuración  
  
[commands]  
# Abrir SSH (solo para la dirección IP desde la que llegó la solicitud)  
open_ssh = "ufw allow from $RUROCO_IP proto tcp to any port 22"   
# Cerrar SSH (solo para la dirección IP desde la que llegó la solicitud)  
close_ssh = "ufw delete allow from $RUROCO_IP proto tcp to any port 22"  
  • Configure Ruroco así en el servidor y luego ejecute el siguiente comando en el lado del cliente
    ruroco-client send --address host.domain:8080 --private-pem-path /path/to/ruroco_private.pem --command open_ssh --deadline 5
  • El servidor usa RSA para verificar si el cliente tiene permiso para ejecutar ese comando y luego ejecuta el comando definido bajo "open_ssh"
  • El argumento --deadline significa que el servidor debe iniciar el comando dentro de los 5 segundos posteriores a su ejecución
  • El acceso al puerto SSH se permite solo para la IP desde la que se envió el paquete UDP
  • Por supuesto, también se deben aplicar todas las demás medidas de hardening de seguridad, igual que cuando el puerto SSH está expuesto a internet
  • Se pueden definir tantos comandos como se quiera agregando más comandos al archivo de configuración

Aún no hay comentarios.

Aún no hay comentarios.