Įdiekite „Fail2ban“ ir susiekite jį su SSH ir „Nginx“

Kai įdiegėme serverį su „Linux“ ir norime jį valdyti iš interneto per SSH nuotolinio valdymo pultą, gali atsitikti taip, kad pradedame gauti atakas, siekdami patekti į sistemą ir galėdami ją valdyti. Šias atakas dažniausiai vykdo kompiuterinės programos (robotai), kurios ilgą laiką bando pasiekti sistemą, naudodamos žiaurią jėgą.

Ankstesniuose pranešimuose aš kalbėjau apie tai, kaip sukonfigūruoti SSH paslaugą, tačiau kai kurie išplėstiniai robotai neįeina į paslaugą, tačiau jie gali užmušti SSH paslaugą serveryje, išjungdami nuotolinę prieigą.

Pilnas SSH (Secure Shell) vadovas

Mes galime to išvengti naudodami fail2ban įrankis, yra labai praktiškas ir suteikia daug saugumo. Šiek tiek paaiškinti, kaip tai veikia. Jis gali sukurti „iptables“ prieš bet kokį nesėkmingą prisijungimo bandymą daugiau nei 5 kartus iš eilės, atmesdamas bet kokio tipo ryšį, kai jis yra uždraustas.

Įdiekite „Fail2ban“


Diegimą galima atlikti tiesiogiai iš apt. Pirmiausia atnaujiname sistemą, o tada įdiegiame „Fail2ban“.
 apt-get update && apt-get -y upgrade
 apt-get install fail2ban
Tai ne tik įdiegia programą, bet ir palieka ją paleisti bei pradėti nuo sistemos.

Fail2ban konfigūravimas


„Fail2ban“ paslauga turi savo nustatymus kataloge / etc / fail2ban. „Jail.conf“ turite keletą iš anksto sukonfigūruotų parinkčių, geriausia šiuo atveju yra nukopijuoti failą ir neatlikti pakeitimų tiesiogiai jame, atnaujinant fail2ban šie failai perrašomi ir galite prarasti visus anksčiau atliktus pakeitimus.

Tokiu atveju nukopijuojame failą ir pavadiname jį jail.local, kad jis galėtų jį rasti.

 sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Nukopijavę galime jį atidaryti ir pamatyti, kaip jis veikia.
 vim /etc/fail2ban/jail.local
Failo viduje turime keletą parametrų, kuriuos galime koreguoti. Bet koks parametras, esantis po [DEFAULT] žyma, bus taikomas visoms „Fail2ban“ įgalintoms paslaugoms, tokioms kaip SSH, NGINX, APACHE, mes tai vadinsime visuotiniu, tada turėsime konkrečias kiekvienos paslaugos skiltis.

Pradėsime pridėdami parametrus prie pasaulinės sekcijos.

 ignoruoti = 127.0.0.1
Pridedame savo vietinį šeimininką tokiu būdu, jis ignoruos visą vietinį srautą, galime pridėti papildomų adresų, atskiriančių juos tarpais.
 bantime = 600
„Bantime“ yra laikotarpis, per kurį klientas bus uždraustas užblokavus. Vienetas yra sekundėmis 600 sekundžių būtų 10 minučių - tai numatytoji vertė.
 findtime = 600 maxry bandymų = 3
Tada mes turime laiko ir laisvės. Jie yra atsakingi už sąlygų nustatymą, kad klientas būtų užblokuotas pagal numatytuosius nustatymus, galima skaityti, kad bet kuris vartotojas, turintis daugiau nei 3 nesėkmingus bandymus per mažiau nei 10 minučių, bus uždraustas.
 destemail = root @ localhost sendername = Fail2Ban mta = sendmail
Jei norime sukurti įspėjimus užblokuotiems vartotojams, šie 3 parametrai yra būtini, mes nustatysime paskirties vietą, kam siųsti įspėjimo el. Laišką, kas bus atsakingas už jo siuntimą, ir galiausiai mta, kad apibrėžtume, kokią el. Pašto paslaugą naudosime .
 veiksmas = $ (action_) s
Čia apibrėžsime, kokių veiksmų reikia imtis, kai reikalingas draudimas. „Action_“ reikšmė yra numatytasis veiksmas, pagrįstas bet kokio kliento srauto atmetimu, kol pasibaigs uždraudimo laikas.

Jei norime išsiųsti įspėjimą paštu, turime pakeisti reikšmę į action_mw, bet jei taip pat norime, kad ji pridėtų žurnalo eilutes laiško tekste, naudosime veiksmą_mwl. Prieš keisdami šią vertę, turime būti tikri, kad pašto nustatymai yra teisingi.

Nustatymai pagal paslaugą


Kai pasaulinės konfigūracijos bus baigtos, pridėsime parametrus, kurie bus taikomi tik

SSH paslauga, mes būtinai pridėsime parinktis po [SSH] žyma.

 įjungta = tiesa
Pagal numatytuosius nustatymus SSH paslauga yra įjungta, tačiau, jei reikia, galime ją pakeisti šioje parinktyje.

Visa ši skiltis gali veikti su vertybėmis, kurias aprašysiu vėliau, tačiau galite jas pakeisti, kad pritaikytumėte jas savo poreikiams arba palikti jas visas pagal numatytuosius nustatymus.

