diff --git a/.github/workflows/test-i18n.yml b/.github/workflows/test-i18n.yml
index 2b3e4685..7f4dfb51 100644
--- a/.github/workflows/test-i18n.yml
+++ b/.github/workflows/test-i18n.yml
@@ -9,15 +9,20 @@ on:
- 'AppImage/messages/**'
- 'AppImage/lib/i18n/**'
- 'AppImage/components/terminal-panel.tsx'
+ - 'web/**'
- 'CONTRIBUTING.md'
# Scheduler consumers and the offline extractor's .sh/.func inputs.
- 'scripts/**/*.sh'
- 'scripts/**/*.func'
- 'scripts/**/*.py'
- 'lang/*.json'
+ - 'menu'
+ - 'install_proxmenux.sh'
+ - 'install_proxmenux_beta.sh'
- 'oci/src/**/*.py'
- 'oci/catalog/**/*.json'
- 'oci/remote/**/*.sh'
+ - 'oci/remote/**/*.py'
push:
branches: [main, develop]
paths:
@@ -27,15 +32,20 @@ on:
- 'AppImage/messages/**'
- 'AppImage/lib/i18n/**'
- 'AppImage/components/terminal-panel.tsx'
+ - 'web/**'
- 'CONTRIBUTING.md'
# Scheduler consumers and the offline extractor's .sh/.func inputs.
- 'scripts/**/*.sh'
- 'scripts/**/*.func'
- 'scripts/**/*.py'
- 'lang/*.json'
+ - 'menu'
+ - 'install_proxmenux.sh'
+ - 'install_proxmenux_beta.sh'
- 'oci/src/**/*.py'
- 'oci/catalog/**/*.json'
- 'oci/remote/**/*.sh'
+ - 'oci/remote/**/*.py'
workflow_dispatch:
permissions:
diff --git a/web/messages/de/docs/security/fail2ban.json b/web/messages/de/docs/security/fail2ban.json
new file mode 100644
index 00000000..e65a6918
--- /dev/null
+++ b/web/messages/de/docs/security/fail2ban.json
@@ -0,0 +1,152 @@
+{
+ "meta": {
+ "title": "Fail2Ban | ProxMenux-Dokumentation",
+ "description": "Installieren Sie Fail2Ban mit drei jails abgestimmt auf Proxmox (SSH aggressiv, Proxmox UI 8006, ProxMenux Monitor 8008). Beinhaltet den Fix journald MaxLevelStore, benutzerdefinierte Protokolldienste für Zuverlässigkeit, automatisch erkanntes nftables/iptables-Backend und SSH MaxAuthTries Härtung.",
+ "ogTitle": "Fail2Ban | ProxMenux-Dokumentation",
+ "ogDescription": "Brute-Force-Schutz für SSH und Proxmox-Weboberflächen mit Proxmox-spezifischen journald- und Backend-Korrekturen."
+ },
+ "header": {
+ "title": "Fail2Ban",
+ "description": "Installiert Fail2Ban für Proxmox: drei Jails (SSH aggressiv, Proxmox-Weboberfläche auf 8006, ProxMenux Monitor auf 8008 und Reverse Proxy), journald-Korrektur zum Speichern von SSH-Anmeldeereignissen, zwei Journal-zu-Datei-Dienste als Umgehung eines bekannten systemd-Backend-Problems, automatische Firewall-Backend-Erkennung und SSH-Härtung mit MaxAuthTries.",
+ "section": "Sicherheit"
+ },
+ "intro": {
+ "title": "Was das macht",
+ "body": "Installiert Fail2Ban aus Debian-Paketquellen und schreibt eine Proxmox-Konfiguration, die SSH, Proxmox-Weboberfläche und ProxMenux Monitor sofort schützt. Bei vorhandener Installation erscheint stattdessen ein Verwaltungsmenü zum Neuinstallieren oder Entfernen."
+ },
+ "firstLaunch": {
+ "heading": "Erststart-Dialog",
+ "body": "Ohne vorhandenes Fail2Ban zeigt das Skript einen Bestätigungsdialog mit den geplanten Installations- und Konfigurationsschritten. Abbrechen beendet ohne Änderungen; Bestätigen startet die Installation.",
+ "imageAlt": "Fail2Ban-Installationsbestätigung mit drei Jails, journald-Korrektur und SSH-Härtung"
+ },
+ "jails": {
+ "heading": "Die drei jails",
+ "headerJail": "Jail",
+ "headerProtects": "Schützt",
+ "headerRetries": "Fehlversuche / Zeitfenster",
+ "headerBan": "Sperrdauer",
+ "rows": [
+ {
+ "jail": "[sshd]",
+ "protects": "SSH (aggressiver Modus — umfasst ddos, mode, normal)",
+ "retries": "2 / 60 min",
+ "ban": "9 Stunden"
+ },
+ {
+ "jail": "[proxmox]",
+ "protects": "Proxmox web UI (Port 8006)",
+ "retries": "3 / 10 min",
+ "ban": "1 Stunde"
+ },
+ {
+ "jail": "[proxmenux]",
+ "protects": "ProxMenux Monitor (Port 8008 + http/https Reverse Proxy)",
+ "retries": "3 / 10 min",
+ "ban": "1 Stunde"
+ }
+ ],
+ "outro": "Globale Standardwerte von jail.local: ignoreip = 127.0.0.1/8 ::1, ignoreself = true, bantime = 86400 (24-Stunden-Fallback für jails, die es nicht überschreiben), maxretry = 2, findtime = 1800."
+ },
+ "journald": {
+ "heading": "Warum die journald-Korrektur wichtig ist",
+ "intro": "Proxmox liefert /etc/systemd/journald.conf mit MaxLevelStore=warning. journald verwirft Meldungen unterhalb von warning vor dem Speichern. SSH und PAM melden Anmeldefehler auf den Stufen info / notice, daher :",
+ "diagram": {
+ "sshLabel": "SSH / PAM",
+ "sshDetail": "Anmeldefehler\n(Stufe info / notice)",
+ "journaldLabel": "journald",
+ "journaldDetail": "MaxLevelStore=warning\n→ Ereignis ohne Hinweis verworfen",
+ "fail2banLabel": "Fail2Ban",
+ "fail2banDetail": "Nichts sehen\nNiemals etwas verbieten",
+ "arrowLabel": "Standard Proxmox"
+ },
+ "afterDiagram": "Der Installateur erkennt dies und schreibt ein Drop-in bei /etc/systemd/journald.conf.d/proxmenux-loglevel.conf und erhöht sowohl MaxLevelStore als auch MaxLevelSyslog auf info:",
+ "code": "[Journal]\nMaxLevelStore=info\nMaxLevelSyslog=info",
+ "outro": "Dann startet systemd-journald neu. Das Drop-In wird bei der Deinstallation entfernt, wodurch der ursprüngliche Proxmox-Standard wiederhergestellt wird."
+ },
+ "loggers": {
+ "heading": "Warum zwei Custom Logger Services",
+ "intro1": "Fail2Ban kann direkt aus dem systemd-Journal lesen (backend = systemd). Auf Proxmox gibt es jedoch bekannte Zuverlässigkeitsprobleme mit Worker-Prozessen von pvedaemon: Anmeldeereignisse erscheinen im Journal, werden aber nicht immer erkannt. Zeitweise betrifft dies auch sshd.",
+ "intro2": "ProxMenux erstellt zwei kleine systemd-Dienste, die die betreffenden Units mit journalctl -f verfolgen und jede Zeile an eine Datei anhängen. Fail2Ban liest diese Dateien mit dem zuverlässigen backend = auto (Dateimodus) :",
+ "headerService": "Dienst",
+ "headerSource": "Quelleneinheit",
+ "headerOutput": "Ausgabedatei",
+ "rows": [
+ {
+ "service": "proxmox-auth-logger.service",
+ "source": "pvedaemon.service",
+ "output": "/var/log/proxmox-auth.log"
+ },
+ {
+ "service": "ssh-auth-logger.service",
+ "source": "ssh.service",
+ "output": "/var/log/ssh-auth.log"
+ }
+ ],
+ "outro": "Beide Dienste sind als PartOf=fail2ban.service deklariert, sodass sie mit Fail2Ban neu starten und damit stoppen. Modus 640 im Besitz von root:adm in den Protokolldateien. Das dritte Protokoll, das von [proxmenux] jail (/var/log/proxmenux-auth.log) verwendet wird, wird direkt von der App ProxMenux Monitor Flask geschrieben – dafür ist kein Logger-Dienst erforderlich."
+ },
+ "backend": {
+ "heading": "Firewall-Backend-Autoerkennung",
+ "intro": "Der Installer prüft den Host: Wenn nft list ruleset funktioniert, wählt er nftables als Sperraktion. Ansonsten fällt es auf iptables-multiport / iptables-allports zurück. Die Auswahl ist in jail.local geschrieben:",
+ "code": "# nftables host\nbanaction = nftables\nbanaction_allports = nftables[type=allports]\n\n# iptables host (fallback)\nbanaction = iptables-multiport\nbanaction_allports = iptables-allports"
+ },
+ "hardening": {
+ "heading": "SSH-Härtung: MaxAuthTries",
+ "intro": "Die Lynis-Prüfung SSH-7408 empfiehlt MaxAuthTries 3 in sshd_config. Die SSH-Jail verwendet maxretry = 2 für Sperren nach wiederholten Fehlversuchen; MaxAuthTries begrenzt die Versuche innerhalb einer Verbindung. Diese SSH-Einstellung bietet zusätzliche Abwehr, auch bei wegen Wartung gestopptem Fail2Ban.",
+ "installerIntro": "Der Installer:",
+ "items": [
+ "Lesen Sie den aktuellen MaxAuthTries-Wert (oder standardmäßig 6, falls nicht vorhanden).",
+ "Speichert es in /usr/local/share/proxmenux/sshd_maxauthtries_backup.",
+ "Bearbeitet sshd_config direkt: ersetzt die vorhandene Zeile, entfernt das Kommentarzeichen oder fügt eine neue Zeile hinzu.",
+ "Lädt sshd neu, ohne den Dienst neu zu starten, damit bestehende Sitzungen aktiv bleiben."
+ ],
+ "outro": "Bei der Deinstallation wird der gespeicherte Originalwert wiederhergestellt und sshd erneut geladen."
+ },
+ "manage": {
+ "heading": "Verwalten einer vorhandenen Installation",
+ "intro": "Wenn Fail2Ban beim Öffnen des Menüs bereits installiert ist, erkennt das Skript es und zeigt ein Verwaltungsmenü an, anstatt das Installationsprogramm erneut auszuführen:",
+ "headerAction": "Aktion",
+ "headerWhat": "Was es tut",
+ "rows": [
+ {
+ "action": "Neuinstallieren",
+ "what": "Führt den vollständigen Installer erneut aus und schreibt alle Jails mit den aktuellen ProxMenux-Vorgaben neu. Verwenden Sie dies, wenn ein Update die empfohlenen Werte ändert."
+ },
+ {
+ "action": "Entfernen",
+ "what": "Stoppt fail2ban und die beiden Logger-Dienste, löscht das apt-Paket, entfernt alle jail/Filterdateien, löscht das journald-Drop-In (stellt die Proxmox-Standardeinstellung wieder her) und stellt das ursprüngliche SSH wieder her. MaxAuthTries."
+ }
+ ]
+ },
+ "verify": {
+ "heading": "Überprüfen Sie, ob es funktioniert",
+ "intro": "Nach der Installation nützliche Befehle vom Host:",
+ "code": "# Service status and version\nsystemctl status fail2ban\nfail2ban-client --version\n\n# All active jails\nfail2ban-client status\n\n# Detail on one jail\nfail2ban-client status sshd\nfail2ban-client status proxmox\nfail2ban-client status proxmenux\n\n# Currently banned IPs in a jail\nfail2ban-client status sshd | grep \"Banned IP\"\n\n# Manually unban an IP (use this if you ban yourself)\nfail2ban-client unban 192.0.2.10\n\n# Tail the auth logs Fail2Ban watches\ntail -f /var/log/ssh-auth.log\ntail -f /var/log/proxmox-auth.log\ntail -f /var/log/fail2ban.log"
+ },
+ "troubleshoot": {
+ "heading": "Fehlerbehebung",
+ "neverBansTitle": "Fail2Ban läuft, verbietet aber niemals etwas",
+ "neverBansBody": "Prüfen Sie, ob tail -f /var/log/ssh-auth.log nach einer SSH-Anmeldung mit falschem Passwort von einem anderen Rechner einen Eintrag erhält. Bleibt die Datei leer, prüfen Sie systemctl status ssh-auth-logger.service. Ist der Logger aktiv, zeigen Sie aktuelle SSH-Ereignisse mit journalctl -u ssh.service -n 50 --no-pager -p info an und prüfen, ob der journald-Zusatz die Stufe info erlaubt.",
+ "monitorEmptyTitle": "ProxMenux Monitor jail hat keine Einträge, auch nach fehlgeschlagenen Anmeldungen",
+ "monitorEmptyBody": "Der [proxmenux] jail liest /var/log/proxmenux-auth.log, der von der ProxMenux Monitor Flask-App geschrieben wurde – nicht von einem journald-Logger. Wenn Sie den Monitor nicht ausführen, bleibt die Datei leer und jail wird nie ausgelöst. Das wird erwartet; Die jail-Konfiguration ist harmlos. Wenn Sie den Monitor ausführen und das Protokoll leer ist, überprüfen Sie die Protokollierungskonfiguration Flask.",
+ "selfBanTitle": "Ich habe meinen eigenen Zugriff gesperrt",
+ "selfBanIntro": "Von einer Konsole / IPMI / iKVM (oder einer anderen Whitelist-IP):",
+ "selfBanCode": "fail2ban-client unban '<'YOUR_IP'>'\n\n# To prevent it next time, edit /etc/fail2ban/jail.local and add your IP:\nignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 203.0.113.42\n\n# Then reload\nfail2ban-client reload",
+ "aptFailTitle": "apt-get schlägt fehl: ''Unable to locate package fail2ban''",
+ "aptFailBody": "Dem Host fehlen die Debian-Repos (üblich bei Barebones, die Proxmox installiert). Der Installateur erkennt dies und schreibt /etc/apt/sources.list.d/debian.sources mit dem richtigen Codenamen (bookworm / trixie), bevor er es erneut versucht. Wenn es immer noch fehlschlägt, überprüfen Sie /etc/os-release für VERSION_CODENAME und bestätigen Sie, dass die Repo-URL erreichbar ist.",
+ "lockoutTitle": "SSH sperrt mich nach der Installation aus",
+ "lockoutBody": "Das Installationsprogramm setzt MaxAuthTries=3. Wenn Ihr Passwort-Manager / Agent mehrere Schlüssel wiederholt, können Sie diese bei einem einzigen Verbindungsversuch überschreiten. Begrenzen Sie die angebotenen Schlüssel: ssh -o IdentitiesOnly=yes -i ~/.ssh/specific_key user@host. Oder erhöhen Sie MaxAuthTries vorübergehend in sshd_config, während Sie debuggen."
+ },
+ "files": {
+ "heading": "Dateien geschrieben",
+ "code": "/etc/fail2ban/jail.local # global defaults + [sshd]\n/etc/fail2ban/jail.d/proxmox.conf # [proxmox]\n/etc/fail2ban/jail.d/proxmenux.conf # [proxmenux]\n/etc/fail2ban/filter.d/proxmox.conf # auth-failure regex for pvedaemon\n/etc/fail2ban/filter.d/proxmenux.conf # auth-failure regex for Monitor\n/etc/systemd/system/proxmox-auth-logger.service # journal → file (pvedaemon)\n/etc/systemd/system/ssh-auth-logger.service # journal → file (sshd)\n/etc/systemd/journald.conf.d/proxmenux-loglevel.conf # MaxLevelStore=info\n/etc/ssh/sshd_config # MaxAuthTries=3 (in-place edit)\n/var/log/proxmox-auth.log # written by logger service\n/var/log/ssh-auth.log # written by logger service\n/var/log/proxmenux-auth.log # written by Monitor Flask app\n/usr/local/share/proxmenux/sshd_maxauthtries_backup # for restore on uninstall"
+ },
+ "related": {
+ "heading": "Verwandte Themen",
+ "monitorLabel": "ProxMenux Monitor - Sicherheits-Tab",
+ "monitorTail": " — Installation über das Dashboard, aktueller Jail-Status, gesperrte IP-Adressen und Einstellung von Fehlversuchen und Sperrdauer je Jail im Browser.",
+ "lynisLabel": "Lynis",
+ "lynisTail": " — führen Sie vorher und nachher eine Sicherheitsprüfung aus, um die Erfüllung von SSH-7408 zu bestätigen.",
+ "securityLabel": "Sicherheitsübersicht",
+ "securityTail": " — zurück zur Abschnittsübersicht."
+ }
+}
diff --git a/web/messages/de/docs/security/index.json b/web/messages/de/docs/security/index.json
new file mode 100644
index 00000000..17af6319
--- /dev/null
+++ b/web/messages/de/docs/security/index.json
@@ -0,0 +1,70 @@
+{
+ "meta": {
+ "title": "Proxmox-Sicherheit — Fail2Ban, Lynis-Härtungsprüfung | ProxMenux",
+ "description": "Zwei installierbare Sicherheitswerkzeuge für Proxmox VE: Fail2Ban (Einbruchsschutz für SSH, Proxmox-Weboberfläche und ProxMenux Monitor) und Lynis (Sicherheits- und Härtungsprüfung aus dem offiziellen GitHub-Repository).",
+ "ogTitle": "Proxmox-Sicherheit — Fail2Ban und Lynis-Härtungsprüfung",
+ "ogDescription": "Fail2Ban und Lynis für Proxmox VE: Einbruchsschutz und Härtungsprüfung, installiert und verwaltet durch ProxMenux.",
+ "twitterTitle": "Proxmox Sicherheit | ProxMenux",
+ "twitterDescription": "Fail2Ban und Lynis für Proxmox VE: Einbruchsschutz und Härtungsprüfung."
+ },
+ "header": {
+ "title": "Sicherheit",
+ "description": "Zwei ergänzende Sicherheitswerkzeuge für Proxmox VE: aktive Abwehr (Fail2Ban sperrt IP-Adressen, die SSH oder Weboberflächen angreifen) und Offline-Prüfung (Lynis sucht Härtungslücken und vergibt 0–100 Punkte). Beide haben ein eigenes Installations- und Verwaltungsmenü, das vorhandene Installationen vor jeder Aktion erkennt.",
+ "section": "Sicherheit"
+ },
+ "intro": {
+ "title": "Aktive Abwehr und Offline-Prüfung",
+ "body": "Sie beantworten unterschiedliche Fragen. Fail2Ban beantwortet „Werden wir gerade angegriffen?“, indem es Anmeldeprotokolle überwacht und angreifende IP-Adressen sperrt. Lynis beantwortet „Wie gut ist dieser Host gehärtet?“ mit einer einmaligen Prüfung und konkreten Empfehlungen. Nutzen Sie beide: Lynis zeigt Verbesserungen auf, Fail2Ban reagiert auf laufende Angriffe."
+ },
+ "opening": {
+ "heading": "Öffnen des Menüs",
+ "body": "Wählen Sie im ProxMenux-Hauptmenü Sicherheit. Folgendes wird angezeigt :",
+ "imageAlt": "Sicherheitsmenü mit Fail2Ban und Lynis Optionen"
+ },
+ "pick": {
+ "heading": "Wählen Sie Ihr Werkzeug",
+ "body": "Die beiden Werkzeuge sind unabhängig: Installieren Sie eines, beide oder keines. Jede Karte unten führt zum Abschnitt mit der ausführlichen Erklärung."
+ },
+ "cards": {
+ "fail2ban": {
+ "title": "Fail2Ban",
+ "body": "Aktiver Einbruchsschutz. Überwacht Anmeldeprotokolle von SSH und Weboberflächen und sperrt IP-Adressen nach wiederholten Fehlversuchen.",
+ "bullets": [
+ "Drei jails: SSH, Proxmox UI (8006), ProxMenux Monitor (8008)",
+ "Korrigiert Proxmox-Standardeinstellungen von journald, die Anmeldeprotokolle blockieren",
+ "Erkennt nftables / iptables automatisch",
+ "SSH-Härtung: MaxAuthTries=3 (Empfehlung von Lynis)"
+ ]
+ },
+ "lynis": {
+ "title": "Lynis",
+ "body": "Offline-Sicherheitsprüfer. Prüft den Host und zeigt eine Härtungsbewertung sowie konkrete Hinweise zur Behebung von Problemen.",
+ "bullets": [
+ "Aus dem offiziellen CISOfy-GitHub-Repository installiert (neueste Version)",
+ "Härtungsbewertung 0–100 und Liste mit Warnungen und Vorschlägen",
+ "Prüfung und Aktualisierung über das Menü",
+ "Nur lesend konzipiert: verändert das System nicht"
+ ]
+ }
+ },
+ "workflowTip": {
+ "title": "Workflow, der beides nutzt",
+ "body": "Führen Sie zuerst Lynis aus, um Ausgangsbewertung und wichtigste Empfehlungen zu sehen. Setzen Sie gewünschte Korrekturen um. Installieren Sie dann Fail2Ban: Es setzt automatisch den SSH-Brute-Force-Schutz um und passt MaxAuthTries in sshd_config an die Prüfung SSH-7408 an. Prüfen Sie anschließend mit Lynis die Verbesserung."
+ },
+ "fail2banSection": {
+ "heading": "Fail2Ban",
+ "body": "ProxMenux installiert Fail2Ban mit einer speziell für Proxmox optimierten Konfiguration. Über den Standard SSH jail hinaus bietet es Schutz für das Proxmox-Web UI und das ProxMenux Monitor und umgeht zwei Proxmox-spezifische Macken: eine journald-Standardeinstellung, die Authentifizierungsereignisse verwirft, und die systemd-Backend-Problem, das verhindert, dass Fail2Ban bestimmte Journalquellen zuverlässig liest. Die Detailseite behandelt den vollständigen Installationsablauf, die drei jails, den journald-Fix, die SSH-Härtungsänderung und den Fehlerbehebungs-Cheatsheet.",
+ "optionTitle": "Fail2Ban — installieren und verwalten",
+ "optionDescription": "Drei vorkonfigurierte Jails (sshd aggressiv, Proxmox-Weboberfläche auf 8006, ProxMenux Monitor auf 8008 und Reverse Proxy), automatische nftables/iptables-Erkennung, journald-Korrektur und SSH-Härtung mit MaxAuthTries."
+ },
+ "lynisSection": {
+ "heading": "Lynis",
+ "body": "ProxMenux klont Lynis von github.com/CISOfy/lynis nach /opt/lynis und macht es als /usr/local/bin/lynis verfügbar. Das Debian-Paket wird bewusst vermieden, da es mehrere Hauptversionen hinter dem Originalprojekt liegt. Die Detailseite erklärt Installation, Prüfung, Aktualisierung, Deinstallation, Auswertung des Berichts und Umsetzung der Ergebnisse.",
+ "optionTitle": "Lynis — installieren, auditieren und verwalten",
+ "optionDescription": "Installiert das neueste Lynis aus dem offiziellen CISOfy GitHub-Repo (nicht das ältere Debian-Paket), führt Systemaudits mit Hardening-Score und Updates per Git Pull aus."
+ },
+ "componentStatus": {
+ "heading": "Komponentenstatus",
+ "body": "Beide Installateure registrieren ihren Status in /usr/local/share/proxmenux/components_status.json unter der Kategorie security. ProxMenux verwendet diese Datei, um zu entscheiden, ob die Installation oder das Menü bei nachfolgenden Durchläufen angezeigt werden soll, und die gleichen Daten speisen die Dashboards im ProxMenux Monitor, wenn vorhanden."
+ }
+}
diff --git a/web/messages/de/docs/security/lynis.json b/web/messages/de/docs/security/lynis.json
new file mode 100644
index 00000000..42c5b8bd
--- /dev/null
+++ b/web/messages/de/docs/security/lynis.json
@@ -0,0 +1,170 @@
+{
+ "meta": {
+ "title": "Lynis | ProxMenux-Dokumentation",
+ "description": "Installieren Sie die neueste Lynis-Version aus dem offiziellen CISOfy-GitHub-Repository, führen Sie eine Sicherheitsprüfung mit Härtungsbewertung 0–100 aus und aktualisieren Sie per git pull. Rein lesende Prüfung ohne Systemänderungen.",
+ "ogTitle": "Lynis | ProxMenux-Dokumentation",
+ "ogDescription": "Lynis-Sicherheitsprüfung auf Proxmox VE installieren und ausführen. Installation aus dem Original-GitHub-Repository, Prüfung und Aktualisierung."
+ },
+ "header": {
+ "title": "Lynis",
+ "description": "Klont die neueste Lynis-Version aus dem offiziellen CISOfy-GitHub-Repository, stellt sie als /usr/local/bin/lynis bereit und bietet Prüfung, Aktualisierung, Neuinstallation und Deinstallation im Menü. Der Auditor liest nur und meldet Ergebnisse, ohne das System zu ändern.",
+ "section": "Sicherheit"
+ },
+ "intro": {
+ "title": "Was das macht",
+ "body": "Installiert Lynis, den Open-Source-Sicherheitsprüfer von CISOfy, aus dessen GitHub-Repository nach /opt/lynis und erstellt einen Starter unter /usr/local/bin/lynis für den Aufruf über PATH. Eine vorhandene Installation öffnet stattdessen ein Verwaltungsmenü für Prüfung, Aktualisierung, Neuinstallation oder Entfernung."
+ },
+ "manageMenu": {
+ "heading": "Verwaltungsmenü (nach der Installation)",
+ "intro": "Nach der Installation öffnet jeder weitere Aufruf das Verwaltungsmenü. Dort können Sie eine Prüfung starten, per git pull aktualisieren, neu installieren oder deinstallieren.",
+ "imageAlt": "Lynis Management Menü mit Audit, Update, Neuinstallation und Entfernen von Optionen"
+ },
+ "whyUpstream": {
+ "heading": "Warum das Original-GitHub-Repository statt apt",
+ "intro": "Debian bietet Lynis über apt an, doch das Paket liegt meist mehrere Hauptversionen hinter dem Originalprojekt. Neue Prüfungen, Korrekturen für neue Angriffsvektoren und überarbeitete Empfehlungen erscheinen zuerst auf GitHub. Lynis ist ein eigenständiges Shell-Skript ohne Kompilierung und ohne weitere Installationsabhängigkeiten außer git; CISOfy empfiehlt daher das Klonen des Repositorys.",
+ "headerSource": "Quelle",
+ "headerPath": "Install path",
+ "headerUpdate": "Aktualisierungsmethode",
+ "headerFresh": "Aktualität der Version",
+ "rows": [
+ {
+ "sourceRich": "ProxMenux (dieses Skript)",
+ "path": "/opt/lynis/",
+ "update": "git pull (im Menü)",
+ "fresh": "Neueste Version des Originalprojekts"
+ },
+ {
+ "sourceRich": "Debian apt",
+ "path": "/usr/bin/lynis",
+ "update": "apt upgrade",
+ "fresh": "Oft Monate / Jahre zurück"
+ }
+ ]
+ },
+ "install": {
+ "heading": "Wie die Installation funktioniert",
+ "node1Label": "github.com/CISOfy/lynis",
+ "node1Detail": "git clone\n(git zuerst installieren, falls nicht vorhanden)",
+ "node2Label": "/opt/lynis/",
+ "node2Detail": "Vollständiges Repo\neinschließlich ./lynis Skript",
+ "node3Label": "/usr/local/bin/lynis",
+ "node3Detail": "Umschlag:\ncd /opt/lynis && ./lynis $@",
+ "outro": "Der Wrapper ist obligatorisch - Lynis besteht darauf, aus seinem eigenen Verzeichnis ausgeführt zu werden, da er relative Pfade für Plugins und Profildaten lädt. Der Wrapper verbirgt dieses Detail, so dass lynis audit system von überall aus funktioniert."
+ },
+ "detection": {
+ "heading": "Detektionspfade",
+ "intro": "Bevor Sie das Menü anzeigen, überprüft das Skript drei Standorte, um zu entscheiden, ob Lynis bereits vorhanden ist:",
+ "items": [
+ "/usr/local/bin/lynis — Wrapper installiert von ProxMenux",
+ "/opt/lynis/lynis — direkter Pfad (falls der Wrapper entfernt wurde)",
+ "/usr/bin/lynis — apt-installierte Version, wenn der Benutzer es zuvor so installiert hat"
+ ],
+ "outro": "Wird einer dieser Pfade gefunden, öffnet sich das Verwaltungsmenü. Das Skript deinstalliert kein über apt installiertes Lynis, sondern nur die selbst verwaltete Installation in /opt/lynis samt Starter."
+ },
+ "audit": {
+ "heading": "Durchführung eines Audits",
+ "intro": "Wählen Sie im Verwaltungsmenü Sicherheitsprüfung jetzt ausführen. Das entspricht folgendem Aufruf :",
+ "code": "lynis audit system --no-colors",
+ "outro": "Die Prüfung dauert je nach Hostgröße 30 Sekunden bis einige Minuten. Die Ausgabe erscheint direkt im Terminal, ohne Warteanimation. Lynis gliedert die Prüfungen nach Kategorien und kennzeichnet Tests mit [ OK ], [ WARNING ] oder [ SUGGESTION ]. Die abschließende Zusammenfassung enthält die wichtigsten Zahlen :",
+ "summary": "================================================================================\n\n Details der Lynis-Sicherheitsprüfung:\n\n Härtungsindex : 76 [############ ]\n Durchgeführte Tests : 247\n Aktivierte Plugins : 0\n\n Komponenten:\n - Firewall [V]\n - Malware-Scanner [X]\n\n Lynis-Module:\n - Konformitätsstatus [?]\n - Sicherheitsprüfung [V]\n - Schwachstellenprüfung [V]\n\n================================================================================"
+ },
+ "report": {
+ "heading": "Lesen Sie den Bericht",
+ "intro": "Die beiden wichtigen Abschnitte sind Warnings (Dinge, die Sie bald beheben sollten) und Suggestions (Empfehlungen zur Verbesserung der Härtung). Jedes Element trägt eine Kontroll-ID wie SSH-7408 - nützlich bei der Suche nach den Lynis-Dokumenten für die Gründe und die Korrektur.",
+ "headerMarker": "Markierung",
+ "headerMeaning": "Bedeutung",
+ "headerAction": "Aktion",
+ "rows": [
+ {
+ "markerRich": "OK",
+ "meaning": "Test bestanden",
+ "action": "Nichts"
+ },
+ {
+ "markerRich": "WARNING",
+ "meaning": "Echtes Problem, Fix empfohlen",
+ "action": "Lesen Sie die Prüfungsbeschreibung und planen Sie eine Korrektur."
+ },
+ {
+ "markerRich": "SUGGESTION",
+ "meaning": "Härtungsverbesserung verfügbar",
+ "action": "Umsetzen, wenn es zu Ihrem Bedrohungsmodell passt"
+ }
+ ],
+ "outro": "Der vollständige Bericht und die maschinenlesbaren Daten werden von Lynis selbst in /var/log/lynis.log und /var/log/lynis-report.dat geschrieben."
+ },
+ "pairFail2ban": {
+ "title": "Mit Fail2Ban kombinieren",
+ "body": "SSH-7408 (MaxAuthTries) ist eine der häufigsten Warnungen. Die Installation von Fail2Ban aus ProxMenux löscht es automatisch, da der Installer MaxAuthTries=3 als Teil seines SSH-Härtungsschritts einstellt. Führen Sie Lynis danach erneut aus, um zu bestätigen, dass die Warnung verschwunden ist."
+ },
+ "update": {
+ "heading": "Lynis aktualisieren",
+ "body": "Im Verwaltungsmenü führt Lynis auf die neueste Version aktualisieren den Befehl git pull --quiet in /opt/lynis aus. Ist das Verzeichnis keine Git-Arbeitskopie, etwa nach manuellem Kopieren der Dateien, wird vollständig neu installiert."
+ },
+ "reinstall": {
+ "heading": "Reinstallieren / Deinstallieren",
+ "headerAction": "Aktion",
+ "headerWhat": "Was es tut",
+ "rows": [
+ {
+ "actionRich": "Neu installieren",
+ "whatRich": "Entfernt /opt/lynis, klont erneut von GitHub und erstellt den Starter neu. Für eine beschädigte lokale Arbeitskopie."
+ },
+ {
+ "actionRich": "Entfernen",
+ "whatRich": "Löscht /opt/lynis und /usr/local/bin/lynis. Protokolle bei /var/log/lynis* werden aufbewahrt (sie sind Audit-Historie). Ein apt-installiertes Lynis bei /usr/bin/lynis bleibt unberührt."
+ }
+ ]
+ },
+ "cli": {
+ "heading": "Nützliche CLI Optionen",
+ "intro": "Einmal installiert, kann Lynis direkt von einer Shell aus aufgerufen werden, wobei zusätzliche Optionen im Menü nicht angezeigt werden:",
+ "code": "lynis show version # version + build date\nlynis show commands # list every available command\nlynis show details TEST-ID # explain a specific control\nlynis audit system --quick # skip slow tests (e.g. malware scan)\nlynis audit system --pentest # treat host as untrusted (more aggressive)\nlynis update info # check if a newer Lynis is available\n\n# Filter the report log for just the warnings\ngrep \"Warning\" /var/log/lynis.log\n\n# Same, for suggestions only\ngrep \"Suggestion\" /var/log/lynis.log"
+ },
+ "troubleshoot": {
+ "heading": "Fehlerbehebung",
+ "cloneTitle": "git clone schlägt bei der Installation fehl",
+ "cloneBody": "Der Host benötigt Netzwerkzugang und DNS, um github.com zu erreichen. Von einer Konsole: curl -sI https://github.com und git ls-remote https://github.com/CISOfy/lynis.git wird der tatsächliche Fehler (DNS, TLS, Proxy, Repo-URL) enthüllt. Wenn ein Proxy erforderlich ist, legen Sie https_proxy in der Umgebung fest, bevor Sie das Menü erneut ausführen.",
+ "notFoundTitle": "lynis: Befehl nach der Installation nicht gefunden",
+ "notFoundIntro": "Der Wrapper bei /usr/local/bin/lynis wurde entweder nicht erstellt oder entfernt. Schnellste Lösung: Neuinstallation aus dem Menü. Manuelle Fixierung:",
+ "notFoundCode": "cat > /usr/local/bin/lynis <<'EOF'\n#!/bin/bash\ncd /opt/lynis && ./lynis \"$@\"\nEOF\nchmod +x /usr/local/bin/lynis",
+ "sshTitle": "Die Prüfung zeigt \"Warning: Test SSH-7408 — MaxAuthTries set incorrectly\"",
+ "sshIntro": "Der SSH-Daemon erlaubt zu viele Auth-Versuche pro Verbindung. Installieren Sie entweder Fail2Ban von ProxMenux (was MaxAuthTries=3 automatisch einstellt) oder bearbeiten Sie /etc/ssh/sshd_config von Hand:",
+ "sshCode": "sed -i 's/^#?MaxAuthTries.*/MaxAuthTries 3/' /etc/ssh/sshd_config\nsystemctl reload sshd",
+ "scoreTitle": "Score ging nach einem Proxmox-Upgrade zurück",
+ "scoreBody": "Führen Sie lynis update info zuerst aus - ein Lynis-Update hat möglicherweise neue Steuerelemente hinzugefügt, die bestehende Konfiguration kennzeichnen. Aktualisieren Sie Lynis aus dem Menü, überprüfen Sie es erneut und sprechen Sie die neuen Erkenntnisse an."
+ },
+ "files": {
+ "heading": "Dateien geschrieben",
+ "code": "/opt/lynis/ # full Lynis git checkout\n/usr/local/bin/lynis # wrapper script (cd + exec)\n/var/log/lynis.log # human-readable audit log (Lynis itself)\n/var/log/lynis-report.dat # machine-readable report (Lynis itself)"
+ },
+ "sample": {
+ "heading": "Beispielbericht",
+ "intro": "ProxMenux Monitor erstellt zu jedem Lynis-Durchlauf eine mehrseitige PDF-Datei im Reiter Sicherheit. Die erste Seite fasst Härtungsbewertung, Systeminformationen und Sicherheitslage zusammen. Die weiteren Seiten erläutern jede Warnung, ordnen Vorschläge nach Auswirkung und enthalten das bei der Prüfung verwendete Paketinventar.",
+ "imageAlt": "Erste Seite des Lynis Security Audit Report PDF – Zusammenfassung mit Hardening Index 71/100, Systeminformationsblock und Sicherheitsübersicht mit Firewall, Malware-Scanner und installierten Paketen",
+ "captionPrefix": "Erste Seite eines Beispielberichts. Die vollständige PDF-Datei (",
+ "captionLink": "Probe",
+ "captionSuffix": ") fährt mit detaillierten Warnungen, Vorschlägen und der Liste der installierten Pakete fort.",
+ "cli": "Auf der CLI-Seite befinden sich die gleichen Daten in /var/log/lynis-report.dat (maschinenlesbare Flat-Datei) und /var/log/lynis.log (das vom Menschen lesbare Run-Log). Die PDF-Datei wird auf Anfrage von ProxMenux Monitor generiert – die Ausführung von lynis aus der Befehlszeile erzeugt keine."
+ },
+ "related": {
+ "heading": "Verwandte Themen",
+ "items": [
+ {
+ "href": "/docs/monitor/dashboard/security",
+ "label": "ProxMenux Monitor - Sicherheits-Tab",
+ "tail": " — Prüfung ausführen, frühere Berichte ansehen und die PDF-Datei direkt aus dem Dashboard herunterladen."
+ },
+ {
+ "href": "/docs/security/fail2ban",
+ "label": "Fail2Ban",
+ "tailRich": "- implementiert den von Lynis empfohlenen Brute-Force-Schutz SSH."
+ },
+ {
+ "href": "/docs/security",
+ "label": "Sicherheitsübersicht",
+ "tail": " — zurück zur Abschnittsübersicht."
+ }
+ ]
+ }
+}
diff --git a/web/messages/de/docs/security/ssl-letsencrypt.json b/web/messages/de/docs/security/ssl-letsencrypt.json
new file mode 100644
index 00000000..fecde538
--- /dev/null
+++ b/web/messages/de/docs/security/ssl-letsencrypt.json
@@ -0,0 +1,169 @@
+{
+ "meta": {
+ "title": "HTTPS für ProxMenux Monitor — Proxmox-Hostzertifikat oder eigene Pfade | ProxMenux",
+ "description": "Stellen Sie ProxMenux Monitor per HTTPS bereit, mit dem automatisch erkannten Proxmox-Hostzertifikat, einschließlich eines über Proxmox ACME installierten Let’s-Encrypt-Zertifikats, oder einem eigenen Zertifikat an beliebiger Stelle auf dem Datenträger.",
+ "ogTitle": "HTTPS für ProxMenux Monitor — Proxmox-Host oder benutzerdefiniertes Zertifikat",
+ "ogDescription": "Aktivieren Sie HTTPS am Port 8008 mit dem Proxmox-Hostzertifikat oder einem benutzerdefinierten .pem / .key-Paar."
+ },
+ "header": {
+ "title": "HTTPS für ProxMenux Monitor",
+ "description": "Aktivieren Sie HTTPS für Monitor auf Port 8008 mit dem automatisch erkannten Proxmox-Hostzertifikat oder einem eigenen Zertifikat auf dem Datenträger. Die Proxmox-Option bevorzugt das ACME-Zertifikat, falls vorhanden, und nutzt das von Proxmox verwaltete Let’s-Encrypt-Zertifikat ohne eigene Erneuerungsaufgabe.",
+ "section": "Sicherheit"
+ },
+ "intro": {
+ "title": "Was diese Seite abdeckt",
+ "body": "So wechseln Sie Monitor unter Einstellungen → Sicherheit von HTTP auf HTTPS, welche Dateien die Zertifikatsquellen verwenden, wie die Proxmox-Option mit Let’s Encrypt umgeht und wie Sie eigene Pfade für außerhalb von Proxmox verwaltete Zertifikate festlegen."
+ },
+ "wheresetting": {
+ "heading": "Wo Sie die Einstellung finden",
+ "body": "Öffnen Sie Monitor und gehen Sie zu Einstellungen → Sicherheit → HTTPS / SSL. Der Bereich zeigt HTTP oder HTTPS und bei noch deaktiviertem HTTPS die erkannten Zertifikatsquellen.",
+ "imageAlt": "Einstellungen → Sicherheit → HTTPS / SSL mit deaktiviertem HTTPS, erkanntem Proxmox-Zertifikat (Inhaber, Aussteller, Ablauf) und der Option für ein eigenes Zertifikat",
+ "caption": "Bereich Einstellungen → Sicherheit → HTTPS / SSL vor der Aktivierung. Monitor zeigt das von Proxmox verwendete Zertifikat und bietet es zur Auswahl mit einem Klick an."
+ },
+ "twoways": {
+ "heading": "Zwei Möglichkeiten, HTTPS zu aktivieren",
+ "proxmox": {
+ "title": "Das Proxmox-Zertifikat verwenden",
+ "summary": "Ein Klick: Monitor nutzt das Zertifikat, das Proxmox VE auf Port 8006 bereitstellt.",
+ "items": [
+ "Automatisch erkannt, keine Pfadeingabe erforderlich",
+ "Bevorzugt das ACME-Zertifikat, falls vorhanden; andernfalls das selbstsignierte Standardzertifikat",
+ "Proxmox erneuert; Monitor prüft und lädt das Zertifikat bei der nächsten neuen TLS-Verbindung"
+ ]
+ },
+ "custom": {
+ "title": "Benutzerdefiniertes Zertifikat verwenden",
+ "summaryRich": "Richten Sie den Monitor auf ein .pem / .key-Paar überall auf der Festplatte.",
+ "items": [
+ "Nur absolute Pfade (der Monitor-Prozess muss beide lesen können)",
+ "Nützlich, wenn Zertifikate von certbot, acme.sh oder einer Wildcard stammen",
+ "Sie verwalten die Erneuerung: Starten Sie Monitor nach Dateiänderungen neu"
+ ]
+ }
+ },
+ "proxmoxCert": {
+ "heading": "Proxmox-Zertifikat - was es tatsächlich zeigt",
+ "intro": "Proxmox VE führt zwei Zertifikatspaare in /etc/pve/local/:",
+ "table": {
+ "headers": {
+ "file": "Datei",
+ "origin": "Ursprung",
+ "when": "Wenn der Monitor es verwendet"
+ },
+ "rows": [
+ {
+ "fileRich": "pveproxy-ssl.pem pveproxy-ssl.key",
+ "originRich": "Benutzerdefiniertes Zertifikat, das über die Proxmox-Benutzeroberfläche hochgeladen wird - einschließlich des Let's Encrypt-Zertifikats, das unter Datacenter → Node → Certificates → ACME ausgestellt wurde.",
+ "when": "Bevorzugt, wenn beide Dateien existieren; Monitor nutzt das von Proxmox bereitgestellte Zertifikat."
+ },
+ {
+ "fileRich": "pve-ssl.pem pve-ssl.key",
+ "originRich": "Selbstsigniertes Zertifikat, das zum Zeitpunkt der Installation vom Proxmox PKI generiert wurde.",
+ "whenRich": "Fallback, wenn kein pveproxy-ssl.pem vorhanden ist."
+ }
+ ]
+ },
+ "callout": {
+ "title": "Gleiche Priorität wie Proxmox selbst",
+ "bodyRich": "pveproxy nutzt dieselbe Auswahlregel. Mit der Proxmox-Option verwendet Monitor das Zertifikat der Proxmox-Weboberfläche auf Port 8006, ohne Kopieren oder getrennten Erneuerungsablauf."
+ }
+ },
+ "letsencrypt": {
+ "heading": "Erhalten eines Let's Encrypt Zertifikats über Proxmox ACME",
+ "intro": "Proxmox VE enthält einen eigenen ACME-Client. „Order Certificate Now“ speichert das Ergebnis in /etc/pve/local/pveproxy-ssl.pem, das Monitor liest. Die folgenden fünf Schritte fassen die offizielle Proxmox-Anleitung in den benötigten Befehlen zusammen.",
+ "prereqs": {
+ "title": "Voraussetzungen",
+ "items": [
+ "Der Knoten hat einen echten DNS-Namen (nicht nur eine IP), der darauf zeigt.",
+ "Entweder Port 80 aus dem Internet erreichbar (HTTP-01-Prüfung, am einfachsten) oder ein DNS-Anbieter mit API-Zugangsdaten (DNS-01, funktioniert hinter NAT und unterstützt Wildcards).",
+ "Eine E-Mail-Adresse für das ACME-Konto."
+ ]
+ },
+ "step1": {
+ "heading": "Schritt 1 — Registrieren Sie das ACME-Konto",
+ "introRich": "Ersetzen Sie die E-Mail durch Ihre. Der Kontoname default ist nur ein Label - Sie können eine beliebige Zeichenfolge verwenden.",
+ "code": "pvenode acme account register default you@example.com",
+ "afterRich": "Proxmox fordert Sie auf, die Nutzungsbedingungen von Let's Encrypt zu akzeptieren. Danach wird das Konto unter /etc/pve/priv/acme/ fortgesetzt und die Registerkarte ACME in der GUI zeigt es an."
+ },
+ "step2": {
+ "heading": "Schritt 2 - Wählen Sie einen Herausforderungstyp",
+ "http01Rich": "HTTP-01 ist das einfachste: es ist eingebaut, kein zusätzliches Plugin. Let's Encrypt verbindet sich mit http://<your-host>/.well-known/acme-challenge/... an Port 80, so dass Port 80 vom öffentlichen Internet zu Ihrem Knoten geöffnet sein muss - normalerweise ein Port vorwärts auf Ihrem Router.",
+ "dns01Rich": "DNS-01 funktioniert ohne Port 80 (gut für Homelabs hinter CG-NAT) und ist die einzige Option für Wildcard-Zertifikate. Sie fügen ein DNS-Plugin einmal mit dem API-Token Ihres Providers hinzu. Cloudflare Beispiel:",
+ "code": "pvenode acme plugin add dns cf \\\n --api cloudflare \\\n --data CF_Token=YOUR_CLOUDFLARE_API_TOKEN",
+ "outroRich": "Für andere Anbieter (Gandi, OVH, AWS Route 53 usw.) nutzen Sie pvenode acme plugin add dns --help. Proxmox enthält alle DNS-Plugins von acme.sh."
+ },
+ "step3": {
+ "heading": "Schritt 3 - Binden Sie die Domain an Ihren Knoten",
+ "http01Rich": "Für HTTP-01 (verwendet das eingebaute standalone-Plugin):",
+ "code1": "pvenode config set --acme domains=host.example.com,account=default",
+ "dns01": "Für DNS-01 mit dem Cloudflare-Plugin aus Schritt 2:",
+ "code2": "pvenode config set --acmedomain0 domain=host.example.com,plugin=cf\npvenode config set --acme account=default",
+ "wildcardRich": "Wildcard? Fügen Sie domain=*.example.com auf einem separaten --acmedomainN-Eintrag hinzu. Wildcards erfordern DNS-01."
+ },
+ "step4": {
+ "heading": "Schritt 4 — Bestellen Sie das Zertifikat",
+ "code": "pvenode acme cert order",
+ "afterRich": "Der erste Lauf dauert normalerweise 30–60 Sekunden, während sich die Herausforderung ausbreitet. Beim Erfolg schreibt Proxmox /etc/pve/local/pveproxy-ssl.pem + .key, startet pveproxy neu und ein Erneuerungs-Cron wird automatisch geplant (Let's Encrypt Zertifikate sind gültig 90 Tage; Proxmox erneuert bei 60)."
+ },
+ "step5": {
+ "heading": "Schritt 5 — Überprüfung des Emittenten",
+ "code": "openssl x509 -in /etc/pve/local/pveproxy-ssl.pem -noout -issuer",
+ "afterRich": "Sollte einen Emittenten ab O = Let's Encrypt drucken. Wenn stattdessen CN = Proxmox Virtual Environment gelesen wird, ist die Bestellung fehlgeschlagen und die Datei ist immer noch das selbstsignierte PVE-Zertifikat - führen Sie pvenode acme cert order --debug 1 erneut aus, um zu sehen, warum."
+ },
+ "gui": {
+ "title": "Bevorzugen Sie die GUI? Gleiche fünf Schritte",
+ "bodyRich": "Datacenter → ACME registriert das Konto; Datacenter → ACME → Plugins fügt das DNS-Plugin hinzu; Node → Certificates → ACME verknüpft die Domain; Order Certificates Now führt Schritt 4 aus. Die obigen CLI-Befehle eignen sich für Skripte und Systeme ohne grafische Oberfläche."
+ }
+ },
+ "switchToHttps": {
+ "heading": "Schalten Sie den Monitor auf HTTPS",
+ "bodyRich": "Sobald /etc/pve/local/pveproxy-ssl.pem von Let's Encrypt signiert ist, öffnen Sie Einstellungen → Sicherheit → HTTPS / SSL, prüfen als Aussteller Let's Encrypt statt der lokalen Proxmox-CA und wählen Proxmox-Zertifikat verwenden. Monitor startet neu und der nächste Aufruf nutzt HTTPS auf 8008 mit öffentlich vertrauenswürdiger Zertifikatskette. Spätere ACME-Erneuerungen werden bei der nächsten neuen TLS-Verbindung geprüft und ausgewählt, ohne regelmäßige Abfrage oder Dienstneustart zur Erneuerung. Zertifikat aktualisieren bleibt unter Sicherheit für Diagnose und Wiederherstellung verfügbar."
+ },
+ "custom": {
+ "heading": "Benutzerdefiniertes Zertifikat — wann es sinnvoll ist",
+ "intro": "Klicken Sie auf Benutzerdefiniertes Zertifikat verwenden und geben Sie zwei absolute Pfade ein :",
+ "items": [
+ "Zertifikat: vollständige Kette im PEM-Format (.pem oder .crt).",
+ "Privater Schlüssel: passender Schlüssel im PEM-Format (.key)."
+ ],
+ "outro": "Beide Dateien werden beim Start vom Monitor-Prozess gelesen. Sie müssen für den Benutzer lesbar bleiben, unter dem die systemd-Unit läuft (standardmäßig root). Übliche Orte bei ACME-Verwaltung außerhalb von Proxmox:",
+ "code": "# certbot\n/etc/letsencrypt/live//fullchain.pem\n/etc/letsencrypt/live//privkey.pem\n\n# acme.sh\n~/.acme.sh/_ecc/fullchain.cer\n~/.acme.sh/_ecc/.key",
+ "symlinkCallout": {
+ "title": "Symlink-Ziele vs. Dateien",
+ "bodyRich": "certbot speichert die eigentlichen Dateien in /etc/letsencrypt/archive/ und der live/-Pfad ist ein Symlink. Richten Sie den Monitor auf den live/-Symlink, nicht auf die archive/-Datei - so schreibt jeder Erneuerungszyklus einfach das Symlink-Ziel um und der Monitor nimmt das neue Zertifikat beim nächsten Servicestart entgegen."
+ }
+ },
+ "afterHttps": {
+ "heading": "Nach Aktivierung von HTTPS",
+ "bodyRich": "Das Speichern der Änderung schreibt /etc/proxmenux/ssl_config.json und löst einen Neustart der proxmenux-monitor systemd Einheit aus. Die Browser-Registerkarte verliert ihre aktuelle Verbindung - laden Sie sie auf https://<host>:8008/ neu. Die erste Ladung mit einem Let's Encrypt-Zertifikat sollte keine Warnung zeigen; mit dem selbstsignierten Proxmox-Zertifikat benötigt der Browser eine Ausnahme, die gleiche wie für Port 8006.",
+ "reverse": {
+ "heading": "Reverse Proxys und Webhooks",
+ "bodyRich": "Wenn der Monitor zu HTTPS wechselt, schalten auch die für Benachrichtigungen registrierten Proxmox VE-webhook-URLs automatisch von http:// zu https:// um. Bestehende webhook-Einträge werden beim nächsten Speichern oder erneuten Erkennen einer Benachrichtigungsregel neu geschrieben, so dass keine manuelle Bearbeitung der Proxmox-Benachrichtigungskonfiguration erforderlich ist."
+ }
+ },
+ "trustCa": {
+ "heading": "Der selbstsignierten Proxmox-CA vertrauen",
+ "intro1Rich": "Um das Proxmox-Standardzertifikat ohne ACME zu behalten, importieren Sie die Cluster-Stamm-CA in den Zertifikatsspeicher von Betriebssystem oder Browser. Monitor erkennt /etc/pve/local/pve-ssl.pem als Ersatzzertifikat. Der Client vertraut dadurch dem Aussteller; die URL muss weiterhin zu einem Namen im Zertifikat passen.",
+ "intro2Rich": "Die CA-Datei lebt bei /etc/pve/pve-root-ca.pem auf jedem Knoten. In einem Cluster befindet sich der Pfad auf dem gemeinsamen pmxcfs-Dateisystem, so dass alle Knoten die gleiche Wurzel teilen und ein einziger Import das gesamte Rechenzentrum abdeckt. Kopieren Sie es auf Ihre Maschine:",
+ "code": "scp root@:/etc/pve/pve-root-ca.pem ./pve-root-ca.pem",
+ "thenImport": "Importieren Sie die Datei anschließend auf dem Client:",
+ "items": [
+ "Linux (systemweit): Führen Sie sudo cp pve-root-ca.pem /usr/local/share/ca-certificates/pve-root-ca.crt und anschließend sudo update-ca-certificates aus. Browser mit System-Zertifikatsspeicher (Chromium, Edge) erkennen die CA nach dem Neustart; Firefox nutzt seinen eigenen Speicher und benötigt den folgenden manuellen Import.",
+ "macOS: Doppelklicken Sie auf die .pem-Datei. Fügen Sie sie in der Schlüsselbundverwaltung zum Schlüsselbund System hinzu und wählen Sie Vertrauen → Immer vertrauen.",
+ "Windows: Rechtsklick auf die Datei → Zertifikat installieren → unter Vertrauenswürdige Stammzertifizierungsstellen ablegen.",
+ "Firefox (jedes Betriebssystem):Einstellungen → Datenschutz und Sicherheit → Zertifikate → Zertifikate anzeigen → Zertifizierungsstellen → Importieren; aktivieren Sie Dieser CA vertrauen, um Websites zu identifizieren."
+ ],
+ "standalone": {
+ "title": "Standalone Knoten außerhalb eines Clusters",
+ "bodyRich": "Jeder nicht geclusterte Proxmox-Host hat seinen eigenen pve-root-ca.pem. Wenn Sie mehrere eigenständige Hosts verwalten, wiederholen Sie die Kopie / den Import für jeden oder verbinden Sie sie zu einem Cluster, so dass sie sich eine einzelne Wurzel teilen."
+ }
+ },
+ "disable": {
+ "heading": "Deaktivierung von HTTPS",
+ "bodyRich": "Wählen Sie im selben Bereich HTTPS deaktivieren. Monitor startet mit unverschlüsseltem HTTP neu, etwa wenn eine eigene Zertifikatsdatei unlesbar ist und der Dienst nicht startet. Es gibt keinen weiteren Deinstallationsschritt; Zertifikatsdateien bleiben unverändert.",
+ "stateCallout": {
+ "title": "Wo der Zustand gespeichert wird",
+ "bodyRich": "/etc/proxmenux/ssl_config.json speichert die aktiven Zertifikatpfade und die Quelle (none, proxmox, custom). Das Löschen der Datei entspricht dem Deaktivieren von HTTPS - beim nächsten Start fällt der Monitor auf HTTP zurück."
+ }
+ }
+}
diff --git a/web/messages/en/docs/security/fail2ban.json b/web/messages/en/docs/security/fail2ban.json
index f7d431d8..18b0ad34 100644
--- a/web/messages/en/docs/security/fail2ban.json
+++ b/web/messages/en/docs/security/fail2ban.json
@@ -91,7 +91,7 @@
},
"hardening": {
"heading": "SSH hardening: MaxAuthTries",
- "intro": "Lynis control SSH-7408 recommends MaxAuthTries 3 in sshd_config. With Fail2Ban's maxretry = 2 on the SSH jail, a malicious client never reaches three attempts anyway — but the explicit setting satisfies the audit and adds defence in depth (e.g. if Fail2Ban is stopped for maintenance).",
+ "intro": "Lynis control SSH-7408 recommends MaxAuthTries 3 in sshd_config. The SSH jail uses maxretry = 2 to trigger a ban after repeated failures, while MaxAuthTries limits attempts within a connection. The explicit SSH setting adds defence in depth, including when Fail2Ban is stopped for maintenance.",
"installerIntro": "The installer:",
"items": [
"Reads the current MaxAuthTries value (or defaults to 6 if absent).",
@@ -125,7 +125,7 @@
"troubleshoot": {
"heading": "Troubleshooting",
"neverBansTitle": "Fail2Ban runs but never bans anything",
- "neverBansBody": "Check the auth log files actually receive entries: tail -f /var/log/ssh-auth.log and try a wrong-password SSH attempt from a different machine. If the log stays empty, the logger service is not running: systemctl status ssh-auth-logger.service. If it's active but the log is empty, check that the journald drop-in took effect: journalctl --dump-catalog | head — events at info level should be visible.",
+ "neverBansBody": "Check that tail -f /var/log/ssh-auth.log receives an entry after a wrong-password SSH attempt from another machine. If it stays empty, inspect systemctl status ssh-auth-logger.service. If the logger is active, inspect recent SSH events with journalctl -u ssh.service -n 50 --no-pager -p info and check whether the journald drop-in permits the info level.",
"monitorEmptyTitle": "ProxMenux Monitor jail has no entries even after failed logins",
"monitorEmptyBody": "The [proxmenux] jail reads /var/log/proxmenux-auth.log, which is written by the ProxMenux Monitor Flask app — not by a journald logger. If you don't run the Monitor, the file stays empty and the jail never fires. That's expected; the jail config is harmless. If you do run the Monitor and the log is empty, check the Flask logging config.",
"selfBanTitle": "I banned myself",
diff --git a/web/messages/en/docs/security/ssl-letsencrypt.json b/web/messages/en/docs/security/ssl-letsencrypt.json
index 19f4ea50..b5a65563 100644
--- a/web/messages/en/docs/security/ssl-letsencrypt.json
+++ b/web/messages/en/docs/security/ssl-letsencrypt.json
@@ -28,7 +28,7 @@
"items": [
"Auto-detected — no path to type",
"Picks the ACME-uploaded cert if present, falls back to the self-signed default",
- "Renewal happens through Proxmox; the Monitor follows automatically on next start"
+ "Proxmox handles renewal; the Monitor validates and loads it on the next new TLS connection"
]
},
"custom": {
@@ -143,7 +143,7 @@
},
"trustCa": {
"heading": "Trust the Proxmox self-signed CA",
- "intro1Rich": "If you prefer to keep the default Proxmox-generated certificate (no ACME), you can stop the browser warning by importing the cluster's root CA into the OS or browser trust store. The Monitor will keep auto-detecting the same /etc/pve/local/pveproxy-ssl.pem; the only thing that changes is that the device viewing the dashboard now recognises the issuer.",
+ "intro1Rich": "To keep the default Proxmox-generated certificate without ACME, import the cluster root CA into the OS or browser trust store. The Monitor detects /etc/pve/local/pve-ssl.pem as the fallback certificate. This makes the client trust its issuer; the URL must still match a name in the certificate.",
"intro2Rich": "The CA file lives at /etc/pve/pve-root-ca.pem on every node. In a cluster the path is on the shared pmxcfs filesystem so all nodes share the same root, and a single import covers the whole datacenter. Copy it to your machine:",
"code": "scp root@:/etc/pve/pve-root-ca.pem ./pve-root-ca.pem",
"thenImport": "Then import it on the client side:",
diff --git a/web/messages/es/docs/security/fail2ban.json b/web/messages/es/docs/security/fail2ban.json
index d1fdd044..d72c9441 100644
--- a/web/messages/es/docs/security/fail2ban.json
+++ b/web/messages/es/docs/security/fail2ban.json
@@ -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 /etc/systemd/journald.conf con MaxLevelStore=warning. journald descarta cada mensaje de log por debajo de warning antes de almacenarlo. SSH y PAM emiten fallos de autenticación a niveles info / notice, así que:",
+ "intro": "Proxmox incluye /etc/systemd/journald.conf con MaxLevelStore=warning. journald descarta los mensajes de nivel inferior a warning antes de guardarlos. SSH y PAM emiten fallos de autenticación en los niveles info / notice, 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 (backend = systemd), pero en Proxmox este backend tiene problemas conocidos de fiabilidad con los procesos worker de pvedaemon (los eventos de autenticación aparecen en el journal pero Fail2Ban no siempre los recoge) e intermitentemente con sshd.",
- "intro2": "La solución alternativa: ProxMenux crea dos pequeños servicios systemd que hacen journalctl -f 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 backend = auto (modo archivo):",
+ "intro1": "Fail2Ban puede leer directamente el journal de systemd (backend = systemd), pero en Proxmox este backend presenta problemas de fiabilidad con procesos worker de pvedaemon (los eventos aparecen en el journal pero Fail2Ban no siempre los recoge) y ocasionalmente con sshd.",
+ "intro2": "ProxMenux crea dos pequeños servicios systemd que siguen las unidades correspondientes con journalctl -f y añaden cada línea a un archivo. Fail2Ban lee esos archivos con el fiable backend = auto (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 SSH-7408 recomienda MaxAuthTries 3 en sshd_config. Con el maxretry = 2 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 SSH-7408 recomienda MaxAuthTries 3 en sshd_config. La jail SSH usa maxretry = 2 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 MaxAuthTries (o por defecto 6 si está ausente).",
"Lo guarda en /usr/local/share/proxmenux/sshd_maxauthtries_backup.",
- "Edita sshd_config en sitio — reemplaza la línea existente, descomenta la línea comentada o la añade.",
+ "Edita sshd_config directamente: sustituye la línea existente, descomenta la comentada o añade una nueva.",
"Recarga sshd (reload, no restart, para mantener vivas las sesiones existentes)."
],
"outro": "Al desinstalar, el valor original guardado se restaura y se recarga sshd 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: tail -f /var/log/ssh-auth.log 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: systemctl status ssh-auth-logger.service. Si está activo pero el log está vacío, comprueba que el drop-in de journald surtió efecto: journalctl --dump-catalog | head — eventos a nivel info deberían ser visibles.",
+ "neverBansBody": "Comprueba que tail -f /var/log/ssh-auth.log recibe una entrada tras intentar acceder por SSH con contraseña incorrecta desde otra máquina. Si sigue vacío, consulta systemctl status ssh-auth-logger.service. Si el logger está activo, mira los eventos SSH recientes con journalctl -u ssh.service -n 50 --no-pager -p info y comprueba que el drop-in de journald admite el nivel info.",
"monitorEmptyTitle": "El jail del Monitor de ProxMenux no tiene entradas ni siquiera tras logins fallidos",
"monitorEmptyBody": "El jail [proxmenux] lee /var/log/proxmenux-auth.log, 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",
diff --git a/web/messages/es/docs/security/index.json b/web/messages/es/docs/security/index.json
index 7e89921b..09522610 100644
--- a/web/messages/es/docs/security/index.json
+++ b/web/messages/es/docs/security/index.json
@@ -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. Fail2Ban responde a \"¿hay algo atacándonos ahora mismo?\" vigilando los logs de autenticación y baneando las IPs ofensoras. Lynis responde a \"¿cómo de hardened está este host?\" 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. Fail2Ban contesta «¿nos están atacando ahora?» vigilando registros de autenticación y bloqueando las IP responsables. Lynis contesta «¿qué nivel de refuerzo tiene este host?» 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 Seguridad. Verás esto:",
+ "body": "Desde el menú principal de ProxMenux, selecciona Seguridad. 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 MaxAuthTries en sshd_config 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 MaxAuthTries en sshd_config 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 github.com/CISOfy/lynis en /opt/lynis y lo expone como /usr/local/bin/lynis. 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 github.com/CISOfy/lynis en /opt/lynis y lo expone como /usr/local/bin/lynis. 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."
},
diff --git a/web/messages/es/docs/security/lynis.json b/web/messages/es/docs/security/lynis.json
index 46cddaa9..452dad31 100644
--- a/web/messages/es/docs/security/lynis.json
+++ b/web/messages/es/docs/security/lynis.json
@@ -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 /opt/lynis y crea un wrapper en /usr/local/bin/lynis para que esté en tu PATH. 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 /opt/lynis y crea un script lanzador en /usr/local/bin/lynis para incluirlo en PATH. 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 git 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 git; 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": "ProxMenux (este script)",
"path": "/opt/lynis/",
"update": "git pull (desde el menú)",
- "fresh": "Última versión upstream"
+ "fresh": "Última versión del proyecto original"
},
{
"sourceRich": "Debian apt",
@@ -59,14 +59,14 @@
"/opt/lynis/lynis — ruta directa (por si el wrapper se eliminó)",
"/usr/bin/lynis — 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 no desinstala un Lynis instalado por apt — solo el que él mismo gestiona (/opt/lynis + el wrapper)."
+ "outro": "Si encuentra cualquiera de estas rutas, abre el menú de gestión. El script no desinstala Lynis instalado por apt; solo el que gestiona en /opt/lynis y su lanzador."
},
"audit": {
"heading": "Ejecutar una auditoría",
- "intro": "Desde el menú de gestión, elige Ejecutar auditoría de seguridad ahora. Esto equivale a ejecutar:",
+ "intro": "En el menú de gestión, elige Ejecutar auditoría de seguridad ahora. 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 ], [ WARNING ] o [ SUGGESTION ]. 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 ], [ WARNING ] o [ SUGGESTION ]. 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, Actualizar Lynis a la última versión ejecuta git pull --quiet dentro de /opt/lynis. 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ú, Actualizar Lynis a la última versión ejecuta git pull --quiet en /opt/lynis. 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": "Reinstalar",
- "whatRich": "Elimina /opt/lynis, vuelve a clonar desde GitHub, recrea el wrapper. Úsalo si el checkout local está corrupto."
+ "whatRich": "Elimina /opt/lynis, clona de nuevo desde GitHub y recrea el lanzador. Úsalo si la copia local está dañada."
},
{
"actionRich": "Eliminar",
@@ -128,7 +128,7 @@
"notFoundTitle": "lynis: command not found tras la instalación",
"notFoundIntro": "El wrapper en /usr/local/bin/lynis 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 Fail2Ban desde ProxMenux (que establece MaxAuthTries=3 automáticamente) o edita /etc/ssh/sshd_config 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 pestaña de Seguridad 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 pestaña Seguridad. 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",
diff --git a/web/messages/es/docs/security/ssl-letsencrypt.json b/web/messages/es/docs/security/ssl-letsencrypt.json
index 9fb83863..0e97809e 100644
--- a/web/messages/es/docs/security/ssl-letsencrypt.json
+++ b/web/messages/es/docs/security/ssl-letsencrypt.json
@@ -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 Settings → Security → HTTPS / SSL. 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 Ajustes → Seguridad → HTTPS / SSL. 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 certbot, acme.sh 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": "pveproxy-ssl.pem pveproxy-ssl.key",
"originRich": "Certificado personalizado subido vía la UI de Proxmox — incluyendo el certificado Let's Encrypt emitido en Datacenter → Node → Certificates → ACME.",
- "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": "pve-ssl.pem pve-ssl.key",
@@ -65,17 +65,17 @@
},
"callout": {
"title": "Misma prioridad que el propio Proxmox",
- "bodyRich": "pveproxy 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": "pveproxy 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 \"Order Certificate Now\" escribe el resultado en /etc/pve/local/pveproxy-ssl.pem, que es exactamente lo que el Monitor lee. La receta de cinco pasos de abajo es el mismo procedimiento que la guía oficial de Proxmox — destilada a los comandos que realmente necesitas ejecutar.",
+ "intro": "Proxmox VE incluye su propio cliente ACME. «Order Certificate Now» guarda el resultado en /etc/pve/local/pveproxy-ssl.pem, que Monitor lee. Los cinco pasos siguientes condensan el procedimiento de la guía oficial de Proxmox en los comandos necesarios.",
"prereqs": {
"title": "Prerrequisitos",
"items": [
"El nodo tiene un nombre DNS real (no solo una IP) apuntándole.",
- "O bien puerto 80 alcanzable desde la internet pública (challenge HTTP-01, el más simple), o bien un proveedor de DNS con credenciales API (challenge DNS-01 — funciona detrás de NAT, soporta wildcards).",
+ "O bien puerto 80 accesible desde Internet (verificación HTTP-01, la más sencilla), o bien 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": "HTTP-01 es el más fácil: está integrado, sin plugin extra. Let's Encrypt se conecta a http://<your-host>/.well-known/acme-challenge/... 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": "DNS-01 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 pvenode acme plugin add dns --help — Proxmox entrega todos los plugins DNS de acme.sh."
+ "outroRich": "Para otros proveedores (Gandi, OVH, AWS Route 53, etc.), consulta pvenode acme plugin add dns --help. Proxmox incluye todos los plugins DNS de acme.sh."
},
"step3": {
"heading": "Paso 3 — Asocia el dominio a tu nodo",
@@ -112,19 +112,19 @@
},
"gui": {
"title": "¿Prefieres la GUI? Los mismos cinco pasos",
- "bodyRich": "Datacenter → ACME registra la cuenta, Datacenter → ACME → Plugins añade el plugin DNS, Node → Certificates → ACME asocia el dominio y Order Certificates Now ejecuta el paso 4. Los comandos CLI de arriba son útiles para scriptar y para setups headless / solo CLI."
+ "bodyRich": "Datacenter → ACME registra la cuenta; Datacenter → ACME → Plugins añade DNS; Node → Certificates → ACME vincula el dominio; Order Certificates Now 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 /etc/pve/local/pveproxy-ssl.pem está firmado por Let's Encrypt, en el Monitor solo hace falta un clic: abre Ajustes → Seguridad → HTTPS / SSL, confirma que el emisor mostrado en el panel del certificado detectado sea Let's Encrypt (y no la CA local de Proxmox) y pulsa Usar certificado de Proxmox. 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. Actualizar certificado permanece disponible en Seguridad como acción explícita de diagnóstico y recuperación."
+ "bodyRich": "Una vez que /etc/pve/local/pveproxy-ssl.pem está firmado por Let's Encrypt, abre Ajustes → Seguridad → HTTPS / SSL, comprueba que el emisor sea Let's Encrypt y no la CA local de Proxmox, y pulsa Usar certificado de Proxmox. 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. Actualizar certificado sigue disponible en Seguridad como acción explícita de diagnóstico y recuperación."
},
"custom": {
"heading": "Certificado personalizado — cuándo usarlo",
- "intro": "Pulsa Use Custom Certificate para introducir dos rutas absolutas:",
+ "intro": "Pulsa Usar certificado personalizado e introduce dos rutas absolutas:",
"items": [
"Certificado — cadena completa en PEM (.pem o .crt).",
- "Clave privada — clave correspondiente en PEM (.key)."
+ "Clave privada: clave correspondiente en PEM (.key)."
],
"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//fullchain.pem\n/etc/letsencrypt/live//privkey.pem\n\n# acme.sh\n~/.acme.sh/_ecc/fullchain.cer\n~/.acme.sh/_ecc/.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 /etc/pve/local/pveproxy-ssl.pem; 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 /etc/pve/local/pve-ssl.pem 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 /etc/pve/pve-root-ca.pem en cada nodo. En un clúster la ruta está en el sistema de archivos compartido pmxcfs, 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@:/etc/pve/pve-root-ca.pem ./pve-root-ca.pem",
"thenImport": "Después impórtalo en el lado del cliente:",
"items": [
- "Linux (todo el sistema):sudo cp pve-root-ca.pem /usr/local/share/ca-certificates/pve-root-ca.crt seguido de sudo update-ca-certificates. 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.",
- "macOS: doble clic en el archivo .pem, se abre Keychain Access → añádelo al keychain del Sistema → establece Trust → Always Trust.",
- "Windows: clic derecho en el archivo → Install Certificate → colócalo en Trusted Root Certification Authorities.",
- "Firefox (cualquier SO):Settings → Privacy y Security → Certificates → View Certificates → Authorities → Import, marca Trust this CA to identify websites."
+ "Linux (todo el sistema): ejecuta sudo cp pve-root-ca.pem /usr/local/share/ca-certificates/pve-root-ca.crt y después sudo update-ca-certificates. 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.",
+ "macOS: abre el archivo .pem con doble clic en Acceso a Llaveros, añádelo al llavero Sistema y configura Confiar → Confiar siempre.",
+ "Windows: clic derecho en el archivo → Instalar certificado → guárdalo en Entidades de certificación raíz de confianza.",
+ "Firefox (cualquier SO):Ajustes → Privacidad y seguridad → Certificados → Ver certificados → Autoridades → Importar; marca Confiar en esta CA para identificar sitios web."
],
"standalone": {
"title": "Nodos standalone fuera de un clúster",
@@ -160,9 +160,9 @@
},
"disable": {
"heading": "Deshabilitar HTTPS",
- "bodyRich": "Pulsa Disable HTTPS 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 Desactivar HTTPS 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": "/etc/proxmenux/ssl_config.json almacena las rutas de certificado activas y la fuente (none, proxmox, custom). Borrar el archivo equivale a deshabilitar HTTPS — en el siguiente arranque el Monitor recae en HTTP."
}
}
diff --git a/web/messages/fr/docs/security/fail2ban.json b/web/messages/fr/docs/security/fail2ban.json
new file mode 100644
index 00000000..8c313a04
--- /dev/null
+++ b/web/messages/fr/docs/security/fail2ban.json
@@ -0,0 +1,152 @@
+{
+ "meta": {
+ "title": "Fail2Ban | Documentation ProxMenux",
+ "description": "Installez Fail2Ban avec trois jails optimisés pour Proxmox (SSH agressif, Proxmox UI 8006, ProxMenux Monitor 8008). Inclut le correctif journald MaxLevelStore, des services de journalisation personnalisés pour plus de fiabilité, un backend nftables/iptables détecté automatiquement et le renforcement SSH MaxAuthTries.",
+ "ogTitle": "Fail2Ban | Documentation ProxMenux",
+ "ogDescription": "Protection contre la force brute pour SSH et les interfaces web Proxmox, avec des correctifs journald et backend propres à Proxmox."
+ },
+ "header": {
+ "title": "Fail2Ban",
+ "description": "Installe Fail2Ban pour Proxmox : trois jails (SSH agressif, interface Proxmox sur 8006, ProxMenux Monitor sur 8008 et proxy inverse), correction du niveau journald pour conserver les événements SSH, deux services copiant le journal vers des fichiers afin de contourner un problème connu du backend systemd, détection du backend de pare-feu et durcissement SSH avec MaxAuthTries.",
+ "section": "Sécurité"
+ },
+ "intro": {
+ "title": "Ce que ça fait",
+ "body": "Installe Fail2Ban depuis les dépôts Debian et écrit une configuration Proxmox protégeant immédiatement SSH, l'interface web Proxmox et ProxMenux Monitor. Une installation existante est détectée et un menu de gestion propose de réinstaller ou de supprimer."
+ },
+ "firstLaunch": {
+ "heading": "Boîte de dialogue Premier lancement",
+ "body": "Sans Fail2Ban installé, le script résume dans un dialogue ce qu'il va installer et configurer. Annuler quitte sans modification ; confirmer lance l'installation.",
+ "imageAlt": "Confirmation de Fail2Ban avec les trois jails, correction de journald et durcissement SSH"
+ },
+ "jails": {
+ "heading": "Les trois jails",
+ "headerJail": "Jail",
+ "headerProtects": "Protège",
+ "headerRetries": "Tentatives / Fenêtre",
+ "headerBan": "Durée de blocage",
+ "rows": [
+ {
+ "jail": "[sshd]",
+ "protects": "SSH (mode agressif — couvre ddos, mode, normal)",
+ "retries": "2 / 60 min",
+ "ban": "9 heures"
+ },
+ {
+ "jail": "[proxmox]",
+ "protects": "UI web Proxmox (port 8006)",
+ "retries": "3 / 10 min",
+ "ban": "1 heure"
+ },
+ {
+ "jail": "[proxmenux]",
+ "protects": "ProxMenux Monitor (port 8008 + http/https proxy inverse)",
+ "retries": "3 / 10 min",
+ "ban": "1 heure"
+ }
+ ],
+ "outro": "Par défaut mondial à partir de jail.local: ignoreip = 127.0.0.1/8 ::1, ignoreself = true, bantime = 86400 (24h pour les prisons qui ne le remplacent pas), maxretry = 2, findtime = 1800."
+ },
+ "journald": {
+ "heading": "Pourquoi la correction de journald est importante",
+ "intro": "Proxmox fournit /etc/systemd/journald.conf avec MaxLevelStore=warning. journald supprime les messages de niveau inférieur à warning avant de les stocker. SSH et PAM signalent les échecs d'authentification aux niveaux info / notice, donc :",
+ "diagram": {
+ "sshLabel": "SSH / PAM",
+ "sshDetail": "échec d'authentification\n(niveau info / notice)",
+ "journaldLabel": "journald",
+ "journaldDetail": "MaxLevelStore=warning\n→ événement ignoré sans avertissement",
+ "fail2banLabel": "Fail2Ban",
+ "fail2banDetail": "ne voit rien\n→ n'interdit jamais rien",
+ "arrowLabel": "Proxmox par défaut"
+ },
+ "afterDiagram": "L'installateur détecte cela et écrit un drop-in à /etc/systemd/journald.conf.d/proxmenux-loglevel.conf élevant à la fois MaxLevelStore et MaxLevelSyslog à info:",
+ "code": "[Journal]\nMaxLevelStore=info\nMaxLevelSyslog=info",
+ "outro": "Puis redémarre systemd-journald. Le drop-in est supprimé lors de la désinstallation, ce qui restaure le Proxmox original par défaut."
+ },
+ "loggers": {
+ "heading": "Pourquoi deux services d'enregistreur personnalisé",
+ "intro1": "Fail2Ban peut lire directement le journal systemd (backend = systemd), mais ce backend présente sur Proxmox des problèmes connus avec les processus de travail de pvedaemon : les événements d'authentification apparaissent dans le journal sans être toujours détectés. Le problème concerne aussi parfois sshd.",
+ "intro2": "ProxMenux crée deux petits services systemd qui suivent les unités concernées avec journalctl -f et ajoutent chaque ligne à un fichier. Fail2Ban lit ces fichiers avec le fiable backend = auto (mode fichier) :",
+ "headerService": "Services",
+ "headerSource": "Unité source",
+ "headerOutput": "Fichier de sortie",
+ "rows": [
+ {
+ "service": "proxmox-auth-logger.service",
+ "source": "pvedaemon.service",
+ "output": "/var/log/proxmox-auth.log"
+ },
+ {
+ "service": "ssh-auth-logger.service",
+ "source": "ssh.service",
+ "output": "/var/log/ssh-auth.log"
+ }
+ ],
+ "outro": "Les deux services sont déclarés PartOf=fail2ban.service donc ils redémarrent avec Fail2Ban et s'arrêtent avec elle. Mode 640 appartenant à root:adm dans les fichiers journaux. Le troisième journal utilisé par la prison [proxmenux] (/var/log/proxmenux-auth.log) est écrit directement par l'application ProxMenux Monitor Flask — aucun service d'enregistreur nécessaire pour celui-ci."
+ },
+ "backend": {
+ "heading": "Détection du backend de pare-feu",
+ "intro": "L'installateur sonde l'hôte : si nft list ruleset fonctionne, il choisit nftables comme mesure d'interdiction. Sinon, il revient à iptables-multiport / iptables-allports. Le choix est écrit dans jail.local :",
+ "code": "# nftables host\nbanaction = nftables\nbanaction_allports = nftables[type=allports]\n\n# iptables host (fallback)\nbanaction = iptables-multiport\nbanaction_allports = iptables-allports"
+ },
+ "hardening": {
+ "heading": "Durcissement SSH : MaxAuthTries",
+ "intro": "Le contrôle Lynis SSH-7408 recommande MaxAuthTries 3 dans sshd_config. La jail SSH utilise maxretry = 2 pour bloquer après des échecs répétés ; MaxAuthTries limite les tentatives dans une connexion. Ce réglage SSH ajoute une défense en profondeur, y compris lorsque Fail2Ban est arrêté pour maintenance.",
+ "installerIntro": "L'installateur:",
+ "items": [
+ "Lit la valeur actuelle MaxAuthTries (ou par défaut 6 si elle est absente).",
+ "Enregistre-le dans /usr/local/share/proxmenux/sshd_maxauthtries_backup.",
+ "Modifie sshd_config sur place : remplace la ligne existante, décommente une ligne commentée ou ajoute une nouvelle ligne.",
+ "Recharge sshd (recharger, pas redémarrer, pour garder les sessions existantes en vie)."
+ ],
+ "outro": "Lors de la désinstallation, la valeur originale enregistrée est restaurée et sshd est rechargée."
+ },
+ "manage": {
+ "heading": "Gérer une installation existante",
+ "intro": "Si Fail2Ban est déjà installé lorsque vous ouvrez le menu, le script le détecte et affiche un menu de gestion au lieu de ré-exécuter l'installateur:",
+ "headerAction": "Décision",
+ "headerWhat": "Ce qu'il fait",
+ "rows": [
+ {
+ "action": "Réinstaller",
+ "what": "Relance l'installation complète et réécrit toutes les jails avec les valeurs actuelles de ProxMenux. À utiliser lorsqu'une mise à jour modifie les recommandations."
+ },
+ {
+ "action": "Supprimer",
+ "what": "Arrête fail2ban et les deux services d'enregistrement, purge le package apt, supprime tous les fichiers jail/filtre, supprime le drop-in journald (restauration de la valeur par défaut de Proxmox) et restaure l'original SSH MaxAuthTries."
+ }
+ ]
+ },
+ "verify": {
+ "heading": "Vérifiez que ça marche.",
+ "intro": "Après l'installation, commandes utiles de l'hôte:",
+ "code": "# Service status and version\nsystemctl status fail2ban\nfail2ban-client --version\n\n# All active jails\nfail2ban-client status\n\n# Detail on one jail\nfail2ban-client status sshd\nfail2ban-client status proxmox\nfail2ban-client status proxmenux\n\n# Currently banned IPs in a jail\nfail2ban-client status sshd | grep \"Banned IP\"\n\n# Manually unban an IP (use this if you ban yourself)\nfail2ban-client unban 192.0.2.10\n\n# Tail the auth logs Fail2Ban watches\ntail -f /var/log/ssh-auth.log\ntail -f /var/log/proxmox-auth.log\ntail -f /var/log/fail2ban.log"
+ },
+ "troubleshoot": {
+ "heading": "Dépannage",
+ "neverBansTitle": "Fail2Ban fonctionne mais n'interdit jamais rien",
+ "neverBansBody": "Vérifiez que tail -f /var/log/ssh-auth.log reçoit une entrée après une tentative SSH avec un mauvais mot de passe depuis une autre machine. Sinon, examinez systemctl status ssh-auth-logger.service. Si le service est actif, consultez les événements récents avec journalctl -u ssh.service -n 50 --no-pager -p info et vérifiez que le complément journald autorise le niveau info.",
+ "monitorEmptyTitle": "La jail ProxMenux Monitor ne contient aucune entrée malgré des connexions échouées",
+ "monitorEmptyBody": "Le [proxmenux] jail lit /var/log/proxmenux-auth.log, qui est écrit par l'application ProxMenux Monitor Flask — et non par un enregistreur journald. Si vous n'exécutez pas le moniteur, le fichier reste vide et le jail ne se déclenche jamais. C'est prévu ; la configuration jail est inoffensive. Si vous exécutez le moniteur et que le journal est vide, vérifiez la configuration de journalisation Flask.",
+ "selfBanTitle": "Je me suis bloqué moi-même",
+ "selfBanIntro": "À partir d'une console / IPMI / iKVM (ou d'une autre IP sur liste blanche):",
+ "selfBanCode": "fail2ban-client unban '<'YOUR_IP'>'\n\n# To prevent it next time, edit /etc/fail2ban/jail.local and add your IP:\nignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 203.0.113.42\n\n# Then reload\nfail2ban-client reload",
+ "aptFailTitle": "Échec d'apt-get : ''Unable to locate package fail2ban''",
+ "aptFailBody": "Les dépôts Debian manquent sur l'hôte (fréquent sur les installations Proxmox minimales). L'installateur crée /etc/apt/sources.list.d/debian.sources avec le bon nom de code (bookworm / trixie), puis réessaie. Si cela échoue encore, vérifiez VERSION_CODENAME dans /etc/os-release et l'accessibilité du dépôt.",
+ "lockoutTitle": "SSH me verrouille après l'installation",
+ "lockoutBody": "L'installateur définit MaxAuthTries=3. Si votre gestionnaire de mot de passe / agent récupère plusieurs clés, vous pouvez dépasser cela sur une seule tentative de connexion. Limiter les clés offertes : ssh -o IdentitiesOnly=yes -i ~/.ssh/specific_key user@host. Ou augmenter temporairement MaxAuthTries en sshd_config pendant le débogage."
+ },
+ "files": {
+ "heading": "Fichiers écrits",
+ "code": "/etc/fail2ban/jail.local # global defaults + [sshd]\n/etc/fail2ban/jail.d/proxmox.conf # [proxmox]\n/etc/fail2ban/jail.d/proxmenux.conf # [proxmenux]\n/etc/fail2ban/filter.d/proxmox.conf # auth-failure regex for pvedaemon\n/etc/fail2ban/filter.d/proxmenux.conf # auth-failure regex for Monitor\n/etc/systemd/system/proxmox-auth-logger.service # journal → file (pvedaemon)\n/etc/systemd/system/ssh-auth-logger.service # journal → file (sshd)\n/etc/systemd/journald.conf.d/proxmenux-loglevel.conf # MaxLevelStore=info\n/etc/ssh/sshd_config # MaxAuthTries=3 (in-place edit)\n/var/log/proxmox-auth.log # written by logger service\n/var/log/ssh-auth.log # written by logger service\n/var/log/proxmenux-auth.log # written by Monitor Flask app\n/usr/local/share/proxmenux/sshd_maxauthtries_backup # for restore on uninstall"
+ },
+ "related": {
+ "heading": "Autres",
+ "monitorLabel": "ProxMenux Monitor → Onglet Sécurité",
+ "monitorTail": " — installation depuis le tableau de bord, état des jails en direct, IP bloquées et réglage des tentatives et de la durée de blocage par jail dans le navigateur.",
+ "lynisLabel": "Lynis",
+ "lynisTail": " — lancer un audit avant et après pour vérifier que le contrôle SSH-7408 est satisfait.",
+ "securityLabel": "Aperçu de la sécurité",
+ "securityTail": "— retour à l'aperçu de la section."
+ }
+}
diff --git a/web/messages/fr/docs/security/index.json b/web/messages/fr/docs/security/index.json
new file mode 100644
index 00000000..a1d70fe2
--- /dev/null
+++ b/web/messages/fr/docs/security/index.json
@@ -0,0 +1,70 @@
+{
+ "meta": {
+ "title": "Sécurité Proxmox — Fail2Ban et audit de durcissement Lynis | ProxMenux",
+ "description": "Deux outils de sécurité installables pour Proxmox VE : Fail2Ban (prévention des intrusions pour SSH, l'interface web Proxmox et ProxMenux Monitor) et Lynis (audit de sécurité et de durcissement installé depuis le dépôt officiel GitHub).",
+ "ogTitle": "Sécurité Proxmox — Fail2Ban et audit de durcissement Lynis",
+ "ogDescription": "Fail2Ban et Lynis pour Proxmox VE : prévention des intrusions et audit de durcissement, installés et gérés par ProxMenux.",
+ "twitterTitle": "Sécurité Proxmox | ProxMenux",
+ "twitterDescription": "Fail2Ban et Lynis pour Proxmox VE : prévention des intrusions et audit de durcissement."
+ },
+ "header": {
+ "title": "Sécurité",
+ "description": "Deux outils complémentaires pour Proxmox VE : défense active (Fail2Ban bloque les IP attaquant SSH ou les interfaces web) et audit local (Lynis cherche les lacunes de durcissement et donne un score de 0 à 100). Chaque outil possède son menu d'installation et de gestion, qui détecte une installation existante avant toute action.",
+ "section": "Sécurité"
+ },
+ "intro": {
+ "title": "Défense active et audit local",
+ "body": "Ils répondent à des questions différentes. Fail2Ban répond à « Sommes-nous attaqués en ce moment ? » en surveillant les journaux d'authentification et en bloquant les IP responsables. Lynis répond à « Quel est le niveau de durcissement de cet hôte ? » par un audit ponctuel avec des recommandations concrètes. Utilisez les deux : Lynis indique les améliorations, Fail2Ban réagit aux attaques en cours."
+ },
+ "opening": {
+ "heading": "Ouverture du menu",
+ "body": "Dans le menu principal ProxMenux, sélectionnez Sécurité. Voici ce qui apparaît :",
+ "imageAlt": "Menu de sécurité avec options Fail2Ban et Lynis"
+ },
+ "pick": {
+ "heading": "Choisissez votre outil",
+ "body": "Les deux outils sont indépendants : installez-en un, les deux ou aucun. Chaque carte ci-dessous mène à la section détaillant cet outil."
+ },
+ "cards": {
+ "fail2ban": {
+ "title": "Fail2Ban",
+ "body": "Prévention active des intrusions. Surveille les journaux d'authentification SSH et web et bloque les IP après des échecs répétés.",
+ "bullets": [
+ "Trois jails : SSH, interface Proxmox (8006), ProxMenux Monitor (8008)",
+ "Corrige les paramètres journald de Proxmox qui bloquent les journaux d'authentification",
+ "Auto-détecte nftables / iptables",
+ "SSH durcissement: MaxAuthTries=3 (recommandation Lynis)"
+ ]
+ },
+ "lynis": {
+ "title": "Lynis",
+ "body": "Auditeur de sécurité local. Analyse l'hôte et affiche un score de durcissement et des conseils concrets pour corriger les problèmes.",
+ "bullets": [
+ "Installé depuis le dépôt officiel CISOfy sur GitHub (dernière version)",
+ "Score de durcissement 0–100 et liste des avertissements et suggestions",
+ "Audit et mise à jour depuis le menu",
+ "Conçu en lecture seule : ne modifie jamais le système"
+ ]
+ }
+ },
+ "workflowTip": {
+ "title": "Flux de travail qui utilise les deux",
+ "body": "Lancez d'abord Lynis pour connaître le score initial et les recommandations principales. Appliquez les corrections souhaitées. Installez ensuite Fail2Ban : il met automatiquement en place la protection SSH contre la force brute et ajuste MaxAuthTries dans sshd_config pour satisfaire le contrôle SSH-7408. Relancez Lynis pour vérifier l'amélioration."
+ },
+ "fail2banSection": {
+ "heading": "Fail2Ban",
+ "body": "ProxMenux installe Fail2Ban avec une configuration adaptée à Proxmox. En plus de la jail SSH standard, il protège l'interface web Proxmox et ProxMenux Monitor. Il contourne deux problèmes spécifiques : un paramètre journald supprimant les événements d'authentification et un problème du backend systemd empêchant la lecture fiable de certaines sources du journal. La page détaillée explique l'installation, les trois jails, la correction de journald, le durcissement SSH et le dépannage.",
+ "optionTitle": "Fail2Ban — installer et gérer",
+ "optionDescription": "Trois jails préconfigurées (sshd agressif, interface Proxmox sur 8006, ProxMenux Monitor sur 8008 et proxy inverse), détection de nftables/iptables, correction de journald et durcissement SSH avec MaxAuthTries."
+ },
+ "lynisSection": {
+ "heading": "Lynis",
+ "body": "ProxMenux clone Lynis depuis github.com/CISOfy/lynis dans /opt/lynis et le rend accessible par /usr/local/bin/lynis. Le paquet Debian est volontairement évité car il accuse plusieurs versions majeures de retard sur le projet original. La page détaillée explique installation, audit, mise à jour, désinstallation, lecture du rapport et traitement des résultats.",
+ "optionTitle": "Lynis — installation, audit et gestion",
+ "optionDescription": "Installe le dernier Lynis de la repo officielle CISOfy GitHub (pas l'ancien paquet Debian), exécute des audits système avec score de durcissement, et des mises à jour via git pull."
+ },
+ "componentStatus": {
+ "heading": "État des composantes",
+ "body": "Les deux installateurs enregistrent leur état en /usr/local/share/proxmenux/components_status.json dans la catégorie security. ProxMenux utilise ce fichier pour décider s'il faut afficher l'installation ou le menu de gestion lors d'exécutions ultérieures, et les mêmes données alimentent les tableaux de bord dans le ProxMenux Monitor lorsqu'elles sont présentes."
+ }
+}
diff --git a/web/messages/fr/docs/security/lynis.json b/web/messages/fr/docs/security/lynis.json
new file mode 100644
index 00000000..0444e96d
--- /dev/null
+++ b/web/messages/fr/docs/security/lynis.json
@@ -0,0 +1,170 @@
+{
+ "meta": {
+ "title": "Lynis | Documentation ProxMenux",
+ "description": "Installez la dernière version de Lynis depuis le dépôt officiel CISOfy sur GitHub, lancez un audit avec score de durcissement de 0 à 100 et mettez à jour par git pull. Auditeur en lecture seule, sans modification du système.",
+ "ogTitle": "Lynis | Documentation ProxMenux",
+ "ogDescription": "Installez et exécutez Lynis sur Proxmox VE. Installation depuis le dépôt GitHub officiel, audit et mise à jour."
+ },
+ "header": {
+ "title": "Lynis",
+ "description": "Clone la dernière version de Lynis depuis le dépôt officiel CISOfy sur GitHub, la rend disponible par /usr/local/bin/lynis et propose audit, mise à jour, réinstallation et désinstallation dans le menu. L'auditeur est en lecture seule : il rapporte sans modifier le système.",
+ "section": "Sécurité"
+ },
+ "intro": {
+ "title": "Ce que ça fait",
+ "body": "Installe Lynis, l'auditeur de sécurité libre de CISOfy, depuis son dépôt GitHub dans /opt/lynis et crée un script de lancement dans /usr/local/bin/lynis pour le rendre accessible dans PATH. Une installation existante ouvre un menu d'audit, mise à jour, réinstallation ou suppression."
+ },
+ "manageMenu": {
+ "heading": "Menu de gestion (après installation)",
+ "intro": "Une fois que Lynis est installé, chaque invocation subséquente ouvre le menu de gestion au lieu de relancer l'installateur. De là vous lancez un audit, mise à jour via git pull, réinstaller ou désinstaller:",
+ "imageAlt": "Lynis menu de gestion avec audit, mise à jour, réinstaller et supprimer les options"
+ },
+ "whyUpstream": {
+ "heading": "Pourquoi le dépôt officiel GitHub plutôt qu'apt",
+ "intro": "Debian fournit Lynis via apt, mais le paquet accuse généralement plusieurs versions majeures de retard. Les nouveaux contrôles, correctifs pour de nouveaux vecteurs d'attaque et recommandations améliorées arrivent d'abord sur GitHub. Lynis est un script shell autonome, sans compilation ni dépendance d'installation au-delà de git ; cloner le dépôt est donc la méthode recommandée par CISOfy.",
+ "headerSource": "Source",
+ "headerPath": "Install path",
+ "headerUpdate": "Méthode de mise à jour",
+ "headerFresh": "Actualité de la version",
+ "rows": [
+ {
+ "sourceRich": "ProxMenux (ce script)",
+ "path": "/opt/lynis/",
+ "update": "git pull (depuis le menu)",
+ "fresh": "Dernière version du projet original"
+ },
+ {
+ "sourceRich": "Debian apt",
+ "path": "/usr/bin/lynis",
+ "update": "apt upgrade",
+ "fresh": "Souvent mois / années de retard"
+ }
+ ]
+ },
+ "install": {
+ "heading": "Comment fonctionne l'installation",
+ "node1Label": "github.com/CISOfy/lynis",
+ "node1Detail": "git clone\n(installer git d'abord si nécessaire)",
+ "node2Label": "/opt/lynis/",
+ "node2Detail": "dépôt complet\ny compris le script ./lynis",
+ "node3Label": "/usr/local/bin/lynis",
+ "node3Detail": "script de lancement :\ncd /opt/lynis && ./lynis $@",
+ "outro": "Le lanceur est nécessaire : Lynis doit être exécuté depuis son propre répertoire pour charger les chemins relatifs des plugins et des profils. Le lanceur masque ce détail et permet à lynis audit system de fonctionner depuis n'importe quel répertoire."
+ },
+ "detection": {
+ "heading": "Voies de détection",
+ "intro": "Avant d'afficher le menu, le script vérifie trois emplacements pour déterminer si Lynis est déjà présent :",
+ "items": [
+ "/usr/local/bin/lynis — enveloppe installée par ProxMenux",
+ "/opt/lynis/lynis — chemin direct (au cas où l'emballage serait enlevé)",
+ "/usr/bin/lynis — version apt-installée, si l'utilisateur l'a installé de cette façon précédemment"
+ ],
+ "outro": "Si un de ces chemins existe, le menu de gestion s'ouvre. Le script ne désinstalle pas un Lynis installé par apt, uniquement celui qu'il gère dans /opt/lynis et son lanceur."
+ },
+ "audit": {
+ "heading": "Exécuter un audit",
+ "intro": "Dans le menu de gestion, choisissez Lancer l'audit de sécurité maintenant. Cela revient à exécuter :",
+ "code": "lynis audit system --no-colors",
+ "outro": "L'audit prend de 30 secondes à quelques minutes selon la taille de l'hôte. La sortie apparaît directement dans le terminal, sans animation d'attente. Lynis classe les contrôles par catégorie et marque chaque test [ OK ], [ WARNING ] ou [ SUGGESTION ]. Le résumé final affiche les chiffres principaux :",
+ "summary": "================================================================================\n\n Détails de l’audit de sécurité Lynis:\n\n Indice de durcissement : 76 [############ ]\n Tests effectués : 247\n Plugins activés : 0\n\n Composants:\n - Pare-feu [V]\n - Analyseur de logiciels malveillants [X]\n\n Modules Lynis:\n - État de conformité [?]\n - Audit de sécurité [V]\n - Analyse de vulnérabilités [V]\n\n================================================================================"
+ },
+ "report": {
+ "heading": "Lire le rapport",
+ "intro": "Les deux sections importantes sont Avertissements (les choses que vous devriez fixer bientôt) et Suggestions (recommandations pour améliorer le durcissement). Chaque élément porte un ID de contrôle comme SSH-7408 — utile lors de la recherche des documents Lynis pour la justification et la correction.",
+ "headerMarker": "Marqueur",
+ "headerMeaning": "Signification",
+ "headerAction": "Décision",
+ "rows": [
+ {
+ "markerRich": "OK",
+ "meaning": "Essai réussi",
+ "action": "Rien"
+ },
+ {
+ "markerRich": "WARNING",
+ "meaning": "Problème réel, correction recommandée",
+ "action": "Lire la description du contrôle, planifier une correction"
+ },
+ {
+ "markerRich": "SUGGESTION",
+ "meaning": "Amélioration du durcissement disponible",
+ "action": "Appliquer si elle correspond à votre modèle de menace"
+ }
+ ],
+ "outro": "Le rapport complet et les données lisibles par machine sont écrits à /var/log/lynis.log et /var/log/lynis-report.dat par Lynis lui-même."
+ },
+ "pairFail2ban": {
+ "title": "À combiner avec Fail2Ban",
+ "body": "SSH-7408 (MaxAuthTries) est l'un des avertissements les plus courants. L'installation de Fail2Ban à partir de ProxMenux l'élimine automatiquement parce que l'installateur définit MaxAuthTries=3 dans le cadre de son processus de durcissement SSH. Lancez Lynis pour confirmer que l'avertissement a disparu."
+ },
+ "update": {
+ "heading": "Mettre à jour Lynis",
+ "body": "Dans le menu, Mettre Lynis à jour vers la dernière version exécute git pull --quiet dans /opt/lynis. Si le répertoire n'est pas une copie de travail Git, par exemple après une copie manuelle des fichiers, le script réinstalle entièrement."
+ },
+ "reinstall": {
+ "heading": "Réinstaller / désinstaller",
+ "headerAction": "Décision",
+ "headerWhat": "Ce qu'il fait",
+ "rows": [
+ {
+ "actionRich": "Réinstaller",
+ "whatRich": "Supprime /opt/lynis, clone à nouveau depuis GitHub et recrée le lanceur. À utiliser si la copie locale est endommagée."
+ },
+ {
+ "actionRich": "Supprimer",
+ "whatRich": "Supprime /opt/lynis et /usr/local/bin/lynis. Conserve les journaux /var/log/lynis* comme historique des audits. Un Lynis installé par apt dans /usr/bin/lynis reste intact."
+ }
+ ]
+ },
+ "cli": {
+ "heading": "Options utiles CLI",
+ "intro": "Une fois installé, Lynis peut être invoqué directement à partir d'un shell avec des options supplémentaires non exposées par le menu:",
+ "code": "lynis show version # version + build date\nlynis show commands # list every available command\nlynis show details TEST-ID # explain a specific control\nlynis audit system --quick # skip slow tests (e.g. malware scan)\nlynis audit system --pentest # treat host as untrusted (more aggressive)\nlynis update info # check if a newer Lynis is available\n\n# Filter the report log for just the warnings\ngrep \"Warning\" /var/log/lynis.log\n\n# Same, for suggestions only\ngrep \"Suggestion\" /var/log/lynis.log"
+ },
+ "troubleshoot": {
+ "heading": "Dépannage",
+ "cloneTitle": "git clone échoue lors de l'installation",
+ "cloneBody": "L'hôte a besoin d'un accès réseau et DNS pour atteindre github.com. Depuis une console : curl -sI https://github.com et git ls-remote https://github.com/CISOfy/lynis.git révèlent l'erreur réelle (DNS, TLS, proxy, repo URL). Si un proxy est requis, définissez https_proxy dans l'environnement avant de ré-exécuter le menu.",
+ "notFoundTitle": "lynis: commande introuvable après installation",
+ "notFoundIntro": "Le lanceur /usr/local/bin/lynis n'a pas été créé ou a été supprimé. La solution la plus rapide est de réinstaller depuis le menu. Correction manuelle :",
+ "notFoundCode": "cat > /usr/local/bin/lynis <<'EOF'\n#!/bin/bash\ncd /opt/lynis && ./lynis \"$@\"\nEOF\nchmod +x /usr/local/bin/lynis",
+ "sshTitle": "L'audit affiche \"Warning: Test SSH-7408 — MaxAuthTries set incorrectly\"",
+ "sshIntro": "Le démon SSH permet trop de tentatives d'auth par connexion. Soit installer Fail2Ban à partir de ProxMenux (qui définit MaxAuthTries=3 automatiquement) soit éditer /etc/ssh/sshd_config à la main:",
+ "sshCode": "sed -i 's/^#?MaxAuthTries.*/MaxAuthTries 3/' /etc/ssh/sshd_config\nsystemctl reload sshd",
+ "scoreTitle": "Le score a baissé après une mise à niveau Proxmox",
+ "scoreBody": "Exécutez lynis update info d'abord — une mise à jour de Lynis peut avoir ajouté de nouvelles commandes qui annoncent la configuration existante. Mettre à jour Lynis dans le menu, revérifier et traiter des nouvelles constatations."
+ },
+ "files": {
+ "heading": "Fichiers écrits",
+ "code": "/opt/lynis/ # full Lynis git checkout\n/usr/local/bin/lynis # wrapper script (cd + exec)\n/var/log/lynis.log # human-readable audit log (Lynis itself)\n/var/log/lynis-report.dat # machine-readable report (Lynis itself)"
+ },
+ "sample": {
+ "heading": "Exemple de rapport",
+ "intro": "ProxMenux Monitor produit pour chaque exécution de Lynis un PDF de plusieurs pages depuis l'onglet Sécurité. La première page résume score de durcissement, informations système et état de sécurité. Les suivantes détaillent les avertissements, les suggestions classées par impact et l'inventaire des paquets utilisé lors de l'audit.",
+ "imageAlt": "Première page du rapport d'audit de sécurité de Lynis PDF — résumé avec l'index de durcissement 71/100, bloc d'information système, et vue d'ensemble de la posture de sécurité avec pare-feu, scanner de malware et les paquets installés",
+ "captionPrefix": "Première page d'un exemple de rapport. Le PDF complet (",
+ "captionLink": "échantillon",
+ "captionSuffix": ") continue avec des avertissements détaillés, des suggestions et la liste des paquets installés.",
+ "cli": "Sur le côté CLI les mêmes données sont dans /var/log/lynis-report.dat (fichier plat lisible par machine) et /var/log/lynis.log (le journal d'exécution lisible par l'homme). Le PDF est généré sur demande par ProxMenux Monitor — l'exécution de lynis à partir de la ligne de commande n'en produit pas."
+ },
+ "related": {
+ "heading": "Autres",
+ "items": [
+ {
+ "href": "/docs/monitor/dashboard/security",
+ "label": "ProxMenux Monitor → Onglet Sécurité",
+ "tail": "— exécuter l'audit, parcourir les rapports historiques et télécharger le PDF directement à partir du tableau de bord."
+ },
+ {
+ "href": "/docs/security/fail2ban",
+ "label": "Fail2Ban",
+ "tailRich": "— met en œuvre la protection de la force brute SSH que recommande Lynis."
+ },
+ {
+ "href": "/docs/security",
+ "label": "Aperçu de la sécurité",
+ "tail": "— retour à l'aperçu de la section."
+ }
+ ]
+ }
+}
diff --git a/web/messages/fr/docs/security/ssl-letsencrypt.json b/web/messages/fr/docs/security/ssl-letsencrypt.json
new file mode 100644
index 00000000..7ee2fe14
--- /dev/null
+++ b/web/messages/fr/docs/security/ssl-letsencrypt.json
@@ -0,0 +1,169 @@
+{
+ "meta": {
+ "title": "HTTPS pour ProxMenux Monitor — certificat de l'hôte Proxmox ou chemins personnalisés | ProxMenux",
+ "description": "Servez ProxMenux Monitor en HTTPS avec le certificat de l'hôte Proxmox (détecté automatiquement, y compris le certificat Let’s Encrypt installé via ACME de Proxmox) ou un certificat personnalisé à un emplacement quelconque sur disque.",
+ "ogTitle": "HTTPS pour ProxMenux Monitor — Hôte Proxmox ou certificat personnalisé",
+ "ogDescription": "Activer HTTPS sur le port 8008 avec le certificat hôte Proxmox ou toute paire de .pem / .key personnalisée."
+ },
+ "header": {
+ "title": "HTTPS pour ProxMenux Monitor",
+ "description": "Activez HTTPS pour Monitor sur le port 8008 avec le certificat de l'hôte Proxmox détecté automatiquement ou un certificat personnalisé sur disque. L'option Proxmox privilégie le certificat ACME, s'il existe, et réutilise Let’s Encrypt géré par Proxmox sans tâche de renouvellement supplémentaire.",
+ "section": "Sécurité"
+ },
+ "intro": {
+ "title": "Ce que cette page couvre",
+ "body": "Comment changer le moniteur de HTTP à HTTPS dans le panneau Paramètres → Sécurité, ce que chaque source de certificat pointe en fait sur le disque, comment l'option Proxmox se comporte quand l'hôte a un cert Let's Encrypt et comment définir des chemins personnalisés si vous gérez des certs en dehors de Proxmox."
+ },
+ "wheresetting": {
+ "heading": "Emplacement du réglage",
+ "body": "Ouvrez Monitor et allez dans Paramètres → Sécurité → HTTPS / SSL. Le panneau affiche HTTP ou HTTPS et, si HTTPS est désactivé, les sources de certificats détectées.",
+ "imageAlt": "Paramètres → Sécurité → Panneau HTTPS / SSL dans le moniteur montrant l'état HTTPS-off, le certificat Proxmox détecté automatiquement (sujet, émetteur, expiration) et l'option Utiliser un certificat personnalisé",
+ "caption": "Panneau Paramètres → Sécurité → HTTPS / SSL avant activation. Monitor affiche le certificat utilisé par Proxmox et permet de le choisir en un clic."
+ },
+ "twoways": {
+ "heading": "Deux façons d'activer HTTPS",
+ "proxmox": {
+ "title": "Utiliser le certificat Proxmox",
+ "summary": "Un clic : Monitor réutilise le certificat présenté par Proxmox VE sur le port 8006.",
+ "items": [
+ "Détecté automatiquement, aucun chemin à saisir",
+ "Privilégie le certificat ACME s'il existe, sinon le certificat autosigné par défaut",
+ "Proxmox renouvelle ; Monitor valide et charge le certificat à la prochaine nouvelle connexion TLS"
+ ]
+ },
+ "custom": {
+ "title": "Utiliser un certificat personnalisé",
+ "summaryRich": "Pointez le moniteur sur une paire .pem / .key n'importe où sur le disque.",
+ "items": [
+ "Chemins absolus seulement (le processus Monitor doit pouvoir lire les deux)",
+ "Utile lorsque les certificats proviennent de certbot, acme.sh ou d'un wildcard",
+ "Vous gérez le renouvellement : redémarrez Monitor après modification des fichiers"
+ ]
+ }
+ },
+ "proxmoxCert": {
+ "heading": "Certificat Proxmox — ce qu'il indique en réalité à",
+ "intro": "Proxmox VE conserve deux paires de certificats dans /etc/pve/local/ :",
+ "table": {
+ "headers": {
+ "file": "Fichier",
+ "origin": "Origine",
+ "when": "Lorsque le moniteur l'utilise"
+ },
+ "rows": [
+ {
+ "fileRich": "pveproxy-ssl.pem pveproxy-ssl.key",
+ "originRich": "Certificat personnalisé téléchargé via l'interface utilisateur Proxmox — y compris le certificat Let's Encrypt émis sous Datacenter → Node → Certificats → ACME.",
+ "when": "Préféré si les deux fichiers existent ; Monitor utilise le certificat présenté par Proxmox."
+ },
+ {
+ "fileRich": "pve-ssl.pem pve-ssl.key",
+ "originRich": "Certificat autosigné généré au moment de l'installation par l'ICP Proxmox.",
+ "whenRich": "Certificat de repli en l'absence de pveproxy-ssl.pem."
+ }
+ ]
+ },
+ "callout": {
+ "title": "Même priorité que Proxmox",
+ "bodyRich": "pveproxy applique la même sélection. Avec l'option Proxmox, Monitor utilise le certificat présenté par l'interface Proxmox sur 8006, sans copie ni processus de renouvellement séparé."
+ }
+ },
+ "letsencrypt": {
+ "heading": "Obtenir un certificat Let's Encrypt via Proxmox ACME",
+ "intro": "Proxmox VE inclut son client ACME. « Order Certificate Now » enregistre le résultat dans /etc/pve/local/pveproxy-ssl.pem, lu par Monitor. Les cinq étapes suivantes résument le guide officiel Proxmox avec les commandes nécessaires.",
+ "prereqs": {
+ "title": "Préalables",
+ "items": [
+ "Le noeud a un vrai nom DNS (pas seulement un IP) pointant dessus.",
+ "Soit le port 80 accessible depuis Internet (validation HTTP-01, la plus simple), soit un fournisseur DNS avec identifiants API (DNS-01, fonctionne derrière NAT et accepte les certificats génériques).",
+ "Une adresse email pour le compte ACME."
+ ]
+ },
+ "step1": {
+ "heading": "Étape 1 — Enregistrer le compte ACME",
+ "introRich": "Remplacer le courriel par le vôtre. Le nom de compte default n'est qu'une étiquette — vous pouvez utiliser n'importe quelle chaîne.",
+ "code": "pvenode acme account register default you@example.com",
+ "afterRich": "Proxmox vous invite à accepter les termes de service Let's Encrypt. Après cela, le compte est maintenu sous /etc/pve/priv/acme/ et l'onglet ACME dans l'interface graphique l'affichera."
+ },
+ "step2": {
+ "heading": "Étape 2 — Choisir un type de défi",
+ "http01Rich": "HTTP-01 est le plus facile : il est intégré, pas de plugin supplémentaire. Let's Encrypt se connecte à http://<your-host>/.well-known/acme-challenge/... sur le port 80, de sorte que le port 80 doit être ouvert de l'Internet public à votre noeud — généralement un port vers l'avant sur votre routeur.",
+ "dns01Rich": "DNS-01 fonctionne sans exposer le port 80 (bon pour les homelabs derrière CG-NAT) et est la seule option pour les certificats wildcard. Vous ajoutez un plugin DNS une fois avec le jeton API de votre fournisseur. Exemple Cloudflare:",
+ "code": "pvenode acme plugin add dns cf \\\n --api cloudflare \\\n --data CF_Token=YOUR_CLOUDFLARE_API_TOKEN",
+ "outroRich": "Pour d'autres fournisseurs (Gandi, OVH, AWS Route 53, etc.), consultez pvenode acme plugin add dns --help. Proxmox inclut tous les plugins DNS acme.sh."
+ },
+ "step3": {
+ "heading": "Étape 3 — Relier le domaine à votre nœud",
+ "http01Rich": "Pour HTTP-01 (utilise le plugin standalone intégré):",
+ "code1": "pvenode config set --acme domains=host.example.com,account=default",
+ "dns01": "Pour DNS-01 avec le plugin Cloudflare de l'étape 2 :",
+ "code2": "pvenode config set --acmedomain0 domain=host.example.com,plugin=cf\npvenode config set --acme account=default",
+ "wildcardRich": "Certificat générique ? Ajoutez domain=*.example.com dans une entrée séparée --acmedomainN. Les certificats génériques nécessitent DNS-01."
+ },
+ "step4": {
+ "heading": "Étape 4 — Commander le certificat",
+ "code": "pvenode acme cert order",
+ "afterRich": "Le premier tour prend généralement 30–60 secondes pendant que le défi se propage. Sur succès Proxmox écrit /etc/pve/local/pveproxy-ssl.pem + .key, redémarre pveproxy, et une cron de renouvellement est programmée automatiquement (Let's Encrypt certs sont valides 90 jours; Proxmox renouvelle à 60)."
+ },
+ "step5": {
+ "heading": "Étape 5 — Vérifier l'émetteur",
+ "code": "openssl x509 -in /etc/pve/local/pveproxy-ssl.pem -noout -issuer",
+ "afterRich": "devrait imprimer un émetteur commençant par O = Let's Encrypt. S'il lit plutôt CN = Proxmox Virtual Environment l'ordre a échoué et le fichier est toujours le certificat PVE autosigné — re-exécuter pvenode acme cert order --debug 1 pour voir pourquoi."
+ },
+ "gui": {
+ "title": "Vous préférez l'interface utilisateur ? Mêmes cinq étapes",
+ "bodyRich": "Datacenter → ACME enregistre le compte ; Datacenter → ACME → Plugins ajoute le plugin DNS ; Node → Certificates → ACME associe le domaine ; Order Certificates Now exécute l'étape 4. Les commandes précédentes servent à automatiser et à travailler sans interface graphique."
+ }
+ },
+ "switchToHttps": {
+ "heading": "Changez le moniteur en HTTPS",
+ "bodyRich": "Une fois /etc/pve/local/pveproxy-ssl.pem signé par Let's Encrypt, ouvrez Paramètres → Sécurité → HTTPS / SSL, vérifiez que l'émetteur est Let's Encrypt et non l'AC locale de Proxmox, puis cliquez sur Utiliser le certificat Proxmox. Monitor redémarre et le prochain chargement utilise HTTPS sur 8008 avec une chaîne de confiance publique. Les renouvellements ACME suivants sont validés et sélectionnés à la prochaine nouvelle connexion TLS, sans interrogation périodique ni redémarrage à chaque renouvellement. Actualiser le certificat reste disponible dans Sécurité pour le diagnostic et la récupération."
+ },
+ "custom": {
+ "heading": "Certificat personnalisé — quand l'utiliser",
+ "intro": "Cliquez sur Utiliser un certificat personnalisé et saisissez deux chemins absolus :",
+ "items": [
+ "Certificat — chaîne complète en PEM (.pem ou .crt).",
+ "Clé privée : clé correspondante en PEM (.key)."
+ ],
+ "outro": "Les deux fichiers sont lus par le processus Monitor au démarrage. Assurez-vous qu'ils restent lisibles par l'utilisateur que l'unité systemd fonctionne comme (root par défaut). Emplacements communs lorsque l'ACME est géré à l'extérieur de Proxmox:",
+ "code": "# certbot\n/etc/letsencrypt/live//fullchain.pem\n/etc/letsencrypt/live//privkey.pem\n\n# acme.sh\n~/.acme.sh/_ecc/fullchain.cer\n~/.acme.sh/_ecc/.key",
+ "symlinkCallout": {
+ "title": "Symlink cibles vs fichiers",
+ "bodyRich": "certbot stocke les fichiers réels dans /etc/letsencrypt/archive/ et le chemin live/ est un lien symbolique. Pointez le moniteur sur le lien symbolique live/ et non sur le fichier archive/ — de cette façon, chaque cycle de renouvellement réécrit simplement la cible de lien symbolique et le moniteur récupère le nouveau certificat au début du service suivant."
+ }
+ },
+ "afterHttps": {
+ "heading": "Après avoir activé HTTPS",
+ "bodyRich": "Enregistrer le changement écrit /etc/proxmenux/ssl_config.json et déclenche un redémarrage de l'unité proxmenux-monitor systemd. L'onglet navigateur perdra sa connexion actuelle — rechargez-la sur https://<host>:8008/. La première charge avec un certificat Let's Encrypt ne doit montrer aucun avertissement; avec le certificat Proxmox autosigné, le navigateur aura besoin d'une exception, la même que pour le port 8006.",
+ "reverse": {
+ "heading": "Proxies inverses et webhooks",
+ "bodyRich": "Lorsque le moniteur passe à HTTPS, les URL Proxmox VE webhook enregistrées pour les notifications retournent automatiquement de http:// à https://. Les entrées existantes de webhook sont réécrites la prochaine fois qu'une règle de notification est enregistrée ou redétectée, de sorte qu'aucune modification manuelle de la configuration de notification Proxmox n'est nécessaire."
+ }
+ },
+ "trustCa": {
+ "heading": "Faites confiance à l'AC autosignée Proxmox",
+ "intro1Rich": "Pour conserver le certificat Proxmox par défaut sans ACME, importez l'AC racine du cluster dans le magasin de confiance du système ou du navigateur. Monitor détecte /etc/pve/local/pve-ssl.pem comme certificat de repli. Le client fait alors confiance à l'émetteur ; l'URL doit toujours correspondre à un nom du certificat.",
+ "intro2Rich": "Le fichier CA vit à /etc/pve/pve-root-ca.pem sur chaque nœud. Dans un cluster, le chemin est sur le système de fichiers partagé pmxcfs de sorte que tous les nœuds partagent la même racine, et une seule importation couvre l'ensemble du datacenter. Copiez-le sur votre machine :",
+ "code": "scp root@:/etc/pve/pve-root-ca.pem ./pve-root-ca.pem",
+ "thenImport": "Importez-le du côté client :",
+ "items": [
+ "Linux (tout le système) : exécutez sudo cp pve-root-ca.pem /usr/local/share/ca-certificates/pve-root-ca.crt, puis sudo update-ca-certificates. Les navigateurs utilisant le magasin système (Chromium, Edge) la reconnaissent après redémarrage ; Firefox utilise son propre magasin et nécessite l'importation manuelle ci-dessous.",
+ "macOS : ouvrez le fichier .pem par double-clic dans Trousseaux d'accès, ajoutez-le au trousseau Système, puis choisissez Se fier → Toujours approuver.",
+ "Windows : clic droit sur le fichier → Installer le certificat → placez-le dans Autorités de certification racines de confiance.",
+ "Firefox (tout OS) :Paramètres → Vie privée et sécurité → Certificats → Afficher les certificats → Autorités → Importer ; cochez Faire confiance à cette AC pour identifier les sites web."
+ ],
+ "standalone": {
+ "title": "Nœuds autonomes en dehors d'un cluster",
+ "bodyRich": "Chaque hôte Proxmox non clustered possède son propre pve-root-ca.pem. Si vous gérez plusieurs hôtes autonomes, répétez la copie/import pour chacun, ou rejoignez-les à un cluster afin qu'ils partagent une seule racine."
+ }
+ },
+ "disable": {
+ "heading": "Désactivation de HTTPS",
+ "bodyRich": "Cliquez sur Désactiver HTTPS dans le même panneau. Monitor redémarre en HTTP non chiffré, utile si un certificat personnalisé illisible empêche le démarrage. Aucune désinstallation supplémentaire n'est nécessaire ; les fichiers de certificats restent intacts.",
+ "stateCallout": {
+ "title": "Emplacement de l'état",
+ "bodyRich": "/etc/proxmenux/ssl_config.json stocke les chemins de cert actif et la source (none, proxmox, custom). La suppression du fichier équivaut à la désactivation de HTTPS — le prochain démarrage du moniteur revient à HTTP."
+ }
+ }
+}
diff --git a/web/messages/it/docs/security/fail2ban.json b/web/messages/it/docs/security/fail2ban.json
new file mode 100644
index 00000000..f7823c8f
--- /dev/null
+++ b/web/messages/it/docs/security/fail2ban.json
@@ -0,0 +1,152 @@
+{
+ "meta": {
+ "title": "Fail2Ban | Documentazione ProxMenux",
+ "description": "Installa Fail2Ban con tre jails ottimizzati per Proxmox (SSH aggressivo, Proxmox UI 8006, ProxMenux Monitor 8008). Include la correzione journald MaxLevelStore, servizi di registro personalizzati per l'affidabilità, backend nftables/iptables rilevati automaticamente e SSH MaxAuthTries rafforzamento.",
+ "ogTitle": "Fail2Ban | Documentazione ProxMenux",
+ "ogDescription": "Protezione contro la forza bruta per SSH e le interfacce web Proxmox, con correzioni di journald e del backend specifiche per Proxmox."
+ },
+ "header": {
+ "title": "Fail2Ban",
+ "description": "Installa Fail2Ban per Proxmox: tre jail (SSH aggressivo, interfaccia Proxmox su 8006, ProxMenux Monitor su 8008 e proxy inverso), correzione del livello journald per salvare gli eventi SSH, due servizi che copiano il journal in file per aggirare un problema del backend systemd, rilevamento del backend firewall e rafforzamento SSH con MaxAuthTries.",
+ "section": "Sicurezza"
+ },
+ "intro": {
+ "title": "Cosa fa",
+ "body": "Installa Fail2Ban dai repository Debian e scrive una configurazione Proxmox che protegge subito SSH, interfaccia web Proxmox e ProxMenux Monitor. Se rileva una installazione esistente, offre invece un menu per reinstallare o rimuovere."
+ },
+ "firstLaunch": {
+ "heading": "dialogo di primo lancio",
+ "body": "Se Fail2Ban non è installato, lo script mostra una conferma con ciò che installerà e configurerà. Annulla termina senza modifiche; confermare avvia l'installazione.",
+ "imageAlt": "Conferma di installazione di Fail2Ban con tre jail, correzione di journald e rafforzamento SSH"
+ },
+ "jails": {
+ "heading": "Le tre jail",
+ "headerJail": "Jail",
+ "headerProtects": "Protegge",
+ "headerRetries": "Tentativi / Finestra",
+ "headerBan": "Durata del blocco",
+ "rows": [
+ {
+ "jail": "[sshd]",
+ "protects": "SSH (modalità aggressive — include ddos, mode, normal)",
+ "retries": "2 / 60 min",
+ "ban": "9 ore"
+ },
+ {
+ "jail": "[proxmox]",
+ "protects": "Proxmox web UI (porta 8006)",
+ "retries": "3 / 10 min",
+ "ban": "1 ora"
+ },
+ {
+ "jail": "[proxmenux]",
+ "protects": "ProxMenux Monitor (porta 8008 + proxy inverso http/https)",
+ "retries": "3 / 10 min",
+ "ban": "1 ora"
+ }
+ ],
+ "outro": "Impostazioni predefinite globali da jail.local: ignoreip = 127.0.0.1/8 ::1, ignoreself = true, bantime = 86400 (fallback di 24 ore per jails che non lo sovrascrivono), maxretry = 2, findtime = 1800."
+ },
+ "journald": {
+ "heading": "Perché la correzione journald è importante",
+ "intro": "Proxmox fornisce /etc/systemd/journald.conf con MaxLevelStore=warning. journald scarta i messaggi di livello inferiore a warning prima di salvarli. SSH e PAM segnalano gli errori di autenticazione ai livelli info / notice, quindi:",
+ "diagram": {
+ "sshLabel": "SSH / PAM",
+ "sshDetail": "errore di autenticazione\n(livello info / notice)",
+ "journaldLabel": "journald",
+ "journaldDetail": "MaxLevelStore=warning\n→ evento scartato senza avviso",
+ "fail2banLabel": "Fail2Ban",
+ "fail2banDetail": "non vede niente\n→ non vieta mai nulla",
+ "arrowLabel": "Proxmox predefinito"
+ },
+ "afterDiagram": "L'installatore rileva questo e scrive un drop-in a /etc/systemd/journald.conf.d/proxmenux-loglevel.conf aumentando sia MaxLevelStore che MaxLevelSyslog a info:",
+ "code": "[Journal]\nMaxLevelStore=info\nMaxLevelSyslog=info",
+ "outro": "Poi riavvia systemd-journald. Il drop-in viene rimosso su disinstallazione, ripristinando il default Proxmox originale."
+ },
+ "loggers": {
+ "heading": "Perché due servizi logger personalizzati",
+ "intro1": "Fail2Ban può leggere direttamente il journal systemd (backend = systemd), ma su Proxmox questo backend ha problemi noti con i processi worker di pvedaemon: gli eventi di autenticazione compaiono nel journal ma non sempre vengono rilevati. Il problema riguarda occasionalmente anche sshd.",
+ "intro2": "ProxMenux crea due piccoli servizi systemd che seguono le unità interessate con journalctl -f e aggiungono ogni riga a un file. Fail2Ban legge questi file con il backend affidabile backend = auto (modalità file):",
+ "headerService": "Servizio",
+ "headerSource": "Unità di origine",
+ "headerOutput": "File di uscita",
+ "rows": [
+ {
+ "service": "proxmox-auth-logger.service",
+ "source": "pvedaemon.service",
+ "output": "/var/log/proxmox-auth.log"
+ },
+ {
+ "service": "ssh-auth-logger.service",
+ "source": "ssh.service",
+ "output": "/var/log/ssh-auth.log"
+ }
+ ],
+ "outro": "Entrambi i servizi sono dichiarati PartOf=fail2ban.service in modo da riavviare con Fail2Ban e fermarsi con esso. Modalità 640 di proprietà di root:adm sui file di registro. Il terzo registro utilizzato dalla prigione [proxmenux] (/var/log/proxmenux-auth.log) è scritto direttamente dall'app ProxMenux Monitor Flask — nessun servizio logger necessario per questo."
+ },
+ "backend": {
+ "heading": "Auto-detezione backend Firewall",
+ "intro": "L'installatore sonda l'host: se nft list ruleset funziona, sceglie nftables come l'azione di divieto. In caso contrario torna a iptables-multiport / iptables-allports. La scelta è scritta in jail.local:",
+ "code": "# nftables host\nbanaction = nftables\nbanaction_allports = nftables[type=allports]\n\n# iptables host (fallback)\nbanaction = iptables-multiport\nbanaction_allports = iptables-allports"
+ },
+ "hardening": {
+ "heading": "Rafforzamento SSH: MaxAuthTries",
+ "intro": "Il controllo Lynis SSH-7408 raccomanda MaxAuthTries 3 in sshd_config. La jail SSH usa maxretry = 2 per bloccare dopo errori ripetuti; MaxAuthTries limita i tentativi nella stessa connessione. Questa impostazione aggiunge protezione anche quando Fail2Ban è fermo per manutenzione.",
+ "installerIntro": "L'installatore:",
+ "items": [
+ "Legge il valore attuale di MaxAuthTries (o di default a 6 se assente).",
+ "Lo salva a /usr/local/share/proxmenux/sshd_maxauthtries_backup.",
+ "Modifica sshd_config direttamente: sostituisce la riga esistente, rimuove il commento dalla riga commentata o ne aggiunge una nuova.",
+ "Ricarica sshd senza riavviarlo, mantenendo attive le sessioni esistenti."
+ ],
+ "outro": "Su disinstallazione, il valore originale salvato viene ripristinato e sshd viene ricaricato di nuovo."
+ },
+ "manage": {
+ "heading": "Gestire un'installazione esistente",
+ "intro": "Se Fail2Ban è già installato, lo script lo rileva e mostra un menu di gestione invece di ripetere l'installazione.",
+ "headerAction": "Azione",
+ "headerWhat": "Che cosa fa",
+ "rows": [
+ {
+ "action": "Reinstallare",
+ "what": "Esegue nuovamente l'installazione completa e riscrive tutte le jail con i valori attuali di ProxMenux. Usalo quando un aggiornamento modifica le raccomandazioni."
+ },
+ {
+ "action": "Rimuovi",
+ "what": "Arresta fail2ban e i due servizi di logger, elimina il pacchetto apt, rimuove tutti i jail / file filtro, elimina il drop-in journald (ripristinando le impostazioni predefinite di Proxmox) e ripristina il SSH originale MaxAuthTries."
+ }
+ ]
+ },
+ "verify": {
+ "heading": "Verifica che funzioni.",
+ "intro": "Dopo l'installazione, comandi utili dall'host:",
+ "code": "# Service status and version\nsystemctl status fail2ban\nfail2ban-client --version\n\n# All active jails\nfail2ban-client status\n\n# Detail on one jail\nfail2ban-client status sshd\nfail2ban-client status proxmox\nfail2ban-client status proxmenux\n\n# Currently banned IPs in a jail\nfail2ban-client status sshd | grep \"Banned IP\"\n\n# Manually unban an IP (use this if you ban yourself)\nfail2ban-client unban 192.0.2.10\n\n# Tail the auth logs Fail2Ban watches\ntail -f /var/log/ssh-auth.log\ntail -f /var/log/proxmox-auth.log\ntail -f /var/log/fail2ban.log"
+ },
+ "troubleshoot": {
+ "heading": "Risoluzione dei problemi",
+ "neverBansTitle": "Fail2Ban corre ma non vieta mai nulla",
+ "neverBansBody": "Verifica che tail -f /var/log/ssh-auth.log riceva una voce dopo un tentativo SSH con password errata da un'altra macchina. Se rimane vuoto, controlla systemctl status ssh-auth-logger.service. Se il logger è attivo, consulta gli eventi recenti con journalctl -u ssh.service -n 50 --no-pager -p info e verifica che il drop-in journald consenta il livello info.",
+ "monitorEmptyTitle": "ProxMenux Monitor jail non ha voci anche dopo accessi non riusciti",
+ "monitorEmptyBody": "Il [proxmenux] jail legge /var/log/proxmenux-auth.log, che è scritto dall'app ProxMenux Monitor Flask - non da un logger journald. Se non esegui il Monitor, il file rimane vuoto e il jail non si attiva mai. Questo è previsto; la configurazione jail è innocua. Se esegui il Monitor e il registro è vuoto, controlla la configurazione di registrazione Flask.",
+ "selfBanTitle": "Ho bloccato il mio stesso accesso",
+ "selfBanIntro": "Da una console / IPMI / iKVM (o da un altro IP whitelist):",
+ "selfBanCode": "fail2ban-client unban '<'YOUR_IP'>'\n\n# To prevent it next time, edit /etc/fail2ban/jail.local and add your IP:\nignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 203.0.113.42\n\n# Then reload\nfail2ban-client reload",
+ "aptFailTitle": "apt-get non riesce: ''Unable to locate package fail2ban''",
+ "aptFailBody": "L'host manca il repos Debian (comune sulle installazioni di Barebones Proxmox). L'installatore rileva questo e scrive /etc/apt/sources.list.d/debian.sources con il nome giusto in codice (bookworm / trixie) prima di riprovare. Se non riesce ancora, controllare /etc/os-release per VERSION_CODENAME e confermare che l'URL repo è raggiungibile.",
+ "lockoutTitle": "SSH mi blocca dopo l'installazione",
+ "lockoutBody": "L'installatore imposta MaxAuthTries=3. Se il tuo password manager / agente richiama più chiavi, puoi superarlo su un singolo tentativo di connessione. Limitare le chiavi offerte: ssh -o IdentitiesOnly=yes -i ~/.ssh/specific_key user@host. O sollevare temporaneamente MaxAuthTries in sshd_config mentre si debug."
+ },
+ "files": {
+ "heading": "File scritti",
+ "code": "/etc/fail2ban/jail.local # global defaults + [sshd]\n/etc/fail2ban/jail.d/proxmox.conf # [proxmox]\n/etc/fail2ban/jail.d/proxmenux.conf # [proxmenux]\n/etc/fail2ban/filter.d/proxmox.conf # auth-failure regex for pvedaemon\n/etc/fail2ban/filter.d/proxmenux.conf # auth-failure regex for Monitor\n/etc/systemd/system/proxmox-auth-logger.service # journal → file (pvedaemon)\n/etc/systemd/system/ssh-auth-logger.service # journal → file (sshd)\n/etc/systemd/journald.conf.d/proxmenux-loglevel.conf # MaxLevelStore=info\n/etc/ssh/sshd_config # MaxAuthTries=3 (in-place edit)\n/var/log/proxmox-auth.log # written by logger service\n/var/log/ssh-auth.log # written by logger service\n/var/log/proxmenux-auth.log # written by Monitor Flask app\n/usr/local/share/proxmenux/sshd_maxauthtries_backup # for restore on uninstall"
+ },
+ "related": {
+ "heading": "Correlati",
+ "monitorLabel": "ProxMenux Monitor → Scheda di sicurezza",
+ "monitorTail": " — installazione dal pannello, stato delle jail in tempo reale, IP bloccati e regolazione di tentativi e durata del blocco per ogni jail dal browser.",
+ "lynisLabel": "Lynis",
+ "lynisTail": " — esegui un audit prima e dopo per verificare che il controllo SSH-7408 sia soddisfatto.",
+ "securityLabel": "Panoramica della sicurezza",
+ "securityTail": "— di nuovo alla panoramica della sezione."
+ }
+}
diff --git a/web/messages/it/docs/security/index.json b/web/messages/it/docs/security/index.json
new file mode 100644
index 00000000..2f7f44be
--- /dev/null
+++ b/web/messages/it/docs/security/index.json
@@ -0,0 +1,70 @@
+{
+ "meta": {
+ "title": "Sicurezza Proxmox — Fail2Ban e audit di rafforzamento Lynis | ProxMenux",
+ "description": "Due strumenti di sicurezza installabili per Proxmox VE: Fail2Ban (prevenzione delle intrusioni per SSH, interfaccia web Proxmox e ProxMenux Monitor) e Lynis (analisi della sicurezza e del rafforzamento del sistema, installato dal repository ufficiale GitHub).",
+ "ogTitle": "Sicurezza Proxmox — Fail2Ban e audit di rafforzamento Lynis",
+ "ogDescription": "Fail2Ban e Lynis per Proxmox VE: prevenzione delle intrusioni e audit di rafforzamento, installati e gestiti da ProxMenux.",
+ "twitterTitle": "Sicurezza Proxmox | ProxMenux",
+ "twitterDescription": "Fail2Ban e Lynis per Proxmox VE: prevenzione delle intrusioni e audit di rafforzamento."
+ },
+ "header": {
+ "title": "Sicurezza",
+ "description": "Due strumenti complementari per Proxmox VE: difesa attiva (Fail2Ban blocca gli IP che attaccano SSH o le interfacce web) e audit locale (Lynis cerca lacune nel rafforzamento e assegna un punteggio da 0 a 100). Ognuno ha un menu di installazione e gestione che rileva installazioni esistenti prima di ogni azione.",
+ "section": "Sicurezza"
+ },
+ "intro": {
+ "title": "Difesa attiva e audit locale",
+ "body": "Rispondono a domande diverse. Fail2Ban risponde a «Ci stanno attaccando ora?» monitorando i log di autenticazione e bloccando gli IP responsabili. Lynis risponde a «Quanto è rafforzata la sicurezza di questo host?» con un audit singolo e raccomandazioni concrete. Usali insieme: Lynis indica cosa migliorare e Fail2Ban reagisce agli attacchi in corso."
+ },
+ "opening": {
+ "heading": "Apertura del menu",
+ "body": "Dal menu principale di ProxMenux seleziona Sicurezza. Vedrai questo:",
+ "imageAlt": "Menu di sicurezza con opzioni Fail2Ban e Lynis"
+ },
+ "pick": {
+ "heading": "Scegli il tuo strumento",
+ "body": "I due strumenti di sicurezza sono indipendenti — installare uno, entrambi, o nessuno. Ogni scheda qui sotto salta alla sezione che spiega lo strumento in dettaglio."
+ },
+ "cards": {
+ "fail2ban": {
+ "title": "Fail2Ban",
+ "body": "Prevenzione attiva delle intrusioni. Controlla i log di autenticazione SSH e web e blocca gli IP dopo errori ripetuti.",
+ "bullets": [
+ "Tre jails: SSH, Proxmox UI (8006), ProxMenux Monitor (8008)",
+ "Corregge le impostazioni predefinite di Proxmox journald che bloccano i registri di autenticazione",
+ "Rilevamento automatico nftables / iptables",
+ "Indurimento SSH: MaxAuthTries=3 (Consiglio di Lynis)"
+ ]
+ },
+ "lynis": {
+ "title": "Lynis",
+ "body": "Auditor locale di sicurezza. Analizza l'host e mostra un punteggio di rafforzamento e suggerimenti concreti per correggere i problemi.",
+ "bullets": [
+ "Installato dal repository ufficiale CISOfy su GitHub (versione più recente)",
+ "Punteggio di rafforzamento 0–100 ed elenco di avvisi e suggerimenti",
+ "Audit e aggiornamento dal menu",
+ "Progettato in sola lettura: non modifica mai il sistema"
+ ]
+ }
+ },
+ "workflowTip": {
+ "title": "Flusso di lavoro che utilizza entrambi",
+ "body": "Esegui prima Lynis per vedere il punteggio iniziale e le raccomandazioni principali. Applica le correzioni desiderate. Poi installa Fail2Ban: implementa automaticamente la protezione SSH contro la forza bruta e regola MaxAuthTries in sshd_config per soddisfare il controllo SSH-7408. Esegui di nuovo Lynis per verificare il miglioramento."
+ },
+ "fail2banSection": {
+ "heading": "Fail2Ban",
+ "body": "ProxMenux installa Fail2Ban con una configurazione specifica per Proxmox. Oltre alla jail SSH standard protegge l'interfaccia web Proxmox e ProxMenux Monitor. Aggira due problemi specifici: un'impostazione journald che scarta gli eventi di autenticazione e un problema del backend systemd che impedisce la lettura affidabile di alcune fonti del registro. La pagina dettagliata spiega installazione, tre jail, correzione di journald, rafforzamento SSH e risoluzione dei problemi.",
+ "optionTitle": "Fail2Ban — installazione e gestione",
+ "optionDescription": "Tre jail preconfigurate (sshd aggressivo, interfaccia Proxmox su 8006, ProxMenux Monitor su 8008 e proxy inverso), rilevamento di nftables/iptables, correzione di journald e rafforzamento SSH con MaxAuthTries."
+ },
+ "lynisSection": {
+ "heading": "Lynis",
+ "body": "ProxMenux clona Lynis da github.com/CISOfy/lynis in /opt/lynis e lo rende disponibile come /usr/local/bin/lynis. Evita il pacchetto Debian perché è indietro di diverse versioni principali rispetto al progetto originale. La pagina dettagliata spiega installazione, audit, aggiornamento, disinstallazione, lettura del rapporto e azioni sui risultati.",
+ "optionTitle": "Lynis — installazione, audit e gestione",
+ "optionDescription": "Installa l'ultimo Lynis dal repo ufficiale CISOfy GitHub (non il vecchio pacchetto Debian), esegue controlli di sistema con punteggio di indurimento e aggiornamenti tramite git pull."
+ },
+ "componentStatus": {
+ "heading": "Stato del componente",
+ "body": "Entrambi gli installatori registrano il loro stato in /usr/local/share/proxmenux/components_status.json sotto la categoria security. ProxMenux utilizza questo file per decidere se mostrare l'installazione o il menu di gestione delle operazioni successive, e gli stessi dati alimentano le dashboard nel ProxMenux Monitor quando presente."
+ }
+}
diff --git a/web/messages/it/docs/security/lynis.json b/web/messages/it/docs/security/lynis.json
new file mode 100644
index 00000000..bf23305b
--- /dev/null
+++ b/web/messages/it/docs/security/lynis.json
@@ -0,0 +1,170 @@
+{
+ "meta": {
+ "title": "Lynis | Documentazione ProxMenux",
+ "description": "Installa la versione più recente di Lynis dal repository ufficiale CISOfy su GitHub, esegui un audit con punteggio di rafforzamento 0–100 e aggiorna tramite git pull. Auditor in sola lettura: non modifica il sistema.",
+ "ogTitle": "Lynis | Documentazione ProxMenux",
+ "ogDescription": "Installa ed esegui Lynis su Proxmox VE. Installazione dal repository originale GitHub, audit e aggiornamento."
+ },
+ "header": {
+ "title": "Lynis",
+ "description": "Clona la versione più recente di Lynis dal repository ufficiale CISOfy su GitHub, la rende disponibile come /usr/local/bin/lynis e offre audit, aggiornamento, reinstallazione e disinstallazione dal menu. L'analisi è in sola lettura: produce rapporti senza modificare il sistema.",
+ "section": "Sicurezza"
+ },
+ "intro": {
+ "title": "Cosa fa",
+ "body": "Installa Lynis, auditor di sicurezza open source di CISOfy, dal repository GitHub in /opt/lynis e crea un lanciatore in /usr/local/bin/lynis per renderlo disponibile nel PATH. Se rileva una installazione esistente, mostra un menu per audit, aggiornamento, reinstallazione o rimozione."
+ },
+ "manageMenu": {
+ "heading": "Menu di gestione (dopo l'installazione)",
+ "intro": "Una volta che Lynis è installato, ogni successiva invocazione apre il menu di gestione invece di rifare l'installatore. Da qui si avvia un audit, si aggiorna tramite git pull, reinstalla o disinstalla:",
+ "imageAlt": "Menù di gestione Lynis con controllo, aggiornamento, reinstallare e rimuovere le opzioni"
+ },
+ "whyUpstream": {
+ "heading": "Perché il repository ufficiale GitHub invece di apt",
+ "intro": "Debian distribuisce Lynis tramite apt, ma il pacchetto è spesso indietro di diverse versioni principali. Nuovi controlli, correzioni per nuovi vettori di attacco e raccomandazioni migliorate arrivano prima su GitHub. Lynis è uno script shell autonomo, senza compilazione e senza dipendenze di installazione oltre a git; clonare il repository è quindi il metodo raccomandato da CISOfy.",
+ "headerSource": "Fonte",
+ "headerPath": "Install path",
+ "headerUpdate": "Metodo di aggiornamento",
+ "headerFresh": "Aggiornamento della versione",
+ "rows": [
+ {
+ "sourceRich": "ProxMenux (questo script)",
+ "path": "/opt/lynis/",
+ "update": "git pull (dal menu)",
+ "fresh": "Ultima versione del progetto originale"
+ },
+ {
+ "sourceRich": "Debian apt",
+ "path": "/usr/bin/lynis",
+ "update": "apt upgrade",
+ "fresh": "Spesso mesi / anni dietro"
+ }
+ ]
+ },
+ "install": {
+ "heading": "Come funziona l'installazione",
+ "node1Label": "github.com/CISOfy/lynis",
+ "node1Detail": "git clone\n(installa prima git se manca)",
+ "node2Label": "/opt/lynis/",
+ "node2Detail": "repository completo\nincluso lo script ./lynis",
+ "node3Label": "/usr/local/bin/lynis",
+ "node3Detail": "wrapper:\ncd /opt/lynis && ./lynis $@",
+ "outro": "Il wrapper è obbligatorio — Lynis insiste per essere eseguito dalla propria directory perché carica percorsi relativi per plugin e dati del profilo. L'involucro nasconde quel dettaglio così lynis audit system funziona da qualsiasi luogo."
+ },
+ "detection": {
+ "heading": "Sentieri di rilevamento",
+ "intro": "Prima di mostrare il menu, lo script controlla tre posizioni per decidere se Lynis è già presente:",
+ "items": [
+ "/usr/local/bin/lynis — wrapper installato da ProxMenux",
+ "/opt/lynis/lynis — percorso diretto (nel caso in cui l'involucro sia stato rimosso)",
+ "/usr/bin/lynis — versione apt-installata, se l'utente l'ha installato in quel modo prima"
+ ],
+ "outro": "Se trova uno di questi percorsi apre il menu di gestione. Lo script non disinstalla Lynis installato con apt; rimuove solo quello gestito in /opt/lynis e il relativo lanciatore."
+ },
+ "audit": {
+ "heading": "Eseguire un audit",
+ "intro": "Dal menu di gestione scegli Esegui audit di sicurezza ora. Equivale a eseguire:",
+ "code": "lynis audit system --no-colors",
+ "outro": "L'audit richiede da 30 secondi ad alcuni minuti secondo le dimensioni dell'host. Lo output viene mostrato direttamente nel terminale, senza animazione di attesa. Lynis organizza i controlli per categoria e marca ogni test come [ OK ], [ WARNING ] o [ SUGGESTION ]. Il riepilogo finale mostra i dati principali:",
+ "summary": "================================================================================\n\n Dettagli della scansione di sicurezza Lynis:\n\n Indice di rafforzamento : 76 [############ ]\n Test eseguiti : 247\n Plugin abilitati : 0\n\n Componenti:\n - Firewall [V]\n - Scanner malware [X]\n\n Moduli Lynis:\n - Stato di conformità [?]\n - Audit di sicurezza [V]\n - Scansione vulnerabilità [V]\n\n================================================================================"
+ },
+ "report": {
+ "heading": "Leggere il rapporto",
+ "intro": "Le due sezioni importanti sono Warnings (le cose che si devono risolvere presto) e Suggestions (raccomandazioni per migliorare l'indurimento). Ogni elemento porta un ID di controllo come SSH-7408 — utile quando si cerca i documenti Lynis per la razionalità e la correzione.",
+ "headerMarker": "Marcatore",
+ "headerMeaning": "Significato",
+ "headerAction": "Azione",
+ "rows": [
+ {
+ "markerRich": "OK",
+ "meaning": "Test superato",
+ "action": "Niente."
+ },
+ {
+ "markerRich": "WARNING",
+ "meaning": "Problema reale, fix consigliato",
+ "action": "Leggi la descrizione del controllo, pianifica una correzione"
+ },
+ {
+ "markerRich": "SUGGESTION",
+ "meaning": "Miglioramento dell'indurimento disponibile",
+ "action": "Applica se adatto al modello di minaccia"
+ }
+ ],
+ "outro": "Il rapporto completo e i dati leggibili dalla macchina sono scritti a /var/log/lynis.log e /var/log/lynis-report.dat da Lynis stesso."
+ },
+ "pairFail2ban": {
+ "title": "Combina con Fail2Ban",
+ "body": "SSH-7408 (MaxAuthTries) è uno degli avvisi più comuni. Installazione di Fail2Ban da ProxMenux lo sgombera automaticamente perché l'installatore imposta MaxAuthTries=3 come parte della sua fase di indurimento SSH. Eseguire Lynis di nuovo dopo per confermare che l'avvertimento è andato."
+ },
+ "update": {
+ "heading": "Aggiornamento Lynis",
+ "body": "Nel menu, Aggiorna Lynis all'ultima versione esegue git pull --quiet in /opt/lynis. Se la directory esiste ma non è una copia di lavoro Git, per esempio dopo una copia manuale dei file, lo script esegue una reinstallazione completa."
+ },
+ "reinstall": {
+ "heading": "Reinstallare / disinstallare",
+ "headerAction": "Azione",
+ "headerWhat": "Che cosa fa",
+ "rows": [
+ {
+ "actionRich": "Reinstalla",
+ "whatRich": "Rimuove /opt/lynis, clona nuovamente da GitHub e ricrea il lanciatore. Usalo se la copia locale è danneggiata."
+ },
+ {
+ "actionRich": "Rimuovi",
+ "whatRich": "Elimina /opt/lynis e /usr/local/bin/lynis. I registri a /var/log/lynis* sono mantenuti (sono storia dell'audit). Un Lynis apt-installed a /usr/bin/lynis è lasciato intatto."
+ }
+ ]
+ },
+ "cli": {
+ "heading": "Opzioni utili CLI",
+ "intro": "Una volta installato, Lynis può essere invocata direttamente da una shell con opzioni extra non esposte dal menu:",
+ "code": "lynis show version # version + build date\nlynis show commands # list every available command\nlynis show details TEST-ID # explain a specific control\nlynis audit system --quick # skip slow tests (e.g. malware scan)\nlynis audit system --pentest # treat host as untrusted (more aggressive)\nlynis update info # check if a newer Lynis is available\n\n# Filter the report log for just the warnings\ngrep \"Warning\" /var/log/lynis.log\n\n# Same, for suggestions only\ngrep \"Suggestion\" /var/log/lynis.log"
+ },
+ "troubleshoot": {
+ "heading": "Risoluzione dei problemi",
+ "cloneTitle": "git clone non riesce durante l'installazione",
+ "cloneBody": "L'host ha bisogno di accesso alla rete e DNS per raggiungere github.com. Da una console: curl -sI https://github.com e git ls-remote https://github.com/CISOfy/lynis.git riveleranno l'errore effettivo (DNS, TLS, proxy, repo URL). Se è richiesto un proxy, impostare https_proxy nell'ambiente prima di ri-inviare il menu.",
+ "notFoundTitle": "lynis: comando non trovato dopo l'installazione",
+ "notFoundIntro": "L'involucro a /usr/local/bin/lynis non è stato creato o rimosso. Correzione più rapida: reinstallare dal menu. Correzione manuale:",
+ "notFoundCode": "cat > /usr/local/bin/lynis <<'EOF'\n#!/bin/bash\ncd /opt/lynis && ./lynis \"$@\"\nEOF\nchmod +x /usr/local/bin/lynis",
+ "sshTitle": "L'audit mostra \"Warning: Test SSH-7408 — MaxAuthTries set incorrectly\"",
+ "sshIntro": "Il daemon SSH consente troppi tentativi auth per connessione. Installare Fail2Ban da ProxMenux (che imposta automaticamente MaxAuthTries=3) o modificare /etc/ssh/sshd_config a mano:",
+ "sshCode": "sed -i 's/^#?MaxAuthTries.*/MaxAuthTries 3/' /etc/ssh/sshd_config\nsystemctl reload sshd",
+ "scoreTitle": "Score è andato giù dopo un aggiornamento Proxmox",
+ "scoreBody": "Eseguire lynis update info prima — un aggiornamento Lynis potrebbe aver aggiunto nuovi controlli che contrassegnano la configurazione esistente. Aggiornare Lynis dal menu, ri-audit e affrontare i nuovi risultati."
+ },
+ "files": {
+ "heading": "File scritti",
+ "code": "/opt/lynis/ # full Lynis git checkout\n/usr/local/bin/lynis # wrapper script (cd + exec)\n/var/log/lynis.log # human-readable audit log (Lynis itself)\n/var/log/lynis-report.dat # machine-readable report (Lynis itself)"
+ },
+ "sample": {
+ "heading": "Rapporto di esempio",
+ "intro": "ProxMenux Monitor genera per ogni esecuzione di Lynis un PDF multipagina dalla scheda Sicurezza. La prima pagina riepiloga punteggio di rafforzamento, informazioni di sistema e stato della sicurezza. Le successive spiegano ogni avviso, elencano i suggerimenti per impatto e includono l'inventario dei pacchetti usato nell'audit.",
+ "imageAlt": "Prima pagina del Lynis Security Audit Report PDF — Riepilogo esecutivo con Hardening Index 71/100, blocco informazioni di sistema e panoramica della postura di sicurezza con firewall, malware scanner e pacchetti installati conteggio",
+ "captionPrefix": "Prima pagina di un rapporto campione. Il PDF completo (",
+ "captionLink": "campione",
+ "captionSuffix": ") continua con avvisi dettagliati, suggerimenti e la lista dei pacchetti installati.",
+ "cli": "Sul lato CLI gli stessi dati sono in /var/log/lynis-report.dat (file piatto leggibile dalla macchina) e /var/log/lynis.log (il registro di esecuzione leggibile dall'uomo). Il PDF viene generato su richiesta da ProxMenux Monitor — l'esecuzione di lynis dalla riga di comando non ne produce uno."
+ },
+ "related": {
+ "heading": "Correlati",
+ "items": [
+ {
+ "href": "/docs/monitor/dashboard/security",
+ "label": "ProxMenux Monitor → Scheda di sicurezza",
+ "tail": "— eseguire l'audit, sfogliare i rapporti storici e scaricare il PDF direttamente dal cruscotto."
+ },
+ {
+ "href": "/docs/security/fail2ban",
+ "label": "Fail2Ban",
+ "tailRich": " — attua il SSH protezione brute-force che Lynis raccomanda."
+ },
+ {
+ "href": "/docs/security",
+ "label": "Panoramica della sicurezza",
+ "tail": "— di nuovo alla panoramica della sezione."
+ }
+ ]
+ }
+}
diff --git a/web/messages/it/docs/security/ssl-letsencrypt.json b/web/messages/it/docs/security/ssl-letsencrypt.json
new file mode 100644
index 00000000..19f7938b
--- /dev/null
+++ b/web/messages/it/docs/security/ssl-letsencrypt.json
@@ -0,0 +1,169 @@
+{
+ "meta": {
+ "title": "HTTPS per ProxMenux Monitor — certificato dell'host Proxmox o percorsi personalizzati | ProxMenux",
+ "description": "Fornisce ProxMenux Monitor via HTTPS con il certificato dell'host Proxmox (rilevato automaticamente, incluso quello Let’s Encrypt installato tramite ACME di Proxmox) o con un certificato personalizzato in qualsiasi percorso sul disco.",
+ "ogTitle": "HTTPS per ProxMenux Monitor — Host Proxmox o certificato personalizzato",
+ "ogDescription": "Abilitare HTTPS sulla porta 8008 con il certificato host Proxmox o qualsiasi coppia di .pem / .key personalizzata."
+ },
+ "header": {
+ "title": "HTTPS per ProxMenux Monitor",
+ "description": "Attiva HTTPS per Monitor sulla porta 8008 con il certificato dell'host Proxmox rilevato automaticamente o uno personalizzato sul disco. L'opzione Proxmox preferisce il certificato ACME, se presente, e riutilizza Let’s Encrypt gestito da Proxmox senza un'ulteriore attività di rinnovo.",
+ "section": "Sicurezza"
+ },
+ "intro": {
+ "title": "Che cosa questa pagina copre",
+ "body": "Come cambiare il Monitor da HTTP a HTTPS nel pannello Impostazioni → Sicurezza, ciò che ogni fonte di certificato indica effettivamente sul disco, come l'opzione Proxmox si comporta quando l'host ha un cert Let's Encrypt e come impostare percorsi personalizzati se si gestisce certs al di fuori di Proxmox."
+ },
+ "wheresetting": {
+ "heading": "Dove si trova l'impostazione",
+ "body": "Apri Monitor e vai in Impostazioni → Sicurezza → HTTPS / SSL. Il pannello mostra HTTP o HTTPS e, se HTTPS non è attivo, le fonti di certificato rilevate.",
+ "imageAlt": "Impostazioni → Sicurezza → HTTPS / Pannello SSL nel Monitor che mostra lo stato HTTPS-off, il certificato Proxmox auto-determinato (soggetto, emittente, scadenza) e l'opzione Usa Certificato personalizzato",
+ "caption": "Pannello Impostazioni → Sicurezza → HTTPS / SSL prima dell'attivazione. Monitor mostra il certificato usato da Proxmox e permette di sceglierlo con un clic."
+ },
+ "twoways": {
+ "heading": "Due modi per abilitare HTTPS",
+ "proxmox": {
+ "title": "Usa certificato Proxmox",
+ "summary": "Un clic: Monitor riutilizza il certificato presentato da Proxmox VE sulla porta 8006.",
+ "items": [
+ "Rilevato automaticamente, nessun percorso da digitare",
+ "Preferisce il certificato ACME se presente, altrimenti quello autofirmato predefinito",
+ "Proxmox gestisce il rinnovo; Monitor convalida e carica il certificato alla prossima nuova connessione TLS"
+ ]
+ },
+ "custom": {
+ "title": "Usa certificato personalizzato",
+ "summaryRich": "Puntare il Monitor su una coppia .pem / .key ovunque sul disco.",
+ "items": [
+ "Solo percorsi assoluti (il processo Monitor deve essere in grado di leggere entrambi)",
+ "Utile quando i cert vengono da certbot, acme.sh o una wildcard",
+ "Gestisci tu il rinnovo: riavvia Monitor quando cambiano i file"
+ ]
+ }
+ },
+ "proxmoxCert": {
+ "heading": "Certificato di Proxmox — ciò che effettivamente indica",
+ "intro": "Proxmox VE mantiene due coppie di certificati in /etc/pve/local/:",
+ "table": {
+ "headers": {
+ "file": "File",
+ "origin": "Origine",
+ "when": "Quando il Monitor lo usa"
+ },
+ "rows": [
+ {
+ "fileRich": "pveproxy-ssl.pem pveproxy-ssl.key",
+ "originRich": "Certificato personalizzato caricato tramite l'UI Proxmox — compreso il certificato Let's Encrypt rilasciato sotto Datacenter → Nodo → Certificati → ACME.",
+ "when": "Preferito se entrambi i file esistono; Monitor usa il certificato presentato da Proxmox."
+ },
+ {
+ "fileRich": "pve-ssl.pem pve-ssl.key",
+ "originRich": "Certificato autofirmato generato al momento di installazione dal Proxmox PKI.",
+ "whenRich": "Fallback quando non è presente nessun pveproxy-ssl.pem."
+ }
+ ]
+ },
+ "callout": {
+ "title": "Stessa priorità di Proxmox stesso",
+ "bodyRich": "pveproxy applica la stessa selezione: scegliendo Proxmox, Monitor usa il certificato presentato dall'interfaccia Proxmox su 8006, senza copie né un processo di rinnovo separato."
+ }
+ },
+ "letsencrypt": {
+ "heading": "Ottenere un certificato Let's Encrypt tramite Proxmox ACME",
+ "intro": "Proxmox VE include un client ACME. «Order Certificate Now» salva il risultato in /etc/pve/local/pveproxy-ssl.pem, letto da Monitor. I cinque passi seguenti riassumono la guida ufficiale Proxmox nei comandi necessari.",
+ "prereqs": {
+ "title": "Prerequisiti",
+ "items": [
+ "Il nodo ha un vero nome DNS (non solo un IP) che indica.",
+ "O porta 80 raggiungibile da Internet (verifica HTTP-01, la più semplice), oppure un provider DNS con credenziali API (DNS-01, funziona dietro NAT e supporta wildcard).",
+ "Un indirizzo email per l'account ACME."
+ ]
+ },
+ "step1": {
+ "heading": "Passo 1 — Registrare l'account ACME",
+ "introRich": "Sostituisci l'email con il tuo. Il nome dell'account default è solo un'etichetta — è possibile utilizzare qualsiasi stringa.",
+ "code": "pvenode acme account register default you@example.com",
+ "afterRich": "Proxmox chiede di accettare i termini di servizio Let's Encrypt. Dopo di che l'account è persistito sotto /etc/pve/priv/acme/ e la scheda ACME nella GUI lo mostrerà."
+ },
+ "step2": {
+ "heading": "Passo 2 — Scegli un tipo di sfida",
+ "http01Rich": "HTTP-01 è il più semplice: è costruito in, nessun plugin aggiuntivo. Let's Encrypt si collega a http://<your-host>/.well-known/acme-challenge/... sulla porta 80, quindi la porta 80 deve essere aperta da internet pubblico al nodo — tipicamente una porta avanti sul router.",
+ "dns01Rich": "DNS-01 funziona senza esporre la porta 80 (buona per le homelab dietro CG-NAT) ed è l'unica opzione per i certificati jolly. Aggiungi un plugin DNS una volta con il token API del tuo fornitore. Esempio Cloudflare:",
+ "code": "pvenode acme plugin add dns cf \\\n --api cloudflare \\\n --data CF_Token=YOUR_CLOUDFLARE_API_TOKEN",
+ "outroRich": "Per altri provider (Gandi, OVH, AWS Route 53, ecc.) consulta pvenode acme plugin add dns --help. Proxmox include tutti i plugin DNS di acme.sh."
+ },
+ "step3": {
+ "heading": "Passo 3 — Legare il dominio al nodo",
+ "http01Rich": "Per HTTP-01 (utilizza il plugin standalone integrato):",
+ "code1": "pvenode config set --acme domains=host.example.com,account=default",
+ "dns01": "Per DNS-01 con il plugin Cloudflare di Step 2:",
+ "code2": "pvenode config set --acmedomain0 domain=host.example.com,plugin=cf\npvenode config set --acme account=default",
+ "wildcardRich": "Certificato wildcard? Aggiungi domain=*.example.com in una voce separata --acmedomainN. I certificati wildcard richiedono DNS-01."
+ },
+ "step4": {
+ "heading": "Passo 4 — Ordinare il certificato",
+ "code": "pvenode acme cert order",
+ "afterRich": "La prima esecuzione richiede tipicamente 30–60 secondi mentre la sfida si propaga. Su successo Proxmox scrive /etc/pve/local/pveproxy-ssl.pem + .key, riavvia pveproxy, e un cron di rinnovo è programmato automaticamente (Let's Encrypt certs sono validi 90 giorni; Proxmox rinnova a 60)."
+ },
+ "step5": {
+ "heading": "Passo 5 — Verificare l'emittente",
+ "code": "openssl x509 -in /etc/pve/local/pveproxy-ssl.pem -noout -issuer",
+ "afterRich": "Dovrebbe stampare un emittente a partire da O = Let's Encrypt. Se invece legge CN = Proxmox Virtual Environment l'ordine non è riuscito e il file è ancora l'auto-firmato PVE cert — eseguire pvenode acme cert order --debug 1 per vedere perché."
+ },
+ "gui": {
+ "title": "Preferisci la GUI? Stessi cinque passi",
+ "bodyRich": "Datacenter → ACME registra l'account; Datacenter → ACME → Plugins aggiunge il plugin DNS; Node → Certificates → ACME associa il dominio; Order Certificates Now esegue il passo 4. I comandi precedenti sono utili per script e sistemi senza interfaccia grafica."
+ }
+ },
+ "switchToHttps": {
+ "heading": "Passare il Monitor a HTTPS",
+ "bodyRich": "Quando /etc/pve/local/pveproxy-ssl.pem è firmato da Let's Encrypt, apri Impostazioni → Sicurezza → HTTPS / SSL, verifica che l'emittente sia Let's Encrypt e non la CA locale Proxmox, poi fai clic su Usa certificato Proxmox. Monitor si riavvia e il caricamento successivo usa HTTPS su 8008 con una catena pubblicamente attendibile. I rinnovi ACME successivi sono convalidati e selezionati alla prossima nuova connessione TLS, senza controlli periodici né riavvio al rinnovo. Aggiorna certificato rimane disponibile in Sicurezza per diagnosi e recupero."
+ },
+ "custom": {
+ "heading": "Certificato personalizzato — quando utilizzarlo",
+ "intro": "Fai clic su Usa certificato personalizzato e inserisci due percorsi assoluti:",
+ "items": [
+ "Certificato: catena completa in PEM (.pem o .crt).",
+ "Chiave privata: chiave corrispondente in PEM (.key)."
+ ],
+ "outro": "Entrambi i file sono letti dal processo Monitor all'avvio. Assicurarsi che rimangano leggibili dall'utente l'unità systemd viene eseguita come (root per impostazione predefinita). Località comuni quando ACME è gestito fuori Proxmox:",
+ "code": "# certbot\n/etc/letsencrypt/live//fullchain.pem\n/etc/letsencrypt/live//privkey.pem\n\n# acme.sh\n~/.acme.sh/_ecc/fullchain.cer\n~/.acme.sh/_ecc/.key",
+ "symlinkCallout": {
+ "title": "Obiettivi Symlink vs. file",
+ "bodyRich": "certbot memorizza i file reali in /etc/letsencrypt/archive/ e il percorso live/ è un symlink. Indirizzi il Monitor al simlink live/, non il file archive/ — in questo modo ogni ciclo di rinnovo semplicemente riscrive l'obiettivo di symlink e il Monitor raccoglie il nuovo cert all'inizio del servizio successivo."
+ }
+ },
+ "afterHttps": {
+ "heading": "Dopo aver attivato HTTPS",
+ "bodyRich": "Salvataggio del cambiamento scrive /etc/proxmenux/ssl_config.json e attiva un riavvio dell'unità proxmenux-monitor systemd. La scheda del browser perderà la sua connessione corrente — ricaricarla su https://<host>:8008/. Il primo carico con un cert Let's Encrypt non dovrebbe mostrare alcun avvertimento; con il Proxmox auto-firmato cert il browser richiederà un'eccezione, la stessa che per la porta 8006.",
+ "reverse": {
+ "heading": "Proxy inversi e webhook",
+ "bodyRich": "Quando il Monitor passa a HTTPS, gli URL Proxmox VE webhook registrati per le notifiche girano automaticamente da http:// a https://. Le voci webhook esistenti vengono riscritte la prossima volta che viene salvata o ri-detetta una regola di notifica, quindi non è necessaria alcuna modifica manuale della configurazione di notifica Proxmox."
+ }
+ },
+ "trustCa": {
+ "heading": "Considerare attendibile la CA autofirmata di Proxmox",
+ "intro1Rich": "Per mantenere il certificato predefinito Proxmox senza ACME, importa la CA radice del cluster nell'archivio di fiducia del sistema o del browser. Monitor rileva /etc/pve/local/pve-ssl.pem come certificato alternativo. Il client considera attendibile l'emittente; l'URL deve comunque corrispondere a un nome del certificato.",
+ "intro2Rich": "Il file CA vive a /etc/pve/pve-root-ca.pem su ogni nodo. In un cluster il percorso è sul filesystem pmxcfs condiviso in modo che tutti i nodi condividono la stessa radice, e una singol'importazione copre l'intero datacenter. Copialo sulla tua macchina:",
+ "code": "scp root@:/etc/pve/pve-root-ca.pem ./pve-root-ca.pem",
+ "thenImport": "Poi importarlo sul lato cliente:",
+ "items": [
+ "Linux (intero sistema): esegui sudo cp pve-root-ca.pem /usr/local/share/ca-certificates/pve-root-ca.crt e poi sudo update-ca-certificates. I browser che usano l'archivio di sistema (Chromium, Edge) riconoscono la CA dopo il riavvio; Firefox usa un archivio proprio e richiede l'importazione manuale seguente.",
+ "macOS: apri il file .pem con doppio clic in Accesso Portachiavi, aggiungilo al portachiavi Sistema e imposta Attendibilità → Considera sempre attendibile.",
+ "Windows: clic destro sul file → Installa certificato → inseriscilo in Autorità di certificazione radice attendibili.",
+ "Firefox (qualsiasi sistema operativo):Impostazioni → Privacy e sicurezza → Certificati → Mostra certificati → Autorità → Importa; seleziona Considera attendibile questa CA per identificare siti web."
+ ],
+ "standalone": {
+ "title": "Nodi standalone fuori da un cluster",
+ "bodyRich": "Ogni host Proxmox non incluso ha il proprio pve-root-ca.pem. Se gestisci diversi host standalone, ripeti la copia/importazione per ciascuno, o unisciti a un cluster in modo da condividere una singola radice."
+ }
+ },
+ "disable": {
+ "heading": "Disabilitare HTTPS",
+ "bodyRich": "Fai clic su Disabilita HTTPS nello stesso pannello. Monitor si riavvia con HTTP non cifrato, utile se un certificato personalizzato non è leggibile e il servizio non parte. Non serve una disinstallazione separata e i file di certificato non vengono modificati.",
+ "stateCallout": {
+ "title": "Dove viene salvato lo stato",
+ "bodyRich": "/etc/proxmenux/ssl_config.json memorizza i percorsi di cert attivo e la fonte (none, proxmox, custom). Cancellare il file è equivalente a disabilitare HTTPS — il prossimo inizio il Monitor rientra a HTTP."
+ }
+ }
+}
diff --git a/web/messages/pt/docs/security/fail2ban.json b/web/messages/pt/docs/security/fail2ban.json
new file mode 100644
index 00000000..2c4c86f6
--- /dev/null
+++ b/web/messages/pt/docs/security/fail2ban.json
@@ -0,0 +1,152 @@
+{
+ "meta": {
+ "title": "Fail2Ban | Documentação do ProxMenux",
+ "description": "Instalar Fail2Ban com três jails sintonizado para Proxmox (SSH agressivo, Proxmox UI 8006, ProxMenux Monitor 8008). Inclui o journald MaxLevelStore correção, serviços de log personalizados para confiabilidade, backend nftables/iptables detectado automaticamente e SSH MaxAuthTries endurecimento.",
+ "ogTitle": "Fail2Ban | Documentação do ProxMenux",
+ "ogDescription": "Proteção contra força bruta para SSH e interfaces web Proxmox, com correções do journald e do backend específicas para Proxmox."
+ },
+ "header": {
+ "title": "Fail2Ban",
+ "description": "Instala Fail2Ban para Proxmox: três jails (SSH agressivo, interface Proxmox em 8006, ProxMenux Monitor em 8008 e proxy inverso), correção do nível do journald para guardar eventos SSH, dois serviços que copiam o journal para ficheiros para contornar um problema do backend systemd, deteção do backend de firewall e reforço SSH com MaxAuthTries.",
+ "section": "Segurança"
+ },
+ "intro": {
+ "title": "O que isto faz",
+ "body": "Instala Fail2Ban dos repositórios Debian e cria uma configuração Proxmox que protege de imediato SSH, interface web Proxmox e ProxMenux Monitor. Se detetar uma instalação existente, oferece um menu de gestão para reinstalar ou remover."
+ },
+ "firstLaunch": {
+ "heading": "Janela de primeiro lançamento",
+ "body": "Sem Fail2Ban instalado, o script resume num diálogo o que vai instalar e configurar. Cancelar termina sem alterações; confirmar inicia a instalação.",
+ "imageAlt": "Confirmação de instalação do Fail2Ban com três jails, correção do journald e reforço SSH"
+ },
+ "jails": {
+ "heading": "As três jails",
+ "headerJail": "Jail",
+ "headerProtects": "Protege",
+ "headerRetries": "Tentativas / Janela",
+ "headerBan": "Duração do bloqueio",
+ "rows": [
+ {
+ "jail": "[sshd]",
+ "protects": "SSH (modo aggressive — inclui ddos, mode, normal)",
+ "retries": "2 / 60 min",
+ "ban": "9 horas"
+ },
+ {
+ "jail": "[proxmox]",
+ "protects": "Interface web do Proxmox (porta 8006)",
+ "retries": "3 / 10 min",
+ "ban": "1 hora"
+ },
+ {
+ "jail": "[proxmenux]",
+ "protects": "ProxMenux Monitor (porta 8008 + proxy inverso http/https)",
+ "retries": "3 / 10 min",
+ "ban": "1 hora"
+ }
+ ],
+ "outro": "Defaults globais de jail.local: ignoreip = 127.0.0.1/8 ::1, ignoreself = true, bantime = 86400 (fallback de 24h para prisões que não o sobrepõem), maxretry = 2, findtime = 1800."
+ },
+ "journald": {
+ "heading": "Por que a correção journald é importante",
+ "intro": "O Proxmox fornece /etc/systemd/journald.conf com MaxLevelStore=warning. O journald descarta as mensagens de nível inferior a warning antes de as guardar. SSH e PAM emitem falhas de autenticação nos níveis info / notice, pelo que:",
+ "diagram": {
+ "sshLabel": "SSH / PAM",
+ "sshDetail": "falha de autenticação\n(nível info / notice)",
+ "journaldLabel": "journald",
+ "journaldDetail": "MaxLevelStore=warning\n→ evento descartado sem aviso",
+ "fail2banLabel": "Fail2Ban",
+ "fail2banDetail": "não vê nada\n→ nunca proíbe nada",
+ "arrowLabel": "Proxmox por omissão"
+ },
+ "afterDiagram": "O instalador detecta isso e escreve um drop-in em /etc/systemd/journald.conf.d/proxmenux-loglevel.conf elevando tanto MaxLevelStore quanto MaxLevelSyslog para info:",
+ "code": "[Journal]\nMaxLevelStore=info\nMaxLevelSyslog=info",
+ "outro": "Em seguida, reinicia systemd-journald. O drop-in é removido ao desinstalar, restaurando o padrão original do Proxmox."
+ },
+ "loggers": {
+ "heading": "Porquê dois serviços de registo personalizado",
+ "intro1": "O Fail2Ban pode ler diretamente o journal do systemd (backend = systemd), mas no Proxmox este backend tem problemas conhecidos com processos worker de pvedaemon: os eventos de autenticação aparecem no journal mas nem sempre são detetados. O problema também afeta ocasionalmente sshd.",
+ "intro2": "O ProxMenux cria dois pequenos serviços systemd que acompanham as unidades relevantes com journalctl -f e acrescentam cada linha a um ficheiro. O Fail2Ban lê esses ficheiros com o fiável backend = auto (modo ficheiro):",
+ "headerService": "Serviço",
+ "headerSource": "Unidade de origem",
+ "headerOutput": "Ficheiro de saída",
+ "rows": [
+ {
+ "service": "proxmox-auth-logger.service",
+ "source": "pvedaemon.service",
+ "output": "/var/log/proxmox-auth.log"
+ },
+ {
+ "service": "ssh-auth-logger.service",
+ "source": "ssh.service",
+ "output": "/var/log/ssh-auth.log"
+ }
+ ],
+ "outro": "Ambos os serviços são declarados PartOf=fail2ban.service para que eles reiniciar com Fail2Ban e parar com ele. Modo 640 de propriedade do root:adm nos arquivos de log. O terceiro log usado pela cadeia [proxmenux] (/var/log/proxmenux-auth.log) é escrito diretamente pelo aplicativo ProxMenux Monitor Flask — nenhum serviço de registrador necessário para esse."
+ },
+ "backend": {
+ "heading": "Deteção automática do backend de firewall",
+ "intro": "O instalador sonda o host: se o nft list ruleset funcionar, ele escolhe o nftables como ação de ban. Caso contrário, volta para iptables-multiport / iptables-allports. A escolha é escrita em jail.local:",
+ "code": "# nftables host\nbanaction = nftables\nbanaction_allports = nftables[type=allports]\n\n# iptables host (fallback)\nbanaction = iptables-multiport\nbanaction_allports = iptables-allports"
+ },
+ "hardening": {
+ "heading": "Reforço SSH: MaxAuthTries",
+ "intro": "O controlo Lynis SSH-7408 recomenda MaxAuthTries 3 em sshd_config. A jail SSH utiliza maxretry = 2 para bloquear após falhas repetidas; MaxAuthTries limita as tentativas numa ligação. Este ajuste SSH acrescenta defesa em profundidade, mesmo quando Fail2Ban está parado para manutenção.",
+ "installerIntro": "O instalador:",
+ "items": [
+ "Lê o valor atual do MaxAuthTries (ou padrão para 6 se ausente).",
+ "Guarda-o em /usr/local/share/proxmenux/sshd_maxauthtries_backup.",
+ "Edita sshd_config diretamente: substitui a linha existente, remove o comentário da linha comentada ou acrescenta uma nova.",
+ "Recarrega o sshd (recarregar, não reiniciar, para manter as sessões existentes vivas)."
+ ],
+ "outro": "Na desinstalação, o valor original salvo é restaurado e sshd é recarregado novamente."
+ },
+ "manage": {
+ "heading": "Gerenciar uma instalação existente",
+ "intro": "Se o Fail2Ban já estiver instalado quando você abrir o menu, o script detecta-o e mostra um menu de gerenciamento em vez de repetir o instalador:",
+ "headerAction": "Ação",
+ "headerWhat": "O que ele faz",
+ "rows": [
+ {
+ "action": "Reinstalar",
+ "what": "Repete a instalação completa e reescreve todas as jails com os valores atuais do ProxMenux. Utilize quando uma atualização alterar as recomendações."
+ },
+ {
+ "action": "Remover",
+ "what": "Para fail2ban e os dois serviços de registro, limpa o pacote apt, remove todos os jail / arquivos de filtro, exclui o drop-in journald (restaurando o padrão do Proxmox) e restaura o SSH original MaxAuthTries."
+ }
+ ]
+ },
+ "verify": {
+ "heading": "Verifica se está a funcionar.",
+ "intro": "Após a instalação, comandos úteis da máquina:",
+ "code": "# Service status and version\nsystemctl status fail2ban\nfail2ban-client --version\n\n# All active jails\nfail2ban-client status\n\n# Detail on one jail\nfail2ban-client status sshd\nfail2ban-client status proxmox\nfail2ban-client status proxmenux\n\n# Currently banned IPs in a jail\nfail2ban-client status sshd | grep \"Banned IP\"\n\n# Manually unban an IP (use this if you ban yourself)\nfail2ban-client unban 192.0.2.10\n\n# Tail the auth logs Fail2Ban watches\ntail -f /var/log/ssh-auth.log\ntail -f /var/log/proxmox-auth.log\ntail -f /var/log/fail2ban.log"
+ },
+ "troubleshoot": {
+ "heading": "Resolução de Problemas",
+ "neverBansTitle": "O Fail2Ban é executado mas nunca proíbe nada",
+ "neverBansBody": "Verifique se tail -f /var/log/ssh-auth.log recebe uma entrada após uma tentativa SSH com palavra-passe errada a partir de outra máquina. Caso contrário, consulte systemctl status ssh-auth-logger.service. Se o serviço estiver ativo, veja os eventos recentes com journalctl -u ssh.service -n 50 --no-pager -p info e confirme que o complemento journald permite o nível info.",
+ "monitorEmptyTitle": "A jail ProxMenux Monitor não tem entradas mesmo após inícios de sessão falhados",
+ "monitorEmptyBody": "O [proxmenux] jail lê /var/log/proxmenux-auth.log, que é escrito pelo aplicativo ProxMenux Monitor Flask — não por um criador de logs journald. Se você não executar o Monitor, o arquivo permanecerá vazio e o jail nunca será acionado. Isso é esperado; a configuração jail é inofensiva. Se você executar o Monitor e o log estiver vazio, verifique a configuração de registro do Flask.",
+ "selfBanTitle": "Eu bani-me.",
+ "selfBanIntro": "A partir de uma consola / IPMI / iKVM (ou de outro IP autorizado):",
+ "selfBanCode": "fail2ban-client unban '<'YOUR_IP'>'\n\n# To prevent it next time, edit /etc/fail2ban/jail.local and add your IP:\nignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 203.0.113.42\n\n# Then reload\nfail2ban-client reload",
+ "aptFailTitle": "O apt-get falha: ''Unable to locate package fail2ban''",
+ "aptFailBody": "O host está faltando o Debian repos (comum nas instalações do 'barebones' Proxmox). O instalador detecta isso e escreve /etc/apt/sources.list.d/debian.sources com o codinome certo (bookworm / trixie) antes de tentar novamente. Se ainda falhar, verifique /etc/os-release para VERSION_CODENAME e confirme que o URL do repo está acessível.",
+ "lockoutTitle": "SSH me bloqueia depois de instalar",
+ "lockoutBody": "O instalador define MaxAuthTries=3. Se seu gerenciador de senhas / agente repetir várias chaves, você pode exceder isso em uma única tentativa de conexão. Limite as chaves oferecidas: ssh -o IdentitiesOnly=yes -i ~/.ssh/specific_key user@host. Ou aumentar temporariamente o MaxAuthTries em sshd_config enquanto você depura."
+ },
+ "files": {
+ "heading": "Ficheiros gravados",
+ "code": "/etc/fail2ban/jail.local # global defaults + [sshd]\n/etc/fail2ban/jail.d/proxmox.conf # [proxmox]\n/etc/fail2ban/jail.d/proxmenux.conf # [proxmenux]\n/etc/fail2ban/filter.d/proxmox.conf # auth-failure regex for pvedaemon\n/etc/fail2ban/filter.d/proxmenux.conf # auth-failure regex for Monitor\n/etc/systemd/system/proxmox-auth-logger.service # journal → file (pvedaemon)\n/etc/systemd/system/ssh-auth-logger.service # journal → file (sshd)\n/etc/systemd/journald.conf.d/proxmenux-loglevel.conf # MaxLevelStore=info\n/etc/ssh/sshd_config # MaxAuthTries=3 (in-place edit)\n/var/log/proxmox-auth.log # written by logger service\n/var/log/ssh-auth.log # written by logger service\n/var/log/proxmenux-auth.log # written by Monitor Flask app\n/usr/local/share/proxmenux/sshd_maxauthtries_backup # for restore on uninstall"
+ },
+ "related": {
+ "heading": "Relacionado",
+ "monitorLabel": "ProxMenux Monitor → Guia de segurança",
+ "monitorTail": " — instalação pelo painel, estado das jails em direto, IPs bloqueados e ajuste de tentativas e duração do bloqueio por jail no navegador.",
+ "lynisLabel": "Lynis",
+ "lynisTail": " — execute uma auditoria antes e depois para confirmar que o controlo SSH-7408 é cumprido.",
+ "securityLabel": "Visão geral da segurança",
+ "securityTail": " — voltar ao panorama da secção."
+ }
+}
diff --git a/web/messages/pt/docs/security/index.json b/web/messages/pt/docs/security/index.json
new file mode 100644
index 00000000..5dfb80b8
--- /dev/null
+++ b/web/messages/pt/docs/security/index.json
@@ -0,0 +1,70 @@
+{
+ "meta": {
+ "title": "Segurança do Proxmox — Fail2Ban e auditoria de reforço com Lynis | ProxMenux",
+ "description": "Duas ferramentas de segurança para Proxmox VE: Fail2Ban (prevenção de intrusões para SSH, interface web do Proxmox e ProxMenux Monitor) e Lynis (auditoria de segurança e reforço do sistema, instalado a partir do repositório original no GitHub).",
+ "ogTitle": "Segurança do Proxmox — Fail2Ban e auditoria de reforço com Lynis",
+ "ogDescription": "Fail2Ban e Lynis para Proxmox VE: prevenção de intrusões e auditoria de reforço, instalados e geridos pelo ProxMenux.",
+ "twitterTitle": "Segurança do Proxmox | ProxMenux",
+ "twitterDescription": "Fail2Ban e Lynis para Proxmox VE: prevenção de intrusões e auditoria de reforço."
+ },
+ "header": {
+ "title": "Segurança",
+ "description": "Duas ferramentas complementares para Proxmox VE: defesa ativa (Fail2Ban bloqueia IPs que atacam SSH ou interfaces web) e auditoria local (Lynis procura falhas de reforço e dá uma pontuação de 0 a 100). Cada ferramenta tem o seu menu de instalação e gestão, com deteção de instalações existentes antes de agir.",
+ "section": "Segurança"
+ },
+ "intro": {
+ "title": "Defesa ativa e auditoria local",
+ "body": "Respondem a perguntas diferentes. Fail2Ban responde a «Estamos a ser atacados agora?» observando os registos de autenticação e bloqueando os IPs responsáveis. Lynis responde a «Qual é o nível de reforço deste anfitrião?» através de uma auditoria pontual com recomendações concretas. Utilize ambos: Lynis indica o que melhorar e Fail2Ban reage aos ataques em curso."
+ },
+ "opening": {
+ "heading": "Abrir o menu",
+ "body": "No menu principal do ProxMenux selecione Segurança. Verá o seguinte:",
+ "imageAlt": "Menu de segurança com opções Fail2Ban e Lynis"
+ },
+ "pick": {
+ "heading": "Escolha sua ferramenta",
+ "body": "As duas ferramentas de segurança são independentes — instale uma, ambas ou nenhuma. Cada carta abaixo salta para a seção que explica a ferramenta em detalhes."
+ },
+ "cards": {
+ "fail2ban": {
+ "title": "Fail2Ban",
+ "body": "Prevenção ativa de intrusões. Observa os registos de autenticação SSH e web e bloqueia IPs após falhas repetidas.",
+ "bullets": [
+ "Três jails: SSH, interface Proxmox (8006), ProxMenux Monitor (8008)",
+ "Corrige as predefinições do journald no Proxmox que bloqueiam os registos de autenticação",
+ "Detecta automaticamente nftables / iptables",
+ "Endurecimento de SSH: MaxAuthTries=3 (recomendação Lynis)"
+ ]
+ },
+ "lynis": {
+ "title": "Lynis",
+ "body": "Auditor local de segurança. Analisa o anfitrião e apresenta uma pontuação de reforço e sugestões concretas de correção.",
+ "bullets": [
+ "Instalado a partir do repositório original da CISOfy no GitHub (versão mais recente)",
+ "Pontuação de reforço 0–100 e lista de avisos e sugestões",
+ "Auditoria e atualização através do menu",
+ "Concebido apenas para leitura: nunca altera o sistema"
+ ]
+ }
+ },
+ "workflowTip": {
+ "title": "Fluxo de trabalho que utiliza ambos",
+ "body": "Execute primeiro Lynis para conhecer a pontuação inicial e as principais recomendações. Aplique as correções desejadas. Depois instale Fail2Ban: implementa automaticamente a proteção SSH contra força bruta e ajusta MaxAuthTries em sshd_config para cumprir o controlo SSH-7408. Execute Lynis novamente para verificar a melhoria."
+ },
+ "fail2banSection": {
+ "heading": "Fail2Ban",
+ "body": "O ProxMenux instala Fail2Ban com uma configuração específica para Proxmox. Além da jail SSH padrão, protege a interface web Proxmox e o ProxMenux Monitor. Contorna dois problemas específicos: uma predefinição do journald que descarta eventos de autenticação e um problema do backend systemd que impede a leitura fiável de certas fontes do registo. A página detalhada explica a instalação, as três jails, a correção do journald, o reforço SSH e a resolução de problemas.",
+ "optionTitle": "Fail2Ban — instalar e gerenciar",
+ "optionDescription": "Três jails pré-configuradas (sshd agressivo, interface Proxmox em 8006, ProxMenux Monitor em 8008 e proxy inverso), deteção de nftables/iptables, correção do journald e reforço SSH com MaxAuthTries."
+ },
+ "lynisSection": {
+ "heading": "Lynis",
+ "body": "O ProxMenux clona Lynis de github.com/CISOfy/lynis para /opt/lynis e disponibiliza-o como /usr/local/bin/lynis. Evita o pacote Debian porque está várias versões principais atrás do projeto original. A página detalhada explica instalação, auditoria, atualização, desinstalação, leitura do relatório e ações sobre os resultados.",
+ "optionTitle": "Lynis — instalar, auditar e gerenciar",
+ "optionDescription": "Instala a versão mais recente do Lynis a partir do repositório oficial CISOfy no GitHub (em vez do pacote Debian mais antigo), executa auditorias com pontuação de reforço e atualiza através de git pull."
+ },
+ "componentStatus": {
+ "heading": "Estado do componente",
+ "body": "Ambos os instaladores registram seu estado em /usr/local/share/proxmenux/components_status.json na categoria security. ProxMenux usa este arquivo para decidir se deve mostrar a instalação ou o menu de gerenciamento em sequências, e os mesmos dados alimentam os painéis no ProxMenux Monitor quando presente."
+ }
+}
diff --git a/web/messages/pt/docs/security/lynis.json b/web/messages/pt/docs/security/lynis.json
new file mode 100644
index 00000000..6b019ae9
--- /dev/null
+++ b/web/messages/pt/docs/security/lynis.json
@@ -0,0 +1,170 @@
+{
+ "meta": {
+ "title": "Lynis | Documentação do ProxMenux",
+ "description": "Instale a versão mais recente do Lynis do repositório oficial CISOfy no GitHub, execute uma auditoria com pontuação de reforço de 0 a 100 e atualize através de git pull. Auditor apenas de leitura: não altera o sistema.",
+ "ogTitle": "Lynis | Documentação do ProxMenux",
+ "ogDescription": "Instale e execute Lynis no Proxmox VE. Instalação do repositório original GitHub, auditoria e atualização."
+ },
+ "header": {
+ "title": "Lynis",
+ "description": "Clona a versão mais recente do Lynis do repositório oficial CISOfy no GitHub, disponibiliza-a como /usr/local/bin/lynis e oferece auditoria, atualização, reinstalação e desinstalação no menu. O auditor apenas lê e apresenta resultados sem alterar o sistema.",
+ "section": "Segurança"
+ },
+ "intro": {
+ "title": "O que isto faz",
+ "body": "Instala Lynis, o auditor de segurança de código aberto da CISOfy, do repositório GitHub em /opt/lynis e cria um lançador em /usr/local/bin/lynis para o disponibilizar no PATH. Se detetar uma instalação existente, apresenta um menu de auditoria, atualização, reinstalação ou remoção."
+ },
+ "manageMenu": {
+ "heading": "Menu de gestão (após a instalação)",
+ "intro": "Uma vez instalado o Lynis, cada invocação subsequente abre o menu de gerenciamento em vez de repetir o instalador. A partir daqui você inicia uma auditoria, atualização via git pull, reinstalar ou desinstalar:",
+ "imageAlt": "Menu de gerenciamento do Lynis com as opções de auditoria, atualização, reinstalação e remoção"
+ },
+ "whyUpstream": {
+ "heading": "Porquê o repositório oficial GitHub em vez de apt",
+ "intro": "O Debian distribui Lynis através de apt, mas o pacote costuma estar várias versões principais atrás do projeto original. Novos controlos, correções de novos vetores de ataque e recomendações melhoradas chegam primeiro ao GitHub. Lynis é um script shell autónomo, sem compilação nem dependências de instalação além de git; clonar o repositório é o método recomendado pela CISOfy.",
+ "headerSource": "Origem",
+ "headerPath": "Install path",
+ "headerUpdate": "Método de atualização",
+ "headerFresh": "Atualidade da versão",
+ "rows": [
+ {
+ "sourceRich": "ProxMenux (este programa)",
+ "path": "/opt/lynis/",
+ "update": "git pull (no menu)",
+ "fresh": "Versão mais recente do projeto original"
+ },
+ {
+ "sourceRich": "Debian apt",
+ "path": "/usr/bin/lynis",
+ "update": "apt upgrade",
+ "fresh": "Muitas vezes meses / anos atrás"
+ }
+ ]
+ },
+ "install": {
+ "heading": "Como funciona a instalação",
+ "node1Label": "github.com/CISOfy/lynis",
+ "node1Detail": "git clone\n(instale git primeiro, se faltar)",
+ "node2Label": "/opt/lynis/",
+ "node2Detail": "repositório completo\nincluindo o script ./lynis",
+ "node3Label": "/usr/local/bin/lynis",
+ "node3Detail": "lançador:\ncd /opt/lynis && ./lynis $@",
+ "outro": "O lançador é necessário: Lynis precisa de ser executado no próprio diretório porque utiliza caminhos relativos para plugins e perfis. O lançador esconde esse detalhe e permite que lynis audit system funcione a partir de qualquer diretório."
+ },
+ "detection": {
+ "heading": "Caminhos de detecção",
+ "intro": "Antes de mostrar o menu, o script verifica três locais para decidir se Lynis já está presente:",
+ "items": [
+ "/usr/local/bin/lynis — invólucro instalado por ProxMenux",
+ "/opt/lynis/lynis — caminho direto (caso o invólucro tenha sido removido)",
+ "/usr/bin/lynis — versão apt-instalada, se o usuário a instalou dessa forma anteriormente"
+ ],
+ "outro": "Se encontrar um destes caminhos, abre o menu de gestão. O script não desinstala Lynis instalado por apt; remove apenas o que gere em /opt/lynis e o respetivo lançador."
+ },
+ "audit": {
+ "heading": "Executar uma auditoria",
+ "intro": "No menu de gestão escolha Executar auditoria de segurança agora. Equivale a executar:",
+ "code": "lynis audit system --no-colors",
+ "outro": "A auditoria demora de 30 segundos a alguns minutos conforme a dimensão do anfitrião. A saída aparece diretamente no terminal, sem animação de espera. Lynis organiza os controlos por categoria e marca cada teste como [ OK ], [ WARNING ] ou [ SUGGESTION ]. O resumo final apresenta os números principais:",
+ "summary": "================================================================================\n\n Detalhes da análise de segurança Lynis:\n\n Índice de reforço : 76 [############ ]\n Testes realizados : 247\n Plugins ativados : 0\n\n Componentes:\n - Firewall [V]\n - Analisador de malware [X]\n\n Módulos Lynis:\n - Estado de conformidade [?]\n - Auditoria de segurança [V]\n - Análise de vulnerabilidades [V]\n\n================================================================================"
+ },
+ "report": {
+ "heading": "Ler o relatório",
+ "intro": "As duas seções importantes são Avisos (coisas que você deve corrigir em breve) e Sugestão (recomendações para melhorar o endurecimento). Cada item carrega um ID de controle como SSH-7408 — útil ao pesquisar os documentos Lynis para a lógica e a correção.",
+ "headerMarker": "Marcador",
+ "headerMeaning": "Significado",
+ "headerAction": "Ação",
+ "rows": [
+ {
+ "markerRich": "OK",
+ "meaning": "Passado o teste",
+ "action": "Nada."
+ },
+ {
+ "markerRich": "WARNING",
+ "meaning": "Problema real, correção recomendada",
+ "action": "Leia a descrição do controle, planeje uma correção"
+ },
+ {
+ "markerRich": "SUGGESTION",
+ "meaning": "Melhoria do endurecimento disponível",
+ "action": "Aplicar se se encaixa no seu modelo de ameaça"
+ }
+ ],
+ "outro": "Relatório completo e dados legíveis por máquina são escritos para /var/log/lynis.log e /var/log/lynis-report.dat pelo próprio Lynis."
+ },
+ "pairFail2ban": {
+ "title": "Combinar com Fail2Ban",
+ "body": "SSH-7408 (MaxAuthTries) é uma das advertências mais comuns. Instalar o Fail2Ban da ProxMenux o limpa automaticamente porque o instalador configura o MaxAuthTries=3 como parte da sua etapa de endurecimento do SSH. Corra Lynis novamente depois para confirmar que o aviso se foi."
+ },
+ "update": {
+ "heading": "Actualizar o Lynis",
+ "body": "No menu, Atualizar Lynis para a versão mais recente executa git pull --quiet em /opt/lynis. Se o diretório existir mas não for uma cópia de trabalho Git, por exemplo após copiar ficheiros manualmente, o script reinstala por completo."
+ },
+ "reinstall": {
+ "heading": "Reinstalar / desinstalar",
+ "headerAction": "Ação",
+ "headerWhat": "O que ele faz",
+ "rows": [
+ {
+ "actionRich": "Reinstalar",
+ "whatRich": "Remove /opt/lynis, clona novamente do GitHub e recria o lançador. Utilize se a cópia local estiver danificada."
+ },
+ {
+ "actionRich": "Remover",
+ "whatRich": "Exclui /opt/lynis e /usr/local/bin/lynis. Os logs em /var/log/lynis* são mantidos (são histórico de auditoria). Um Lynis apt-instalado em /usr/bin/lynis é deixado intocado."
+ }
+ ]
+ },
+ "cli": {
+ "heading": "Opções CLI úteis",
+ "intro": "Uma vez instalado, Lynis pode ser invocado diretamente de uma shell com opções extras não expostas pelo menu:",
+ "code": "lynis show version # version + build date\nlynis show commands # list every available command\nlynis show details TEST-ID # explain a specific control\nlynis audit system --quick # skip slow tests (e.g. malware scan)\nlynis audit system --pentest # treat host as untrusted (more aggressive)\nlynis update info # check if a newer Lynis is available\n\n# Filter the report log for just the warnings\ngrep \"Warning\" /var/log/lynis.log\n\n# Same, for suggestions only\ngrep \"Suggestion\" /var/log/lynis.log"
+ },
+ "troubleshoot": {
+ "heading": "Resolução de Problemas",
+ "cloneTitle": "git clone falha durante a instalação",
+ "cloneBody": "O host precisa de acesso à rede e DNS para alcançar github.com. A partir de um console: curl -sI https://github.com e git ls-remote https://github.com/CISOfy/lynis.git irá revelar o erro real (DNS, TLS, proxy, URL repo). Se for necessário um proxy, defina https_proxy no ambiente antes de executar novamente o menu.",
+ "notFoundTitle": "lynis: comando não encontrado após a instalação",
+ "notFoundIntro": "O lançador /usr/local/bin/lynis não foi criado ou foi removido. A solução mais rápida é reinstalar a partir do menu. Correção manual:",
+ "notFoundCode": "cat > /usr/local/bin/lynis <<'EOF'\n#!/bin/bash\ncd /opt/lynis && ./lynis \"$@\"\nEOF\nchmod +x /usr/local/bin/lynis",
+ "sshTitle": "A auditoria mostra \"Warning: Test SSH-7408 — MaxAuthTries set incorrectly\"",
+ "sshIntro": "O servidor SSH permite demasiadas tentativas de autenticação por ligação. Instale o Fail2Ban do ProxMenux (que define o MaxAuthTries=3 automaticamente) ou edite o /etc/ssh/sshd_config à mão:",
+ "sshCode": "sed -i 's/^#?MaxAuthTries.*/MaxAuthTries 3/' /etc/ssh/sshd_config\nsystemctl reload sshd",
+ "scoreTitle": "A pontuação caiu após uma atualização do Proxmox",
+ "scoreBody": "Executar lynis update info primeiro — uma atualização Lynis pode ter adicionado novos controles que sinalizam a configuração existente. Atualizar Lynis do menu, reauditar e abordar as novas descobertas."
+ },
+ "files": {
+ "heading": "Ficheiros gravados",
+ "code": "/opt/lynis/ # full Lynis git checkout\n/usr/local/bin/lynis # wrapper script (cd + exec)\n/var/log/lynis.log # human-readable audit log (Lynis itself)\n/var/log/lynis-report.dat # machine-readable report (Lynis itself)"
+ },
+ "sample": {
+ "heading": "Relatório de exemplo",
+ "intro": "O ProxMenux Monitor gera um PDF de várias páginas para cada execução do Lynis no separador Segurança. A primeira página resume a pontuação de reforço, informações do sistema e estado da segurança. As seguintes explicam cada aviso, ordenam sugestões por impacto e incluem o inventário de pacotes utilizado na auditoria.",
+ "imageAlt": "Primeira página do Lynis Security Audit Report PDF — resumo executivo com índice de endurecimento 71/100, bloco de informações do sistema e visão geral da postura de segurança com firewall, scanner de malware e contagem de pacotes instalados",
+ "captionPrefix": "Primeira página de um relatório de amostra. O PDF completo (",
+ "captionLink": "amostra",
+ "captionSuffix": ") continua com advertências detalhadas, sugestões e a lista de pacotes instalados.",
+ "cli": "No lado CLI os mesmos dados estão em /var/log/lynis-report.dat (arquivo plano legível por máquina) e /var/log/lynis.log (o log de execução legível por humanos). O PDF é gerado sob demanda pelo ProxMenux Monitor — executar o lynis a partir da linha de comando não produz um."
+ },
+ "related": {
+ "heading": "Relacionado",
+ "items": [
+ {
+ "href": "/docs/monitor/dashboard/security",
+ "label": "ProxMenux Monitor → Guia de segurança",
+ "tail": " — executar a auditoria, procurar relatórios históricos e baixar o PDF diretamente do painel."
+ },
+ {
+ "href": "/docs/security/fail2ban",
+ "label": "Fail2Ban",
+ "tailRich": " — implementa a proteção SSH à força bruta que Lynis recomenda."
+ },
+ {
+ "href": "/docs/security",
+ "label": "Visão geral da segurança",
+ "tail": " — voltar ao panorama da secção."
+ }
+ ]
+ }
+}
diff --git a/web/messages/pt/docs/security/ssl-letsencrypt.json b/web/messages/pt/docs/security/ssl-letsencrypt.json
new file mode 100644
index 00000000..3e8ba3c2
--- /dev/null
+++ b/web/messages/pt/docs/security/ssl-letsencrypt.json
@@ -0,0 +1,169 @@
+{
+ "meta": {
+ "title": "HTTPS para ProxMenux Monitor — certificado do anfitrião Proxmox ou caminhos personalizados | ProxMenux",
+ "description": "Disponibilize o ProxMenux Monitor por HTTPS com o certificado do anfitrião Proxmox (detetado automaticamente, incluindo Let’s Encrypt instalado pelo ACME do Proxmox) ou um certificado personalizado em qualquer caminho do disco.",
+ "ogTitle": "HTTPS para ProxMenux Monitor — Host Proxmox ou certificado personalizado",
+ "ogDescription": "Habilite o HTTPS na porta 8008 com o certificado de host Proxmox ou qualquer par personalizado .pem / .key."
+ },
+ "header": {
+ "title": "HTTPS para ProxMenux Monitor",
+ "description": "Ative HTTPS para o Monitor na porta 8008 com o certificado do anfitrião Proxmox detetado automaticamente ou um certificado personalizado no disco. A opção Proxmox prefere o certificado ACME, se existir, e reutiliza Let’s Encrypt gerido pelo Proxmox sem outra tarefa de renovação.",
+ "section": "Segurança"
+ },
+ "intro": {
+ "title": "O que esta página cobre",
+ "body": "Como mudar o Monitor de HTTP para HTTPS no painel Configurações → Painel de segurança, o que cada fonte de certificado realmente aponta no disco, como a opção Proxmox se comporta quando o host tem um certificado Let's Encrypt, e como definir caminhos personalizados se você gerenciar certs fora do Proxmox."
+ },
+ "wheresetting": {
+ "heading": "Onde se encontra a configuração",
+ "body": "Abra o Monitor e vá a Configurações → Segurança → HTTPS / SSL. O painel mostra HTTP ou HTTPS e, se HTTPS ainda estiver desativado, as fontes de certificados detetadas.",
+ "imageAlt": "Configurações → Segurança → Painel HTTPS / SSL no Monitor mostrando o estado HTTPS-off, o certificado Proxmox auto-detectado (sujeito, emissor, expiração) e a opção Use Custom Certificate",
+ "caption": "Painel Configurações → Segurança → HTTPS / SSL antes da ativação. O Monitor mostra o certificado utilizado pelo Proxmox e permite escolhê-lo com um clique."
+ },
+ "twoways": {
+ "heading": "Duas maneiras de ativar o HTTPS",
+ "proxmox": {
+ "title": "Usar certificado Proxmox",
+ "summary": "Um clique: o Monitor reutiliza o certificado apresentado pelo Proxmox VE na porta 8006.",
+ "items": [
+ "Detetado automaticamente, sem introduzir caminhos",
+ "Prefere o certificado ACME, se existir; caso contrário usa o certificado autoassinado predefinido",
+ "O Proxmox renova; o Monitor valida e carrega o certificado na próxima nova ligação TLS"
+ ]
+ },
+ "custom": {
+ "title": "Usar certificado personalizado",
+ "summaryRich": "Aponte o monitor em um par .pem / .key em qualquer lugar no disco.",
+ "items": [
+ "Apenas caminhos absolutos (o processo Monitor deve ser capaz de ler ambos)",
+ "Útil para certificados de certbot, acme.sh ou certificados wildcard",
+ "A renovação fica a seu cargo: reinicie o Monitor quando os ficheiros mudarem"
+ ]
+ }
+ },
+ "proxmoxCert": {
+ "heading": "Certificado Proxmox — o que ele realmente aponta",
+ "intro": "Proxmox VE mantém dois pares de certificados em /etc/pve/local/:",
+ "table": {
+ "headers": {
+ "file": "Arquivo",
+ "origin": "Origem",
+ "when": "Quando o Monitor o usa"
+ },
+ "rows": [
+ {
+ "fileRich": "pveproxy-ssl.pem pveproxy-ssl.key",
+ "originRich": "Certificado personalizado carregado através da UI Proxmox — incluindo o certificado Let's Encrypt emitido sob Datacenter → Node → Certificados → ACME.",
+ "when": "Preferido quando ambos os ficheiros existem; o Monitor utiliza o certificado apresentado pelo Proxmox."
+ },
+ {
+ "fileRich": "pve-ssl.pem pve-ssl.key",
+ "originRich": "Certificado autoassinado gerado no momento da instalação pelo Proxmox PKI.",
+ "whenRich": "Alternativa quando não existe pveproxy-ssl.pem."
+ }
+ ]
+ },
+ "callout": {
+ "title": "A mesma prioridade que o próprio Proxmox",
+ "bodyRich": "pveproxy aplica a mesma seleção. Com a opção Proxmox, o Monitor utiliza o certificado apresentado pela interface Proxmox em 8006, sem cópias nem processo de renovação separado."
+ }
+ },
+ "letsencrypt": {
+ "heading": "Obtendo um certificado Let's Encrypt via Proxmox ACME",
+ "intro": "O Proxmox VE inclui o seu cliente ACME. «Order Certificate Now» guarda o resultado em /etc/pve/local/pveproxy-ssl.pem, que o Monitor lê. Os cinco passos seguintes resumem o guia oficial do Proxmox nos comandos necessários.",
+ "prereqs": {
+ "title": "Pré-requisitos",
+ "items": [
+ "O nó tem um verdadeiro nome DNS (não apenas um IP) apontando para ele.",
+ "Ou porta 80 acessível a partir da Internet (validação HTTP-01, a mais simples), ou fornecedor DNS com credenciais API (DNS-01, funciona atrás de NAT e suporta certificados wildcard).",
+ "Um endereço de email para a conta ACME."
+ ]
+ },
+ "step1": {
+ "heading": "Etapa 1 — Registo da conta ACME",
+ "introRich": "Substitua o email pelo seu. O nome da conta default é apenas um rótulo — você pode usar qualquer string.",
+ "code": "pvenode acme account register default you@example.com",
+ "afterRich": "A Proxmox pede que você aceite os termos de serviço Let's Encrypt. Depois disso, a conta é persistida em /etc/pve/priv/acme/ e a guia ACME na GUI irá mostrá-la."
+ },
+ "step2": {
+ "heading": "Passo 2 — Escolha um tipo de desafio",
+ "http01Rich": "HTTP-01 é o mais fácil: é embutido, sem plugin extra. O Let's Encrypt conecta-se ao http://<your-host>/.well-known/acme-challenge/... na porta 80, então a porta 80 deve estar aberta da internet pública ao seu nó — normalmente uma porta para frente no seu roteador.",
+ "dns01Rich": "DNS-01 funciona sem expor o porto 80 (bom para homelabs atrás do CG-NAT) e é a única opção para certificados wildcard. Você adiciona um plugin DNS uma vez com o token API do seu provedor. Exemplo Cloudflare:",
+ "code": "pvenode acme plugin add dns cf \\\n --api cloudflare \\\n --data CF_Token=YOUR_CLOUDFLARE_API_TOKEN",
+ "outroRich": "Para outros fornecedores (Gandi, OVH, AWS Route 53, etc.), consulte pvenode acme plugin add dns --help. O Proxmox inclui todos os plugins DNS do acme.sh."
+ },
+ "step3": {
+ "heading": "Passo 3 — Ligar o domínio ao seu nó",
+ "http01Rich": "Para o HTTP-01 (usa o plug- in incorporado do standalone):",
+ "code1": "pvenode config set --acme domains=host.example.com,account=default",
+ "dns01": "Para DNS-01 com o plugin Cloudflare do Passo 2:",
+ "code2": "pvenode config set --acmedomain0 domain=host.example.com,plugin=cf\npvenode config set --acme account=default",
+ "wildcardRich": "Wildcard? Adicionar domain=*.example.com em uma entrada separada --acmedomainN. Wildcards requerem DNS-01."
+ },
+ "step4": {
+ "heading": "Passo 4 — Ordenar o certificado",
+ "code": "pvenode acme cert order",
+ "afterRich": "A primeira execução normalmente leva 30–60 segundos enquanto o desafio se propaga. No sucesso Proxmox escreve /etc/pve/local/pveproxy-ssl.pem + .key, reinicia pveproxy, e um cron de renovação é agendado automaticamente (Let's Encrypt certs são válidos 90 dias; Proxmox renova em 60)."
+ },
+ "step5": {
+ "heading": "Etapa 5 — Verificar o emitente",
+ "code": "openssl x509 -in /etc/pve/local/pveproxy-ssl.pem -noout -issuer",
+ "afterRich": "Deve imprimir um emissor começando com O = Let's Encrypt. Se em vez disso ele lê CN = Proxmox Virtual Environment a ordem falhou e o arquivo ainda é o certificado PVE auto-assinado — re-executar pvenode acme cert order --debug 1 para ver porquê."
+ },
+ "gui": {
+ "title": "Preferes a GUI? Os mesmos cinco passos",
+ "bodyRich": "Datacenter → ACME regista a conta; Datacenter → ACME → Plugins adiciona o plugin DNS; Node → Certificates → ACME associa o domínio; Order Certificates Now executa o passo 4. Os comandos anteriores são úteis para scripts e sistemas sem interface gráfica."
+ }
+ },
+ "switchToHttps": {
+ "heading": "Mudar o monitor para HTTPS",
+ "bodyRich": "Quando /etc/pve/local/pveproxy-ssl.pem estiver assinado por Let's Encrypt, abra Configurações → Segurança → HTTPS / SSL, confirme que o emissor é Let's Encrypt e não a CA local Proxmox, e clique em Usar certificado Proxmox. O Monitor reinicia e o próximo carregamento utiliza HTTPS em 8008 com uma cadeia de confiança pública. As renovações ACME seguintes são validadas e selecionadas na próxima nova ligação TLS, sem consultas periódicas nem reinício por renovação. Atualizar certificado continua disponível em Segurança para diagnóstico e recuperação."
+ },
+ "custom": {
+ "heading": "Certificado personalizado — quando usá-lo",
+ "intro": "Clique em Usar certificado personalizado e introduza dois caminhos absolutos:",
+ "items": [
+ "Certificado — cadeia completa em PEM (.pem ou .crt).",
+ "Chave privada: chave correspondente em PEM (.key)."
+ ],
+ "outro": "Ambos os arquivos são lidos pelo processo Monitor na inicialização. Certifique-se de que eles permanecem legíveis pelo usuário que a unidade systemd executa como (root por padrão). Locais comuns quando o ACME é administrado fora do Proxmox:",
+ "code": "# certbot\n/etc/letsencrypt/live//fullchain.pem\n/etc/letsencrypt/live//privkey.pem\n\n# acme.sh\n~/.acme.sh/_ecc/fullchain.cer\n~/.acme.sh/_ecc/.key",
+ "symlinkCallout": {
+ "title": "Alvos do Symlink vs. arquivos",
+ "bodyRich": "certbot armazena os arquivos reais em /etc/letsencrypt/archive/ e o caminho live/ é um link simbólico. Aponte o Monitor no link simbólico live/, não no arquivo archive/ — dessa forma cada ciclo de renovação simplesmente reescreve o alvo do link simbólico e o Monitor capta o novo certificado no próximo início do serviço."
+ }
+ },
+ "afterHttps": {
+ "heading": "Após activar o HTTPS",
+ "bodyRich": "Salvar a mudança escreve /etc/proxmenux/ssl_config.json e ativa um reinício da unidade proxmenux-monitor systemd. A guia do navegador perderá sua conexão atual — recarregue-a no https://<host>:8008/. A primeira carga com um certificado Let's Encrypt não deve mostrar nenhum aviso; com o certificado auto-assinado Proxmox o navegador exigirá uma exceção, a mesma que para porta 8006.",
+ "reverse": {
+ "heading": "Proxies inversos e webhooks",
+ "bodyRich": "Quando o Monitor muda para HTTPS, as URLs Proxmox VE webhook registradas para notificações também passam de http:// para https:// automaticamente. Entradas webhook existentes são reescritas da próxima vez que uma regra de notificação for salva ou redetectada, então nenhuma edição manual da configuração de notificação Proxmox é necessária."
+ }
+ },
+ "trustCa": {
+ "heading": "Confiar na CA autoassinada do Proxmox",
+ "intro1Rich": "Para manter o certificado Proxmox predefinido sem ACME, importe a CA raiz do cluster para o repositório de confiança do sistema ou do navegador. O Monitor deteta /etc/pve/local/pve-ssl.pem como certificado de recurso. O cliente passa a confiar no emissor; o URL tem ainda de corresponder a um nome do certificado.",
+ "intro2Rich": "O arquivo CA vive em /etc/pve/pve-root-ca.pem em cada nó. Em um cluster, o caminho está no sistema de arquivos pmxcfs compartilhado, então todos os nós compartilham a mesma raiz, e uma única importação cobre todo o datacenter. Copie para a sua máquina:",
+ "code": "scp root@:/etc/pve/pve-root-ca.pem ./pve-root-ca.pem",
+ "thenImport": "Depois importa-o do lado do cliente:",
+ "items": [
+ "Linux (todo o sistema): execute sudo cp pve-root-ca.pem /usr/local/share/ca-certificates/pve-root-ca.crt e depois sudo update-ca-certificates. Os navegadores que utilizam o repositório de certificados do sistema (Chromium, Edge) reconhecem a CA após reiniciar; Firefox usa um repositório próprio e requer a importação manual abaixo.",
+ "macOS: abra o ficheiro .pem com duplo clique no Acesso a Porta-chaves, adicione-o ao porta-chaves Sistema e defina Confiança → Confiar sempre.",
+ "Windows: clique com o botão direito no ficheiro → Instalar certificado → coloque-o em Autoridades de certificação de raiz fidedigna.",
+ "Firefox (qualquer SO):Configurações → Privacidade e segurança → Certificados → Ver certificados → Autoridades → Importar; selecione Confiar nesta CA para identificar sites."
+ ],
+ "standalone": {
+ "title": "Nós autônomos fora de um cluster",
+ "bodyRich": "Cada host Proxmox não-aglomerado tem seu próprio pve-root-ca.pem. Se você gerenciar vários hosts autônomos, repita a cópia/importação para cada um, ou junte-os a um cluster para que eles compartilhem uma única raiz."
+ }
+ },
+ "disable": {
+ "heading": "Desactivando o HTTPS",
+ "bodyRich": "Clique em Desativar HTTPS no mesmo painel. O Monitor reinicia com HTTP sem cifragem, útil se um certificado personalizado ilegível impedir o arranque. Não existe outro passo de desinstalação e os ficheiros de certificados não são alterados.",
+ "stateCallout": {
+ "title": "Onde é guardado o estado",
+ "bodyRich": "/etc/proxmenux/ssl_config.json armazena os caminhos do certificado ativo e a fonte (none, proxmox, custom). Excluir o arquivo é equivalente a desativar o HTTPS — no início seguinte o Monitor cai para o HTTP."
+ }
+ }
+}
diff --git a/web/messages/sk/docs/security/fail2ban.json b/web/messages/sk/docs/security/fail2ban.json
new file mode 100644
index 00000000..33062ab3
--- /dev/null
+++ b/web/messages/sk/docs/security/fail2ban.json
@@ -0,0 +1,152 @@
+{
+ "meta": {
+ "title": "Fail2Ban | Dokumentácia ProxMenux",
+ "description": "Nainštalujte Fail2Ban s tromi jails vyladenými pre Proxmox (SSH agresívny, Proxmox UI 8006, ProxMenux Monitor 8008). Zahŕňa opravu journald MaxLevelStore, vlastné protokolové služby pre spoľahlivosť, automaticky detekovaný backend nftables/iptables a zosilnenie SSH MaxAuthTries.",
+ "ogTitle": "Fail2Ban | Dokumentácia ProxMenux",
+ "ogDescription": "Ochrana pred hrubou silou pre SSH a webové rozhrania Proxmox s opravami journald a backendu špecifickými pre Proxmox."
+ },
+ "header": {
+ "title": "Fail2Ban",
+ "description": "Nainštaluje Fail2Ban pre Proxmox: tri jaily (agresívny SSH, rozhranie Proxmox na 8006, ProxMenux Monitor na 8008 a reverzný proxy), opravu úrovne journald na ukladanie udalostí SSH, dve služby kopírujúce denník do súborov na obídenie známeho problému backendu systemd, detekciu backendu firewallu a posilnenie SSH pomocou MaxAuthTries.",
+ "section": "Zabezpečenie"
+ },
+ "intro": {
+ "title": "Čo to robí?",
+ "body": "Inštaluje Fail2Ban z repozitárov Debian a vytvorí konfiguráciu Proxmox, ktorá ihneď chráni SSH, rozhranie Proxmox a ProxMenux Monitor. Ak rozpozná existujúcu inštaláciu, ponúkne menu správy na preinštalovanie alebo odstránenie."
+ },
+ "firstLaunch": {
+ "heading": "Dialóg prvého spustenia",
+ "body": "Ak Fail2Ban nie je nainštalovaný, skript zobrazí potvrdenie so súhrnom plánovanej inštalácie a konfigurácie. Zrušenie ukončí postup bez zmien; potvrdenie spustí inštaláciu.",
+ "imageAlt": "Potvrdenie inštalácie Fail2Ban s tromi jailmi, opravou journald a posilnením SSH"
+ },
+ "jails": {
+ "heading": "Tri jails",
+ "headerJail": "Jail",
+ "headerProtects": "Chráni",
+ "headerRetries": "Pokusy / Časové okno",
+ "headerBan": "Trvanie blokovania",
+ "rows": [
+ {
+ "jail": "[sshd]",
+ "protects": "SSH (agresívny režim — zahŕňa ddos, mode, normal)",
+ "retries": "2 / 60 min",
+ "ban": "9 hodín"
+ },
+ {
+ "jail": "[proxmox]",
+ "protects": "Webové rozhranie Proxmox (port 8006)",
+ "retries": "3 / 10 min",
+ "ban": "1 hodina"
+ },
+ {
+ "jail": "[proxmenux]",
+ "protects": "ProxMenux Monitor (port 8008 + http/https reverzný proxy)",
+ "retries": "3 / 10 min",
+ "ban": "1 hodina"
+ }
+ ],
+ "outro": "Globálne predvolené hodnoty od jail.local: ignoreip = 127.0.0.1/8 ::1, ignoreself = true, bantime = 86400 (24-hodinová rezerva pre jails ktoré to neprepíšu), maxretry = 2, findtime = 1800."
+ },
+ "journald": {
+ "heading": "Prečo je oprava journald dôležitá",
+ "intro": "Proxmox dodáva /etc/systemd/journald.conf s MaxLevelStore=warning. journald pred uložením zahodí správy s úrovňou nižšou než warning. SSH a PAM hlásia chyby overovania na úrovniach info / notice, preto:",
+ "diagram": {
+ "sshLabel": "SSH / PAM",
+ "sshDetail": "chyba overovania\n(úroveň info / notice)",
+ "journaldLabel": "journald",
+ "journaldDetail": "MaxLevelStore=warning\n→ udalosť sa bez upozornenia zahodí",
+ "fail2banLabel": "Fail2Ban",
+ "fail2banDetail": "nevidí nič\n→ nikdy nič nezakazuje",
+ "arrowLabel": "predvolený Proxmox"
+ },
+ "afterDiagram": "Inštalátor to rozpozná a vytvorí doplnkový súbor /etc/systemd/journald.conf.d/proxmenux-loglevel.conf, ktorý nastaví MaxLevelStore aj MaxLevelSyslog na info:",
+ "code": "[Journal]\nMaxLevelStore=info\nMaxLevelSyslog=info",
+ "outro": "Potom reštartuje systemd-journald. Pri odinštalovaní sa doplnkový súbor odstráni a obnoví sa pôvodné nastavenie Proxmox."
+ },
+ "loggers": {
+ "heading": "Prečo dve vlastné logger služby",
+ "intro1": "Fail2Ban môže čítať priamo denník systemd (backend = systemd), ale tento backend má na Proxmoxe známe problémy s pracovnými procesmi pvedaemon: udalosti overovania sa objavia v denníku, ale nie vždy sa zachytia. Problém sa občas týka aj sshd.",
+ "intro2": "ProxMenux vytvorí dve malé služby systemd, ktoré sledujú príslušné jednotky pomocou journalctl -f a pridávajú každý riadok do súboru. Fail2Ban číta tieto súbory spoľahlivým backend = auto (súborový režim):",
+ "headerService": "Služba",
+ "headerSource": "Zdrojová jednotka",
+ "headerOutput": "Výstupný súbor",
+ "rows": [
+ {
+ "service": "proxmox-auth-logger.service",
+ "source": "pvedaemon.service",
+ "output": "/var/log/proxmox-auth.log"
+ },
+ {
+ "service": "ssh-auth-logger.service",
+ "source": "ssh.service",
+ "output": "/var/log/ssh-auth.log"
+ }
+ ],
+ "outro": "Obe služby sú deklarované ako PartOf=fail2ban.service, takže sa reštartujú s Fail2Ban a zastavia sa s ním. Režim 640, ktorý vlastní root:adm v súboroch denníka. Tretí protokol používaný [proxmenux] jail (/var/log/proxmenux-auth.log) je zapísaný priamo aplikáciou ProxMenux Monitor Flask – nie je potrebná žiadna služba zapisovača."
+ },
+ "backend": {
+ "heading": "Automatická detekcia backendu firewallu",
+ "intro": "Inštalátor sonduje hostiteľa: ak nft list ruleset funguje, vyberie nftables ako akciu zákazu. Inak sa vráti do iptables-multiport / iptables-allports. Voľba je napísaná do jail.local:",
+ "code": "# nftables host\nbanaction = nftables\nbanaction_allports = nftables[type=allports]\n\n# iptables host (fallback)\nbanaction = iptables-multiport\nbanaction_allports = iptables-allports"
+ },
+ "hardening": {
+ "heading": "Posilnenie SSH: MaxAuthTries",
+ "intro": "Kontrola Lynis SSH-7408 odporúča MaxAuthTries 3 v sshd_config. SSH jail používa maxretry = 2 na blokovanie po opakovaných zlyhaniach; MaxAuthTries obmedzuje pokusy v rámci jedného spojenia. Toto nastavenie SSH pridáva ďalšiu vrstvu ochrany aj pri zastavení Fail2Ban počas údržby.",
+ "installerIntro": "Inštalátor:",
+ "items": [
+ "Číta aktuálnu hodnotu MaxAuthTries (alebo predvolené hodnoty 6 v prípade neprítomnosti).",
+ "Ukladá to na /usr/local/share/proxmenux/sshd_maxauthtries_backup.",
+ "Upraví sshd_config priamo: nahradí existujúci riadok, odkomentuje zakomentovaný alebo pridá nový.",
+ "Znova načíta sshd bez reštartu, aby existujúce relácie zostali aktívne."
+ ],
+ "outro": "Na odinštalovanie je uložená pôvodná hodnota obnovená a sshd je znovu načítaná."
+ },
+ "manage": {
+ "heading": "Spravovať existujúcu inštaláciu",
+ "intro": "Ak je Fail2Ban nainštalovaný už pri otvorení ponuky, skript ho detekuje a zobrazí riadiace menu namiesto opätovného spustenia inštalátora:",
+ "headerAction": "Akcia",
+ "headerWhat": "Čo to robí?",
+ "rows": [
+ {
+ "action": "Preinštalovať",
+ "what": "Znova spustí celý inštalátor a prepíše všetky jaily aktuálnymi predvolenými hodnotami ProxMenux. Použite to, keď aktualizácia zmení odporúčané hodnoty."
+ },
+ {
+ "action": "Odstrániť",
+ "what": "Zastaví fail2ban a dve loggerové služby, vyčistí balík apt, odstráni všetky jail / súbory filtrov, odstráni drop-in journald (obnoví predvolené nastavenie Proxmox) a obnoví pôvodný SSH MaxAuthTries."
+ }
+ ]
+ },
+ "verify": {
+ "heading": "Overte, či funguje.",
+ "intro": "Po inštalácii užitočné príkazy od hostiteľa:",
+ "code": "# Service status and version\nsystemctl status fail2ban\nfail2ban-client --version\n\n# All active jails\nfail2ban-client status\n\n# Detail on one jail\nfail2ban-client status sshd\nfail2ban-client status proxmox\nfail2ban-client status proxmenux\n\n# Currently banned IPs in a jail\nfail2ban-client status sshd | grep \"Banned IP\"\n\n# Manually unban an IP (use this if you ban yourself)\nfail2ban-client unban 192.0.2.10\n\n# Tail the auth logs Fail2Ban watches\ntail -f /var/log/ssh-auth.log\ntail -f /var/log/proxmox-auth.log\ntail -f /var/log/fail2ban.log"
+ },
+ "troubleshoot": {
+ "heading": "Riešenie problémov",
+ "neverBansTitle": "Fail2Ban beží, ale nikdy nič nezakazuje",
+ "neverBansBody": "Overte, či tail -f /var/log/ssh-auth.log dostane záznam po pokuse o SSH prihlásenie s nesprávnym heslom z iného počítača. Ak zostane prázdny, skontrolujte systemctl status ssh-auth-logger.service. Ak služba beží, prezrite udalosti príkazom journalctl -u ssh.service -n 50 --no-pager -p info a overte, či doplnková konfigurácia journald povoľuje úroveň info.",
+ "monitorEmptyTitle": "ProxMenux Monitor jail nemá žiadne položky ani po neúspešnom prihlásení",
+ "monitorEmptyBody": "[proxmenux] jail číta /var/log/proxmenux-auth.log, ktorý je napísaný aplikáciou ProxMenux Monitor Flask – nie zapisovačom journald. Ak nespustíte Monitor, súbor zostane prázdny a jail sa nikdy nespustí. To sa očakáva; konfigurácia jail je neškodná. Ak spustíte Monitor a protokol je prázdny, skontrolujte konfiguráciu protokolovania Flask.",
+ "selfBanTitle": "Zakázal som sám seba.",
+ "selfBanIntro": "Z konzoly / IPMI / iKVM (alebo inej povolenej IP adresy):",
+ "selfBanCode": "fail2ban-client unban '<'YOUR_IP'>'\n\n# To prevent it next time, edit /etc/fail2ban/jail.local and add your IP:\nignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 203.0.113.42\n\n# Then reload\nfail2ban-client reload",
+ "aptFailTitle": "apt-get zlyhá: ''Unable to locate package fail2ban''",
+ "aptFailBody": "Hostiteľovi chýbajú repozitáre Debian (bežné pri minimálnej inštalácii Proxmox). Inštalátor to rozpozná a pred opakovaním vytvorí /etc/apt/sources.list.d/debian.sources so správnym kódovým označením (bookworm / trixie). Ak chyba pretrváva, skontrolujte VERSION_CODENAME v /etc/os-release a dostupnosť URL repozitára.",
+ "lockoutTitle": "SSH ma po inštalácii zamkne",
+ "lockoutBody": "Inštalatér nastaví MaxAuthTries=3. Ak váš správca hesla / agent získa viac kľúčov, môžete to prekročiť pri jednom pokuse o pripojenie. Obmedzte ponúkané kľúče: ssh -o IdentitiesOnly=yes -i ~/.ssh/specific_key user@host. Alebo dočasne zvýšiť MaxAuthTries v sshd_config, zatiaľ čo vy ladíte."
+ },
+ "files": {
+ "heading": "Súbory napísané",
+ "code": "/etc/fail2ban/jail.local # global defaults + [sshd]\n/etc/fail2ban/jail.d/proxmox.conf # [proxmox]\n/etc/fail2ban/jail.d/proxmenux.conf # [proxmenux]\n/etc/fail2ban/filter.d/proxmox.conf # auth-failure regex for pvedaemon\n/etc/fail2ban/filter.d/proxmenux.conf # auth-failure regex for Monitor\n/etc/systemd/system/proxmox-auth-logger.service # journal → file (pvedaemon)\n/etc/systemd/system/ssh-auth-logger.service # journal → file (sshd)\n/etc/systemd/journald.conf.d/proxmenux-loglevel.conf # MaxLevelStore=info\n/etc/ssh/sshd_config # MaxAuthTries=3 (in-place edit)\n/var/log/proxmox-auth.log # written by logger service\n/var/log/ssh-auth.log # written by logger service\n/var/log/proxmenux-auth.log # written by Monitor Flask app\n/usr/local/share/proxmenux/sshd_maxauthtries_backup # for restore on uninstall"
+ },
+ "related": {
+ "heading": "Súvisiace",
+ "monitorLabel": "ProxMenux Monitor → Bezpečnostná karta",
+ "monitorTail": " — inštalácia z ovládacieho panela, aktuálny stav jailov, blokované IP adresy a nastavenie počtu pokusov a trvania blokovania pre každý jail v prehliadači.",
+ "lynisLabel": "Lynis",
+ "lynisTail": " — spustite bezpečnostný audit pred zmenou a po nej a overte splnenie kontroly SSH-7408.",
+ "securityLabel": "Prehľad bezpečnosti",
+ "securityTail": " — Späť na prehľad sekcie."
+ }
+}
diff --git a/web/messages/sk/docs/security/index.json b/web/messages/sk/docs/security/index.json
new file mode 100644
index 00000000..39762fe4
--- /dev/null
+++ b/web/messages/sk/docs/security/index.json
@@ -0,0 +1,70 @@
+{
+ "meta": {
+ "title": "Zabezpečenie Proxmox — Fail2Ban a audit zabezpečenia Lynis | ProxMenux",
+ "description": "Dva bezpečnostné nástroje pre Proxmox VE: Fail2Ban (prevencia prienikov cez SSH, webové rozhranie Proxmox a ProxMenux Monitor) a Lynis (audit bezpečnosti a posilnenia zabezpečenia, inštalovaný z pôvodného repozitára GitHub).",
+ "ogTitle": "Zabezpečenie Proxmox — Fail2Ban a audit zabezpečenia Lynis",
+ "ogDescription": "Fail2Ban a Lynis pre Proxmox VE: prevencia prienikov a audit zabezpečenia, inštalované a spravované cez ProxMenux.",
+ "twitterTitle": "Zabezpečenie Proxmox | ProxMenux",
+ "twitterDescription": "Fail2Ban a Lynis pre Proxmox VE: prevencia prienikov a audit zabezpečenia."
+ },
+ "header": {
+ "title": "Zabezpečenie",
+ "description": "Dva doplnkové nástroje pre Proxmox VE: aktívna ochrana (Fail2Ban blokuje IP adresy útočiace na SSH alebo webové rozhrania) a lokálny audit (Lynis hľadá nedostatky zabezpečenia a udeľuje skóre 0–100). Každý má vlastné menu inštalácie a správy, ktoré pred každou akciou rozpozná existujúcu inštaláciu.",
+ "section": "Zabezpečenie"
+ },
+ "intro": {
+ "title": "Aktívna ochrana a lokálny audit",
+ "body": "Odpovedajú na rôzne otázky. Fail2Ban odpovedá na „Útočí na nás niekto práve teraz?“ sledovaním protokolov overovania a blokovaním útočiacich IP adries. Lynis odpovedá na „Ako dobre je tento hostiteľ zabezpečený?“ jednorazovým auditom a konkrétnymi odporúčaniami. Používajte oba: Lynis ukáže, čo zlepšiť, a Fail2Ban reaguje na prebiehajúce útoky."
+ },
+ "opening": {
+ "heading": "Otvorenie menu",
+ "body": "V hlavnom menu ProxMenux vyberte Zabezpečenie. Zobrazí sa toto:",
+ "imageAlt": "Bezpečnostné menu s možnosťami Fail2Ban a Lynis"
+ },
+ "pick": {
+ "heading": "Vyberte si nástroj",
+ "body": "Tieto dva nástroje sú nezávislé: nainštalujte jeden, oba alebo žiadny. Každá karta nižšie odkazuje na podrobný opis nástroja."
+ },
+ "cards": {
+ "fail2ban": {
+ "title": "Fail2Ban",
+ "body": "Aktívna prevencia prienikov. Sleduje protokoly overovania SSH a webových rozhraní a po opakovaných zlyhaniach blokuje IP adresy.",
+ "bullets": [
+ "Tri jails: SSH, Proxmox UI (8006), ProxMenux Monitor (8008)",
+ "Opravuje predvolené nastavenia Proxmox journald, ktoré blokujú protokoly overenia",
+ "Automaticky rozpozná nftables / iptables",
+ "Posilnenie SSH: MaxAuthTries=3 (odporúčanie Lynis)"
+ ]
+ },
+ "lynis": {
+ "title": "Lynis",
+ "body": "Lokálny bezpečnostný audítor. Preskúma hostiteľa a zobrazí skóre zabezpečenia a konkrétne odporúčania na nápravu.",
+ "bullets": [
+ "Inštalované z pôvodného repozitára CISOfy na GitHube (najnovšia verzia)",
+ "Skóre zabezpečenia 0–100 a zoznam upozornení a návrhov",
+ "Audit a aktualizácia priamo v menu",
+ "Navrhnuté iba na čítanie: nikdy nemení systém"
+ ]
+ }
+ },
+ "workflowTip": {
+ "title": "Pracovný tok, ktorý využíva oboje",
+ "body": "Najprv spustite audit Lynis, aby ste poznali počiatočné skóre a hlavné odporúčania. Použite vybrané opravy. Potom nainštalujte Fail2Ban: automaticky zavedie ochranu SSH pred hrubou silou a upraví MaxAuthTries v sshd_config podľa kontroly SSH-7408. Opätovným auditom Lynis overte zlepšenie."
+ },
+ "fail2banSection": {
+ "heading": "Fail2Ban",
+ "body": "ProxMenux inštaluje Fail2Ban s konfiguráciou pre Proxmox. Okrem štandardného SSH jailu chráni webové rozhranie Proxmox a ProxMenux Monitor. Obchádza dva špecifické problémy: predvolené nastavenie journald zahadzujúce udalosti overovania a problém backendu systemd, ktorý bráni spoľahlivému čítaniu niektorých zdrojov systémového denníka. Podrobná stránka vysvetľuje inštaláciu, tri jaily, opravu journald, posilnenie SSH a riešenie problémov.",
+ "optionTitle": "Fail2Ban — inštalácia a správa",
+ "optionDescription": "Tri predkonfigurované jaily (agresívny režim sshd, rozhranie Proxmox na 8006, ProxMenux Monitor na 8008 a reverzný proxy), detekcia nftables/iptables, oprava journald a posilnenie SSH pomocou MaxAuthTries."
+ },
+ "lynisSection": {
+ "heading": "Lynis",
+ "body": "ProxMenux klonuje Lynis z github.com/CISOfy/lynis do /opt/lynis a sprístupní ho ako /usr/local/bin/lynis. Balík Debian zámerne nepoužíva, pretože za pôvodným projektom zaostáva o viacero hlavných verzií. Podrobná stránka opisuje inštaláciu, audit, aktualizáciu, odinštalovanie, čítanie správy a riešenie zistení.",
+ "optionTitle": "Lynis — inštalácia, audit a správa",
+ "optionDescription": "Nainštaluje najnovší Lynis z oficiálneho repozitára CISOfy na GitHube (namiesto staršieho balíka Debian), vykonáva audity systému so skóre zabezpečenia a aktualizuje cez git pull."
+ },
+ "componentStatus": {
+ "heading": "Stav komponentu",
+ "body": "Obaja inštalátori registrujú svoj stav v /usr/local/share/proxmenux/components_status.json v kategórii security. ProxMenux používa tento súbor na rozhodnutie, či zobraziť inštaláciu alebo menu správy pri následných spusteniach, a rovnaké dáta napája palubnú dosku v ProxMenux Monitor keď je prítomný."
+ }
+}
diff --git a/web/messages/sk/docs/security/lynis.json b/web/messages/sk/docs/security/lynis.json
new file mode 100644
index 00000000..c010cf27
--- /dev/null
+++ b/web/messages/sk/docs/security/lynis.json
@@ -0,0 +1,170 @@
+{
+ "meta": {
+ "title": "Lynis | Dokumentácia ProxMenux",
+ "description": "Nainštalujte najnovší Lynis z oficiálneho repozitára CISOfy na GitHube, vykonajte audit so skóre zabezpečenia 0–100 a aktualizujte cez git pull. Audítor iba na čítanie: nemení systém.",
+ "ogTitle": "Lynis | Dokumentácia ProxMenux",
+ "ogDescription": "Nainštalujte a spustite bezpečnostný audítor Lynis na Proxmox VE. Inštalácia z pôvodného repozitára GitHub, audit a aktualizácia."
+ },
+ "header": {
+ "title": "Lynis",
+ "description": "Klonuje najnovší Lynis z oficiálneho repozitára CISOfy na GitHube, sprístupní ho ako /usr/local/bin/lynis a v menu ponúka audit, aktualizáciu, preinštalovanie a odinštalovanie. Audítor iba číta a vytvára správy bez zmeny systému.",
+ "section": "Zabezpečenie"
+ },
+ "intro": {
+ "title": "Čo to robí?",
+ "body": "Nainštaluje Lynis, bezpečnostný audítor s otvoreným zdrojovým kódom od CISOfy, z jeho repozitára GitHub do /opt/lynis a vytvorí spúšťací skript /usr/local/bin/lynis, aby bol dostupný cez PATH. Ak rozpozná existujúcu inštaláciu, zobrazí menu auditu, aktualizácie, preinštalovania alebo odstránenia."
+ },
+ "manageMenu": {
+ "heading": "Menu správy (po inštalácii)",
+ "intro": "Keď je Lynis nainštalovaný, každé následné vyvolanie otvorí menu správy namiesto opätovného spustenia inštalátora. Odtiaľ spustíte audit, aktualizáciu prostredníctvom git pull, preinštalovať alebo odinštalovať:",
+ "imageAlt": "Lynis management menu s auditom, aktualizácia, preinštalovať a odstrániť možnosti"
+ },
+ "whyUpstream": {
+ "heading": "Prečo pôvodný repozitár GitHub namiesto apt",
+ "intro": "Debian poskytuje Lynis cez apt, ale balík zvyčajne zaostáva o viacero hlavných verzií. Nové kontroly, opravy nových vektorov útoku a vylepšené odporúčania prichádzajú najprv na GitHub. Lynis je samostatný shellový skript bez kompilácie a inštalačných závislostí okrem git; klonovanie repozitára je preto metóda odporúčaná CISOfy.",
+ "headerSource": "Zdroj",
+ "headerPath": "Install path",
+ "headerUpdate": "Spôsob aktualizácie",
+ "headerFresh": "Aktuálnosť verzie",
+ "rows": [
+ {
+ "sourceRich": "ProxMenux (tento skript)",
+ "path": "/opt/lynis/",
+ "update": "git pull (v menu)",
+ "fresh": "Najnovšia verzia pôvodného projektu"
+ },
+ {
+ "sourceRich": "Debian apt",
+ "path": "/usr/bin/lynis",
+ "update": "apt upgrade",
+ "fresh": "Často mesiace / roky pozadu"
+ }
+ ]
+ },
+ "install": {
+ "heading": "Ako funguje inštalácia",
+ "node1Label": "github.com/CISOfy/lynis",
+ "node1Detail": "git clone\n(najprv nainštaluje git, ak chýba)",
+ "node2Label": "/opt/lynis/",
+ "node2Detail": "celý repozitár\nvrátane skriptu ./lynis",
+ "node3Label": "/usr/local/bin/lynis",
+ "node3Detail": "obal:\ncd /opt/lynis && ./lynis $@",
+ "outro": "Balíčk je povinný – Lynis trvá na tom, aby bol spustený z vlastného adresára, pretože načítava relatívne cesty pre zásuvné moduly a údaje profilu. Obal tento detail skrýva, takže lynis audit system jednoducho funguje odkiaľkoľvek."
+ },
+ "detection": {
+ "heading": "Zisťovacie cesty",
+ "intro": "Pred zobrazením menu skript kontroluje tri miesta, aby rozhodol, či je Lynis už prítomný:",
+ "items": [
+ "/usr/local/bin/lynis Wrapper nainštalovaný ProxMenux",
+ "/opt/lynis/lynis — priama cesta, ak bol spúšťací skript odstránený",
+ "/usr/bin/lynis — verzia nainštalovaná cez apt, ak ju používateľ nainštaloval týmto spôsobom"
+ ],
+ "outro": "Ak sa nájde niektorá z ciest, otvorí sa menu správy. Skript neodinštaluje Lynis nainštalovaný cez apt; odstráni iba vlastnú inštaláciu v /opt/lynis a jej spúšťací skript."
+ },
+ "audit": {
+ "heading": "Spustiť audit",
+ "intro": "V menu správy vyberte Spustiť bezpečnostný audit teraz. Zodpovedá to spusteniu:",
+ "code": "lynis audit system --no-colors",
+ "outro": "Audit trvá od 30 sekúnd do niekoľkých minút podľa veľkosti hostiteľa. Výstup ide priamo do terminálu bez animácie čakania. Lynis člení kontroly podľa kategórií a každý test označí ako [ OK ], [ WARNING ] alebo [ SUGGESTION ]. Záverečné zhrnutie ukazuje hlavné údaje:",
+ "summary": "================================================================================\n\n Podrobnosti bezpečnostného auditu Lynis:\n\n Index zabezpečenia : 76 [############ ]\n Vykonané testy : 247\n Povolené doplnky : 0\n\n Komponenty:\n - Firewall [V]\n - Skener škodlivého softvéru [X]\n\n Moduly Lynis:\n - Stav súladu [?]\n - Bezpečnostný audit [V]\n - Kontrola zraniteľností [V]\n\n================================================================================"
+ },
+ "report": {
+ "heading": "Čítanie správy",
+ "intro": "Dve dôležité časti sú Upozornenia (veci, ktoré by ste mali čoskoro opraviť) a Návrhy (odporúčania na zlepšenie vytvrdzovania). Každá položka nesie kontrolné ID ako SSH-7408 – užitočné pri hľadaní zdôvodnenia a opravy v dokumentoch Lynis.",
+ "headerMarker": "Značka",
+ "headerMeaning": "Význam",
+ "headerAction": "Akcia",
+ "rows": [
+ {
+ "markerRich": "OK",
+ "meaning": "Skúška prešla",
+ "action": "Nič."
+ },
+ {
+ "markerRich": "WARNING",
+ "meaning": "Skutočný problém; odporúčaná oprava",
+ "action": "Prečítajte si kontrolný popis, naplánujte opravu"
+ },
+ {
+ "markerRich": "SUGGESTION",
+ "meaning": "Možné zlepšenie zabezpečenia",
+ "action": "Aplikujte, ak vyhovuje vášmu modelu hrozby"
+ }
+ ],
+ "outro": "Kompletná správa a strojovo čitateľné údaje sú napísané /var/log/lynis.log a /var/log/lynis-report.dat samotným Lynisom."
+ },
+ "pairFail2ban": {
+ "title": "Používajte spolu s Fail2Ban",
+ "body": "SSH-7408 (MaxAuthTries) je jedným z najčastejších varovaní. Inštalácia Fail2Ban od ProxMenux automaticky ho vymaže, pretože inštalátor nastaví MaxAuthTries=3 ako súčasť SSH tvrdnúci krok. Spustite znova Lynis potom potvrdiť, že varovanie je preč."
+ },
+ "update": {
+ "heading": "Aktualizácia Lynis",
+ "body": "V menu možnosť Aktualizovať Lynis na najnovšiu verziu spustí git pull --quiet v /opt/lynis. Ak adresár existuje, ale nie je pracovnou kópiou Git, napríklad po ručnom kopírovaní súborov, skript vykoná úplnú preinštaláciu."
+ },
+ "reinstall": {
+ "heading": "Preinštalovať/odinštalovať",
+ "headerAction": "Akcia",
+ "headerWhat": "Čo to robí?",
+ "rows": [
+ {
+ "actionRich": "Preinštalovať",
+ "whatRich": "Odstráni /opt/lynis, znova klonuje z GitHubu a vytvorí spúšťací skript. Použite pri poškodenej miestnej pracovnej kópii."
+ },
+ {
+ "actionRich": "Odstrániť",
+ "whatRich": "Odstráni /opt/lynis a /usr/local/bin/lynis. Záznamy na /var/log/lynis* sú vedené (sú audit histórie). Apt-inštalovaný Lynis na /usr/bin/lynis zostáva nedotknutý."
+ }
+ ]
+ },
+ "cli": {
+ "heading": "Užitočné možnosti CLI",
+ "intro": "Po nainštalovaní sa Lynis môže použiť priamo z shellu s extra možnosťami, ktoré nie sú vystavené menu:",
+ "code": "lynis show version # version + build date\nlynis show commands # list every available command\nlynis show details TEST-ID # explain a specific control\nlynis audit system --quick # skip slow tests (e.g. malware scan)\nlynis audit system --pentest # treat host as untrusted (more aggressive)\nlynis update info # check if a newer Lynis is available\n\n# Filter the report log for just the warnings\ngrep \"Warning\" /var/log/lynis.log\n\n# Same, for suggestions only\ngrep \"Suggestion\" /var/log/lynis.log"
+ },
+ "troubleshoot": {
+ "heading": "Riešenie problémov",
+ "cloneTitle": "git clone počas inštalácie zlyhá",
+ "cloneBody": "Hostiteľ potrebuje prístup k sieti a DNS dosiahnuť github.com. Z konzoly: curl -sI https://github.com a git ls-remote https://github.com/CISOfy/lynis.git odhalí skutočnú chybu (DNS, TLS, proxy, repo URL). Ak sa vyžaduje proxy, nastavte https_proxy v prostredí pred opätovným spustením menu.",
+ "notFoundTitle": "lynis: príkaz nenájdený po inštalácii",
+ "notFoundIntro": "Obal na /usr/local/bin/lynis buď nebol vytvorený, alebo bol odstránený. Najrýchlejšia oprava: preinštalovať z menu. Ručné nastavenie:",
+ "notFoundCode": "cat > /usr/local/bin/lynis <<'EOF'\n#!/bin/bash\ncd /opt/lynis && ./lynis \"$@\"\nEOF\nchmod +x /usr/local/bin/lynis",
+ "sshTitle": "Audit zobrazuje \"Warning: Test SSH-7408 — MaxAuthTries set incorrectly\"",
+ "sshIntro": "Démon SSH umožňuje príliš veľa auth pokusov na pripojenie. Buď nainštalujte Fail2Ban z ProxMenux (ktorý nastaví MaxAuthTries=3), alebo editujte /etc/ssh/sshd_config ručne:",
+ "sshCode": "sed -i 's/^#?MaxAuthTries.*/MaxAuthTries 3/' /etc/ssh/sshd_config\nsystemctl reload sshd",
+ "scoreTitle": "Skóre klesol po upgrade Proxmox",
+ "scoreBody": "Najprv spustite lynis update info; aktualizácia Lynis mohla pridať kontroly, ktoré upozorňujú na existujúcu konfiguráciu. Aktualizujte Lynis z menu, zopakujte audit a riešte nové zistenia."
+ },
+ "files": {
+ "heading": "Súbory napísané",
+ "code": "/opt/lynis/ # full Lynis git checkout\n/usr/local/bin/lynis # wrapper script (cd + exec)\n/var/log/lynis.log # human-readable audit log (Lynis itself)\n/var/log/lynis-report.dat # machine-readable report (Lynis itself)"
+ },
+ "sample": {
+ "heading": "Ukážková správa",
+ "intro": "ProxMenux Monitor vytvorí pre každé spustenie Lynis viacstranové PDF dostupné na karte Zabezpečenie. Prvá strana obsahuje skóre zabezpečenia, údaje o systéme a prehľad bezpečnostného stavu. Ďalšie strany vysvetľujú každé upozornenie, zoradia návrhy podľa vplyvu a uvedú inventár balíkov použitý pri audite.",
+ "imageAlt": "Prvá strana PDF bezpečnostného auditu Lynis: zhrnutie so skóre zabezpečenia 71/100, systémovými informáciami a prehľadom firewallu, skenera škodlivého softvéru a počtu nainštalovaných balíkov",
+ "captionPrefix": "Prvá strana ukážkovej správy. Úplné PDF (",
+ "captionLink": "vzorka",
+ "captionSuffix": ") pokračuje podrobnými upozorneniami, návrhmi a zoznamom nainštalovaných balíkov.",
+ "cli": "Rovnaké údaje sú v CLI v súbore /var/log/lynis-report.dat (strojovo čitateľný textový súbor) a /var/log/lynis.log (čitateľný denník spustenia). PDF vytvára na požiadanie ProxMenux Monitor; spustenie lynis z príkazového riadka PDF nevytvorí."
+ },
+ "related": {
+ "heading": "Súvisiace",
+ "items": [
+ {
+ "href": "/docs/monitor/dashboard/security",
+ "label": "ProxMenux Monitor → Bezpečnostná karta",
+ "tail": "— spustite audit, prezerajte historické správy a stiahnite si PDF priamo z hlavného panela."
+ },
+ {
+ "href": "/docs/security/fail2ban",
+ "label": "Fail2Ban",
+ "tailRich": " — zavádza ochranu SSH pred hrubou silou, ktorú odporúča Lynis."
+ },
+ {
+ "href": "/docs/security",
+ "label": "Prehľad bezpečnosti",
+ "tail": " — Späť na prehľad sekcie."
+ }
+ ]
+ }
+}
diff --git a/web/messages/sk/docs/security/ssl-letsencrypt.json b/web/messages/sk/docs/security/ssl-letsencrypt.json
new file mode 100644
index 00000000..418a3d3a
--- /dev/null
+++ b/web/messages/sk/docs/security/ssl-letsencrypt.json
@@ -0,0 +1,169 @@
+{
+ "meta": {
+ "title": "HTTPS pre ProxMenux Monitor — certifikát hostiteľa Proxmox alebo vlastné cesty | ProxMenux",
+ "description": "Sprístupnite ProxMenux Monitor cez HTTPS s automaticky rozpoznaným certifikátom hostiteľa Proxmox vrátane Let’s Encrypt nainštalovaného cez ACME Proxmox, alebo s vlastným certifikátom na ľubovoľnej ceste na disku.",
+ "ogTitle": "HTTPS pre ProxMenux Monitor — certifikát hostiteľa Proxmox alebo vlastný certifikát",
+ "ogDescription": "Povoľte HTTPS na porte 8008 s certifikátom hostiteľa Proxmox alebo vlastnou dvojicou .pem / .key."
+ },
+ "header": {
+ "title": "HTTPS pre ProxMenux Monitor",
+ "description": "Zapnite HTTPS pre Monitor na porte 8008 s automaticky rozpoznaným certifikátom hostiteľa Proxmox alebo vlastným certifikátom na disku. Možnosť Proxmox uprednostní certifikát ACME, ak existuje, a znovu použije Let’s Encrypt spravovaný Proxmoxom bez ďalšej úlohy obnovy.",
+ "section": "Zabezpečenie"
+ },
+ "intro": {
+ "title": "Čo táto stránka obsahuje",
+ "body": "Ako prepnúť Monitor z HTTP na HTTPS v paneli Nastavenia → Zabezpečenie, na aké súbory ukazujú zdroje certifikátov, ako sa správa možnosť Proxmox s certifikátom Let’s Encrypt a ako nastaviť vlastné cesty pri správe certifikátov mimo Proxmox."
+ },
+ "wheresetting": {
+ "heading": "Kde nájdete nastavenie",
+ "body": "Otvorte Monitor a prejdite na Nastavenia → Zabezpečenie → HTTPS / SSL. Panel zobrazuje HTTP alebo HTTPS a pri vypnutom HTTPS rozpoznané zdroje certifikátov.",
+ "imageAlt": "Nastavenia → Zabezpečenie → HTTPS / panel SSL na monitore zobrazujúci vypnutý stav HTTPS, automaticky zistený certifikát Proxmox (predmet, vydavateľ, expirácia) a možnosť Použiť vlastný certifikát",
+ "caption": "Panel Nastavenia → Zabezpečenie → HTTPS / SSL pred aktiváciou. Monitor zobrazí certifikát používaný Proxmoxom a umožní ho vybrať jedným kliknutím."
+ },
+ "twoways": {
+ "heading": "Dva spôsoby, ako umožniť HTTPS",
+ "proxmox": {
+ "title": "Použiť Proxmox certifikát",
+ "summary": "Jedno kliknutie: Monitor použije certifikát, ktorý Proxmox VE poskytuje na porte 8006.",
+ "items": [
+ "Automaticky rozpoznané, bez zadávania ciest",
+ "Uprednostní certifikát ACME, ak existuje; inak použije predvolený certifikát s vlastným podpisom",
+ "Proxmox spravuje obnovu; Monitor overí a načíta certifikát pri nasledujúcom novom spojení TLS"
+ ]
+ },
+ "custom": {
+ "title": "Použiť vlastný certifikát",
+ "summaryRich": "Nastavte Monitor tak, aby používal dvojicu .pem / .key uloženú kdekoľvek na disku.",
+ "items": [
+ "Iba absolútne cesty (proces monitora musí byť schopný čítať oboje)",
+ "Užitočné pre certifikáty z certbot, acme.sh alebo wildcard certifikáty",
+ "Obnovu spravujete vy: po zmene súborov reštartujte Monitor"
+ ]
+ }
+ },
+ "proxmoxCert": {
+ "heading": "Certifikát Proxmox — na čo skutočne ukazuje",
+ "intro": "Proxmox VE uchováva dva páry certifikátov v /etc/pve/local/:",
+ "table": {
+ "headers": {
+ "file": "Súbor",
+ "origin": "Pôvod",
+ "when": "Keď ho Monitor používa"
+ },
+ "rows": [
+ {
+ "fileRich": "pveproxy-ssl.pem pveproxy-ssl.key",
+ "originRich": "Vlastný certifikát nahraný cez rozhranie Proxmox vrátane certifikátu Let’s Encrypt vydaného cez Datacenter → Node → Certificates → ACME.",
+ "when": "Uprednostní sa, ak existujú oba súbory; Monitor použije certifikát poskytovaný Proxmoxom."
+ },
+ {
+ "fileRich": "pve-ssl.pem pve-ssl.key",
+ "originRich": "Samopodpísaný certifikát vytvorený v čase inštalácie spoločnosťou Proxmox PKI.",
+ "whenRich": "Náhradný certifikát, ak pveproxy-ssl.pem neexistuje."
+ }
+ ]
+ },
+ "callout": {
+ "title": "Rovnaká priorita ako samotný Proxmox",
+ "bodyRich": "pveproxy používa rovnaké pravidlo výberu. Pri možnosti Proxmox Monitor použije certifikát webového rozhrania Proxmox na porte 8006 bez kopírovania a samostatného procesu obnovy."
+ }
+ },
+ "letsencrypt": {
+ "heading": "Získanie certifikátu Let's Encrypt cez Proxmox ACME",
+ "intro": "Proxmox VE obsahuje vlastného klienta ACME. „Order Certificate Now“ uloží výsledok do /etc/pve/local/pveproxy-ssl.pem, ktorý Monitor číta. Nasledujúcich päť krokov zhŕňa oficiálnu príručku Proxmox do potrebných príkazov.",
+ "prereqs": {
+ "title": "Predpoklady",
+ "items": [
+ "Uzol má skutočný názov DNS (nielen IP) ukazuje na to.",
+ "Buď port 80 dostupný z internetu (overenie HTTP-01, najjednoduchšie), alebo poskytovateľ DNS s prihlasovacími údajmi API (DNS-01, funguje za NAT a podporuje wildcard certifikáty).",
+ "E-mailová adresa pre účet ACME."
+ ]
+ },
+ "step1": {
+ "heading": "Krok 1 — Zaregistrujte účet ACME",
+ "introRich": "Nahraďte e-mail vlastnou adresou. Názov účtu default je iba označenie; môžete použiť ľubovoľný reťazec.",
+ "code": "pvenode acme account register default you@example.com",
+ "afterRich": "Proxmox vyžiada súhlas s podmienkami služby Let’s Encrypt. Potom uloží účet do /etc/pve/priv/acme/ a zobrazí ho na karte ACME v grafickom rozhraní."
+ },
+ "step2": {
+ "heading": "Krok 2 — Vyberte typ overenia",
+ "http01Rich": "HTTP-01 je najjednoduchší: je zabudovaný, bez ďalšieho pluginu. Let's Encrypt sa pripája k http://<your-host>/.well-known/acme-challenge/... na porte 80, takže port 80 musí byť otvorený z verejného internetu do vášho uzla – zvyčajne port forward na vašom smerovači.",
+ "dns01Rich": "DNS-01 funguje bez sprístupnenia portu 80, takže je vhodné pre domáce laby za CG-NAT, a je jedinou možnosťou pre wildcard certifikáty. Jednorazovo pridajte DNS doplnok s tokenom API poskytovateľa. Príklad pre Cloudflare:",
+ "code": "pvenode acme plugin add dns cf \\\n --api cloudflare \\\n --data CF_Token=YOUR_CLOUDFLARE_API_TOKEN",
+ "outroRich": "Pre iných poskytovateľov (Gandi, OVH, AWS Route 53 atď.) použite pvenode acme plugin add dns --help. Proxmox obsahuje všetky DNS doplnky acme.sh."
+ },
+ "step3": {
+ "heading": "Krok 3 — Priraďte doménu k uzlu",
+ "http01Rich": "Pre HTTP-01 (používa vstavaný standalone modul):",
+ "code1": "pvenode config set --acme domains=host.example.com,account=default",
+ "dns01": "Pre DNS-01 s plugin Cloudflare zo Step 2:",
+ "code2": "pvenode config set --acmedomain0 domain=host.example.com,plugin=cf\npvenode config set --acme account=default",
+ "wildcardRich": "Wildcard? Pridať domain=*.example.com na samostatnú položku --acmedomainN. Wildcards vyžadujú DNS-01."
+ },
+ "step4": {
+ "heading": "Krok 4 — Vyžiadajte certifikát",
+ "code": "pvenode acme cert order",
+ "afterRich": "Prvý beh zvyčajne trvá 30–60 sekundy, kým sa výzva šíri. O úspechu Proxmox píše /etc/pve/local/pveproxy-ssl.pem + .key, reštartuje pveproxy, a obnovenie cron je naplánované automaticky (Let's Encrypt Certs sú platné 90 dní; Proxmox obnovuje pri 60)."
+ },
+ "step5": {
+ "heading": "Krok 5 — Overte vydavateľa",
+ "code": "openssl x509 -in /etc/pve/local/pveproxy-ssl.pem -noout -issuer",
+ "afterRich": "Výstup má obsahovať vydavateľa začínajúceho O = Let's Encrypt. Ak uvádza CN = Proxmox Virtual Environment, požiadavka zlyhala a súbor je stále certifikát PVE s vlastným podpisom. Príčinu zistíte opätovným spustením pvenode acme cert order --debug 1."
+ },
+ "gui": {
+ "title": "Preferujete GUI? Rovnakých päť krokov",
+ "bodyRich": "Datacenter → ACME zaregistruje účet; Datacenter → ACME → Plugins pridá DNS doplnok; Node → Certificates → ACME priradí doménu; Order Certificates Now vykoná krok 4. Uvedené príkazy CLI sú vhodné na skriptovanie a systémy bez grafického rozhrania."
+ }
+ },
+ "switchToHttps": {
+ "heading": "Prepnúť monitor na HTTPS",
+ "bodyRich": "Keď je /etc/pve/local/pveproxy-ssl.pem podpísaný Let's Encrypt, otvorte Nastavenia → Zabezpečenie → HTTPS / SSL, overte vydavateľa Let's Encrypt namiesto miestnej CA Proxmox a kliknite na Použiť certifikát Proxmox. Monitor sa reštartuje a ďalšie načítanie použije HTTPS na 8008 s verejne dôveryhodným reťazcom. Ďalšie obnovy ACME sa overia a vyberú pri nasledujúcom novom spojení TLS bez pravidelného dopytovania alebo reštartu služby pri obnove. Aktualizovať certifikát zostáva v Zabezpečení dostupné na diagnostiku a obnovu."
+ },
+ "custom": {
+ "heading": "Vlastný certifikát — kedy ho použiť",
+ "intro": "Kliknite na Použiť vlastný certifikát a zadajte dve absolútne cesty:",
+ "items": [
+ "Osvedčenie Celý reťazec v PEM (.pem alebo .crt).",
+ "Súkromný kľúč: zodpovedajúci kľúč vo formáte PEM (.key)."
+ ],
+ "outro": "Oba súbory načíta proces Monitora pri štarte. Musia zostať čitateľné pre používateľa, pod ktorým beží jednotka systemd (predvolene root). Bežné umiestnenia pri správe ACME mimo Proxmox:",
+ "code": "# certbot\n/etc/letsencrypt/live//fullchain.pem\n/etc/letsencrypt/live//privkey.pem\n\n# acme.sh\n~/.acme.sh/_ecc/fullchain.cer\n~/.acme.sh/_ecc/.key",
+ "symlinkCallout": {
+ "title": "Symlink ciele vs. súbory",
+ "bodyRich": "certbot ukladá skutočné súbory do /etc/letsencrypt/archive/ a cesta live/ je symbolický odkaz. Nasmerujte monitor na symbolický odkaz live/, nie na súbor archive/ – takto každý cyklus obnovy jednoducho prepíše cieľ symbolického odkazu a monitor si pri ďalšom spustení služby vyberie nový certifikát."
+ }
+ },
+ "afterHttps": {
+ "heading": "Po umožnení HTTPS",
+ "bodyRich": "Uloženie zmeny zapíše /etc/proxmenux/ssl_config.json a reštartuje jednotku systemd proxmenux-monitor. Karta prehliadača stratí spojenie; načítajte ju znova na https://<host>:8008/. Certifikát Let’s Encrypt by nemal vyvolať upozornenie; pri certifikáte Proxmox s vlastným podpisom bude prehliadač vyžadovať výnimku, rovnako ako na porte 8006.",
+ "reverse": {
+ "heading": "Reverzné proxy a webhooky",
+ "bodyRich": "Pri prepnutí Monitora na HTTPS sa adresy webhookov Proxmox VE pre oznámenia automaticky zmenia z http:// na https://. Existujúce záznamy sa prepíšu pri ďalšom uložení alebo opätovnom rozpoznaní pravidla oznámení; ručná úprava konfigurácie oznámení Proxmox nie je potrebná."
+ }
+ },
+ "trustCa": {
+ "heading": "Dôverujte samopodpísanej CA spoločnosti Proxmox",
+ "intro1Rich": "Ak chcete zachovať predvolený certifikát Proxmox bez ACME, importujte koreňovú CA klastra do úložiska dôveryhodných certifikátov systému alebo prehliadača. Monitor rozpozná /etc/pve/local/pve-ssl.pem ako náhradný certifikát. Klient tak dôveruje vydavateľovi; URL musí stále zodpovedať názvu v certifikáte.",
+ "intro2Rich": "CA súbor žije v /etc/pve/pve-root-ca.pem na každom uzle. V klastri cesta je na zdieľanom pmxcfs súborovom systéme, takže všetky uzly zdieľajú rovnaký koreň a jeden import pokrýva celý dátový stred. Skopírujte ho do svojho stroja:",
+ "code": "scp root@:/etc/pve/pve-root-ca.pem ./pve-root-ca.pem",
+ "thenImport": "Potom ho importovať na strane klienta:",
+ "items": [
+ "Linux (celý systém): spustite sudo cp pve-root-ca.pem /usr/local/share/ca-certificates/pve-root-ca.crt a potom sudo update-ca-certificates. Prehliadače používajúce systémové úložisko certifikátov (Chromium, Edge) rozpoznajú CA po reštarte; Firefox má vlastné úložisko a potrebuje ručný import uvedený nižšie.",
+ "macOS: dvojklikom otvorte súbor .pem v Keychain Access, pridajte ho do kľúčenky System a nastavte Trust → Always Trust.",
+ "Windows: kliknite pravým tlačidlom na súbor → Inštalovať certifikát → uložte ho do Dôveryhodné koreňové certifikačné autority.",
+ "Firefox (ľubovoľný OS):Nastavenia → Súkromie a bezpečnosť → Certifikáty → Zobraziť certifikáty → Autority → Importovať; vyberte Dôverovať tejto CA pri identifikácii webových stránok."
+ ],
+ "standalone": {
+ "title": "Samostatné uzly mimo klastra",
+ "bodyRich": "Každý non-clustered Proxmox hostiteľ má svoje vlastné pve-root-ca.pem. Ak spravujete niekoľko samostatných hostiteľov, opakujte kópiu/dovoz pre každého, alebo sa pripojte k klastru, takže zdieľajú jeden koreň."
+ }
+ },
+ "disable": {
+ "heading": "Zastavenie HTTPS",
+ "bodyRich": "Kliknite na Vypnúť HTTPS v rovnakom paneli. Monitor sa reštartuje s nešifrovaným HTTP, čo pomôže pri nečitateľnom vlastnom certifikáte brániacom štartu služby. Samostatné odinštalovanie nie je potrebné a súbory certifikátov sa nemenia.",
+ "stateCallout": {
+ "title": "Kde sa ukladá stav",
+ "bodyRich": "/etc/proxmenux/ssl_config.json ukladá aktívne cesty k certifikátom a zdroj (none, proxmox, custom). Odstránenie súboru zodpovedá vypnutiu HTTPS; pri ďalšom štarte Monitor použije HTTP."
+ }
+ }
+}
diff --git a/web/messages/sv/docs/security/fail2ban.json b/web/messages/sv/docs/security/fail2ban.json
new file mode 100644
index 00000000..ce691098
--- /dev/null
+++ b/web/messages/sv/docs/security/fail2ban.json
@@ -0,0 +1,152 @@
+{
+ "meta": {
+ "title": "Fail2Ban | ProxMenux-dokumentation",
+ "description": "Installera Fail2Ban med tre jails inställd för Proxmox (SSH aggressiv, Proxmox UI 8006, ProxMenux Monitor 8008). Inkluderar journald MaxLevelStore fix, anpassade loggtjänster för tillförlitlighet, automatiskt upptäckta nftables/iptables backend och SSH MaxAuthTries härdning.",
+ "ogTitle": "Fail2Ban | ProxMenux-dokumentation",
+ "ogDescription": "Skydd mot lösenordsattacker för SSH och Proxmox webbgränssnitt, med Proxmox-specifika korrigeringar av journald och backend."
+ },
+ "header": {
+ "title": "Fail2Ban",
+ "description": "Installerar Fail2Ban för Proxmox: tre jails (aggressivt SSH, Proxmox-gränssnitt på 8006, ProxMenux Monitor på 8008 och omvänd proxy), journald-korrigering för att spara SSH-händelser, två tjänster som kopierar journalen till filer för att kringgå ett känt systemd-backendproblem, automatisk brandväggsbackend och SSH-härdning med MaxAuthTries.",
+ "section": "Säkerhet"
+ },
+ "intro": {
+ "title": "Vad detta gör",
+ "body": "Installerar Fail2Ban från Debians paketförråd och skapar en Proxmox-konfiguration som direkt skyddar SSH, Proxmox webbgränssnitt och ProxMenux Monitor. En befintlig installation upptäcks och ger i stället en hanteringsmeny för ominstallation eller borttagning."
+ },
+ "firstLaunch": {
+ "heading": "Första lanseringen dialog",
+ "body": "Om Fail2Ban saknas visar skriptet en bekräftelse med vad som ska installeras och konfigureras. Avbryt avslutar utan ändringar; bekräftelse startar installationen.",
+ "imageAlt": "Installationsbekräftelse för Fail2Ban med tre jails, journald-korrigering och SSH-härdning"
+ },
+ "jails": {
+ "heading": "De tre jails",
+ "headerJail": "Jail",
+ "headerProtects": "Skyddar",
+ "headerRetries": "Försök / Tidsfönster",
+ "headerBan": "Blockeringstid",
+ "rows": [
+ {
+ "jail": "[sshd]",
+ "protects": "SSH (aggressivt läge — omfattar ddos, mode, normal)",
+ "retries": "2 / 60 min",
+ "ban": "9 timmar"
+ },
+ {
+ "jail": "[proxmox]",
+ "protects": "Proxmox webb UI (port 8006)",
+ "retries": "3 / 10 min",
+ "ban": "1 timme"
+ },
+ {
+ "jail": "[proxmenux]",
+ "protects": "ProxMenux Monitor (port 8008 + http / https omvänd proxy)",
+ "retries": "3 / 10 min",
+ "ban": "1 timme"
+ }
+ ],
+ "outro": "Globala standardinställningar från jail.local: ignoreip = 127.0.0.1/8 ::1, ignoreself = true, bantime = 86400 (24h reserv för jails som inte åsidosätter det), maxretry = 2, findtime = 1800."
+ },
+ "journald": {
+ "heading": "Varför journald-korrigeringen är viktig",
+ "intro": "Proxmox levererar /etc/systemd/journald.conf med MaxLevelStore=warning. journald kastar meddelanden på nivåer under warning innan de lagras. SSH och PAM rapporterar autentiseringsfel på nivåerna info / notice, så:",
+ "diagram": {
+ "sshLabel": "SSH / PAM",
+ "sshDetail": "autentiseringsfel\n(nivå info / notice)",
+ "journaldLabel": "journald",
+ "journaldDetail": "MaxLevelStore=warning\n→ händelsen kastas utan varning",
+ "fail2banLabel": "Fail2Ban",
+ "fail2banDetail": "ser ingenting\naldrig förbjuder något",
+ "arrowLabel": "Standard Proxmox"
+ },
+ "afterDiagram": "Installatören upptäcker detta och skriver en drop-in på /etc/systemd/journald.conf.d/proxmenux-loglevel.conf höja både MaxLevelStore och MaxLevelSyslog till info:",
+ "code": "[Journal]\nMaxLevelStore=info\nMaxLevelSyslog=info",
+ "outro": "Startar sedan om systemd-journald. Vid avinstallation tas tillägget bort och Proxmox ursprungliga standardvärde återställs."
+ },
+ "loggers": {
+ "heading": "Varför två anpassade loggertjänster",
+ "intro1": "Fail2Ban kan läsa systemd-journalen direkt (backend = systemd), men på Proxmox har denna backend kända problem med arbetsprocesser i pvedaemon: autentiseringshändelser syns i journalen men upptäcks inte alltid. Även sshd berörs ibland.",
+ "intro2": "ProxMenux skapar två små systemd-tjänster som följer berörda enheter med journalctl -f och lägger till varje rad i en fil. Fail2Ban läser filerna med tillförlitliga backend = auto (filläge):",
+ "headerService": "Tjänst",
+ "headerSource": "Källenhet",
+ "headerOutput": "Utdatafil",
+ "rows": [
+ {
+ "service": "proxmox-auth-logger.service",
+ "source": "pvedaemon.service",
+ "output": "/var/log/proxmox-auth.log"
+ },
+ {
+ "service": "ssh-auth-logger.service",
+ "source": "ssh.service",
+ "output": "/var/log/ssh-auth.log"
+ }
+ ],
+ "outro": "Båda tjänsterna är deklarerade PartOf=fail2ban.service så de startar om med Fail2Ban och slutar med det. Läget 640 som ägs av root:adm på loggfilerna. Den tredje loggen som används av [proxmenux] jail (/var/log/proxmenux-auth.log) skrivs direkt av appen ProxMenux Monitor Flask – ingen loggertjänst behövs för den."
+ },
+ "backend": {
+ "heading": "Automatisk identifiering av brandväggsbackend",
+ "intro": "Installationsproberar värden: om nft list ruleset fungerar, väljer den nftables som förbudsåtgärden. Annars faller det tillbaka till iptables-multiport / iptables-allports. Valet är skrivet i jail.local:",
+ "code": "# nftables host\nbanaction = nftables\nbanaction_allports = nftables[type=allports]\n\n# iptables host (fallback)\nbanaction = iptables-multiport\nbanaction_allports = iptables-allports"
+ },
+ "hardening": {
+ "heading": "SSH-härdning: MaxAuthTries",
+ "intro": "Lynis-kontrollen SSH-7408 rekommenderar MaxAuthTries 3 i sshd_config. SSH-jailen använder maxretry = 2 för blockering efter upprepade fel; MaxAuthTries begränsar försök inom samma anslutning. SSH-inställningen ger ett extra skyddslager även när Fail2Ban stoppats för underhåll.",
+ "installerIntro": "Installationsprogrammet:",
+ "items": [
+ "Läser det aktuella MaxAuthTries-värdet (eller standarder till 6 om det saknas).",
+ "Spara det till /usr/local/share/proxmenux/sshd_maxauthtries_backup.",
+ "Redigerar sshd_config direkt: ersätter befintlig rad, avkommenterar en kommenterad rad eller lägger till en ny.",
+ "Laddar om sshd utan omstart så att befintliga sessioner behålls."
+ ],
+ "outro": "Vid avinstallation återställs det sparade ursprungliga värdet och sshd laddas om igen."
+ },
+ "manage": {
+ "heading": "Hantera en befintlig installation",
+ "intro": "Om Fail2Ban redan är installerad när du öppnar menyn upptäcker manuset den och visar en meny istället för att köra om installationsprogrammet:",
+ "headerAction": "Handling",
+ "headerWhat": "Vad det gör",
+ "rows": [
+ {
+ "action": "Reinstallera",
+ "what": "Kör hela installationen igen och skriver om alla jails med aktuella ProxMenux-standardvärden. Använd när en uppdatering ändrar rekommendationerna."
+ },
+ {
+ "action": "Ta bort",
+ "what": "Stoppar fail2ban och de två loggertjänsterna, rensar apt-paketet, tar bort alla jail / filtrera filer, tar bort journald drop-in (återställer Proxmox standard) och återställer originalet SSH MaxAuthTries."
+ }
+ ]
+ },
+ "verify": {
+ "heading": "Verifiera att det fungerar",
+ "intro": "Efter installation, användbara kommandon från värden:",
+ "code": "# Service status and version\nsystemctl status fail2ban\nfail2ban-client --version\n\n# All active jails\nfail2ban-client status\n\n# Detail on one jail\nfail2ban-client status sshd\nfail2ban-client status proxmox\nfail2ban-client status proxmenux\n\n# Currently banned IPs in a jail\nfail2ban-client status sshd | grep \"Banned IP\"\n\n# Manually unban an IP (use this if you ban yourself)\nfail2ban-client unban 192.0.2.10\n\n# Tail the auth logs Fail2Ban watches\ntail -f /var/log/ssh-auth.log\ntail -f /var/log/proxmox-auth.log\ntail -f /var/log/fail2ban.log"
+ },
+ "troubleshoot": {
+ "heading": "Felsökning",
+ "neverBansTitle": "Fail2Ban körs men förbjuder aldrig något",
+ "neverBansBody": "Kontrollera att tail -f /var/log/ssh-auth.log får en post efter ett SSH-försök med fel lösenord från en annan dator. Om filen är tom granskar du systemctl status ssh-auth-logger.service. Om loggern körs visar du aktuella händelser med journalctl -u ssh.service -n 50 --no-pager -p info och kontrollerar att journald-tillägget tillåter nivån info.",
+ "monitorEmptyTitle": "ProxMenux Monitor jail har inga poster även efter misslyckade inloggningar",
+ "monitorEmptyBody": "Jailen [proxmenux] läser /var/log/proxmenux-auth.log, som skrivs av Flask-appen ProxMenux Monitor, inte av en journald-logger. Utan Monitor förblir filen tom och jailen utlöses inte. Det är väntat och konfigurationen är ofarlig. Om Monitor körs men loggen är tom kontrollerar du loggningskonfigurationen i Flask.",
+ "selfBanTitle": "Jag har blockerat min egen åtkomst",
+ "selfBanIntro": "Från en konsol / IPMI / iKVM (eller annan vitlistad IP):",
+ "selfBanCode": "fail2ban-client unban '<'YOUR_IP'>'\n\n# To prevent it next time, edit /etc/fail2ban/jail.local and add your IP:\nignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 203.0.113.42\n\n# Then reload\nfail2ban-client reload",
+ "aptFailTitle": "apt-get misslyckas: ''Unable to locate package fail2ban''",
+ "aptFailBody": "Värden saknas Debian repos (gemensamt på barebones Proxmox installationer). Installatören upptäcker detta och skriver /etc/apt/sources.list.d/debian.sources med rätt kodnamn (bookworm / trixie) innan du går tillbaka. Om det fortfarande misslyckas, kontrollera /etc/os-release för VERSION_CODENAME och bekräfta att repo URL är tillgänglig.",
+ "lockoutTitle": "SSH låser mig efter installation",
+ "lockoutBody": "Installationsprogrammet sätter MaxAuthTries=3. Om din lösenordshanterare / agent har flera nycklar kan du överstiga det på ett enda anslutningsförsök. Begränsa nycklarna som erbjuds: ssh -o IdentitiesOnly=yes -i ~/.ssh/specific_key user@host. Eller tillfälligt höja MaxAuthTries i sshd_config medan du debug."
+ },
+ "files": {
+ "heading": "Filer skrivna",
+ "code": "/etc/fail2ban/jail.local # global defaults + [sshd]\n/etc/fail2ban/jail.d/proxmox.conf # [proxmox]\n/etc/fail2ban/jail.d/proxmenux.conf # [proxmenux]\n/etc/fail2ban/filter.d/proxmox.conf # auth-failure regex for pvedaemon\n/etc/fail2ban/filter.d/proxmenux.conf # auth-failure regex for Monitor\n/etc/systemd/system/proxmox-auth-logger.service # journal → file (pvedaemon)\n/etc/systemd/system/ssh-auth-logger.service # journal → file (sshd)\n/etc/systemd/journald.conf.d/proxmenux-loglevel.conf # MaxLevelStore=info\n/etc/ssh/sshd_config # MaxAuthTries=3 (in-place edit)\n/var/log/proxmox-auth.log # written by logger service\n/var/log/ssh-auth.log # written by logger service\n/var/log/proxmenux-auth.log # written by Monitor Flask app\n/usr/local/share/proxmenux/sshd_maxauthtries_backup # for restore on uninstall"
+ },
+ "related": {
+ "heading": "Relaterad",
+ "monitorLabel": "ProxMenux Monitor → Säkerhetsflik",
+ "monitorTail": " — installation via panelen, aktuell jail-status, blockerade IP-adresser och inställning av försök och blockeringstid per jail i webbläsaren.",
+ "lynisLabel": "Lynis",
+ "lynisTail": " — kör en säkerhetsgranskning före och efter för att bekräfta att kontrollen SSH-7408 uppfylls.",
+ "securityLabel": "Säkerhetsöversikt",
+ "securityTail": " - tillbaka till avsnittsöversikten."
+ }
+}
diff --git a/web/messages/sv/docs/security/index.json b/web/messages/sv/docs/security/index.json
new file mode 100644
index 00000000..bf05f49e
--- /dev/null
+++ b/web/messages/sv/docs/security/index.json
@@ -0,0 +1,70 @@
+{
+ "meta": {
+ "title": "Proxmox-säkerhet — Fail2Ban och härdningsgranskning med Lynis | ProxMenux",
+ "description": "Två säkerhetsverktyg för Proxmox VE: Fail2Ban (intrångsskydd för SSH, Proxmox webbgränssnitt och ProxMenux Monitor) och Lynis (säkerhets- och härdningsgranskning installerad från det officiella GitHub-arkivet).",
+ "ogTitle": "Proxmox-säkerhet — Fail2Ban och härdningsgranskning med Lynis",
+ "ogDescription": "Fail2Ban och Lynis för Proxmox VE: intrångsskydd och härdningsgranskning, installerade och hanterade av ProxMenux.",
+ "twitterTitle": "Proxmox säkerhet | ProxMenux",
+ "twitterDescription": "Fail2Ban och Lynis för Proxmox VE: intrångsskydd och härdningsgranskning."
+ },
+ "header": {
+ "title": "Säkerhet",
+ "description": "Två kompletterande verktyg för Proxmox VE: aktivt skydd (Fail2Ban blockerar IP-adresser som angriper SSH eller webbgränssnitt) och lokal granskning (Lynis söker härdningsbrister och ger 0–100 poäng). Varje verktyg har en egen installations- och hanteringsmeny som upptäcker befintliga installationer före varje åtgärd.",
+ "section": "Säkerhet"
+ },
+ "intro": {
+ "title": "Aktivt skydd och lokal granskning",
+ "body": "De besvarar olika frågor. Fail2Ban svarar på ”Angrips vi just nu?” genom att bevaka autentiseringsloggar och blockera angripande IP-adresser. Lynis svarar på ”Hur väl härdad är värden?” med en engångsgranskning och konkreta rekommendationer. Använd båda: Lynis visar vad som bör förbättras och Fail2Ban hanterar pågående angrepp."
+ },
+ "opening": {
+ "heading": "Öppna menyn",
+ "body": "Välj Säkerhet i ProxMenux huvudmeny. Du får se följande:",
+ "imageAlt": "Säkerhetsmeny med Fail2Ban och Lynis alternativ"
+ },
+ "pick": {
+ "heading": "Välj ditt verktyg",
+ "body": "Verktygen är oberoende: installera ett, båda eller inget. Varje kort nedan leder till avsnittet som förklarar verktyget i detalj."
+ },
+ "cards": {
+ "fail2ban": {
+ "title": "Fail2Ban",
+ "body": "Aktivt intrångsskydd. Bevakar autentiseringsloggar för SSH och webbgränssnitt och blockerar IP-adresser efter upprepade fel.",
+ "bullets": [
+ "Tre jails: SSH, Proxmox UI (8006), ProxMenux Monitor (8008)",
+ "Korrigerar Proxmox standardinställningar för journald som blockerar autentiseringsloggar",
+ "Upptäcker nftables / iptables automatiskt",
+ "SSH härdning: MaxAuthTries=3 (Lynis rekommendation)"
+ ]
+ },
+ "lynis": {
+ "title": "Lynis",
+ "body": "Lokal säkerhetsgranskare. Skannar värden och visar härdningspoäng samt konkreta åtgärdsförslag.",
+ "bullets": [
+ "Installerat från CISOfys officiella GitHub-arkiv (senaste versionen)",
+ "Härdningspoäng 0–100 och lista över varningar och förslag",
+ "Granskning och uppdatering via menyn",
+ "Utformat för enbart läsning: ändrar aldrig systemet"
+ ]
+ }
+ },
+ "workflowTip": {
+ "title": "Arbetsflöde som använder båda",
+ "body": "Kör först Lynis för att se startpoäng och viktigaste rekommendationer. Genomför önskade åtgärder. Installera sedan Fail2Ban: det inför automatiskt SSH-skydd mot lösenordsattacker och anpassar MaxAuthTries i sshd_config till kontrollen SSH-7408. Kör Lynis igen för att bekräfta förbättringen."
+ },
+ "fail2banSection": {
+ "heading": "Fail2Ban",
+ "body": "ProxMenux installerar Fail2Ban med en konfiguration för Proxmox. Utöver standardjailen för SSH skyddas Proxmox webbgränssnitt och ProxMenux Monitor. Två specifika problem hanteras: en standardinställning i journald som släpper autentiseringshändelser och ett problem i systemd-backend som hindrar tillförlitlig läsning av vissa journalkällor. Detaljsidan beskriver installationen, de tre jails, journald-korrigeringen, SSH-härdningen och felsökningen.",
+ "optionTitle": "Fail2Ban – installera och hantera",
+ "optionDescription": "Tre förkonfigurerade jails (aggressivt sshd, Proxmox-gränssnitt på 8006, ProxMenux Monitor på 8008 och omvänd proxy), automatisk nftables/iptables-detektering, journald-korrigering och SSH-härdning med MaxAuthTries."
+ },
+ "lynisSection": {
+ "heading": "Lynis",
+ "body": "ProxMenux klonar Lynis från github.com/CISOfy/lynis till /opt/lynis och gör det tillgängligt som /usr/local/bin/lynis. Debianpaketet undviks avsiktligt eftersom det ligger flera huvudversioner efter originalprojektet. Detaljsidan beskriver installation, granskning, uppdatering, avinstallation, rapportläsning och åtgärder utifrån resultaten.",
+ "optionTitle": "Lynis — installera, granska och hantera",
+ "optionDescription": "Installerar den senaste Lynis från den officiella CISOfy GitHub repo (inte det äldre Debian-paketet), kör systemrevisioner med härdningspoäng och uppdateringar via git pull."
+ },
+ "componentStatus": {
+ "heading": "Komponentstatus",
+ "body": "Båda installatörerna registrerar sitt tillstånd i /usr/local/share/proxmenux/components_status.json under kategorin security. ProxMenux använder den här filen för att bestämma om du vill visa installationen eller menyn för hantering påföljande körningar, och samma data matar instrumentpanelerna i ProxMenux Monitor när de är närvarande."
+ }
+}
diff --git a/web/messages/sv/docs/security/lynis.json b/web/messages/sv/docs/security/lynis.json
new file mode 100644
index 00000000..2eb520b4
--- /dev/null
+++ b/web/messages/sv/docs/security/lynis.json
@@ -0,0 +1,170 @@
+{
+ "meta": {
+ "title": "Lynis | ProxMenux-dokumentation",
+ "description": "Installera senaste Lynis från CISOfys officiella GitHub-arkiv, kör en säkerhetsgranskning med härdningspoäng 0–100 och uppdatera med git pull. Utformat för enbart läsning, utan systemändringar.",
+ "ogTitle": "Lynis | ProxMenux-dokumentation",
+ "ogDescription": "Installera och kör säkerhetsgranskaren Lynis på Proxmox VE. Installation från det officiella GitHub-arkivet, granskning och uppdatering."
+ },
+ "header": {
+ "title": "Lynis",
+ "description": "Klonar senaste Lynis från CISOfys officiella GitHub-arkiv, gör det tillgängligt som /usr/local/bin/lynis och erbjuder granskning, uppdatering, ominstallation och avinstallation via menyn. Granskaren läser bara och rapporterar utan att ändra systemet.",
+ "section": "Säkerhet"
+ },
+ "intro": {
+ "title": "Vad detta gör",
+ "body": "Installerar Lynis, CISOfys säkerhetsgranskare med öppen källkod, från dess GitHub-arkiv till /opt/lynis och skapar ett startskript i /usr/local/bin/lynis så att det nås via PATH. En befintlig installation ger i stället en meny för granskning, uppdatering, ominstallation eller borttagning."
+ },
+ "manageMenu": {
+ "heading": "Hanteringsmeny (efter installation)",
+ "intro": "Efter installationen öppnar varje nytt anrop hanteringsmenyn. Där kan du starta en granskning, uppdatera med git pull, installera om eller avinstallera.",
+ "imageAlt": "Lynis management meny med revision, uppdatering, ominstallera och ta bort alternativ"
+ },
+ "whyUpstream": {
+ "heading": "Varför det officiella GitHub-arkivet i stället för apt",
+ "intro": "Debian erbjuder Lynis via apt, men paketet ligger vanligtvis flera huvudversioner efter originalprojektet. Nya kontroller, åtgärder för nya angreppssätt och förbättrade rekommendationer kommer först till GitHub. Lynis är ett fristående skalskript utan kompilering eller installationsberoenden utöver git; kloning av arkivet är därför metoden CISOfy rekommenderar.",
+ "headerSource": "Källa",
+ "headerPath": "Install path",
+ "headerUpdate": "Uppdateringsmetod",
+ "headerFresh": "Versionens aktualitet",
+ "rows": [
+ {
+ "sourceRich": "ProxMenux (detta manus) ",
+ "path": "/opt/lynis/",
+ "update": "git pull (via menyn)",
+ "fresh": "Senaste versionen av originalprojektet"
+ },
+ {
+ "sourceRich": "Debian apt",
+ "path": "/usr/bin/lynis",
+ "update": "apt upgrade",
+ "fresh": "Ofta månader / år bakom"
+ }
+ ]
+ },
+ "install": {
+ "heading": "Hur installationen fungerar",
+ "node1Label": "github.com/CISOfy/lynis",
+ "node1Detail": "git clone\n(installera git först om det saknas)",
+ "node2Label": "/opt/lynis/",
+ "node2Detail": "hela arkivet\ninklusive skriptet ./lynis",
+ "node3Label": "/usr/local/bin/lynis",
+ "node3Detail": "wrapper:\ncd /opt/lynis && ./lynis $@",
+ "outro": "Wrapper är obligatorisk - Lynis insisterar på att köras från sin egen katalog eftersom det laddar relativa vägar för plugins och profildata. Wrapper döljer den detaljen så lynis audit system fungerar bara från var som helst."
+ },
+ "detection": {
+ "heading": "Detektering vägar",
+ "intro": "Innan du visar menyn kontrollerar manuset tre platser för att avgöra om Lynis redan är närvarande:",
+ "items": [
+ "/usr/local/bin/lynis Wrapper installerad av ProxMenux",
+ "/opt/lynis/lynis - direkt väg (om wrapperen togs bort)",
+ "/usr/bin/lynis apt-installerad version, om användaren installerade den på det sättet tidigare"
+ ],
+ "outro": "Om någon av sökvägarna hittas öppnas hanteringsmenyn. Skriptet avinstallerar inte Lynis som installerats via apt, bara den egna installationen i /opt/lynis och dess startskript."
+ },
+ "audit": {
+ "heading": "Kör en revision",
+ "intro": "Välj Kör säkerhetsgranskning nu i hanteringsmenyn. Det motsvarar att köra:",
+ "code": "lynis audit system --no-colors",
+ "outro": "Granskningen tar 30 sekunder till några minuter beroende på värdens storlek. Utdata visas direkt i terminalen utan väntanimation. Lynis grupperar kontroller efter kategori och märker varje test med [ OK ], [ WARNING ] eller [ SUGGESTION ]. Slutets sammanfattning visar de viktigaste siffrorna:",
+ "summary": "================================================================================\n\n Detaljer för Lynis säkerhetsgranskning:\n\n Härdningsindex : 76 [############ ]\n Utförda tester : 247\n Aktiverade insticksmoduler : 0\n\n Komponenter:\n - Brandvägg [V]\n - Skanner för skadlig kod [X]\n\n Lynis-moduler:\n - Efterlevnadsstatus [?]\n - Säkerhetsgranskning [V]\n - Sårbarhetsgranskning [V]\n\n================================================================================"
+ },
+ "report": {
+ "heading": "Läsa rapporten",
+ "intro": "De två viktiga avsnitten är Warnings (saker du bör fixa snart) och Suggestions (rekommendationer för att förbättra härdning). Varje objekt bär ett kontroll-ID som SSH-7408 - användbart när du söker Lynis-dokumenten för motiveringen och fixen.",
+ "headerMarker": "Markör",
+ "headerMeaning": "Betydelse",
+ "headerAction": "Handling",
+ "rows": [
+ {
+ "markerRich": "OK",
+ "meaning": "Test passerade",
+ "action": "Ingenting"
+ },
+ {
+ "markerRich": "WARNING",
+ "meaning": "Verklig fråga, fix rekommenderad",
+ "action": "Läs kontrollbeskrivningen, planera en fix"
+ },
+ {
+ "markerRich": "SUGGESTION",
+ "meaning": "Hardening förbättring tillgänglig",
+ "action": "Tillämpa om det passar din hotmodell"
+ }
+ ],
+ "outro": "Fullständig rapport och maskinläsbara data skrivs till /var/log/lynis.log och /var/log/lynis-report.dat av Lynis själv."
+ },
+ "pairFail2ban": {
+ "title": "Kombinera med Fail2Ban",
+ "body": "SSH-7408 (MaxAuthTries) är en av de vanligaste varningarna. Installera Fail2Ban från ProxMenux rensar det automatiskt eftersom installationsprogrammet sätter MaxAuthTries=3 som en del av dess SSH härdning steg. Kör Lynis igen efteråt för att bekräfta varningen är borta."
+ },
+ "update": {
+ "heading": "Uppdatering Lynis",
+ "body": "I menyn kör Uppdatera Lynis till senaste versionen kommandot git pull --quiet i /opt/lynis. Om katalogen finns men inte är en Git-arbetskopia, exempelvis efter manuell filkopiering, gör skriptet en fullständig ominstallation."
+ },
+ "reinstall": {
+ "heading": "Installera om / avinstallera",
+ "headerAction": "Handling",
+ "headerWhat": "Vad det gör",
+ "rows": [
+ {
+ "actionRich": "Installera om",
+ "whatRich": "Tar bort /opt/lynis, klonar igen från GitHub och återskapar startskriptet. Använd om den lokala arbetskopian är skadad."
+ },
+ {
+ "actionRich": "Ta bort",
+ "whatRich": "Ta bort /opt/lynis och /usr/local/bin/lynis. Loggar på /var/log/lynis* hålls (de är revisionshistorik). En apt-installerad Lynis på /usr/bin/lynis lämnas orörd."
+ }
+ ]
+ },
+ "cli": {
+ "heading": "Användbara CLI-alternativ",
+ "intro": "Efter installationen kan Lynis köras direkt från ett skal med extra alternativ som inte visas i menyn:",
+ "code": "lynis show version # version + build date\nlynis show commands # list every available command\nlynis show details TEST-ID # explain a specific control\nlynis audit system --quick # skip slow tests (e.g. malware scan)\nlynis audit system --pentest # treat host as untrusted (more aggressive)\nlynis update info # check if a newer Lynis is available\n\n# Filter the report log for just the warnings\ngrep \"Warning\" /var/log/lynis.log\n\n# Same, for suggestions only\ngrep \"Suggestion\" /var/log/lynis.log"
+ },
+ "troubleshoot": {
+ "heading": "Felsökning",
+ "cloneTitle": "git clone misslyckas under installationen",
+ "cloneBody": "Värden behöver nätverksåtkomst och DNS för att nå github.com. Från en konsol: curl -sI https://github.com och git ls-remote https://github.com/CISOfy/lynis.git kommer att avslöja det faktiska felet (DNS, TLS, proxy, repo URL). Om en proxy krävs, sätt https_proxy i miljön innan du kör menyn.",
+ "notFoundTitle": "lynis: kommandot som inte hittats efter installation",
+ "notFoundIntro": "Startskriptet /usr/local/bin/lynis skapades inte eller har tagits bort. Snabbaste lösningen är att installera om via menyn. Manuell lösning:",
+ "notFoundCode": "cat > /usr/local/bin/lynis <<'EOF'\n#!/bin/bash\ncd /opt/lynis && ./lynis \"$@\"\nEOF\nchmod +x /usr/local/bin/lynis",
+ "sshTitle": "Granskningen visar \"Warning: Test SSH-7408 — MaxAuthTries set incorrectly\"",
+ "sshIntro": "SSH daemon tillåter för många auth försök per anslutning. Antingen installera Fail2Ban från ProxMenux (som sätter MaxAuthTries=3 automatiskt) eller redigera /etc/ssh/sshd_config för hand:",
+ "sshCode": "sed -i 's/^#?MaxAuthTries.*/MaxAuthTries 3/' /etc/ssh/sshd_config\nsystemctl reload sshd",
+ "scoreTitle": "Score gick ner efter en Proxmox uppgradering",
+ "scoreBody": "Kör lynis update info först - en Lynis-uppdatering kan ha lagt till nya kontroller som flaggar befintlig konfig. Uppdatera Lynis från menyn, re-audit och adressera de nya resultaten."
+ },
+ "files": {
+ "heading": "Filer skrivna",
+ "code": "/opt/lynis/ # full Lynis git checkout\n/usr/local/bin/lynis # wrapper script (cd + exec)\n/var/log/lynis.log # human-readable audit log (Lynis itself)\n/var/log/lynis-report.dat # machine-readable report (Lynis itself)"
+ },
+ "sample": {
+ "heading": "Provrapport",
+ "intro": "ProxMenux Monitor skapar en flersidig PDF för varje Lynis-körning via fliken Säkerhet. Första sidan sammanfattar härdningspoäng, systeminformation och säkerhetsläge. Följande sidor förklarar varje varning, listar förslag efter påverkan och visar paketinventeringen som användes vid granskningen.",
+ "imageAlt": "Första sidan av Lynis Security Audit Report PDF - verkställande sammanfattning med Hardening Index 71/100, systeminformationsblock och säkerhetsställningsöversikt med brandvägg, malware scanner och installerade paket räknas",
+ "captionPrefix": "Första sidan i en exempelrapport. Hela PDF-filen (",
+ "captionLink": "exempel",
+ "captionSuffix": ") fortsätter med detaljerade varningar, förslag och listan över installerade paket.",
+ "cli": "På CLI-sidan är samma data i /var/log/lynis-report.dat (maskinläsbar plattfil) och /var/log/lynis.log (den mänskliga läsbara körloggen). PDF genereras på begäran av ProxMenux Monitor - kör lynis från kommandoraden producerar inte en."
+ },
+ "related": {
+ "heading": "Relaterad",
+ "items": [
+ {
+ "href": "/docs/monitor/dashboard/security",
+ "label": "ProxMenux Monitor → Säkerhetsflik",
+ "tail": " - köra revisionen, bläddra i historiska rapporter och ladda ner PDF direkt från instrumentbrädan."
+ },
+ {
+ "href": "/docs/security/fail2ban",
+ "label": "Fail2Ban",
+ "tailRich": " - implementerar SSH brute-force skydd som Lynis rekommenderar."
+ },
+ {
+ "href": "/docs/security",
+ "label": "Säkerhetsöversikt",
+ "tail": " - tillbaka till avsnittsöversikten."
+ }
+ ]
+ }
+}
diff --git a/web/messages/sv/docs/security/ssl-letsencrypt.json b/web/messages/sv/docs/security/ssl-letsencrypt.json
new file mode 100644
index 00000000..7d11d70d
--- /dev/null
+++ b/web/messages/sv/docs/security/ssl-letsencrypt.json
@@ -0,0 +1,169 @@
+{
+ "meta": {
+ "title": "HTTPS för ProxMenux Monitor — Proxmox-värdcertifikat eller anpassade sökvägar | ProxMenux",
+ "description": "Tillhandahåll ProxMenux Monitor via HTTPS med Proxmox-värdens automatiskt upptäckta certifikat, inklusive Let’s Encrypt installerat via Proxmox ACME, eller ett eget certifikat på valfri sökväg på disken.",
+ "ogTitle": "HTTPS för ProxMenux Monitor - Proxmox värd eller anpassat certifikat",
+ "ogDescription": "Aktivera HTTPS på port 8008 med Proxmox värdcertifikat eller någon anpassad .pem / .key par."
+ },
+ "header": {
+ "title": "HTTPS för ProxMenux Monitor",
+ "description": "Aktivera HTTPS för Monitor på port 8008 med det automatiskt upptäckta Proxmox-värdcertifikatet eller ett eget certifikat på disken. Proxmox-alternativet föredrar ACME-certifikatet om det finns och återanvänder Let’s Encrypt som Proxmox hanterar utan en extra förnyelseuppgift.",
+ "section": "Säkerhet"
+ },
+ "intro": {
+ "title": "Vad denna sida täcker",
+ "body": "Hur man byter Monitor från HTTP till HTTPS i Inställningarna → Säkerhetspanel, vad varje certifikatkälla faktiskt pekar på på disken, hur Proxmox-alternativet beter sig när värden har en Let's Encrypt-cert och hur man ställer in anpassade vägar om du hanterar certer utanför Proxmox."
+ },
+ "wheresetting": {
+ "heading": "Var inställningen finns",
+ "body": "Öppna Monitor och gå till Inställningar → Säkerhet → HTTPS / SSL. Panelen visar HTTP eller HTTPS och, om HTTPS inte aktiverats, de upptäckta certifikatkällorna.",
+ "imageAlt": "Inställningar → Säkerhet → HTTPS / SSL-panelen i Monitorn som visar HTTPS-off-tillståndet, det automatiska upptäckta Proxmox-certifikatet (ämne, emittent, utgång) och alternativet Använd anpassat certifikat",
+ "caption": "Panelen Inställningar → Säkerhet → HTTPS / SSL före aktivering. Monitor visar certifikatet som Proxmox använder och låter dig välja det med ett klick."
+ },
+ "twoways": {
+ "heading": "Två sätt att aktivera HTTPS",
+ "proxmox": {
+ "title": "Använd Proxmox-certifikat",
+ "summary": "Ett klick: Monitor återanvänder certifikatet som Proxmox VE presenterar på port 8006.",
+ "items": [
+ "Upptäcks automatiskt, ingen sökväg att skriva",
+ "Föredrar ACME-certifikatet om det finns, annars det självsignerade standardcertifikatet",
+ "Proxmox sköter förnyelsen; Monitor validerar och laddar certifikatet vid nästa nya TLS-anslutning"
+ ]
+ },
+ "custom": {
+ "title": "Använd anpassat certifikat",
+ "summaryRich": "Peka monitorn på ett .pem / .key-par var som helst på disken.",
+ "items": [
+ "Absoluta vägar (övervakningsprocessen måste kunna läsa båda)",
+ "Användbara när certerna kommer från certbot, acme.sh eller ett wildcard",
+ "Du ansvarar för förnyelsen: starta om Monitor när filerna ändras"
+ ]
+ }
+ },
+ "proxmoxCert": {
+ "heading": "Proxmox-certifikat - vad det faktiskt pekar på",
+ "intro": "Proxmox VE håller två certifikatpar i /etc/pve/local/:",
+ "table": {
+ "headers": {
+ "file": "Fil",
+ "origin": "Ursprung",
+ "when": "När monitorn använder den"
+ },
+ "rows": [
+ {
+ "fileRich": "pveproxy-ssl.pem pveproxy-ssl.key",
+ "originRich": "Anpassade certifikat som laddats upp via Proxmox UI - inklusive Let's Encrypt-certifikatet som utfärdats under Datacenter → Node → Certifikat → ACME.",
+ "when": "Föredras när båda filerna finns; Monitor använder certifikatet som Proxmox presenterar."
+ },
+ {
+ "fileRich": "pve-ssl.pem pve-ssl.key",
+ "originRich": "Självsignerat certifikat som genereras vid installationstid av Proxmox PKI.",
+ "whenRich": "Fallback när ingen pveproxy-ssl.pem finns."
+ }
+ ]
+ },
+ "callout": {
+ "title": "Samma prioritet som Proxmox själv",
+ "bodyRich": "pveproxy använder samma urvalsregel. Med Proxmox-alternativet använder Monitor certifikatet som Proxmox webbgränssnitt presenterar på 8006, utan kopiering eller separat förnyelseflöde."
+ }
+ },
+ "letsencrypt": {
+ "heading": "Få ett Let's Encrypt-certifikat via Proxmox ACME",
+ "intro": "Proxmox VE innehåller en egen ACME-klient. ”Order Certificate Now” sparar resultatet i /etc/pve/local/pveproxy-ssl.pem, som Monitor läser. Följande fem steg sammanfattar Proxmox officiella guide i kommandona som behövs.",
+ "prereqs": {
+ "title": "Förutsättningar",
+ "items": [
+ "Noden har ett riktigt DNS-namn (inte bara en IP) som pekar på det.",
+ "Antingen port 80 nåbar från Internet (HTTP-01-validering, enklast), eller en DNS-leverantör med API-uppgifter (DNS-01, fungerar bakom NAT och stöder wildcard-certifikat).",
+ "En e-postadress för ACME-kontot."
+ ]
+ },
+ "step1": {
+ "heading": "Steg 1 - Registrera ACME-kontot",
+ "introRich": "Ersätt e-post med din. Kontonamnet default är bara en etikett - du kan använda någon sträng.",
+ "code": "pvenode acme account register default you@example.com",
+ "afterRich": "Proxmox uppmanar dig att acceptera Let's Encrypt användarvillkor. Därefter kvarstår kontot under /etc/pve/priv/acme/ och fliken ACME i GUI kommer att visa det."
+ },
+ "step2": {
+ "heading": "Steg 2 — Välj valideringstyp",
+ "http01Rich": "HTTP-01 är den enklaste: den är inbyggd, ingen extra plugin. Let's Encrypt ansluter till http://<your-host>/.well-known/acme-challenge/... på port 80, så port 80 måste vara öppen från det offentliga internet till din nod - vanligtvis en port framåt på din router.",
+ "dns01Rich": "DNS-01 fungerar utan att exponera port 80 (bra för homelabs bakom CG-NAT) och är det enda alternativet för wildcard certifikat. Du lägger till en DNS plugin en gång med din leverantörs API-token. Cloudflare exempel:",
+ "code": "pvenode acme plugin add dns cf \\\n --api cloudflare \\\n --data CF_Token=YOUR_CLOUDFLARE_API_TOKEN",
+ "outroRich": "För andra leverantörer (Gandi, OVH, AWS Route 53 osv.) se pvenode acme plugin add dns --help. Proxmox innehåller alla DNS-insticksmoduler från acme.sh."
+ },
+ "step3": {
+ "heading": "Steg 3 - Bind domänen till din nod",
+ "http01Rich": "För HTTP-01 (använder den inbyggda standalone plugin):",
+ "code1": "pvenode config set --acme domains=host.example.com,account=default",
+ "dns01": "För DNS-01 med Cloudflare plugin från Step 2:",
+ "code2": "pvenode config set --acmedomain0 domain=host.example.com,plugin=cf\npvenode config set --acme account=default",
+ "wildcardRich": "Wildcard? Lägg till domain=*.example.com på en separat --acmedomainN-post. Wildcards kräver DNS-01."
+ },
+ "step4": {
+ "heading": "Steg 4 - Beställ certifikatet",
+ "code": "pvenode acme cert order",
+ "afterRich": "Första körningen tar vanligtvis 30-60 sekunder medan utmaningen sprider sig. På framgång Proxmox skriver /etc/pve/local/pveproxy-ssl.pem + .key, startar pveproxy, och en förnyelsekrona schemaläggs automatiskt (Let's Encrypt certs är giltiga 90 dagar; Proxmox förnyar på 60)."
+ },
+ "step5": {
+ "heading": "Steg 5 - Verifiera emittenten",
+ "code": "openssl x509 -in /etc/pve/local/pveproxy-ssl.pem -noout -issuer",
+ "afterRich": "Bör skriva ut en emittent som börjar med O = Let's Encrypt. Om det i stället läser CN = Proxmox Virtual Environment misslyckades ordern och filen är fortfarande den självsignerade PVE-certen - kör pvenode acme cert order --debug 1 för att se varför."
+ },
+ "gui": {
+ "title": "Föredrar GUI? Samma fem steg",
+ "bodyRich": "Datacenter → ACME registrerar kontot; Datacenter → ACME → Plugins lägger till DNS-insticksmodulen; Node → Certificates → ACME kopplar domänen; Order Certificates Now kör steg 4. Kommandona ovan passar för skript och system utan grafiskt gränssnitt."
+ }
+ },
+ "switchToHttps": {
+ "heading": "Byt Monitor till HTTPS",
+ "bodyRich": "När /etc/pve/local/pveproxy-ssl.pem signerats av Let's Encrypt öppnar du Inställningar → Säkerhet → HTTPS / SSL, kontrollerar att utfärdaren är Let's Encrypt och inte Proxmox lokala CA och klickar på Använd Proxmox-certifikat. Monitor startar om och nästa sidladdning använder HTTPS på 8008 med en offentligt betrodd certifikatkedja. Senare ACME-förnyelser valideras och väljs vid nästa nya TLS-anslutning, utan återkommande avfrågning eller omstart vid förnyelse. Uppdatera certifikat finns kvar under Säkerhet för diagnos och återställning."
+ },
+ "custom": {
+ "heading": "Anpassat certifikat - när du ska använda det",
+ "intro": "Klicka på Använd anpassat certifikat och ange två absoluta sökvägar:",
+ "items": [
+ "Certifikat: hela kedjan i PEM-format (.pem eller .crt).",
+ "Privat nyckel: matchande nyckel i PEM-format (.key)."
+ ],
+ "outro": "Båda filerna läses av Monitor-processen vid start. De måste kunna läsas av användaren som systemd-enheten körs som (root som standard). Vanliga sökvägar när ACME hanteras utanför Proxmox:",
+ "code": "# certbot\n/etc/letsencrypt/live//fullchain.pem\n/etc/letsencrypt/live//privkey.pem\n\n# acme.sh\n~/.acme.sh/_ecc/fullchain.cer\n~/.acme.sh/_ecc/.key",
+ "symlinkCallout": {
+ "title": "Symlink mål vs. filer",
+ "bodyRich": "certbot lagrar de faktiska filerna i /etc/letsencrypt/archive/ och live/-vägen är en symlänk. Peka Monitorn på live/ symlink, inte archive/-filen - på så sätt omskriver varje förnyelsecykel helt enkelt symlinkmålet och Monitorn plockar upp den nya certen vid nästa servicestart."
+ }
+ },
+ "afterHttps": {
+ "heading": "Efter att ha aktiverat HTTPS",
+ "bodyRich": "Att spara förändringen skriver /etc/proxmenux/ssl_config.json och utlöser en omstart av proxmenux-monitor systemd-enheten. Fliken webbläsare kommer att förlora sin nuvarande anslutning - ladda den på https://<host>:8008/. Den första belastningen med en Let's Encrypt-cert bör inte visa någon varning; med Proxmox självsignerad cert kommer webbläsaren att kräva ett undantag, samma som för port 8006.",
+ "reverse": {
+ "heading": "Omvända proxyservrar och webhooks",
+ "bodyRich": "När Monitorn byter till HTTPS, Proxmox VE webhook URL-adresser registrerade för meddelanden också vända från http:// till https:// automatiskt. Befintliga webhook-poster skrivs om nästa gång en anmälningsregel sparas eller återupptäcks, så ingen manuell redigering av Proxmox-meddelandekonfig behövs."
+ }
+ },
+ "trustCa": {
+ "heading": "Lita på Proxmox självsignerade CA",
+ "intro1Rich": "För att behålla Proxmox standardcertifikat utan ACME importerar du klustrets rot-CA i systemets eller webbläsarens betrodda certifikatlager. Monitor upptäcker /etc/pve/local/pve-ssl.pem som reservcertifikat. Klienten litar då på utfärdaren; URL:en måste fortfarande matcha ett namn i certifikatet.",
+ "intro2Rich": "CA-filen bor på /etc/pve/pve-root-ca.pem på varje nod. I ett kluster är vägen på det delade pmxcfs-filsystemet så att alla noder delar samma rot, och en enda import täcker hela datacentret. Kopiera den till din maskin:",
+ "code": "scp root@:/etc/pve/pve-root-ca.pem ./pve-root-ca.pem",
+ "thenImport": "Importera sedan den på klientsidan:",
+ "items": [
+ "Linux (hela systemet): kör sudo cp pve-root-ca.pem /usr/local/share/ca-certificates/pve-root-ca.crt följt av sudo update-ca-certificates. Webbläsare med systemets certifikatlager (Chromium, Edge) känner igen CA:n efter omstart; Firefox har ett eget lager och behöver den manuella importen nedan.",
+ "macOS: dubbelklicka på .pem-filen i Nyckelhanterare, lägg till den i nyckelringen System och välj Lita på → Lita alltid på.",
+ "Windows: högerklicka på filen → Installera certifikat → placera det i Betrodda rotcertifikatutfärdare.",
+ "Firefox (alla operativsystem):Inställningar → Sekretess och säkerhet → Certifikat → Visa certifikat → Certifikatutfärdare → Importera; markera Lita på denna CA för att identifiera webbplatser."
+ ],
+ "standalone": {
+ "title": "Standalone noder utanför ett kluster",
+ "bodyRich": "Varje icke-klustrerad Proxmox värd har sin egen pve-root-ca.pem. Om du hanterar flera fristående värdar, upprepa kopian/importen för varje eller gå med dem till ett kluster så att de delar en enda rot."
+ }
+ },
+ "disable": {
+ "heading": "Inaktivera HTTPS",
+ "bodyRich": "Klicka på Inaktivera HTTPS i samma panel. Monitor startar om med okrypterad HTTP, användbart om ett oläsbart eget certifikat hindrar tjänsten från att starta. Ingen separat avinstallation krävs och certifikatfilerna ändras inte.",
+ "stateCallout": {
+ "title": "Var tillståndet lagras",
+ "bodyRich": "/etc/proxmenux/ssl_config.json lagrar de aktiva certvägarna och källan (none, proxmox, custom). Radera filen är likvärdig med att inaktivera HTTPS - nästa start faller Monitor tillbaka till HTTP."
+ }
+ }
+}