Instalirajte Fail2ban i povežite ga sa SSH -om i Nginxom

Kada smo montirali poslužitelj s Linuxom i želimo njime upravljati s interneta putem SSH daljinskog upravljača, može se dogoditi da počnemo primati napade s ciljem ulaska u sustav i mogućnosti upravljanja njime u njegove svrhe. Te napade obično izvode računalni programi (botovi) koji dugo pokušavaju pristupiti sustavu primjenom grube sile.

U prethodnim sam postovima govorio o tome kako konfigurirati SSH uslugu, ali neki napredni botovi ne ulaze u uslugu, ali mogu ubiti SSH uslugu na poslužitelju onemogućivanjem daljinskog pristupa.

Cjeloviti priručnik za SSH (Secure Shell)

To možemo izbjeći korištenjem fail2ban alat, vrlo je praktičan i nudi veliku granicu sigurnosti. Da malo objasnim kako to funkcionira. Sposoban je stvoriti iptables prije neuspjelog pokušaja prijave više od 5 puta zaredom, odbacujući bilo koju vrstu veze nakon što je zabranjena.

Instalirajte Fail2ban


Instalacija se može izvesti iz apt -a izravno. Prvo ažuriramo sustav, a zatim instaliramo Fail2ban.
 apt-get update && apt-get -y nadogradnja
 apt-get install fail2ban
Time se ne samo instalira program, već se ostavlja i pokrenut sa sustavom.

Konfiguriranje Fail2ban


Usluga Fail2ban ima svoje postavke u imeniku / etc / fail2ban. Imate neke unaprijed konfigurirane opcije u jail.conf, najbolje u ovom slučaju je kopirati datoteku i ne izvršavati izmjene izravno u njoj, pri ažuriranju fail2ban ove datoteke se prepisuju i možete izgubiti sve prethodno napravljene promjene.

U ovom slučaju kopiramo datoteku i dajemo joj ime jail.local kako bi je mogao pronaći.

 sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Nakon kopiranja možemo ga otvoriti i vidjeti kako radi.
 vim /etc/fail2ban/jail.local
Unutar datoteke imamo nekoliko parametara koje možemo prilagoditi. Svaki parametar koji se nalazi pod oznakom [DEFAULT] primijenit će se na sve usluge koje Fail2ban omogućuje, poput SSH -a, NGINX -a, APACHE -a, nazvat ćemo to globalnim, tada ćemo imati posebne odjeljke za svaku uslugu.

Počet ćemo dodavanjem parametara u globalni odjeljak.

 ignoreip = 127.0.0.1
Dodajemo naš localhost na ovaj način da će zanemariti sav lokalni promet, možemo dodati dodatne adrese koje ih odvajaju razmakom.
 bantime = 600
Bantime je razdoblje u kojem će klijent biti blokiran nakon što je blokiran. Jedinica je u sekundama 600 sekundi bi bilo 10 minuta je zadana vrijednost.
 vrijeme nalaza = 600 maxretry = 3
Zatim imamo vrijeme za pronalaženje i maxretry. Oni su odgovorni za uspostavljanje uvjeta da klijent bude zabranjen prema zadanim postavkama, može se pročitati da će svaki korisnik s više od 3 neuspješna pokušaja u manje od 10 minuta biti zabranjen.
 destemail = root @ localhost sendername = Fail2Ban mta = sendmail
Ako želimo stvoriti upozorenja za zabranjene korisnike, ova 3 parametra su neophodna, definirat ćemo odredište kome ćemo poslati e -poruku s upozorenjem, tko će biti zadužen za njegovo slanje i na kraju mta za definiranje usluge e -pošte koju ćemo koristiti .
 akcija = $ (action_) s
Ovdje ćemo definirati što treba poduzeti kada je potrebna zabrana. Vrijednost action_ vrijednost je zadana radnja koja se temelji na odbijanju bilo kakvog prometa klijenta do isteka vremena zabrane.

Ako želimo poslati upozorenje poštom, moramo promijeniti vrijednost u action_mw, ali ako želimo da i ona priloži retke dnevnika u tijelu pošte, upotrijebit ćemo action_mwl. Prije promjene ove vrijednosti moramo biti sigurni da su postavke pošte točne.

Postavke prema usluzi


Nakon što su globalne konfiguracije dovršene, dodat ćemo parametre koji će se primjenjivati ​​isključivo na

SSH uslugu, svakako dodajemo opcije pod oznakom [SSH].

 omogućeno = istina
Prema zadanim postavkama usluga SSH je omogućena, ali možemo je po potrebi izmijeniti u ovoj opciji.

Sav ovaj odjeljak mogao bi funkcionirati s vrijednostima koje ću kasnije detaljno opisati, ali možete ih izmijeniti kako biste ih prilagodili svojim potrebama ili ih sve ostavite prema zadanim postavkama.

Druga konfiguracija su filtri koji pokazuju jesu li prijave točne ili ne i mogu se dodati za druge usluge, na primjer imamo poslužitelj s nginxom i dio stranice zaštićen je lozinkom, ali klijent napada grubom silom , ovo možemo zaustaviti dodavanjem sljedećeg ispod oznake [nginx-http-auth].

 [nginx-http-auth] omogućeno = pravi filter = nginx-http-auth port = http, https logpath = /var/log/nginx/error.log
