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