Konfigurácia Fail2Ban v systéme Linux na ochranu SSH, Apache, MySQL, Exim

fail2ban umožňuje zablokovať prístup k serveru alebo spusteným službám na základe analýzy prístupových protokolov a pripojení. Fail2Ban dokáže automaticky vytvoriť pravidlá brány firewall na blokovanie konkrétnych adries IP, ak sú akcie z tejto adresy IP podozrivé. Fail2Ban teda môže chrániť váš server pred hádaním hesla pomocou SSH, útokmi DDoS, zneužitím pokusov o zneužitie a vykonaním zakázaných akcií..

Akákoľvek služba servera, ktorej porty sú otvorené pre vonkajší svet, je potenciálne zraniteľná. Porty niektorých služieb je možné uzavrieť, ale nie všetky to dokážu. Napríklad, ak chcete, aby vaša poštová služba SMTP fungovala úplne, nemôžete ju zakázať alebo zablokovať port na bráne firewall a z času na čas môžete vidieť denníky v protokoloch o pokuse o výber hesla pre účet. Stáva sa to pri iných službách..

Zvyčajne na všetkých mojich serveroch zatvorím prístup SSH zvonku, pretože Na svoje servery sa pripájam z mojej statickej adresy IP alebo prostredníctvom pripojenia OpenVPN. Nie je to však vždy možné. Výmena štandardných portov prichádza k záchrane alebo sa konfiguruje na servisnom serveri fail2ban. V tomto príklade ukážeme, ako nainštalovať a používať fail2ban na serveri CentOS, túto inštrukciu však môžete použiť aj pre ďalšie distribúcie systému Linux..

obsah:

  • Inštalácia a počiatočné nastavenie Fail2Ban v CentOS 8/7
  • Použitie Fail2Ban na ochranu SSH pred skúškou pomocou hesla
  • Protokoly Fail2Ban
  • Zabezpečenie Apache pomocou Fail2Ban
  • Konfigurácia balíkov Fail2Ban a Nginx
  • Zabezpečenie MySQL pomocou Fail2Ban
  • Pravidlá vyjednávania Fail2Ban
  • Fail2Ban IP Whitelist, odblokovanie IP

Inštalácia a počiatočné nastavenie Fail2Ban v CentOS 8/7

Balík na inštaláciu fail2ban je v úložisku Epel, pripojíme ho:

# yum install epel-release -y

Po pripojení úložiska môžete nainštalovať fail2ban cez yum alebo dnf (na CentOS 8):

# yum install fail2ban -y

Ako každá iná služba, fail2ban je potrebné pridať do spustenia, aby sa spustilo automaticky pri reštarte systému:

[root @ server ~] # systemctl povoliť fail2ban

Vytvorené symlink /etc/systemd/system/multi-user.target.wants/fail2ban.service → /usr/lib/systemd/system/fail2ban.service.

