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 fail2banTai 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.localNukopijavę galime jį atidaryti ir pamatyti, kaip jis veikia.
vim /etc/fail2ban/jail.localFailo 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.1Pridedame 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ų = 3Tada 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 = sendmailJei 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 = tiesaPagal 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.logDabar, 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 nginxmes įdiegsime pašto paslaugą pranešimams, tai gali būti sendmail
apt-get įdiegti sendmailpagaliau 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-persistentJis 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 DROPPokyčius matome:
iptables -STai 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.localGalime pratęsti uždraudimo laiką bent 30 minučių, nepamirškite nustatyti vertės sekundėmis.
bantime = 1800Turime 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) sTada eisime į skyrių [SSH] ir galėsime redaguoti maksimalų bandymų skaičių prieš draudimą, paliksime jį 5:
maxretry = 5Jei SSH paslaugą teikiame ne uoste, o ne 22, kuris yra labai rekomenduojamas, turime paminėti jo uostą.
uostas = 45024Tada ieškosime žymos [nginx-http-auth], paliksime ją tokią, kokia yra.
[nginx-http-auth] įgalintas = tiesaMes 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 stopTada galime juos pradėti iš naujo
paslauga fail2ban paleistiTai 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 RETURNMatome, 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ą