{ "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." } }