Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
| Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
| it:server:fail2ban [2022/11/19 20:53] – Petr Nosek | it:server:fail2ban [2022/11/19 22:21] (aktuální) – Petr Nosek | ||
|---|---|---|---|
| Řádek 9: | Řádek 9: | ||
| cp jail.conf jail.local | cp jail.conf jail.local | ||
| </ | </ | ||
| + | |||
| + | zdroje k nastavení fail2ban: | ||
| + | |||
| + | * https:// | ||
| + | * https:// | ||
| Řádek 14: | Řádek 19: | ||
| - | Pro webserver jsem nastavoval, aby se zablokoval při portscanningu přístup na všechny porty, kromě 80 a 443. K tomu mi posloužil vytvoření soubor **/ | + | Pro webserver jsem nastavoval, aby se zablokoval při portscanningu přístup na všechny porty, kromě 80 a 443. K tomu mi posloužil vytvoření soubor **/ |
| + | |||
| + | V githubu je soubor ještě více předělaný, | ||
| + | https:// | ||
| + | |||
| + | Pokud bych provozoval ještě nějaké další služby, musel bych je přidat, abych do tohoto skriptu. Protože pokud někdo udělá portscan, tak se zaříznou všechny služby, kromě žádoucích 80 a 443. | ||
| <code bash> | <code bash> | ||
| Řádek 72: | Řádek 83: | ||
| Tady je konfigurace k jednotlivým službám. Každá služba zapisuje do syslogu pokusy o přihlášení v různém formátu. Filtry skrz regulární výrazy ukazují, co hledat. Tím, si lze fail2ban rozšířit i na služby, pro které defaultně určen není. | Tady je konfigurace k jednotlivým službám. Každá služba zapisuje do syslogu pokusy o přihlášení v různém formátu. Filtry skrz regulární výrazy ukazují, co hledat. Tím, si lze fail2ban rozšířit i na služby, pro které defaultně určen není. | ||
| - | Přidáme **/ | + | Přidáme **/ |
| <code bash> | <code bash> | ||
| Řádek 276: | Řádek 287: | ||
| ===== Editace jail.local ===== | ===== Editace jail.local ===== | ||
| - | Tady se odehrává zbytek nastavení fail2ban. Sepisuji zejména změny, které jsem provedl. U SSH jsem si změnil port a to je potřeba promítnout i v konfiguraci. Je tam vidět port 3333. | + | |
| + | Nejprve | ||
| < | < | ||
| + | banaction = iptables-ipset-proto6 | ||
| + | banaction_allports = iptables-ipset-proto6-allports | ||
| + | </ | ||
| - | ignoreip | + | Zkoušel jsem zvolit banaction |
| + | Služby, na kterých má fail2ban vyset se musí zapnout pomocí enabled = true. U SSH jsem volil mód aggressive. Blokace je 10 minut pro všechny služby, pokud zkusí 3 a více pokusů za posledních 10 minut. | ||
| + | < | ||
| + | # " | ||
| + | bantime | ||
| + | |||
| + | # A host is banned if it has generated " | ||
| + | # seconds. | ||
| + | findtime | ||
| + | |||
| + | # " | ||
| + | maxretry = 3 | ||
| + | </ | ||
| + | |||
| + | |||
| + | Tady se odehrává zbytek nastavení fail2ban. Sepisuji zejména změny, které jsem provedl. U SSH jsem si změnil port a to je potřeba promítnout i v konfiguraci. Je tam vidět port 3333. | ||
| + | |||
| + | < | ||
| + | |||
| + | ignoreip = 127.0.0.1/8 ::1 | ||
| [sshd] | [sshd] | ||
| Řádek 291: | Řádek 325: | ||
| mode = aggressive | mode = aggressive | ||
| port = ssh,3333 | port = ssh,3333 | ||
| + | filter | ||
| logpath = %(sshd_log)s | logpath = %(sshd_log)s | ||
| backend = %(sshd_backend)s | backend = %(sshd_backend)s | ||
| enabled = true | enabled = true | ||
| + | [nextcloud] | ||
| + | |||
| + | enabled | ||
| + | port = http,https | ||
| + | filter | ||
| + | logpath | ||
| + | maxretry = 6 | ||
| + | |||
| + | |||
| + | #[ufwban] | ||
| + | #enabled = false | ||
| + | #port = ssh, http, https | ||
| + | #filter = ufwban | ||
| + | #logpath = / | ||
| + | #action = ufw | ||
| + | |||
| + | </ | ||
| + | |||
| + | Dále jsem přidal sshd-slow, který zabanuje ssh pro případ, že se za 1 den někdo zkusí celkem 10x přihlásit. V tomto případě zablokuje na 1week. To už je docela problematický prohřešek. | ||
| + | |||
| + | < | ||
| [sshd-slow] | [sshd-slow] | ||
| filter | filter | ||
| + | port = ssh, 3333 | ||
| maxretry = 6 | maxretry = 6 | ||
| findtime = 1d | findtime = 1d | ||
| Řádek 304: | Řádek 361: | ||
| backend | backend | ||
| enabled | enabled | ||
| - | |||
| - | |||
| - | [ufw-port-scan] | ||
| - | enabled = true | ||
| - | filter | ||
| - | logpath = / | ||
| - | banaction = ufw-portscan | ||
| - | bantime | ||
| - | maxretry | ||
| - | findtime | ||
| Řádek 336: | Řádek 383: | ||
| action= %(action_mwl)s | action= %(action_mwl)s | ||
| filter=vpnserver | filter=vpnserver | ||
| + | </ | ||
| + | Pozapínal jsem další smysluplné věci, jako apache, fakegoogle boty atp. | ||
| + | Zapnul jsem i recidive. Pokud někdo bude mít ban 3x za 12 hodin, bude celá IP adresa zablokovaná na 1 týden. Tady budu muset být opatrný a kontrolovat, | ||
| + | |||
| + | < | ||
| [recidive] | [recidive] | ||
| enabled = true | enabled = true | ||
| Řádek 346: | Řádek 398: | ||
| </ | </ | ||
| + | Poslední, co jsem aplikoval je ochrana na portscan. Tady je to opět potenciálně nebezpečná záležitost u webserveru. V praxi to prochází log, hledá jednoduchý řetězec, zda byla ip adresa zablokovaná a pokud byla zablokovaná 10x, tak proběhne ban skrz ufw. | ||
| + | |||
| + | Problémy jsou tam tyto: | ||
| + | * Nečíslovaný seznamNečíslovaný seznamufw mám na loglevel = low, takže když někdo oskenuje všechny porty, tak se neprovedou tisíce záznamů do logu, ale jenom pár. Zvyšovat hodnotu zase nemá smysl kvůli zpomalení sítě a serveru. | ||
| + | * pokud mi tam bude padat moc IP adres, tak ufw nebude dobrá volba, kvůli velkému počtu IP adres. Může pak dojít ke zpomalení. Tady je řešení vytvořit v **action.d/ | ||
| + | |||
| + | < | ||
| + | [ufw-port-scan] | ||
| + | enabled = true | ||
| + | filter | ||
| + | logpath = / | ||
| + | banaction = ufw-portscan | ||
| + | bantime | ||
| + | maxretry | ||
| + | findtime | ||
| + | </ | ||
| + | |||
| + | |||
| + | zdroje ohledně aplikace portscanu: | ||
| + | * https:// | ||
| + | * https:// | ||
| ===== Vyřazení IP adresy z banlistu ===== | ===== Vyřazení IP adresy z banlistu ===== | ||