Kita konfigūracija yra filtrai, rodantys, ar prisijungimas buvo teisingas, ar ne, ir gali būti pridėtas kitoms paslaugoms, pavyzdžiui, turime serverį su „nginx“, o dalis puslapio yra apsaugota slaptažodžiu, tačiau klientas atakuoja žiauriai , mes galime tai sustabdyti, pridėdami šį elementą po [nginx-http-auth] žyma.

 [nginx-http-auth] enabled = true filter = nginx-http-auth port = http, https logpath = /var/log/nginx/error.log
Dabar, jei vartotojas bando prisijungti daugiau nei 3 kartus, tai atsispindi žurnaluose, o fail2ban veiks ir užblokuos visą vartotojo srautą.

Bandymo aplinka


Supratę pagrindus, sukursime nedidelę bandomąją aplinką, kurioje apsaugosime SSH ir „Nginx“ per „Fail2ban“, sukurdami uždraudimo politiką, kuri praneš mums apie uždraustą IP.

Pirmiausia įdiegsime „Nginx“, jei ji neįdiegta

 apt-get įdiegti nginx
mes įdiegsime pašto paslaugą pranešimams, tai gali būti sendmail
 apt-get įdiegti sendmail
pagaliau norime, kad mūsų „iptables“ po įkrovos būtų patvarūs, galime sukurti rc.0 scenarijų arba įdiegti „iptables-persistent“ paketą.
 apt-get install iptables-persistent
Jis bus įdiegtas.

Mūsų užkardos kūrimas


Įdiegę aukščiau pateiktą informaciją, turime įdiegti ugniasienę, kad ji galėtų užblokuoti srautą. Vėlesniuose įrašuose sukursiu pagrindinę užkardą, daugiau kalbėsiu apie „iptables“.

Leidžiame užmegztus ryšius, serverių srautą, pvz., Atnaujinimus, ir srautą, skirtą SSH ir „Nginx“ prievadams. Visas likęs srautas bus atmestas.

 sudo iptables -A INPUT -i lo -j ACCEPT sudo iptables -A INPUT -m conntrack --ctstate ĮSTATyta, SUSIJUSI -j ACCEPT sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -j DROP
Pokyčius matome:
 iptables -S
Tai turėtų duoti panašų rezultatą.
 -P INPUT ACCEPT -P FORWARD 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 -valstybė, SUSIJUSI, ĮSTATYTA -j PRIIMTI -A ĮVADAS -p tcp -m tcp -dport 22 -j ACCEPT -A INPUT -p tcp -m tcp --port 80 -j ACCEPT -A INPUT -j DROP -A fail2ban -ssh -j RETURN

„Fail2ban“ nustatymų koregavimas


Dabar turime konfigūruoti failą jail.local mums patogiu metu.
 vi /etc/fail2ban/jail.local
Galime pratęsti uždraudimo laiką bent 30 minučių, nepamirškite nustatyti vertės sekundėmis.
 bantime = 1800
Turime sukonfigūruoti el. Laišką, kuris gauna visus „fail22“ draudimo įspėjimus, ieškokime el. Laiško vertės faile ir įdėkime el. Laišką.
 pašto adresas = [email protected]
Mes galime pakeisti siuntėją, kuris atsiųs įspėjimą, kurį paprastai pateikiu pavadinimu fail2ban, kad galėtume geriau filtruoti tarp visų žurnalų.

Kai turime pakeisti veiksmo vertę, turime dvi galimybes:

  • action_mw: siunčia įspėjimą su ataskaita, panašia į uždrausto kliento „whois“ komandą.
  • action_mwl: išsiųskite daug išsamesnį įspėjimą, į pranešimo turinį įtraukdami žurnalą.

Šiuo atveju mes naudosime antrąjį variantą:

 veiksmas =% (action_mwl) s 
Tada eisime į skyrių [SSH] ir galėsime redaguoti maksimalų bandymų skaičių prieš draudimą, paliksime jį 5:
 maxretry = 5
Jei SSH paslaugą teikiame ne uoste, o ne 22, kuris yra labai rekomenduojamas, turime paminėti jo uostą.
 uostas = 45024
Tada ieškosime žymos [nginx-http-auth], paliksime ją tokią, kokia yra.
 [nginx-http-auth] įgalintas = tiesa
Mes baigėme ir galime išsaugoti bei uždaryti failą.

Iš naujo paleiskite „Fail2ban“ paslaugą


Kad visi pakeitimai būtų taikomi, rekomenduoju sustabdyti paslaugą.
 paslauga fail2ban stop 
Tada galime juos pradėti iš naujo
 paslauga fail2ban paleisti
Tai užtruks šiek tiek laiko, po maždaug 5 minučių vėl pamatysime savo taisykles
 iptables -S
 -P Įvesties priėmimas -P PASIŪLYMAS -P IŠĖJIMAS Priimamas -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 SUSIJĘS, ĮSTATYTA -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 RETURN -A fail2ban -ssh -j RETURN
Matome, kaip fail2ban pridėjo naujų strategijų, jos gali skirtis priklausomai nuo konfigūracijos, kurią apibrėžėte /etc/fail2ban/jail.local.

IšvadosMes įdiegėme fail2ban ir sukonfigūravome dirbti su SSH ir NGINX APACHE atveju, mes turime pakeisti etiketes ir žurnalų katalogą, tačiau jis labai panašus į nginx. Mes sukonfigūravome tik pagrindus, galite sukurti filtrus ir daug daugiau išplėstinių taisyklių, rekomenduoju šiek tiek paskaityti jų vadovo puslapį, konfigūracijos failai yra gerai komentuojami, rekomenduoju po truputį eiti ieškoti visų jo funkcijų.

Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką
wave wave wave wave wave