docs: review security documentation in all seven translations

This commit is contained in:
Jonatan
2026-10-17 15:08:54 +02:00
parent ce1a3de719
commit a9241d7a6c
31 changed files with 3461 additions and 85 deletions
+17 -17
View File
@@ -1,30 +1,30 @@
{
"meta": {
"title": "Fail2Ban | ProxMenux Documentation",
"title": "Fail2Ban | Documentación de ProxMenux",
"description": "Instala Fail2Ban con tres jails afinados para Proxmox (SSH agresivo, Proxmox UI 8006, ProxMenux Monitor 8008). Incluye el arreglo de journald MaxLevelStore, servicios de log propios para fiabilidad, backend nftables/iptables autodetectado y hardening de SSH MaxAuthTries.",
"ogTitle": "Fail2Ban | ProxMenux Documentation",
"ogDescription": "Protección contra fuerza bruta para SSH y las UIs web de Proxmox, con arreglos específicos de journald y backend para Proxmox."
"ogTitle": "Fail2Ban | Documentación de ProxMenux",
"ogDescription": "Protección contra fuerza bruta para SSH y las interfaces web de Proxmox, con correcciones de journald y del backend específicas para Proxmox."
},
"header": {
"title": "Fail2Ban",
"description": "Instala Fail2Ban con una configuración específica para Proxmox: tres jails (SSH agresivo, Proxmox UI en puerto 8006, ProxMenux Monitor en puerto 8008 + proxy inverso), un arreglo del nivel de log de journald para que los eventos de autenticación SSH se almacenen de verdad, dos servicios logger journal-a-archivo que rodean un problema conocido del backend systemd de Fail2Ban, backend de firewall autodetectado y hardening de SSH MaxAuthTries.",
"description": "Instala Fail2Ban con configuración para Proxmox: tres jails (SSH agresivo, Proxmox en 8006 y ProxMenux Monitor en 8008 y proxy inverso), corrección del nivel de journald para guardar fallos SSH, dos servicios que copian el journal a archivos para evitar un problema del backend systemd de Fail2Ban, detección del backend de firewall y refuerzo SSH mediante MaxAuthTries.",
"section": "Seguridad"
},
"intro": {
"title": "Qué hace",
"body": "Instala Fail2Ban desde los repos de Debian y escribe una configuración completa afinada para Proxmox que protege tres superficies de ataque (SSH, Proxmox UI, ProxMenux Monitor) por defecto. Detecta una instalación existente y ofrece un menú de gestión (reinstalar / eliminar) en lugar de volver a ejecutar el instalador."
"body": "Instala Fail2Ban desde los repositorios Debian y escribe una configuración para Proxmox que protege SSH, Proxmox UI y ProxMenux Monitor desde el primer momento. Si detecta una instalación existente, ofrece un menú para reinstalar o eliminar."
},
"firstLaunch": {
"heading": "Diálogo de primer lanzamiento",
"body": "En un host sin Fail2Ban, el script muestra un diálogo de confirmación que resume todo lo que va a instalar y configurar. Cancelar sale sin cambios; confirmar arranca el flujo de instalación.",
"imageAlt": "Diálogo de confirmación de instalación de Fail2Ban listando los tres jails, el arreglo de journald y el hardening de SSH"
"body": "Sin Fail2Ban instalado, el script muestra un diálogo con lo que instalará y configurará. Cancelar termina sin cambios; confirmar inicia la instalación.",
"imageAlt": "Confirmación de instalación de Fail2Ban con las tres jails, corrección de journald y refuerzo SSH"
},
"jails": {
"heading": "Los tres jails",
"headerJail": "Jail",
"headerProtects": "Protege",
"headerRetries": "Reintentos / Ventana",
"headerBan": "Tiempo de ban",
"headerBan": "Tiempo de bloqueo",
"rows": [
{
"jail": "[sshd]",
@@ -49,12 +49,12 @@
},
"journald": {
"heading": "Por qué importa el arreglo de journald",
"intro": "Proxmox entrega <code>/etc/systemd/journald.conf</code> con <codeNw>MaxLevelStore=warning</codeNw>. journald descarta cada mensaje de log <em>por debajo</em> de warning antes de almacenarlo. SSH y PAM emiten fallos de autenticación a niveles <em>info</em> / <em>notice</em>, así que:",
"intro": "Proxmox incluye <code>/etc/systemd/journald.conf</code> con <codeNw>MaxLevelStore=warning</codeNw>. journald descarta los mensajes de nivel <em>inferior</em> a warning antes de guardarlos. SSH y PAM emiten fallos de autenticación en los niveles <em>info</em> / <em>notice</em>, por lo que:",
"diagram": {
"sshLabel": "SSH / PAM",
"sshDetail": "fallo de autenticación\n(nivel info / notice)",
"journaldLabel": "journald",
"journaldDetail": "MaxLevelStore=warning\n→ evento descartado en silencio",
"journaldDetail": "MaxLevelStore=warning\n→ evento descartado sin aviso",
"fail2banLabel": "Fail2Ban",
"fail2banDetail": "no ve nada\n→ nunca banea nada",
"arrowLabel": "Proxmox por defecto"
@@ -65,8 +65,8 @@
},
"loggers": {
"heading": "Por qué dos servicios logger propios",
"intro1": "Fail2Ban puede leer directamente del journal de systemd (<code>backend = systemd</code>), pero en Proxmox este backend tiene problemas conocidos de fiabilidad con los procesos worker de <code>pvedaemon</code> (los eventos de autenticación aparecen en el journal pero Fail2Ban no siempre los recoge) e intermitentemente con <code>sshd</code>.",
"intro2": "La solución alternativa: ProxMenux crea dos pequeños servicios systemd que hacen <code>journalctl -f</code> de las unidades relevantes y añaden cada línea a un archivo. Fail2Ban entonces lee esos archivos con el sólido como una roca <code>backend = auto</code> (modo archivo):",
"intro1": "Fail2Ban puede leer directamente el journal de systemd (<code>backend = systemd</code>), pero en Proxmox este backend presenta problemas de fiabilidad con procesos worker de <code>pvedaemon</code> (los eventos aparecen en el journal pero Fail2Ban no siempre los recoge) y ocasionalmente con <code>sshd</code>.",
"intro2": "ProxMenux crea dos pequeños servicios systemd que siguen las unidades correspondientes con <code>journalctl -f</code> y añaden cada línea a un archivo. Fail2Ban lee esos archivos con el fiable <code>backend = auto</code> (modo archivo):",
"headerService": "Servicio",
"headerSource": "Unidad origen",
"headerOutput": "Archivo de salida",
@@ -91,12 +91,12 @@
},
"hardening": {
"heading": "Hardening de SSH: MaxAuthTries",
"intro": "El control de Lynis <strong>SSH-7408</strong> recomienda <code>MaxAuthTries 3</code> en <code>sshd_config</code>. Con el <code>maxretry = 2</code> de Fail2Ban en el jail SSH, un cliente malicioso nunca llega a tres intentos de todas formas — pero el ajuste explícito satisface la auditoría y añade defensa en profundidad (p. ej. si Fail2Ban está parado por mantenimiento).",
"intro": "El control Lynis <strong>SSH-7408</strong> recomienda <code>MaxAuthTries 3</code> en <code>sshd_config</code>. La jail SSH usa <code>maxretry = 2</code> para bloquear tras fallos repetidos; MaxAuthTries limita los intentos dentro de una conexión. Este ajuste SSH añade defensa en profundidad, también cuando Fail2Ban está detenido por mantenimiento.",
"installerIntro": "El instalador:",
"items": [
"Lee el valor actual de <code>MaxAuthTries</code> (o por defecto 6 si está ausente).",
"Lo guarda en <code>/usr/local/share/proxmenux/sshd_maxauthtries_backup</code>.",
"Edita <code>sshd_config</code> en sitio — reemplaza la línea existente, descomenta la línea comentada o la añade.",
"Edita <code>sshd_config</code> directamente: sustituye la línea existente, descomenta la comentada o añade una nueva.",
"Recarga <code>sshd</code> (reload, no restart, para mantener vivas las sesiones existentes)."
],
"outro": "Al desinstalar, el valor original guardado se restaura y se recarga <code>sshd</code> otra vez."
@@ -109,7 +109,7 @@
"rows": [
{
"action": "Reinstalar",
"what": "Vuelve a ejecutar el instalador completo — reescribe todos los jails con los valores por defecto actuales de ProxMenux. Úsalo cuando una actualización de ProxMenux suba los valores recomendados."
"what": "Repite la instalación completa y reescribe todas las jails con los valores actuales de ProxMenux. Úsalo cuando una actualización cambie las recomendaciones."
},
{
"action": "Eliminar",
@@ -125,7 +125,7 @@
"troubleshoot": {
"heading": "Solución de problemas",
"neverBansTitle": "Fail2Ban corre pero nunca banea nada",
"neverBansBody": "Comprueba que los archivos de log de autenticación reciben entradas de verdad: <code>tail -f /var/log/ssh-auth.log</code> y prueba un intento SSH con contraseña incorrecta desde otra máquina. Si el log se queda vacío, el servicio logger no está corriendo: <code>systemctl status ssh-auth-logger.service</code>. Si está activo pero el log está vacío, comprueba que el drop-in de journald surtió efecto: <code>journalctl --dump-catalog | head</code> — eventos a nivel <em>info</em> deberían ser visibles.",
"neverBansBody": "Comprueba que <code>tail -f /var/log/ssh-auth.log</code> recibe una entrada tras intentar acceder por SSH con contraseña incorrecta desde otra máquina. Si sigue vacío, consulta <code>systemctl status ssh-auth-logger.service</code>. Si el logger está activo, mira los eventos SSH recientes con <code>journalctl -u ssh.service -n 50 --no-pager -p info</code> y comprueba que el drop-in de journald admite el nivel <em>info</em>.",
"monitorEmptyTitle": "El jail del Monitor de ProxMenux no tiene entradas ni siquiera tras logins fallidos",
"monitorEmptyBody": "El jail <code>[proxmenux]</code> lee <code>/var/log/proxmenux-auth.log</code>, que lo escribe la app Flask del Monitor de ProxMenux — no un logger de journald. Si no usas el Monitor, el archivo se queda vacío y el jail nunca dispara. Eso es lo esperado; la configuración del jail es inocua. Si sí usas el Monitor y el log está vacío, comprueba la configuración de logging de Flask.",
"selfBanTitle": "Me he baneado a mí mismo",
@@ -143,7 +143,7 @@
"related": {
"heading": "Relacionado",
"monitorLabel": "ProxMenux Monitor → pestaña de Seguridad",
"monitorTail": " — misma instalación accesible desde el panel, más estado en vivo de los jails, IPs baneadas y ajuste por jail de reintentos / tiempo de ban desde el navegador.",
"monitorTail": " — instalación desde el panel, estado de las jails en directo, IP bloqueadas y ajuste de reintentos y duración de bloqueo por jail desde el navegador.",
"lynisLabel": "Lynis",
"lynisTail": " — ejecuta una auditoría de seguridad antes/después para confirmar que el control SSH-7408 se satisface.",
"securityLabel": "Resumen de Seguridad",
+18 -18
View File
@@ -1,24 +1,24 @@
{
"meta": {
"title": "Seguridad de Proxmox — Fail2Ban, auditoría de hardening con Lynis | ProxMenux",
"description": "Dos herramientas de seguridad instalables para Proxmox VE: Fail2Ban (prevención de intrusiones para SSH, la UI web de Proxmox y el Monitor de ProxMenux) y Lynis (escáner de auditoría y hardening de seguridad instalado desde GitHub upstream).",
"ogTitle": "Seguridad de Proxmox — Fail2Ban, auditoría de hardening con Lynis",
"ogDescription": "Fail2Ban y Lynis para Proxmox VE — prevención de intrusiones más una auditoría de hardening instaladas y gestionadas por ProxMenux.",
"title": "Seguridad de Proxmox — Fail2Ban y auditoría de refuerzo con Lynis | ProxMenux",
"description": "Dos herramientas de seguridad para Proxmox VE: Fail2Ban (prevención de intrusiones para SSH, la interfaz web de Proxmox y ProxMenux Monitor) y Lynis (auditor de seguridad y refuerzo del sistema instalado desde el repositorio original en GitHub).",
"ogTitle": "Seguridad de Proxmox — Fail2Ban y auditoría de refuerzo con Lynis",
"ogDescription": "Fail2Ban y Lynis para Proxmox VE: prevención de intrusiones y auditoría de refuerzo, instaladas y gestionadas por ProxMenux.",
"twitterTitle": "Seguridad de Proxmox | ProxMenux",
"twitterDescription": "Fail2Ban y Lynis para Proxmox VE — prevención de intrusiones y auditoría de hardening."
"twitterDescription": "Fail2Ban y Lynis para Proxmox VE: prevención de intrusiones y auditoría de refuerzo."
},
"header": {
"title": "Seguridad",
"description": "Dos herramientas de seguridad complementarias para Proxmox VE: una defensa activa (Fail2Ban — banea IPs que atacan SSH o las UIs web) y una auditoría offline (Lynis — escanea el sistema en busca de huecos de hardening y da una puntuación 0–100). Ambas se instalan y gestionan mediante su propio menú dedicado, con detección de una instalación existente antes de cualquier acción.",
"description": "Dos herramientas complementarias para Proxmox VE: defensa activa (Fail2Ban bloquea IP que atacan SSH o las interfaces web) y auditoría local (Lynis busca carencias de seguridad y da una puntuación de 0 a 100). Cada una tiene su propio menú de instalación y gestión, que detecta instalaciones existentes antes de actuar.",
"section": "Seguridad"
},
"intro": {
"title": "Defensa activa vs. auditoría offline",
"body": "Estas dos herramientas responden a preguntas distintas. <strong>Fail2Ban</strong> responde a <em>\"¿hay algo atacándonos ahora mismo?\"</em> vigilando los logs de autenticación y baneando las IPs ofensoras. <strong>Lynis</strong> responde a <em>\"¿cómo de hardened está este host?\"</em> ejecutando una auditoría de un tirón e imprimiendo recomendaciones concretas. Úsalas juntas: Lynis te dice qué arreglar, Fail2Ban gestiona el abuso en vivo."
"title": "Defensa activa y auditoría local",
"body": "Responden a preguntas distintas. <strong>Fail2Ban</strong> contesta <em>«¿nos están atacando ahora?»</em> vigilando registros de autenticación y bloqueando las IP responsables. <strong>Lynis</strong> contesta <em>«¿qué nivel de refuerzo tiene este host?»</em> mediante una auditoría puntual con recomendaciones concretas. Usa ambas: Lynis indica qué mejorar y Fail2Ban responde a los ataques en curso."
},
"opening": {
"heading": "Abrir el menú",
"body": "Desde el menú principal de ProxMenux, selecciona <strong>Seguridad</strong>. Verás esto:",
"body": "Desde el menú principal de ProxMenux, selecciona <strong>Seguridad</strong>. Verás lo siguiente:",
"imageAlt": "Menú de Seguridad con opciones de Fail2Ban y Lynis"
},
"pick": {
@@ -28,7 +28,7 @@
"cards": {
"fail2ban": {
"title": "Fail2Ban",
"body": "Prevención de intrusiones activa. Vigila los logs de autenticación de SSH y las UIs web y banea IPs tras fallos repetidos.",
"body": "Prevención activa de intrusiones. Vigila los registros de autenticación de SSH y las interfaces web y bloquea IP tras fallos repetidos.",
"bullets": [
"Tres jails: SSH, Proxmox UI (8006), ProxMenux Monitor (8008)",
"Arregla los valores por defecto de journald de Proxmox que bloquean los logs de autenticación",
@@ -38,28 +38,28 @@
},
"lynis": {
"title": "Lynis",
"body": "Auditor de seguridad offline. Escanea el host e imprime una puntuación de hardening más pistas concretas de remediación.",
"body": "Auditor local de seguridad. Analiza el host y muestra una puntuación de refuerzo y recomendaciones concretas para corregir problemas.",
"bullets": [
"Instalado desde el GitHub upstream de CISOfy (siempre el último)",
"Puntuación de hardening 0–100 + lista de warnings y sugerencias",
"Acciones de ejecutar auditoría y actualizar dentro del menú",
"De solo lectura por diseño — nunca cambia el sistema"
"Instalado desde el repositorio original de CISOfy en GitHub (última versión)",
"Puntuación de refuerzo 0–100 y lista de advertencias y sugerencias",
"Acciones de auditoría y actualización desde el menú",
"De solo lectura: nunca modifica el sistema"
]
}
},
"workflowTip": {
"title": "Flujo de trabajo que usa ambos",
"body": "Ejecuta primero una auditoría de Lynis para ver tu puntuación de partida y las recomendaciones principales. Aplica los arreglos que quieras. Después instala Fail2Ban — implementa una de las recomendaciones más comunes de Lynis (protección contra fuerza bruta SSH) automáticamente y ajusta <code>MaxAuthTries</code> en <code>sshd_config</code> para satisfacer el control SSH-7408. Vuelve a ejecutar Lynis después para confirmar que la puntuación mejoró."
"body": "Ejecuta primero una auditoría Lynis para ver la puntuación inicial y las recomendaciones principales. Aplica las correcciones que elijas. Instala Fail2Ban: implementa automáticamente la protección contra fuerza bruta SSH y ajusta <code>MaxAuthTries</code> en <code>sshd_config</code> para cumplir el control SSH-7408. Vuelve a ejecutar Lynis para comprobar la mejora."
},
"fail2banSection": {
"heading": "Fail2Ban",
"body": "ProxMenux instala Fail2Ban con una configuración afinada específicamente para Proxmox. Más allá del jail estándar de SSH, añade protección para la UI web de Proxmox y el Monitor de ProxMenux, y rodea dos rarezas específicas de Proxmox: un valor por defecto de journald que descarta eventos de autenticación, y el problema del backend systemd que impide a Fail2Ban leer de forma fiable ciertas fuentes del journal. La página de detalle cubre el flujo de instalación completo, los tres jails, el arreglo de journald, el cambio de hardening SSH y la chuleta de solución de problemas.",
"optionTitle": "Fail2Ban — instalar y gestionar",
"optionDescription": "Tres jails preconfigurados (sshd agresivo, Proxmox UI puerto 8006, ProxMenux Monitor puerto 8008 + proxy inverso), backend nftables/iptables autodetectado, arreglo de journald y hardening de SSH MaxAuthTries."
"optionDescription": "Tres jails preconfiguradas (sshd agresivo, Proxmox en 8006, ProxMenux Monitor en 8008 y proxy inverso), detección de nftables/iptables, corrección de journald y refuerzo SSH mediante MaxAuthTries."
},
"lynisSection": {
"heading": "Lynis",
"body": "ProxMenux clona Lynis desde <code>github.com/CISOfy/lynis</code> en <code>/opt/lynis</code> y lo expone como <code>/usr/local/bin/lynis</code>. El paquete de Debian se evita intencionadamente porque va varias versiones mayores por detrás de upstream. La página de detalle cubre el flujo de instalar / auditar / actualizar / desinstalar, cómo leer el informe y cómo actuar sobre los hallazgos.",
"body": "ProxMenux clona Lynis de <code>github.com/CISOfy/lynis</code> en <code>/opt/lynis</code> y lo expone como <code>/usr/local/bin/lynis</code>. Evita el paquete Debian porque va varias versiones principales por detrás del proyecto original. La página detallada explica instalación, auditoría, actualización, desinstalación, lectura del informe y aplicación de sus recomendaciones.",
"optionTitle": "Lynis — instalar, auditar y gestionar",
"optionDescription": "Instala el último Lynis desde el repo oficial de CISOfy en GitHub (no el paquete más antiguo de Debian), ejecuta auditorías del sistema con puntuación de hardening y actualiza vía git pull."
},
+20 -20
View File
@@ -1,37 +1,37 @@
{
"meta": {
"title": "Lynis | ProxMenux Documentation",
"description": "Instala Lynis desde el repositorio oficial de CISOfy en GitHub (siempre el último), ejecuta una auditoría del sistema con puntuación de hardening 0–100, actualiza vía git pull. De solo lectura por diseño — nunca modifica el sistema.",
"ogTitle": "Lynis | ProxMenux Documentation",
"ogDescription": "Instala y ejecuta el auditor de seguridad Lynis en Proxmox VE. Instalación desde GitHub upstream, auditoría, actualización."
"title": "Lynis | Documentación de ProxMenux",
"description": "Instala Lynis desde el repositorio oficial CISOfy de GitHub, ejecuta una auditoría con puntuación de refuerzo de 0 a 100 y actualiza mediante git pull. Auditor de solo lectura: no modifica el sistema.",
"ogTitle": "Lynis | Documentación de ProxMenux",
"ogDescription": "Instala y ejecuta el auditor de seguridad Lynis en Proxmox VE. Instalación desde el repositorio original GitHub, auditoría y actualización."
},
"header": {
"title": "Lynis",
"description": "Clona el último Lynis desde el repositorio oficial de CISOfy en GitHub, lo expone como /usr/local/bin/lynis y ofrece acciones de ejecutar auditoría / actualizar / reinstalar / desinstalar desde el menú. Auditor de solo lectura por diseño — nunca modifica el sistema, solo reporta.",
"description": "Clona el último Lynis del repositorio oficial CISOfy en GitHub, lo expone como /usr/local/bin/lynis y ofrece auditoría, actualización, reinstalación y desinstalación desde el menú. El auditor es de solo lectura: informa sin modificar el sistema.",
"section": "Seguridad"
},
"intro": {
"title": "Qué hace",
"body": "Instala Lynis (el auditor de seguridad de código abierto de CISOfy) desde GitHub upstream en <code>/opt/lynis</code> y crea un wrapper en <code>/usr/local/bin/lynis</code> para que esté en tu <code>PATH</code>. Detecta una instalación existente al arrancar y muestra un menú de gestión (auditoría / actualizar / reinstalar / eliminar) en su lugar."
"body": "Instala Lynis, el auditor de código abierto de CISOfy, desde su repositorio GitHub en <code>/opt/lynis</code> y crea un script lanzador en <code>/usr/local/bin/lynis</code> para incluirlo en <code>PATH</code>. Si detecta una instalación existente al abrirlo, muestra un menú de auditoría, actualización, reinstalación o eliminación."
},
"manageMenu": {
"heading": "Menú de gestión (tras la instalación)",
"heading": "Menú de gestión (tras instalar)",
"intro": "Una vez instalado Lynis, cada invocación posterior abre el menú de gestión en lugar de volver a ejecutar el instalador. Desde aquí lanzas una auditoría, actualizas vía git pull, reinstalas o desinstalas:",
"imageAlt": "Menú de gestión de Lynis con opciones de auditoría, actualizar, reinstalar y eliminar"
},
"whyUpstream": {
"heading": "Por qué GitHub upstream, no apt",
"intro": "Debian entrega Lynis vía apt, pero el paquete suele ir varias versiones mayores por detrás de upstream. Los controles más nuevos, los arreglos para nuevos vectores de ataque y las recomendaciones refinadas solo aterrizan en el repo de GitHub. El propio Lynis es un script de shell autocontenido — sin compilación, sin dependencias más allá de <code>git</code> para la instalación — así que clonar el repo es el método de instalación canónico recomendado por la propia CISOfy.",
"heading": "Por qué el repositorio oficial de GitHub y no apt",
"intro": "Debian distribuye Lynis mediante apt, pero el paquete suele ir varias versiones principales por detrás del proyecto original. GitHub recibe antes los controles, correcciones de nuevos vectores de ataque y mejoras de las recomendaciones. Lynis es un script de shell autocontenido, sin compilación ni dependencias de instalación aparte de <code>git</code>; por eso clonar el repositorio es el método recomendado por CISOfy.",
"headerSource": "Origen",
"headerPath": "Ruta de instalación",
"headerPath": "Install path",
"headerUpdate": "Método de actualización",
"headerFresh": "Frescura de versión",
"headerFresh": "Actualidad de la versión",
"rows": [
{
"sourceRich": "<strong>ProxMenux (este script)</strong>",
"path": "/opt/lynis/",
"update": "git pull (desde el menú)",
"fresh": "Última versión upstream"
"fresh": "Última versión del proyecto original"
},
{
"sourceRich": "<strong>Debian apt</strong>",
@@ -59,14 +59,14 @@
"<code>/opt/lynis/lynis</code> — ruta directa (por si el wrapper se eliminó)",
"<code>/usr/bin/lynis</code> — versión instalada por apt, si el usuario la instaló así anteriormente"
],
"outro": "Si se encuentra cualquiera de estas, se abre el menú de gestión. El script <strong>no</strong> desinstala un Lynis instalado por apt — solo el que él mismo gestiona (<code>/opt/lynis</code> + el wrapper)."
"outro": "Si encuentra cualquiera de estas rutas, abre el menú de gestión. El script <strong>no</strong> desinstala Lynis instalado por apt; solo el que gestiona en <code>/opt/lynis</code> y su lanzador."
},
"audit": {
"heading": "Ejecutar una auditoría",
"intro": "Desde el menú de gestión, elige <strong>Ejecutar auditoría de seguridad ahora</strong>. Esto equivale a ejecutar:",
"intro": "En el menú de gestión, elige <strong>Ejecutar auditoría de seguridad ahora</strong>. Equivale a ejecutar:",
"code": "lynis audit system --no-colors",
"outro": "La auditoría tarda de 30 segundos a unos minutos según el tamaño del host. La salida fluye directamente al terminal — no hay spinner. Lynis imprime secciones por cada categoría de control, marcando cada test como <ok>[ OK ]</ok>, <warn>[ WARNING ]</warn> o <sugg>[ SUGGESTION ]</sugg>. El resumen al final tiene los números titulares:",
"summary": "================================================================================\n\n Lynis security scan details:\n\n Hardening index : 76 [############ ]\n Tests performed : 247\n Plugins enabled : 0\n\n Components:\n - Firewall [V]\n - Malware scanner [X]\n\n Lynis modules:\n - Compliance status [?]\n - Security audit [V]\n - Vulnerability scan [V]\n\n================================================================================"
"outro": "La auditoría tarda de 30 segundos a varios minutos según el tamaño del host. La salida se muestra directamente en el terminal, sin indicador giratorio. Lynis organiza los controles por categoría y marca cada prueba como <ok>[ OK ]</ok>, <warn>[ WARNING ]</warn> o <sugg>[ SUGGESTION ]</sugg>. El resumen final muestra las cifras principales:",
"summary": "================================================================================\n\n Detalles del análisis de seguridad de Lynis:\n\n Índice de refuerzo : 76 [############ ]\n Pruebas realizadas : 247\n Plugins habilitados : 0\n\n Componentes:\n - Cortafuegos [V]\n - Escáner de malware [X]\n\n Módulos de Lynis:\n - Estado de cumplimiento [?]\n - Auditoría de seguridad [V]\n - Análisis de vulnerabilidades [V]\n\n================================================================================"
},
"report": {
"heading": "Leer el informe",
@@ -99,7 +99,7 @@
},
"update": {
"heading": "Actualizar Lynis",
"body": "Desde el menú de gestión, <strong>Actualizar Lynis a la última versión</strong> ejecuta <code>git pull --quiet</code> dentro de <code>/opt/lynis</code>. Si el directorio existe pero no es un checkout de Git (p. ej. alguien copió los archivos a mano), el script recae en una reinstalación completa."
"body": "En el menú, <strong>Actualizar Lynis a la última versión</strong> ejecuta <code>git pull --quiet</code> en <code>/opt/lynis</code>. Si el directorio existe pero no es una copia Git (por ejemplo, se copiaron archivos manualmente), el script reinstala por completo."
},
"reinstall": {
"heading": "Reinstalar / desinstalar",
@@ -108,7 +108,7 @@
"rows": [
{
"actionRich": "<strong>Reinstalar</strong>",
"whatRich": "Elimina <code>/opt/lynis</code>, vuelve a clonar desde GitHub, recrea el wrapper. Úsalo si el checkout local está corrupto."
"whatRich": "Elimina <code>/opt/lynis</code>, clona de nuevo desde GitHub y recrea el lanzador. Úsalo si la copia local está dañada."
},
{
"actionRich": "<strong>Eliminar</strong>",
@@ -128,7 +128,7 @@
"notFoundTitle": "lynis: command not found tras la instalación",
"notFoundIntro": "El wrapper en <code>/usr/local/bin/lynis</code> no se creó o se eliminó. Arreglo más rápido: reinstalar desde el menú. Arreglo manual:",
"notFoundCode": "cat > /usr/local/bin/lynis <<'EOF'\n#!/bin/bash\ncd /opt/lynis && ./lynis \"$@\"\nEOF\nchmod +x /usr/local/bin/lynis",
"sshTitle": "La auditoría imprime \"Warning: Test SSH-7408 — MaxAuthTries set incorrectly\"",
"sshTitle": "La auditoría muestra \"Warning: Test SSH-7408 — MaxAuthTries set incorrectly\"",
"sshIntro": "El demonio SSH permite demasiados intentos de autenticación por conexión. O bien instala <link>Fail2Ban</link> desde ProxMenux (que establece <code>MaxAuthTries=3</code> automáticamente) o edita <code>/etc/ssh/sshd_config</code> a mano:",
"sshCode": "sed -i 's/^#?MaxAuthTries.*/MaxAuthTries 3/' /etc/ssh/sshd_config\nsystemctl reload sshd",
"scoreTitle": "La puntuación bajó tras una actualización de Proxmox",
@@ -140,7 +140,7 @@
},
"sample": {
"heading": "Informe de ejemplo",
"intro": "ProxMenux Monitor empaqueta cada ejecución de Lynis en un PDF de varias páginas disponible desde la <link>pestaña de Seguridad</link> en el panel. La primera página es el resumen ejecutivo — puntuación de hardening, info del sistema, vista general de la postura de seguridad. Las páginas siguientes listan cada warning con explicación y cada sugerencia rankeada por impacto, más el inventario de paquetes usado durante la auditoría.",
"intro": "ProxMenux Monitor genera un PDF de varias páginas para cada ejecución de Lynis desde la <link>pestaña Seguridad</link>. La primera página resume puntuación de refuerzo, información del sistema y estado de seguridad. Las siguientes detallan cada advertencia, las sugerencias ordenadas por impacto y el inventario de paquetes utilizado en la auditoría.",
"imageAlt": "Primera página del PDF del Lynis Security Audit Report — resumen ejecutivo con Hardening Index 71/100, bloque de información del sistema y vista general de la postura de seguridad con firewall, escáner de malware y recuento de paquetes instalados",
"captionPrefix": "Primera página de un informe de ejemplo. El PDF completo (",
"captionLink": "ejemplo",
@@ -1,13 +1,13 @@
{
"meta": {
"title": "HTTPS para ProxMenux Monitor — certificado del host Proxmox o rutas personalizadas | ProxMenux",
"description": "Sirve ProxMenux Monitor sobre HTTPS usando o bien el certificado del host Proxmox (autodetectado, incluyendo el certificado Let's Encrypt subido vía la pestaña ACME de Proxmox) o un certificado personalizado en cualquier ruta del disco.",
"description": "Sirve ProxMenux Monitor por HTTPS con el certificado del host Proxmox (detectado automáticamente, incluido el de Let’s Encrypt instalado mediante ACME de Proxmox) o un certificado personalizado en cualquier ruta del disco.",
"ogTitle": "HTTPS para ProxMenux Monitor — certificado del host Proxmox o personalizado",
"ogDescription": "Habilita HTTPS en el puerto 8008 con el certificado del host Proxmox o cualquier par .pem / .key personalizado."
},
"header": {
"title": "HTTPS para ProxMenux Monitor",
"description": "Activa HTTPS para el Monitor (puerto 8008) usando o bien el certificado del host Proxmox que el Monitor autodetecta, o un certificado personalizado ubicado en cualquier sitio del disco. La opción de Proxmox elige de forma transparente el certificado subido por ACME cuando está presente, así que un certificado Let's Encrypt gestionado por la UI de Proxmox se reutiliza sin un trabajo de renovación extra.",
"description": "Activa HTTPS para Monitor en 8008 con el certificado del host Proxmox detectado automáticamente o uno personalizado en disco. La opción Proxmox prefiere el certificado instalado mediante ACME, si existe, y reutiliza el Let’s Encrypt gestionado por Proxmox sin otra tarea de renovación.",
"section": "Seguridad"
},
"intro": {
@@ -15,20 +15,20 @@
"body": "Cómo cambiar el Monitor de HTTP a HTTPS en el panel Settings → Security, a qué apunta realmente cada fuente de certificado en disco, cómo se comporta la opción de Proxmox cuando el host tiene un certificado Let's Encrypt y cómo establecer rutas personalizadas si gestionas certificados fuera de Proxmox."
},
"wheresetting": {
"heading": "Dónde vive el ajuste",
"body": "Abre el Monitor y ve a <strong>Settings → Security → HTTPS / SSL</strong>. El panel muestra el estado actual (HTTP o HTTPS), y en un host sin HTTPS aún lista las fuentes de certificado que el Monitor ha podido detectar.",
"heading": "Ubicación del ajuste",
"body": "Abre Monitor y ve a <strong>Ajustes → Seguridad → HTTPS / SSL</strong>. El panel muestra HTTP o HTTPS y, si HTTPS no está activo, las fuentes de certificados detectadas.",
"imageAlt": "Panel Settings → Security → HTTPS / SSL en el Monitor mostrando el estado HTTPS desactivado, el certificado de Proxmox autodetectado (subject, issuer, expiry) y la opción Use Custom Certificate",
"caption": "Panel Settings → Security → HTTPS / SSL antes de la activación. El Monitor saca a la luz el certificado que el propio Proxmox está usando y lo ofrece como una fuente de un solo clic."
"caption": "Panel Ajustes → Seguridad → HTTPS / SSL antes de activar HTTPS. Monitor muestra el certificado que usa Proxmox y permite elegirlo con un clic."
},
"twoways": {
"heading": "Dos formas de habilitar HTTPS",
"proxmox": {
"title": "Usar el certificado de Proxmox",
"summary": "Un clic. El Monitor reutiliza el certificado que el propio Proxmox VE sirve en el puerto 8006.",
"summary": "Un clic: Monitor reutiliza el certificado que Proxmox VE presenta en el puerto 8006.",
"items": [
"Autodetectado — no hay ruta que teclear",
"Elige el certificado subido por ACME si está presente, recae en el self-signed por defecto",
"La renovación pasa por Proxmox; el Monitor sigue automáticamente en el siguiente arranque"
"Detectado automáticamente, sin introducir rutas",
"Prefiere el certificado ACME si existe; si no, usa el autofirmado predeterminado",
"Proxmox renueva; Monitor valida y carga el certificado en la siguiente conexión TLS nueva"
]
},
"custom": {
@@ -37,7 +37,7 @@
"items": [
"Solo rutas absolutas (el proceso del Monitor debe poder leer ambos)",
"Útil cuando los certificados vienen de <code>certbot</code>, <code>acme.sh</code> o un wildcard",
"La renovación es tuya — reinicia el servicio del Monitor tras que el archivo cambie"
"La renovación queda a tu cargo: reinicia Monitor cuando cambien los archivos"
]
}
},
@@ -54,7 +54,7 @@
{
"fileRich": "<code>pveproxy-ssl.pem</code><br /><code>pveproxy-ssl.key</code>",
"originRich": "Certificado personalizado subido vía la UI de Proxmox — incluyendo el certificado Let's Encrypt emitido en <em>Datacenter → Node → Certificates → ACME</em>.",
"when": "Preferido siempre que existan ambos archivos. El Monitor seguirá el certificado que el propio Proxmox está sirviendo."
"when": "Se prefiere cuando existen ambos archivos; Monitor usa el certificado presentado por Proxmox."
},
{
"fileRich": "<code>pve-ssl.pem</code><br /><code>pve-ssl.key</code>",
@@ -65,17 +65,17 @@
},
"callout": {
"title": "Misma prioridad que el propio Proxmox",
"bodyRich": "<code>pveproxy</code> usa la misma regla de selección, así que elegir la opción de Proxmox en el Monitor siempre sirve el certificado que la UI web de Proxmox ya está sirviendo en el puerto 8006. Sin copias, sin pipeline de renovación aparte."
"bodyRich": "<code>pveproxy</code> aplica la misma selección: al elegir Proxmox, Monitor usa el certificado que la interfaz de Proxmox presenta en 8006, sin copiarlo ni mantener otro proceso de renovación."
}
},
"letsencrypt": {
"heading": "Obtener un certificado Let's Encrypt vía Proxmox ACME",
"intro": "Proxmox VE entrega su propio cliente ACME. Pulsar <em>\"Order Certificate Now\"</em> escribe el resultado en <code>/etc/pve/local/pveproxy-ssl.pem</code>, que es exactamente lo que el Monitor lee. La receta de cinco pasos de abajo es el mismo procedimiento que la <extlink1>guía oficial de Proxmox</extlink1> — destilada a los comandos que realmente necesitas ejecutar.",
"intro": "Proxmox VE incluye su propio cliente ACME. <em>«Order Certificate Now»</em> guarda el resultado en <code>/etc/pve/local/pveproxy-ssl.pem</code>, que Monitor lee. Los cinco pasos siguientes condensan el procedimiento de la <extlink1>guía oficial de Proxmox</extlink1> en los comandos necesarios.",
"prereqs": {
"title": "Prerrequisitos",
"items": [
"El nodo tiene un nombre DNS real (no solo una IP) apuntándole.",
"<strong>O bien</strong> puerto 80 alcanzable desde la internet pública (challenge HTTP-01, el más simple), <strong>o bien</strong> un proveedor de DNS con credenciales API (challenge DNS-01 — funciona detrás de NAT, soporta wildcards).",
"<strong>O bien</strong> puerto 80 accesible desde Internet (verificación HTTP-01, la más sencilla), <strong>o bien</strong> proveedor DNS con credenciales API (DNS-01, funciona tras NAT y admite comodines).",
"Una dirección de email para la cuenta ACME."
]
},
@@ -90,7 +90,7 @@
"http01Rich": "<strong>HTTP-01</strong> es el más fácil: está integrado, sin plugin extra. Let's Encrypt se conecta a <code>http://&lt;your-host&gt;/.well-known/acme-challenge/...</code> en el puerto 80, así que el puerto 80 debe estar abierto desde la internet pública a tu nodo — típicamente un port forward en tu router.",
"dns01Rich": "<strong>DNS-01</strong> funciona sin exponer el puerto 80 (bueno para homelabs detrás de CG-NAT) y es la única opción para certificados wildcard. Añades un plugin DNS una vez con el token API de tu proveedor. Ejemplo con Cloudflare:",
"code": "pvenode acme plugin add dns cf \\\n --api cloudflare \\\n --data CF_Token=YOUR_CLOUDFLARE_API_TOKEN",
"outroRich": "Para otros proveedores (Gandi, OVH, AWS Route 53, etc.) consulta <code>pvenode acme plugin add dns --help</code> — Proxmox entrega <extlink2>todos los plugins DNS de acme.sh</extlink2>."
"outroRich": "Para otros proveedores (Gandi, OVH, AWS Route 53, etc.), consulta <code>pvenode acme plugin add dns --help</code>. Proxmox incluye <extlink2>todos los plugins DNS de acme.sh</extlink2>."
},
"step3": {
"heading": "Paso 3 — Asocia el dominio a tu nodo",
@@ -112,19 +112,19 @@
},
"gui": {
"title": "¿Prefieres la GUI? Los mismos cinco pasos",
"bodyRich": "<em>Datacenter → ACME</em> registra la cuenta, <em>Datacenter → ACME → Plugins</em> añade el plugin DNS, <em>Node → Certificates → ACME</em> asocia el dominio y <em>Order Certificates Now</em> ejecuta el paso 4. Los comandos CLI de arriba son útiles para scriptar y para setups headless / solo CLI."
"bodyRich": "<em>Datacenter → ACME</em> registra la cuenta; <em>Datacenter → ACME → Plugins</em> añade DNS; <em>Node → Certificates → ACME</em> vincula el dominio; <em>Order Certificates Now</em> ejecuta el paso 4. Los comandos anteriores sirven para automatizar y trabajar sin interfaz gráfica."
}
},
"switchToHttps": {
"heading": "Cambiar el Monitor a HTTPS",
"bodyRich": "Una vez que <code>/etc/pve/local/pveproxy-ssl.pem</code> está firmado por Let's Encrypt, en el Monitor solo hace falta un clic: abre <strong>Ajustes → Seguridad → HTTPS / SSL</strong>, confirma que el emisor mostrado en el panel del certificado detectado sea <em>Let's Encrypt</em> (y no la CA local de Proxmox) y pulsa <strong>Usar certificado de Proxmox</strong>. El servicio del Monitor se reinicia y la siguiente carga del navegador usa HTTPS en el puerto 8008, sin advertencias porque la cadena es de confianza pública. Las renovaciones posteriores de Proxmox ACME se validan y seleccionan durante la siguiente conexión TLS nueva; no existe un comprobador periódico del certificado ni se reinicia el servicio durante la renovación. <strong>Actualizar certificado</strong> permanece disponible en Seguridad como acción explícita de diagnóstico y recuperación."
"bodyRich": "Una vez que <code>/etc/pve/local/pveproxy-ssl.pem</code> está firmado por Let's Encrypt, abre <strong>Ajustes → Seguridad → HTTPS / SSL</strong>, comprueba que el emisor sea <em>Let's Encrypt</em> y no la CA local de Proxmox, y pulsa <strong>Usar certificado de Proxmox</strong>. Monitor se reinicia y la siguiente carga usa HTTPS en 8008 con una cadena de confianza pública. Las renovaciones ACME posteriores se validan y seleccionan en la siguiente conexión TLS nueva, sin sondeo periódico ni reinicio del servicio por renovación. <strong>Actualizar certificado</strong> sigue disponible en Seguridad como acción explícita de diagnóstico y recuperación."
},
"custom": {
"heading": "Certificado personalizado — cuándo usarlo",
"intro": "Pulsa <strong>Use Custom Certificate</strong> para introducir dos rutas absolutas:",
"intro": "Pulsa <strong>Usar certificado personalizado</strong> e introduce dos rutas absolutas:",
"items": [
"<strong>Certificado</strong> — cadena completa en PEM (<code>.pem</code> o <code>.crt</code>).",
"<strong>Clave privada</strong> — clave correspondiente en PEM (<code>.key</code>)."
"<strong>Clave privada</strong>: clave correspondiente en PEM (<code>.key</code>)."
],
"outro": "Ambos archivos los lee el proceso del Monitor al arrancar. Asegúrate de que se mantengan legibles por el usuario con el que corre la unidad systemd (root por defecto). Ubicaciones comunes cuando ACME se gestiona fuera de Proxmox:",
"code": "# certbot\n/etc/letsencrypt/live/<your-host>/fullchain.pem\n/etc/letsencrypt/live/<your-host>/privkey.pem\n\n# acme.sh\n~/.acme.sh/<your-host>_ecc/fullchain.cer\n~/.acme.sh/<your-host>_ecc/<your-host>.key",
@@ -143,15 +143,15 @@
},
"trustCa": {
"heading": "Confiar en la CA self-signed de Proxmox",
"intro1Rich": "Si prefieres mantener el certificado por defecto generado por Proxmox (sin ACME), puedes parar el warning del navegador importando la CA raíz del clúster en el almacén de confianza del SO o navegador. El Monitor seguirá autodetectando el mismo <code>/etc/pve/local/pveproxy-ssl.pem</code>; lo único que cambia es que el dispositivo que ve el panel ahora reconoce el issuer.",
"intro1Rich": "Para conservar el certificado predeterminado de Proxmox sin ACME, importa la CA raíz del clúster en el almacén de confianza del sistema o navegador. Monitor detecta <code>/etc/pve/local/pve-ssl.pem</code> como certificado alternativo. El cliente confiará en su emisor; la URL aún debe coincidir con un nombre del certificado.",
"intro2Rich": "El archivo de la CA vive en <code>/etc/pve/pve-root-ca.pem</code> en cada nodo. En un clúster la ruta está en el sistema de archivos compartido <code>pmxcfs</code>, así que todos los nodos comparten la misma raíz, y una sola importación cubre el datacenter entero. Cópialo a tu máquina:",
"code": "scp root@<your-host>:/etc/pve/pve-root-ca.pem ./pve-root-ca.pem",
"thenImport": "Después impórtalo en el lado del cliente:",
"items": [
"<strong>Linux (todo el sistema):</strong> <code>sudo cp pve-root-ca.pem /usr/local/share/ca-certificates/pve-root-ca.crt</code> seguido de <code>sudo update-ca-certificates</code>. Los navegadores que usan el almacén del sistema (Chromium, Edge) lo toman tras reiniciar; Firefox usa su propio almacén y necesita la importación manual de abajo.",
"<strong>macOS:</strong> doble clic en el archivo <code>.pem</code>, se abre Keychain Access → añádelo al keychain del <em>Sistema</em> → establece <em>Trust → Always Trust</em>.",
"<strong>Windows:</strong> clic derecho en el archivo → <em>Install Certificate</em> → colócalo en <em>Trusted Root Certification Authorities</em>.",
"<strong>Firefox (cualquier SO):</strong> <em>Settings → Privacy y Security → Certificates → View Certificates → Authorities → Import</em>, marca <em>Trust this CA to identify websites</em>."
"<strong>Linux (todo el sistema):</strong> ejecuta <code>sudo cp pve-root-ca.pem /usr/local/share/ca-certificates/pve-root-ca.crt</code> y después <code>sudo update-ca-certificates</code>. Los navegadores que usan el almacén del sistema (Chromium, Edge) lo reconocen tras reiniciar; Firefox usa su propio almacén y requiere la importación manual siguiente.",
"<strong>macOS:</strong> abre el archivo <code>.pem</code> con doble clic en Acceso a Llaveros, añádelo al llavero <em>Sistema</em> y configura <em>Confiar → Confiar siempre</em>.",
"<strong>Windows:</strong> clic derecho en el archivo → <em>Instalar certificado</em> → guárdalo en <em>Entidades de certificación raíz de confianza</em>.",
"<strong>Firefox (cualquier SO):</strong> <em>Ajustes → Privacidad y seguridad → Certificados → Ver certificados → Autoridades → Importar</em>; marca <em>Confiar en esta CA para identificar sitios web</em>."
],
"standalone": {
"title": "Nodos standalone fuera de un clúster",
@@ -160,9 +160,9 @@
},
"disable": {
"heading": "Deshabilitar HTTPS",
"bodyRich": "Pulsa <strong>Disable HTTPS</strong> en el mismo panel. El servicio del Monitor reinicia de vuelta en HTTP plano — útil si un archivo de certificado personalizado se vuelve no legible y el servicio no vuelve a levantarse. No hay paso de desinstalación aparte; los propios archivos de certificado no se tocan.",
"bodyRich": "Pulsa <strong>Desactivar HTTPS</strong> en el mismo panel. Monitor reinicia con HTTP sin cifrar, útil si un certificado personalizado no se puede leer y el servicio no arranca. No hay otra desinstalación y los archivos de certificado no se modifican.",
"stateCallout": {
"title": "Dónde vive el estado",
"title": "Dónde se guarda el estado",
"bodyRich": "<code>/etc/proxmenux/ssl_config.json</code> almacena las rutas de certificado activas y la fuente (<code>none</code>, <code>proxmox</code>, <code>custom</code>). Borrar el archivo equivale a deshabilitar HTTPS — en el siguiente arranque el Monitor recae en HTTP."
}
}