Konfiguriranje Fail2Ban na Linuxu za zaštitu SSH, Apache, MySQL, Exim

Fail2ban omogućuje vam da blokirate pristup poslužitelju ili pokrenutim uslugama na temelju analize dnevnika i veza pristupa. Fail2Ban može automatski stvoriti pravila vatrozida za blokiranje određenih IP adresa ako se otkriju da su radnje s ove IP adrese sumnjive. Dakle, Fail2Ban može zaštititi vaš poslužitelj od nagađanja lozinkom putem SSH, DDoS napada, iskorištavati pokušaje eksploatacije i obavljanje zabranjenih radnji.

Svaka usluga poslužitelja čiji su portovi otvoreni za vanjski svijet potencijalno je ranjiva. Portovi nekih usluga mogu se zatvoriti, ali ne mogu svi. Na primjer, ako želite da usluga SMTP pošte funkcionira u potpunosti, ne možete je onemogućiti ili blokirati port na vatrozidu, a s vremena na vrijeme u zapisnicima možete vidjeti zapise o pokušaju odabira lozinke za račun. To se događa s drugim uslugama..

Obično na svim svojim poslužiteljima zatvaram SSH pristup izvana, jer Na svoje servere povezujem se sa svoje statičke IP adrese ili putem OpenVPN veze. Ali to nije uvijek moguće. Zamjena standardnih portova dolazi do pomoći ili konfiguracije na uslužnom poslužitelju fail2ban. U ovom ćemo primjeru pokazati kako instalirati i koristiti fail2ban na CentOS-u, no ovu upute možete koristiti i za ostale distribucije Linuxa..

sadržaj:

  • Instalacija i početna postava Fail2Ban u CentOS 8/7
  • Korištenje Fail2Ban za zaštitu SSH od ispitivanja lozinkom
  • Zapisi Fail2Ban
  • Osiguravanje Apachea pomoću programa Fail2Ban
  • Konfiguriranje Fail2Ban i Nginx paketa
  • Osiguravanje MySQL-a pomoću programa Fail2Ban
  • Pravila Fail2Ban za Exim
  • Fail2Ban IP lista, IP deblokiranje

Instalacija i početna postava Fail2Ban u CentOS 8/7

Paket za instaliranje fail2ban nalazi se u spremištu Epel, povezaćemo ga:

# yum instalirajte epel-release -y

Nakon spajanja spremišta, možete instalirati fail2ban putem yum ili dnf (na CentOS 8):

# yum instalirajte fail2ban -y

Kao i svaka druga usluga, fail2ban treba dodati za pokretanje kako bi se automatski pokrenuo pri ponovnom pokretanju sustava:

[root @ server ~] # systemctl omogućuju fail2ban

Izrađena symlink /etc/systemd/system/multi-user.target.wants/fail2ban.service → /usr/lib/systemd/system/fail2ban.service.

ured fail2ban pohranjuje konfiguracijske datoteke u mapu / etc / fail2ban. Glavna konfiguracijska datoteka - /etc/fail2ban/jail.conf. Budući da se ova datoteka može prebrisati prilikom ažuriranja usluge, da biste funkcionirali, morate stvoriti datoteku jail.local. Također datoteke u imeniku /etc/fail2ban/jail.d/ mogu se koristiti za nadjačavanje postavki u gore navedenim datotekama. Datoteke se primjenjuju sljedećim redoslijedom:

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

Korištenje Fail2Ban za zaštitu SSH od ispitivanja lozinkom

Stvorite datoteku i napravite postavke:

# nano /etc/fail2ban/jail.local

I dodajte sadržaj:

[DEFAULT] # Ban hosting for sat

Ova konfiguracija postavlja novo vrijeme za blokiranje IP adresa za sve usluge, postavlja upotrebu iptables za zaključavanje i omogućena je zaštita sshd-a.

Da biste koristili firewalld za filtriranje, navedite:

banaction = firewallcmd-ipset

Nakon promjene postavki ponovno pokrenite uslugu:

# systemctl ponovno pokretanje fail2ban

Da biste pogledali status fail2ban i provjerili popis zaštićenih usluga, pokrenite naredbu:

[root @ server ~] # fail2ban-status klijenta

Status | - Broj zatvora: 1 '- Popis zatvora: sshd 

Za određenu uslugu možete zatražiti trenutni status brave fail2ban:

# fail2ban-status klijenta sshd

U datoteci jail.conf mogu opisati opće parametre koji se neće nadjačati jail.local.

Otključajte liniju:

ignoreip = 127.0.0.1/8

