Cum (și de ce) să dezactivați autentificarea rădăcină prin SSH pe Linux

Publicat: 2022-09-29
Laptop Linux afișează un prompt bash
fatmawati achmad zaenuri/Shutterstock.com

Conectarea ca utilizator root Linux este o practică proastă. Conectarea ca root printr-o conexiune SSH este și mai rău. Vă spunem de ce și vă arătăm cum să o preveniți.

Sabia cu două tăișuri

Ai nevoie de cineva cu autoritatea de a deține și de a administra acele părți ale sistemului tău de operare care sunt prea importante sau prea sensibile pentru ca utilizatorii obișnuiți să le facă față. Acolo intervine root. root este superutilizatorul atotputernic al sistemelor de operare Unix și Linux.

Contul de utilizator root, ca toate conturile, este protejat de o parolă. Fără parola utilizatorului root, nimeni altcineva nu poate accesa acel cont. Asta înseamnă că privilegiile și puterile root nu pot fi folosite de nimeni altcineva. Partea inversă este că singura apărare între un utilizator rău intenționat și puterile root este acea parolă. Parolele, desigur, pot fi ghicite, deduse, observate scrise undeva sau forțate.

Dacă un atacator rău intenționat descoperă parola root, se poate autentifica și poate face orice dorește pentru întregul sistem. Cu privilegiile ridicate ale root, nu există restricții cu privire la ceea ce pot face. Ar fi ca și cum utilizatorul root s-ar fi îndepărtat de un terminal fără a se deconecta, permițând acces oportunist la contul său.

De ce nu ar trebui să vă conectați la sistemul dvs. Linux ca root
LEGATE De ce nu ar trebui să vă conectați la sistemul dvs. Linux ca root

Din cauza acestor riscuri, multe distribuții moderne de Linux nu permit root-ului să se conecteze la computer la nivel local, indiferent de SSH. Utilizatorul root există, dar nu are o parolă setată pentru el. Și totuși, cineva trebuie să fie capabil să administreze sistemul. Soluția la această enigmă este comanda sudo .

sudo permite utilizatorilor nominalizați să utilizeze temporar privilegiile la nivel de rădăcină din propriul cont de utilizator. Trebuie să vă autentificați pentru a utiliza sudo , ceea ce faceți introducând propria parolă. Acest lucru vă oferă acces temporar la capacitățile root-ului.

Puterile dvs. de rădăcină mor când închideți fereastra terminalului în care au fost folosite. Dacă lăsați fereastra terminalului deschisă, acestea vor expira, revenind automat la starea de utilizator obișnuită. Aceasta oferă un alt tip de protecție. Te protejează de tine însuți.

Dacă vă conectați în mod obișnuit ca root în loc de un cont obișnuit, orice greșeală pe care le faceți pe linia de comandă ar putea fi catastrofale. Dacă trebuie să utilizați sudo pentru a efectua administrarea, este mai probabil să fiți concentrat și atent la ceea ce introduceți.

Permiterea autentificării root prin SSH crește riscurile, deoarece atacatorii nu trebuie să fie locali; pot încerca să-ți forțeze sistemul de la distanță.

RELATE: Cum să revizuiți utilizarea comenzii sudo pe Linux

Utilizatorul root și accesul SSH

Este mai probabil să întâlniți această problemă atunci când administrați sisteme pentru alte persoane. Este posibil ca cineva să fi decis să seteze o parolă de root pentru a se putea conecta. Alte setări trebuie modificate pentru a permite root-ului să se conecteze prin SSH.

Chestia asta nu se va întâmpla întâmplător. Dar poate fi făcut de oameni care nu înțeleg riscurile asociate. Dacă preluați administrarea unui computer în starea respectivă, va trebui să îi sfătuiți pe proprietari de ce este o idee proastă și apoi să reveniți sistemul la funcționare în siguranță. Dacă a fost ceva configurat de administratorul de sistem anterior, este posibil ca proprietarii să nu știe despre asta.

