Agente e historial de accesos SSH
El agente de Zenavo
La configuración instala el agente de Zenavo en cada servidor, en su propio espacio de nombres zenavo-system. El agente conecta hacia fuera con el plano de control por HTTPS y lleva las peticiones de Kubernetes del plano de control al clúster local: despliegues, registros, terminales, archivos y comprobaciones de estado. Como la conexión sale del servidor, no hay que abrir ningún puerto para Zenavo, y Zenavo no guarda ninguna credencial del clúster. Lo que el agente puede y no puede hacer está en Cortafuegos y seguridad.
La pestaña Server Info del servidor muestra si el agente está conectado, y Connects through muestra si llega al plano de control directamente o a través de uno de los relés de Zenavo. Un servidor cuyo agente deja de responder aparece como Offline a los pocos minutos; sus proyectos siguen funcionando (Gestionar un servidor).
Actualizar el agente
Settings muestra la versión del agente. Cuando hay una más nueva, un administrador del equipo hace clic en Update agent. El agente se actualiza a sí mismo a la imagen del agente de Zenavo, fijada por su digest; no hace falta SSH ni volver a configurar. El agente actual sigue funcionando hasta que el nuevo se conecta, así que no se interrumpe nada. Si la actualización no termina, el ajuste lo indica y enlaza al registro de la tarea.
Una actualización puede empezar cuando el servidor está en marcha y no hay otra tarea en curso en él.
Servidores añadidos antes del agente
Los servidores añadidos antes de que existiera el agente se pasan a él automáticamente. Settings → Connection muestra el estado e inicia el cambio en el momento (Servidores añadidos antes del agente). Las funciones que necesitan el agente, como el historial de accesos SSH, empiezan a funcionar tras el cambio.
Historial de accesos SSH
La pestaña SSH del servidor lista quién ha entrado en el servidor por SSH, para miembros del equipo y superiores:
- Source IPs: cada dirección que inició sesión, con su país y ciudad, los usuarios y métodos que usó (contraseña o clave), el número de accesos correctos e intentos fallidos, y cuándo se vio por primera y última vez. Las direcciones nuevas en el periodo aparecen marcadas como New.
- Time range: las últimas 24 horas, 7 días, 30 días o 90 días.
- Include failed login attempts: desactivado por defecto, así que la lista solo muestra las direcciones que entraron. Actívalo para ver también las que solo fallaron, que en su mayoría son escaneos de contraseñas de toda internet.
Zenavo envía un correo al equipo la primera vez que una dirección entra con éxito en uno de sus servidores: la notificación New SSH login source. Es normal si acabas de conectarte desde otra red; si no, es una señal de alarma. Los accesos de hace más de un día cuando Zenavo los ve por primera vez (por ejemplo, después de que el plano de control estuviera caído) no envían alerta.
Cómo se recoge
El agente no se ejecuta como root y no puede leer los registros del servidor, así que la configuración instala un pequeño recolector que sí puede. Un temporizador de systemd lo ejecuta como root cada cinco minutos. Solo lee las entradas nuevas de sshd del journal y guarda totales por hora por IP de origen, usuario y método de los últimos siete días, en un directorio que solo puede leer el grupo del agente. El agente nunca ve los registros en bruto, y el recolector no tiene acceso a la red ni envía nada por su cuenta.
El plano de control copia los totales a través del agente cada pocos minutos y los guarda 90 días. Las direcciones se ubican con una base de datos de ciudades sin conexión; nunca se envían a otro servicio. Una conexión cuenta una vez: como acceso si se aceptó, y si no, como un intento fallido. Los nombres de usuario que no son nombres normales se guardan como ?.
Si la pestaña dice que aún no hay informe, el servidor se configuró antes de que existiera el historial de accesos: Settings → Run setup instala el recolector. Los servidores a los que no se llega a través del agente no muestran historial hasta que se pasan a él.
API
| Método | Ruta | |
|---|---|---|
GET | /api/servers/{sid}/ssh-logins?hours=&failed= | Historial de accesos (miembros): hours es 24, 168, 720 o 2160 (168 por defecto); failed=1 también lista las direcciones que solo fallaron. Devuelve el estado del recolector (active, waiting o unsupported), los totales y una fila por IP de origen |
POST | /api/servers/{sid}/agent/update | Actualiza el agente a la imagen actual (administradores; devuelve una tarea) |
POST | /api/servers/{sid}/agent | Pasa ahora al agente un servidor añadido antes de que existiera (administradores; responde 202 con el servidor, y el cambio se ejecuta como una tarea) |