mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-11-01 10:22:08 +00:00
153 lines
12 KiB
JSON
153 lines
12 KiB
JSON
{
|
||
"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 <code>jail.local</code>: <code>ignoreip = 127.0.0.1/8 ::1</code>, <code>ignoreself = true</code>,<code> bantime = 86400</code> (24h reserv för jails som inte åsidosätter det), <code>maxretry = 2</code>, <code>findtime = 1800</code>."
|
||
},
|
||
"journald": {
|
||
"heading": "Varför journald-korrigeringen är viktig",
|
||
"intro": "Proxmox levererar <code>/etc/systemd/journald.conf</code> med <codeNw>MaxLevelStore=warning</codeNw>. journald kastar meddelanden på nivåer <em>under</em> warning innan de lagras. SSH och PAM rapporterar autentiseringsfel på nivåerna <em>info</em> / <em>notice</em>, 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å <codeXs>/etc/systemd/journald.conf.d/proxmenux-loglevel.conf</codeXs> höja både <code>MaxLevelStore</code> och <code>MaxLevelSyslog</code> till <code>info</code>:",
|
||
"code": "[Journal]\nMaxLevelStore=info\nMaxLevelSyslog=info",
|
||
"outro": "Startar sedan om <code>systemd-journald</code>. 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 (<code>backend = systemd</code>), men på Proxmox har denna backend kända problem med arbetsprocesser i <code>pvedaemon</code>: autentiseringshändelser syns i journalen men upptäcks inte alltid. Även <code>sshd</code> berörs ibland.",
|
||
"intro2": "ProxMenux skapar två små systemd-tjänster som följer berörda enheter med <code>journalctl -f</code> och lägger till varje rad i en fil. Fail2Ban läser filerna med tillförlitliga <code>backend = auto</code> (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 <code>PartOf=fail2ban.service</code> så de startar om med Fail2Ban och slutar med det. Läget 640 som ägs av <code>root:adm</code> på loggfilerna. Den tredje loggen som används av <code>[proxmenux]</code> jail (<code>/var/log/proxmenux-auth.log</code>) 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 <code>nft list ruleset</code> fungerar, väljer den <code>nftables</code> som förbudsåtgärden. Annars faller det tillbaka till <code>iptables-multiport</code> / <code>iptables-allports</code>. Valet är skrivet i <code>jail.local</code>:",
|
||
"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 <strong>SSH-7408</strong> rekommenderar <code>MaxAuthTries 3</code> i <code>sshd_config</code>. SSH-jailen använder <code>maxretry = 2</code> 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 <code>MaxAuthTries</code>-värdet (eller standarder till 6 om det saknas).",
|
||
"Spara det till <code>/usr/local/share/proxmenux/sshd_maxauthtries_backup</code>.",
|
||
"Redigerar <code>sshd_config</code> direkt: ersätter befintlig rad, avkommenterar en kommenterad rad eller lägger till en ny.",
|
||
"Laddar om <code>sshd</code> utan omstart så att befintliga sessioner behålls."
|
||
],
|
||
"outro": "Vid avinstallation återställs det sparade ursprungliga värdet och <code>sshd</code> 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 <code>tail -f /var/log/ssh-auth.log</code> 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 <code>systemctl status ssh-auth-logger.service</code>. Om loggern körs visar du aktuella händelser med <code>journalctl -u ssh.service -n 50 --no-pager -p info</code> och kontrollerar att journald-tillägget tillåter nivån <em>info</em>.",
|
||
"monitorEmptyTitle": "ProxMenux Monitor jail har inga poster även efter misslyckade inloggningar",
|
||
"monitorEmptyBody": "Jailen <code>[proxmenux]</code> läser <code>/var/log/proxmenux-auth.log</code>, 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 <code>/etc/apt/sources.list.d/debian.sources</code> med rätt kodnamn (<code>bookworm</code> / <code>trixie</code>) innan du går tillbaka. Om det fortfarande misslyckas, kontrollera <code>/etc/os-release</code> för <code>VERSION_CODENAME</code> och bekräfta att repo URL är tillgänglig.",
|
||
"lockoutTitle": "SSH låser mig efter installation",
|
||
"lockoutBody": "Installationsprogrammet sätter <code>MaxAuthTries=3</code>. Om din lösenordshanterare / agent har flera nycklar kan du överstiga det på ett enda anslutningsförsök. Begränsa nycklarna som erbjuds: <code>ssh -o IdentitiesOnly=yes -i ~/.ssh/specific_key user@host</code>. Eller tillfälligt höja <code>MaxAuthTries</code> i <code>sshd_config</code> 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."
|
||
}
|
||
}
|