Linux serverio apsauga. Ką daryti pirmiausia

Linux serverio apsauga. Ką daryti pirmiausia
Habib M'henni / Wikimedia Commons, CC BY-SA

Šiais laikais serverio nustatymas priegloboje yra kelių minučių ir kelių pelės paspaudimų reikalas. Tačiau iškart po paleidimo jis atsiduria priešiškoje aplinkoje, nes yra atviras visam internetui kaip nekalta mergina rokerių diskotekoje. Skaitytuvai greitai jį suras ir atras tūkstančius automatiškai surašytų robotų, kurie naršo tinklą ieškodami pažeidžiamumų ir neteisingų konfigūracijų. Yra keletas dalykų, kuriuos turėtumėte atlikti iškart po paleidimo, kad užtikrintumėte pagrindinę apsaugą.

Turinys

Ne root naudotojas

Pirmas dalykas, kurį reikia padaryti, yra sukurti ne root naudotoją. Esmė ta, kad vartotojas root absoliučios privilegijos sistemoje, o jei leisite jam nuotoliniu būdu administruoti, tuomet pusę darbo atliksite už įsilaužėlį, palikdami jam galiojantį vartotojo vardą.

Todėl turite sukurti kitą vartotoją ir išjungti nuotolinį administravimą per SSH root.

Su komanda sukuriamas naujas vartotojas useradd:

useradd [options] <username>

Tada su komanda pridedamas slaptažodis passwd:

passwd <username>

Galiausiai šis vartotojas turi būti įtrauktas į grupę, kuri turi teisę vykdyti komandas su padidintomis teisėmis sudo. Priklausomai nuo Linux platinimo, tai gali būti skirtingos grupės. Pavyzdžiui, CentOS ir Red Hat vartotojas įtraukiamas į grupę wheel:

usermod -aG wheel <username>

Ubuntu jis pridedamas prie grupės sudo:

usermod -aG sudo <username>

Raktai vietoj SSH slaptažodžių

Brutalia jėga arba slaptažodžio nutekėjimas yra standartinis atakos vektorius, todėl geriau išjungti slaptažodžio autentifikavimą SSH (Secure Shell) ir naudoti rakto autentifikavimą.

SSH protokolui įgyvendinti yra įvairių programų, pvz lsh и „Dropbear“, tačiau populiariausias yra OpenSSH. OpenSSH kliento diegimas Ubuntu:

sudo apt install openssh-client

Serverio diegimas:

sudo apt install openssh-server

SSH demono (sshd) paleidimas Ubuntu serveryje:

sudo systemctl start sshd

Automatiškai paleiskite demoną kiekvienoje įkrovoje:

sudo systemctl enable sshd

Reikėtų pažymėti, kad OpenSSH serverio dalis apima kliento dalį. Tai yra, per openssh-server galite prisijungti prie kitų serverių. Be to, iš savo kliento įrenginio galite paleisti SSH tunelį iš nuotolinio serverio į trečiosios šalies pagrindinį kompiuterį, o tada trečiosios šalies priegloba laikys nuotolinį serverį užklausų šaltiniu. Labai patogi funkcija užmaskuoti jūsų sistemą. Daugiau informacijos rasite straipsnyje. „Praktiniai patarimai, pavyzdžiai ir SSH tuneliai“.

Paprastai nėra prasmės kliento kompiuteryje diegti visavertį serverį, kad būtų išvengta galimybės nuotoliniu būdu prisijungti prie kompiuterio (saugumo sumetimais).

Taigi naujam vartotojui pirmiausia turite sugeneruoti SSH raktus kompiuteryje, iš kurio pasieksite serverį:

ssh-keygen -t rsa

Viešasis raktas saugomas faile .pub ir atrodo kaip atsitiktinių simbolių eilutė, kuri prasideda ssh-rsa.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ3GIJzTX7J6zsCrywcjAM/7Kq3O9ZIvDw2OFOSXAFVqilSFNkHlefm1iMtPeqsIBp2t9cbGUf55xNDULz/bD/4BCV43yZ5lh0cUYuXALg9NI29ui7PEGReXjSpNwUD6ceN/78YOK41KAcecq+SS0bJ4b4amKZIJG3JWm49NWvoo0hdM71sblF956IXY3cRLcTjPlQ84mChKL1X7+D645c7O4Z1N3KtL7l5nVKSG81ejkeZsGFzJFNqvr5DuHdDL5FAudW23me3BDmrM9ifUmt1a00mWci/1qUlaVFft085yvVq7KZbF2OP2NQACUkwfwh+iSTP username@hostname

