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 fail2banTime 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.localNakon kopiranja možemo ga otvoriti i vidjeti kako radi.
vim /etc/fail2ban/jail.localUnutar 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.1Dodajemo naš localhost na ovaj način da će zanemariti sav lokalni promet, možemo dodati dodatne adrese koje ih odvajaju razmakom.
bantime = 600Bantime 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 = 3Zatim 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 = sendmailAko ž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_) sOvdje ć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 = istinaPrema 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.logSada, 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 nginxinstalirat ćemo uslugu pošte za obavijesti to može biti sendmail
apt-get install sendmailkonač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-persistentBit ć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 DROPPromjene možemo vidjeti sa:
iptables -STo 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.localMožemo produžiti vrijeme zabrane za najmanje 30 minuta. Ne zaboravite postaviti vrijednost u sekundama.
bantime = 1800Moramo 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) sZatim idemo na odjeljak [SSH] i možemo urediti maksimalni broj pokušaja prije zabrane, ostavit ćemo to na 5:
maxretry = 5Ako imamo SSH uslugu na portu koji nije 22, što se jako preporučuje, moramo spomenuti njegovu luku.
priključak = 45024Zatim ćemo tražiti oznaku [nginx-http-auth], ostavit ćemo je takvu kakva jest.
[nginx-http-auth] enabled = trueZavrš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 stopTada ih možemo ponovno pokrenuti
usluga fail2ban startTo ć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 POVRATAKVidimo 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