Iată un utilizator de pe un computer care rulează Fedora, care realizează o conexiune SSH la un computer Ubuntu ca utilizator root al computerului Ubuntu.

 ssh [email protected] 

Utilizatorul root se conectează la un computer la distanță folosind SSH

Computerul Ubuntu permite utilizatorului root să se conecteze prin SSH. Pe computerul Ubuntu, putem vedea că o conexiune live este în curs de la utilizatorul root.

 OMS 

Folosind comanda who pentru a lista utilizatorii conectați

Ceea ce nu putem vedea este cine folosește acea sesiune. Nu știm dacă persoana de la celălalt capăt al conexiunii SSH este utilizatorul root sau cineva care a reușit să obțină parola root.

Dezactivează accesul SSH pentru root

Pentru a dezactiva accesul SSH pentru utilizatorul root, trebuie să facem modificări în fișierul de configurare SSH. Acesta se află la „/etc/ssh/sshd_config”. Va trebui să folosim sudo pentru a-i scrie modificări.

 sudo gedit /etc/ssh/sshd_config 

Editarea fișierului sshd-config

Derulați fișierul sau căutați șirul „PermitRootLogin”.

Setați acest lucru la „nu” sau comentați linia prin plasarea unui hash „ # ” ca prim caracter de pe linie. Salvați modificările.

Trebuie să repornim demonul SSH, astfel încât modificările noastre să intre în vigoare.

 sudo systemctl reporniți ssh 

Repornirea demonului sshd

Dacă doriți și să împiedicați autentificarea locală, dezactivați parola root. Abordăm cu centura și bretele și utilizăm atât opțiunile -l (blocare) cât și -d (ștergerea parolei).

 sudo passwd root -ld 

Blocarea contului root și eliminarea parolei root

Acest lucru blochează contul și elimină parola contului din chilipir. Chiar dacă utilizatorul root stă fizic la computer, nu se va putea conecta.

O modalitate mai sigură de a permite accesul root SSH

Uneori, veți întâlni rezistență managerială la eliminarea accesului root prin SSH. Dacă într-adevăr nu vor asculta, s-ar putea să te trezești într-o poziție în care trebuie să-l reintroduci. Dacă acesta este cazul, ar trebui să puteți face compromisuri într-un mod care reduce riscul și permite totuși autentificarea de la distanță de la utilizatorul root.

Cum se creează și se instalează chei SSH din Shell Linux
LEGATE Cum să creați și să instalați chei SSH din Shell Linux

Utilizarea cheilor SSH pentru a realiza o conexiune prin SSH este mult mai sigură decât utilizarea parolelor. Deoarece nu sunt implicate parole, acestea nu pot fi forțate, ghicite sau descoperite în alt mod.

Înainte de a bloca contul root local, configurați cheile SSH pe computerul de la distanță, astfel încât utilizatorul root să se poată conecta la computerul local. Apoi mergeți mai departe și ștergeți-le parola și blocați contul local.

De asemenea, va trebui să edităm fișierul „sshd_config” încă o dată.

 sudo gedit /etc/ssh/sshd_config 

Editarea fișierului sshd-config

Schimbați linia „PermitRootLogin” astfel încât să folosească opțiunea „prohibit-parola”.

Salvați modificările și reporniți demonul SSH.

 sudo systemctl reporniți ssh 

Repornirea demonului sshd

Acum, chiar dacă cineva reintroduce parola utilizatorului root, nu se va putea conecta prin SSH folosind o parolă.

Când utilizatorul root de la distanță realizează o conexiune SSH la computerul local, cheile sunt schimbate și examinate. Dacă trec autentificarea, utilizatorul root este conectat la computerul local fără a fi nevoie de o parolă.

 ssh [email protected] 

Utilizatorul root se conectează la un computer la distanță folosind SSH fără o parolă

Intrarea interzisă

Refuzul conexiunilor la distanță de la utilizatorul root este cea mai bună opțiune. A permite root-ului să se conecteze folosind chei SSH este al doilea cel mai bun, dar totuși mult mai bine decât utilizarea parolelor.

LEGATE: Cum să controlați accesul sudo pe Linux