Tada, kaip root, sukurkite SSH katalogą serveryje vartotojo namų kataloge ir pridėkite SSH viešąjį raktą prie failo authorized_keysnaudojant teksto rengyklę, pvz., Vim:

mkdir -p /home/user_name/.ssh && touch /home/user_name/.ssh/authorized_keys

vim /home/user_name/.ssh/authorized_keys

Galiausiai nustatykite teisingus failo leidimus:

chmod 700 /home/user_name/.ssh && chmod 600 /home/user_name/.ssh/authorized_keys

ir pakeisti nuosavybės teisę į šį vartotoją:

chown -R username:username /home/username/.ssh

Kliento pusėje turite nurodyti slaptojo rakto vietą autentifikavimui:

ssh-add DIR_PATH/keylocation

Dabar galite prisijungti prie serverio naudodami vartotojo vardą naudodami šį raktą:

ssh [username]@hostname

Po autorizacijos galite naudoti komandą scp, norėdami nukopijuoti failus, įrankį sshfs Norėdami nuotoliniu būdu prijungti failų sistemą arba katalogus.

Patartina pasidaryti kelias atsargines privataus rakto kopijas, nes išjungus slaptažodžio autentifikavimą ir jį praradus, išvis neturėsite galimybės prisijungti prie savo serverio.

Kaip minėta aukščiau, SSH turite išjungti root autentifikavimą (dėl šios priežasties sukūrėme naują vartotoją).

„CentOS“ / „Red Hat“ randame liniją PermitRootLogin yes konfigūracijos faile /etc/ssh/sshd_config ir pakeisk:

PermitRootLogin no

Ubuntu pridėkite eilutę PermitRootLogin no į konfigūracijos failą 10-my-sshd-settings.conf:

sudo echo "PermitRootLogin no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

Patikrinę, kad naujasis vartotojas autentifikuotas naudojant jo raktą, galite išjungti slaptažodžio autentifikavimą, kad išvengtumėte slaptažodžio nutekėjimo ar žiaurios jėgos rizikos. Dabar, norėdamas pasiekti serverį, užpuolikas turės gauti privatų raktą.

„CentOS“ / „Red Hat“ randame liniją PasswordAuthentication yes konfigūracijos faile /etc/ssh/sshd_config ir pakeiskite jį taip:

PasswordAuthentication no

Ubuntu pridėkite eilutę PasswordAuthentication no į failą 10-my-sshd-settings.conf:

sudo echo "PasswordAuthentication no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf

Instrukcijas, kaip įjungti dviejų veiksnių autentifikavimą naudojant SSH, žr čia.

Ugniasienė

Ugniasienė užtikrina, kad į serverį pateks tik jūsų tiesiogiai leidžiamų prievadų srautas. Tai apsaugo nuo prievadų, kuriuos netyčia įjungia kitos paslaugos, išnaudojimo, o tai labai sumažina atakos paviršių.

Prieš diegdami ugniasienę, turite įsitikinti, kad SSH yra įtrauktas į išimčių sąrašą ir nebus užblokuotas. Priešingu atveju, paleidę ugniasienę, negalėsime prisijungti prie serverio.

Ubuntu paskirstymas pateikiamas su nesudėtinga ugniasienė (Oho) ir su CentOS / Red Hat – užkarda.

SSH leidimas Ubuntu ugniasienėje:

sudo ufw allow ssh

„CentOS“ / „Red Hat“ naudojame komandą firewall-cmd:

sudo firewall-cmd --zone=public --add-service=ssh --permanent

Po šios procedūros galite paleisti užkardą.

„CentOS“ / „Red Hat“ paleidžiame sisteminę ugniasienės paslaugą:

sudo systemctl start firewalld
sudo systemctl enable firewalld

Ubuntu mes naudojame šią komandą:

sudo ufw enable

„Fail2Ban“

Tarnyba „Fail2Ban“ analizuoja serverio žurnalus ir skaičiuoja prieigos bandymų skaičių iš kiekvieno IP adreso. Nustatymuose nurodomos taisyklės, kiek tam tikru intervalu leidžiama bandyti pasiekti – po to šis IP adresas blokuojamas tam tikram laikui. Pavyzdžiui, leidžiame 5 nesėkmingus autentifikavimo bandymus per SSH per 2 valandų laikotarpį, po kurio šį IP adresą blokuojame 12 valandų.