Sada, ako korisnik ima više od 3 neuspjela pokušaja prijave, to se odražava u zapisnicima i fail2ban će djelovati i blokirati sav korisnički promet.

Ispitno okruženje


Nakon što smo razumjeli osnove, napravit ćemo malo okruženje za testiranje u kojem ćemo zaštititi SSH i Nginx putem Fail2bana stvaranjem politike zabrane koja će nas obavijestiti o IP -u koji je zabranjen.

Prvo ćemo instalirati Nginx ako nije instaliran

 apt-get install nginx
instalirat ćemo uslugu pošte za obavijesti to može biti sendmail
 apt-get install sendmail
konačno želimo da naši iptables budu trajni nakon pokretanja, možemo ili stvoriti rc.0 skriptu ili instalirati iptables-persistent paket.
 apt-get install iptables-persistent
Bit će instaliran.

Uspostavljanje našeg vatrozida


Nakon instaliranja gore navedenog, moramo implementirati vatrozid tako da može blokirati promet. U kasnijim postovima izradit ću osnovni vatrozid. Govorit ću više o iptablesima.

Dopustit ćemo uspostavljene veze, promet poslužitelja, poput ažuriranja, i promet namijenjen za SSH i Nginx portove. Sav preostali promet bit će odbijen.

 sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED, RELATED -j ACCEPT sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 80 -j PRIHVATI sudo iptables -A ULAZ -j DROP
Promjene možemo vidjeti sa:
 iptables -S
To bi trebalo dati sličan rezultat.
 -P INPUT ACCEPT -P NAPRIJED ACCEPT -P OUTPUT ACCEPT -N fail2ban -ssh -A INPUT -p tcp -m multiport --dports 22 -j fail2ban -ssh -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate POVEZANO, USTANOVLJENO -j PRIHVATANJE -A ULAZ -p tcp -m tcp --dport 22 -j PRIHVATANJE -A ULAZ -p tcp -m tcp --dport 80 -j PRIHVATANJE -A ULAZ -j DROP -A fail2ban -ssh -j POVRATAK

Podešavanje Fail2ban postavki


Sada moramo konfigurirati datoteku jail.local kad nam odgovara.
 vi /etc/fail2ban/jail.local
Možemo produžiti vrijeme zabrane za najmanje 30 minuta. Ne zaboravite postaviti vrijednost u sekundama.
 bantime = 1800
Moramo konfigurirati e -poštu koja prima sva upozorenja o zabrani fail2ban, potražimo vrijednost e -pošte u datoteci i stavimo e -poruku.
 destemail = [email protected]
Možemo promijeniti pošiljatelja koji će poslati upozorenje koje obično postavljam s imenom fail2ban kako bismo mogli bolje filtrirati sve zapisnike.

Nakon što moramo promijeniti vrijednost radnje, imamo 2 mogućnosti:

  • akcija_mw: šalje upozorenje s izvješćem slično whois naredbi zabranjenog klijenta.
  • action_mwl: poslati mnogo detaljnije upozorenje uključivanjem zapisnika u tijelo poruke.

U ovom ćemo poslužiti drugom opcijom:

 radnja =% (action_mwl) s 
Zatim idemo na odjeljak [SSH] i možemo urediti maksimalni broj pokušaja prije zabrane, ostavit ćemo to na 5:
 maxretry = 5
Ako imamo SSH uslugu na portu koji nije 22, što se jako preporučuje, moramo spomenuti njegovu luku.
 priključak = 45024
Zatim ćemo tražiti oznaku [nginx-http-auth], ostavit ćemo je takvu kakva jest.
 [nginx-http-auth] enabled = true
Završili smo i možemo spremiti i zatvoriti datoteku.

Ponovno pokretanje usluge Fail2ban


Za sve promjene koje se primjenjuju preporučujem da zaustavite uslugu.
 service fail2ban stop 
Tada ih možemo ponovno pokrenuti
 usluga fail2ban start
To će potrajati, nakon otprilike 5 minuta ponovno možemo vidjeti naša pravila
 iptables -S
 -P INPUT ACCEPT -P FORWARD ACCEPT -P OUTPUT ACCEPT -N fail2ban -nginx -http -auth -N fail2ban -ssh -A INPUT -p tcp -m multiport --dports 80.443 -j fail2ban -nginx -http -auth -A INPUT -p tcp -m multiport --dports 22 -j fail2ban -ssh -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate POVEZAN, USTANOVLJEN -j ACCEPT -A INPUT -p tcp -m tcp - -dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT -A INPUT -j DROP -A fail2ban -nginx -http -auth -j POVRATAK -A fail2ban -ssh -j POVRATAK
Vidimo kako je fail2ban dodao nova pravila, može varirati ovisno o konfiguraciji koju ste definirali u /etc/fail2ban/jail.local.

ZaključciInstalirali smo fail2ban i konfigurirali za rad sa SSH -om i NGINX -om u slučaju APACHE -a moramo promijeniti oznake i direktorij dnevnika, ali vrlo je sličan nginxu. Konfigurirali smo samo osnove, možete stvoriti filtre i mnogo naprednija pravila, preporučujem da malo pročitate njihovu man stranicu, konfiguracijske datoteke su dobro komentirane, preporučujem da malo po malo otkrijete sve njezine funkcije.

Je li vam se svidio i pomogao ovaj vodič?Autor možete nagraditi pritiskom na ovaj gumb kako biste mu dali pozitivan bod
wave wave wave wave wave