Promijenite sljedeće vrijednosti:
bantime = 10m - vrijeme za koje će IP biti blokiran
pronalazak = 10m - vrijeme tijekom kojeg će se neuspjeli pokušaji autorizacije računati.
maxretry = 3 - broj pokušaja prije blokiranja

Da biste primili upozorenja putem e-pošte, morate konfigurirati sljedeće opcije:
destemail = [email protected] -primatelja
pošiljatelj = [email protected] - pošiljalac
mta = postfiks - SMTP usluga putem koje se šalje

Da biste konfigurirali blokiranje za pojedinačne usluge, u datoteci /etc/fail2ban/jail.local nakon bloka [DEFAULT] stvara se blok za željenu uslugu, na primjer, kao sshd. Dodajte mu neke postavke:

[sshd] omogućen = istinski port = ssh logpath =% (sshd_log) s

Naveli smo koji port blokirati i gdje napisati zapise o blokiranju. Obratite pozornost na imenik /etc/fail2ban/filter.d, tamo su opisani filtri pomoću kojih će se analizirati unosi u zapisnik i provjeriti pokazuje li ovaj ili onaj unos neuspješnu provjeru autentičnosti. Ako datoteke pronađete u direktoriju, možete pronaći pravila fail2ban za većinu najpopularnijih usluga:
# ls /etc/fail2ban/filter.d

Datoteke su opisane vrlo detaljno i možete proučiti što vam je potrebno da shvatite kako se događaju provjere zapisa..

Zapisi Fail2Ban

Da biste provjerili zapisnik fail2ban, izvrši naredbu:

# journalctl -b -u fail2ban

Također možete provjeriti zapisnike u stvarnom vremenu:

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

Izlaz zapisa:

2019-12-05 12: 13: 26.914 fail2ban.action [9750]: OBAVIJEST [sshd] Vrati zabranu 222.186.180.17 2019-12-05 12: 13: 26.930 fail2ban.action [9750]: OBAVIJEST [sshd] Vraćanje ban 222.186 .180.223 2019-12-05 12: 13: 26.944 fail2ban.action [9750]: OBAVIJEST [sshd] Restore Ban 36.72.82.10 2019-12-05 12: 13: 26.958 fail2ban.action [9750]: OBAVIJEST [sshd] Restore Zabrana 40.117.135.57 2019-12-05 12: 13: 26.973 fail2ban.action [9750]: OBAVIJEST [sshd] Vraćanje zabrane 45.55.155.224 2019-12-05 12: 13: 26.988 fail2ban.action [9750]: OBAVIJEST [sshd ] Vrati ban 67.205.135.127 2019-12-05 12: 13: 27.003 fail2ban.action [9750]: OBAVIJEST [sshd] Resto Ban Ban 83.171.107.216 2019-12-05 12: 13: 43.362 fail2ban.filter [9750]: INFO [sshd] Pronađeno 183.87.134.98 - 2019-12-05 12:13:42 2019-12-05 12: 13: 45.571 fail2ban.filter [9750]: INFO [sshd] Pronađeno 183.87.134.98 - 2019-12-05 12 : 13: 45 2019-12-05 12: 15: 46,109 fail2ban.filter [9750]: INFO [sshd] Pronađeno 112.64.170.178 - 2019-12-05 12:15:45 2019-12-05 12: 17: 05.317 fail2ban.action [9750]: OBAVIJEST [sshd] Unba n 222.186.175.216

Kao što vidite, fail2ban djeluje i povremeno blokira ili uklanja blokiranje za IP adrese.

Da biste provjerili koje su IP adrese blokirane u iptables fail2ban, učinite:

# iptables -L

Kao što vidite, ssh otvorenim prema van, s vremena na vrijeme, netko pokušava pokupiti lozinku i prijaviti se. Ako provjerite statistiku nakon nekog vremena, vidjet ćete da broj blokiranih IP-ova raste.

Osiguravanje Apachea pomoću programa Fail2Ban

Ako želite prilagoditi fail2ban za svoj apache (httpd) dodajte sljedeće postavke jail.local:

# otkrivanje neuspjelih pokušaja lozinke [apache] omogućen = istinski port = http, https filter = apache-auth logpath = / var / log / httpd / error_log maxretry = 3 # blokira IP-ove koji izravno pristupaju skriptu s nastavkom php, asp, ege, pl, cgi, scgi [apache-noscript] omogućen = istinski port = http, https filter = apache-noscript logpath = / var / log / httpd / error_log maxretry = 3 # otkrivanje pokušaja prelijevanja Apache [apache-overflows] omogućeno = true port = http, https filter = apache-overflows logpath = / var / log / httpd / error_log maxretry = 2 # otkrivanje neuspjelih pokušaja pretraživanja u kućnom direktoriju na poslužitelju [apache-nohome] omogućen = true port = http, https filter = apache -nohome logpath = / var / log / httpd / * error_log maxretry = 2