„Fail2Ban“ diegimas „CentOS“ ir „Red Hat“:

sudo yum install fail2ban

Diegimas Ubuntu ir Debian:

sudo apt install fail2ban

Paleisti:

systemctl start fail2ban
systemctl enable fail2ban

Programoje yra du konfigūracijos failai: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Draudimo apribojimai nurodyti antrame faile.

SSH kalėjimas įjungtas pagal numatytuosius nustatymus (5 bandymai, intervalas 10 minučių, draudimas 10 minučių).

[Numatytasis] ignorecommand = bantime = 10m findtime = 10m maxretry = 5

Be SSH, „Fail2Ban“ gali apsaugoti kitas „nginx“ arba „Apache“ žiniatinklio serverio paslaugas.

Automatiniai saugos naujinimai

Kaip žinia, visose programose nuolat randama naujų spragų. Paskelbus informaciją, išnaudojimai pridedami prie populiarių išnaudojimo paketų, kuriuos plačiai naudoja įsilaužėliai ir paaugliai, nuskaitydami visus serverius iš eilės. Todėl labai svarbu įdiegti saugos naujinimus, kai tik jie pasirodys.

Ubuntu serveriuose pagal numatytuosius nustatymus įjungti automatiniai saugos naujinimai, todėl nereikia atlikti jokių papildomų veiksmų.

„CentOS“ / „Red Hat“ turite įdiegti programą dnf-automatas ir įjunkite laikmatį:

sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timer

Laikmačio patikrinimas:

sudo systemctl status dnf-automatic.timer

Numatytųjų prievadų keitimas

SSH buvo sukurtas 1995 m., kad pakeistų telnet (23 prievadas) ir ftp (21 prievadas), todėl programos autorius yra Tatu Iltonen pagal numatytuosius nustatymus pasirinko 22 prievadą, ir jį patvirtino IANA.

Natūralu, kad visi užpuolikai žino, kuriame prievade veikia SSH – ir nuskaito jį kartu su kitais standartiniais prievadais, kad sužinotų programinės įrangos versiją, patikrintų standartinius root slaptažodžius ir pan.

Standartinių prievadų keitimas – užtemimas – kelis kartus sumažina nepageidaujamo srauto apimtį, žurnalų dydį ir serverio apkrovą, taip pat sumažina atakos paviršių. Nors kai kurie kritikuoti šį „gynybos per nežinomybę“ metodą (saugumas per nežinomybę). Priežastis ta, kad ši technika prieštarauja pagrindinei architektūrinė apsauga. Todėl, pavyzdžiui, JAV nacionalinis standartų ir technologijų institutas „Serverio saugos vadovas“ nurodo atviros serverio architektūros poreikį: „Sistemos saugumas neturėtų remtis jos komponentų diegimo slaptumu“, – rašoma dokumente.

Teoriškai numatytųjų prievadų keitimas prieštarauja atviros architektūros praktikai. Tačiau praktiškai kenkėjiško srauto apimtys iš tikrųjų mažėja, todėl tai paprasta ir efektyvi priemonė.

Prievado numerį galima konfigūruoti pakeitus direktyvą Port 22 konfigūracijos faile / etc / ssh / sshd_config. Tai taip pat nurodo parametras -p <port> в sshd. SSH klientas ir programos sftp taip pat palaiko parametrą -p <port>.

Parametras -p <port> galima naudoti norint nurodyti prievado numerį jungiantis naudojant komandą ssh Linux sistemoje. IN sftp и scp naudojamas parametras -P <port> (didžioji P). Nurodžius jį komandinėje eilutėje, nepaisoma bet kokios reikšmės konfigūracijos failuose.

Jei serverių yra daug, beveik visi šie Linux serverio apsaugos veiksmai gali būti automatizuoti pagal scenarijų. Bet jei yra tik vienas serveris, geriau valdyti procesą rankiniu būdu.

Dėl reklamos teisių

Užsisakykite ir pradėkite dirbti iš karto! VDS kūrimas bet kokia konfigūracija ir su bet kuria operacine sistema per minutę. Maksimali konfigūracija leis jums pasipūsti – 128 CPU branduoliai, 512 GB RAM, 4000 GB NVMe. Visai epiškai :)

Linux serverio apsauga. Ką daryti pirmiausia

Šaltinis: www.habr.com