kancelária fail2ban ukladá konfiguračné súbory do adresára / etc / fail2ban. Hlavný konfiguračný súbor - /etc/fail2ban/jail.conf. Keďže tento súbor je možné pri aktualizácii služby prepísať, musíte na jeho vytvorenie vytvoriť súbor jail.local. Tiež súbory v adresári /etc/fail2ban/jail.d/ možno použiť na prepísanie nastavení vo vyššie uvedených súboroch. Súbory sa používajú v tomto poradí:

  • /etc/fail2ban/jail.conf
  • /etc/fail2ban/jail.d/*.conf
  • /etc/fail2ban/jail.local
  • /etc/fail2ban/jail.d/*.local

Použitie Fail2Ban na ochranu SSH pred skúškou pomocou hesla

Vytvorte súbor a vykonajte nastavenia:

# nano /etc/fail2ban/jail.local

A k tomu pridajte obsah:

[DEFAULT] # Zakázať hostiteľov na jednu hodinu: bantime = 3600 # Prepísať /etc/fail2ban/jail.d/00-firewalld.conf: banaction = iptables-multiport [sshd] enabled = true

Táto konfigurácia nastavuje nový čas na blokovanie IP adries pre všetky služby, nastavuje použitie iptables pre zámky a je povolená ochrana pre sshd.

Ak chcete na filtrovanie použiť bránu firewall, zadajte:

banaction = firewallcmd-ipset

Po zmene nastavení reštartujte službu:

# systemctl restart fail2ban

Ak chcete zobraziť stav fail2ban a skontrolovať zoznam chránených služieb, spustite príkaz:

[root @ server ~] # fail2ban-client status

Stav | - Počet väzníc: 1 '- Zoznam väzenia: sshd 

Môžete požiadať o aktuálny stav zámku fail2ban pre konkrétnu službu:

# fail2ban-client status sshd

V súbore jail.conf môže opísať všeobecné parametre, ktoré nebudú prepísané v jail.local.

Odomknite riadok:

ignoreip = 127.0.0.1/8

Zmeňte nasledujúce hodnoty:
bantime = 10 m - čas, po ktorý bude IP blokovaná
findtime = 10m - čas, počas ktorého sa spočítajú neúspešné pokusy o autorizáciu.
maxretry = 3 - počet pokusov pred zablokovaním

Ak chcete dostávať e-mailové upozornenia, musíte nakonfigurovať nasledujúce možnosti:
destemail = [email protected] -príjemca
sender = [email protected] - odosielateľ
mta = postfix - SMTP služba, prostredníctvom ktorej sa odosiela

Ak chcete nakonfigurovať blokovanie pre jednotlivé služby, v súbore /etc/fail2ban/jail.local po bloku [VÝCHOZÍ] sa vytvorí blok pre požadovanú službu, napríklad s sshd. Pridajte k nemu niektoré nastavenia:

[sshd] enabled = true port = ssh logpath =% (sshd_log) s

Uviedli sme, ktorý port sa má blokovať a kam sa majú zapisovať blokovacie protokoly. Venujte pozornosť adresáru /etc/fail2ban/filter.d, tam sú opísané filtre, pomocou ktorých sa budú analyzovať záznamy v protokole a na kontrolu, či tento alebo ten záznam naznačuje neúspešnú autentifikáciu. Ak uvediete súbory v adresári, nájdete pravidlá fail2ban pre najobľúbenejšie služby:
# ls /etc/fail2ban/filter.d

Súbory sú podrobne opísané a môžete študovať, čo potrebujete na pochopenie toho, ako sa vykonávajú kontroly protokolov..

Protokoly Fail2Ban

Skontrolujte denník fail2ban, spustiť príkaz:

# journalctl -b -u fail2ban

Denníky môžete skontrolovať aj v reálnom čase:

# tail -F /var/log/fail2ban.log

Výstup protokolu:

2019-12-05 12: 13: 26,914 fail2ban.actions [9750]: UPOZORNENIE [sshd] Restore Ban 222.186.180.17 2019-12-05 12: 13: 26,930 fail2ban.actions [9750]: NOTICE [sshd] Restore Ban 222.186 .180.223 2019-12-05 12: 13: 26,944 fail2ban.actions [9750]: UPOZORNENIE [sshd] Restore Ban 36.72.82.10 2019-12-05 12: 13: 26,958 fail2ban.actions [9750]: NOTICE [sshd] Restore Ban 40.117.135.57 2019-12-05 12: 13: 26,973 fail2ban.actions [9750]: NOTICE [sshd] Restore Ban 45.55.155.224 2019-12-05 12: 13: 26,988 fail2ban.actions [9750]: NOTICE [sshd ] Obnoviť zákaz 67.205.135.127 2019-12-05 12: 13: 27,003 fail2ban.actions [9750]: UPOZORNENIE [sshd] Restore Ban 83.171.107.216 2019-12-05 12: 13: 43,362 fail2ban.filter [9750]: INFO [sshd] Nájdené 183,87,139,98 - 2019-12-05 12:13:42 2019-12-05 12: 13: 45 571 fail2ban.filter [9750]: INFO [sshd] nájdené 183,87,139,88 - 2019-12-05 12 : 13: 45 2019-12-05 12: 15: 46,109 fail2ban.filter [9750]: INFO [sshd] Nájdené 112.64.170.178 - 2019-12-05 12:15:45 2019-12-05 12: 17: 05,317 fail2ban.actions [9750]: UPOZORNENIE [sshd] Unba n 222,186,75,216

Ako vidíte, fail2ban funguje a pravidelne blokuje alebo odstraňuje blokovanie adries IP.

Ak chcete skontrolovať, ktoré adresy IP sú blokované v iptables pomocou fail2ban, postupujte takto:

# iptables -L

Ako vidíte, s ssh otvoreným zvonka sa čas od času niekto pokúsi vyzdvihnúť heslo a prihlásiť sa. Ak po určitom čase štatistiku skontrolujete, môžete vidieť, že počet blokovaných adries IP rastie.

Zabezpečenie Apache pomocou Fail2Ban

Ak si chcete prispôsobiť fail2ban pre svoj apache (httpd) pridajte nasledujúce nastavenia do jail.local:

# detekovať neúspešné pokusy o heslo [apache] enabled = true port = http, https filter = apache-auth logpath = / var / log / httpd / error_log maxretry = 3 # blokuje adresy IP, ktoré priamo pristupujú ku skriptom s príponou php, asp, exe, pl, cgi, scgi [apache-noscript] enabled = true port = http, https filter = apache-noscript logpath = / var / log / httpd / error_log maxretry = 3 # detekovať pokusy o pretečenie Apache [apache-overflows] enabled = true port = http, https filter = apache-overflows logpath = / var / log / httpd / error_log maxretry = 2 # detekovať neúspešné pokusy o vyhľadávanie v domovskom adresári na serveri [apache-nohome] enabled = true port = http, https filter = apache -nohome logpath = / var / log / httpd / * error_log maxretry = 2

Po zmene konfiguračného súboru reštartujeme službu a skontrolujeme stav:

[root @ server ~] # fail2ban-client status apache

Stav väzenia: apache | - Filter | - V súčasnosti neúspešné: 0 - Celkom zlyhalo: 0 '- Zoznam súborov: / var / log / httpd / error_log' - Činnosti | - Momentálne zakázané: 0 | - Celkom zakázané: 0 '- Zoznam zakázaných IP:

Pre test som nainštaloval na server joomla, potom som sa pokúsil otvoriť neexistujúci súbor a fail2ban zablokovaný ma:

[root @ server httpd] # fail2ban-client status apache-noscript

Stav väzenia: apache-noscript | - Filter | - V súčasnosti neúspešné: 1 - Celkom neúspešné: 6 '- Zoznam súborov: / var / log / httpd / error_log' - Činnosti | - Momentálne zakázané: 1 | - Celkom zakázané: 1 '- Zoznam zakázaných IP: *. *. *. *

Konfigurácia balíkov Fail2Ban a Nginx

Ak ste webový server Nginx a stránka obsahuje sekcie vyžadujúce autorizáciu, môžete mať tiež problémy s pokusmi o vyčíslenie hesiel. pre fail2ban môžeme určiť použitie súboru Nginx-http-auth.conf, V predvolenom nastavení je už uvedený v konfiguračnom súbore. /etc/fail2ban/jail.conf:

[root @ server ~] # cat /etc/fail2ban/jail.conf | grep nginx

[nginx-http-auth] logpath =% (nginx_error_log) s # Aby ste mohli používať väzbu 'nginx-limit-req', mali by ste mať 'ngx_http_limit_req_module' # a definovať 'limit_req' a 'limit_req_zone' podľa popisu v dokumentácii nginx # http: / /nginx.org/en/docs/http/ngx_http_limit_req_module.html # alebo napríklad pozrite si 'config / filter.d / nginx-limit-req.conf' [nginx-limit-req] logpath =% (nginx_error_log) s [ nginx-botsearch] logpath =% (nginx_error_log) s logpath =% (nginx_access_log) s

Musíme ho zahrnúť do konfiguračného súboru /etc/fail2ban/jail.local pridaním:

[nginx-http-auth] enabled = true

Po všetkých nastaveniach nezabudnite reštartovať službu:

# systemctl restart fail2ban

Zabezpečenie MySQL pomocou Fail2Ban

Ak chcete chrániť MySQL, musíte do konfiguračného súboru pridať samostatný blok jail.local:

[mysqld-auth] enabled = true filter = mysqld-auth port = 3306 logpath = /var/log/mysql/error.log

Toto nastavenie vás ochráni pred hádaním hesla pre používateľa mysql (jedná sa o veľmi častú hrubú silu).

Pravidlá vyjednávania Fail2Ban

Ak chcete nakonfigurovať zabezpečenie poštovej služby Exim, vykonajte nasledujúcu konfiguráciu:

[exim] enabled = true filter = exim action = iptables-multiport [name = exim, port = "25,465,587"] logpath = / var / log / exim / mainlog

Takže si môžete prispôsobiť fail2ban pracovať s takmer všetkými populárnymi službami a váš server bude čo najbezpečnejší.

Fail2Ban IP Whitelist, odblokovanie IP

Odomknutie blokovanej adresy IP fail2ban, použite príkaz:

# fail2ban-client set SECTION unbanip IP - kde SECTION je názov sekcie v konfiguračnom súbore podľa pravidiel, pre ktoré bola zablokovaná vaša adresa IP. Napríklad:

# fail2ban-client set apache-noscript unbanip 185. *. *. *

Do výnimiek fail2ban (whitelist) môžete pridať konkrétne adresy IP. V konfiguračnom súbore to urobíte jail.conf do riadku zadajte IP:

ignoreip = 185. *. *. *

Pridaním mojej adresy IP k výnimkám som vykonal niekoľko útokov ako ten predchádzajúci a blokovanie sa nestalo.

Ako vidíte, nastavenie fai2ban sa dá pomerne ľahko nastaviť, ale je to pomerne účinný prostriedok dodatočnej ochrany servera pred votrelcami. Pokiaľ ide o Windows, nanešťastie som nevidel bezplatné programy s podobnou funkčnosťou (môžete sa pokúsiť blokovať IP adresy pomocou PowerShell - pozri článok Ochrana RDP pred skúškou pomocou hesla).