Nakon promjene konfiguracijske datoteke ponovno pokrećemo uslugu i provjeravamo stanje:

[root @ server ~] # fail2ban-status klijenta

Status zatvora: apache | - Filter | | - Trenutno nije uspjelo: 0 | | - Ukupno nije uspjelo: 0 | '- Popis datoteka: / var / log / httpd / error_log' - Akcije | - Trenutno je zabranjeno: 0 | - Ukupno zabranjeno: 0 '- Zabranjeni IP popis:

Za test sam instalirao na poslužitelj Joomla, nakon čega sam pokušao otvoriti nepostojeću datoteku i fail2ban blokirao me:

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

Status zatvora: apache-noscript | - Filter | | - Trenutno nije uspjelo: 1 | | - Ukupno nije uspjelo: 6 | '- Popis datoteka: / var / log / httpd / error_log' - Akcije | - Trenutno je zabranjeno: 1 | - Ukupno zabranjeno: 1 '- Zabranjeni IP popis: *. *. *. *

Konfiguriranje Fail2Ban i Nginx paketa

Ako ste web poslužitelj Nginx a web stranica ima odjeljke koji zahtijevaju autorizaciju, možda ćete imati problema i s pokušajima nabrajanja zaporki. za fail2ban možemo odrediti kako bismo koristili datoteku Nginx-http-auth.conf, To je prema zadanim postavkama već opisano u konfiguracijskoj datoteci. /etc/fail2ban/jail.conf:

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

[nginx-http-auth] logpath =% (nginx_error_log) s # Da biste koristili zatvor 'nginx-limit-req', trebali biste imati 'ngx_http_limit_req_module' # i definirati 'limit_req' i 'limit_req_zone' kako je opisano u nginx dokumentaciji # http: / /nginx.org/en/docs/http/ngx_http_limit_req_module.html # ili na primjer pogledajte u '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

Trebamo li ga uključiti u konfiguracijsku datoteku /etc/fail2ban/jail.local dodavanjem:

[nginx-http-auth] omogućeno = istina

Nakon svih postavki, ne zaboravite ponovo pokrenuti uslugu:

# systemctl ponovno pokretanje fail2ban

Osiguravanje MySQL-a pomoću programa Fail2Ban

Da biste zaštitili MySQL, morate dodati zasebni blok u konfiguracijsku datoteku jail.local:

[mysqld-auth] omogućen = istinski filter = mysqld-auth port = 3306 logpath = /var/log/mysql/error.log

Ova postavka zaštitit će vas od nagađanja lozinkom za mysql korisnika (ovo je vrlo česta gruba sila).

Pravila Fail2Ban za Exim

Da biste konfigurirali sigurnost za uslugu Exim pošte, napravite sljedeću konfiguraciju:

[exim] omogućeno = istinski filter = exim akcija = iptables-multiport [ime = exim, port = "25,465,587"] logpath = / var / log / exim / mainlog

Tako možete prilagoditi fail2ban raditi s gotovo svim popularnim uslugama i vaš će poslužitelj postati što sigurniji.

Fail2Ban IP lista, IP deblokiranje

Za otključavanje IP-a koji je blokiran fail2ban, koristite naredbu:

# fail2ban-client set SECTION uklanjanje IP adrese - gdje je SECTION naziv odjeljka u konfiguracijskoj datoteci, prema pravilima čija je IP adresa bila blokirana. Na primjer:

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

Možete dodati određene IP adrese u iznimke fail2ban (bijela lista). Da biste to učinili, u konfiguracijskoj datoteci jail.conf unesite IP u red:

ignoreip = 185. *. *. *

Dodavanjem IP adrese izuzecima izvršio sam nekoliko napada poput prethodnog i blokiranje se nije dogodilo.

Kao što vidite, fai2ban je prilično jednostavno postaviti, ali je prilično učinkovito sredstvo dodatne zaštite vašeg poslužitelja od uljeza. Nažalost, za Windows nisam vidio besplatne programe slične funkcionalnosti (možete pokušati blokirati IP adrese pomoću PowerShell-a - pogledajte članak Zaštita RDP-a od provjere lozinke).