Activarea accesului root în ubuntu ssh. Ce se poate schimba în setările SSH. Client SSH multiplatform cu PuTTY GUI.

Acest articol este marcat ca stub. Vezi nota de la sfârșitul articolului.

Acest articol se concentrează pe clientul și serverul terminal securizat (shell securizat) în Ubuntu, configurarea și utilizarea acestora. SSH este un protocol de rețea special care permite accesul de la distanță la un computer cu un grad ridicat de securitate a conexiunii. Puteți citi mai multe despre protocolul ssh.

Descrierea principiilor de funcționare și a aplicațiilor utilizate

Practic, SSH este implementat ca două aplicații - un server SSH și un client SSH.Ubuntu folosește o implementare gratuită a unui client și server SSH, OpenSSH. La conectare, clientul trece prin procedura de autorizare la server și se stabilește o conexiune criptată între ei. Serverul OpenSSH poate funcționa atât cu protocoalele ssh1, cât și cu ssh2. Protocolul ssh1 este în prezent considerat nesigur și, prin urmare, este puternic descurajat. Omit în mod deliberat diverse detalii tehnice despre modul în care funcționează protocolul, deoarece scopul principal al acestui ghid este de a descrie configurarea și utilizarea acestuia. Există multe articole pe Internet despre protocolul în sine, principiile funcționării acestuia, algoritmii de criptare etc., de exemplu, puteți citi despre acesta în detaliu.

Instalare

Instalare OpenSSH Puteți folosi comanda din terminal:

sudo apt-get install ssh

Metapachetul ssh conține atât clientul, cât și serverul, dar acesta va instala cel mai probabil doar serverul, deoarece clientul este deja inclus în Ubuntu în mod implicit.

Ajustarea serverului

La instalarea SSH, serverul este adăugat automat la pornire. Puteți controla pornirea, oprirea sau repornirea acestuia folosind comenzile:

sudo service ssh stop| începe | repornire

Fișierul principal de configurare a serverului SSH este fișierul /etc/ssh/sshd_config, care poate fi citit sau editat doar de superutilizator. După fiecare modificare a acestui fișier, trebuie să reporniți serverul ssh pentru ca modificările să aibă efect.

Exemplu de configurare implicită a serverului SSH în Ubuntu:

# Exemplu de configurare deschisă servere ssh cu # # comentarii rusești..2010. # # # # # # Convenții: # # Prin „implicit” se înțelege comportamentul sshd atunci când directiva # # nu este specificată în mod explicit. Este demn de remarcat faptul că pe Ubuntu # # fișierul sshd_config conține deja o serie de setări care sunt # # implicite în special pentru Ubuntu. # # Astfel de setări sunt specificate în acest fișier. # # # ############################################### # ############# ############### Setări de adresă/port etc. ########### ######################################################### #################### # # ## Port ######################## ########################### # # # Portul de utilizat. Puteți specifica mai multe, de exemplu: # # Port 22 # # Port 23 # # Port 24 # # Recomandat pentru utilizare port non-standard, deoarece # # cel standard este adesea scanat de roboți pentru # # găuri potențiale. Poate fi omis dacă este dat # # prin adresă. Consultați și parametrul ListenAddress. # # # Port 22 # # ## AscultareAdresa ##################################### # ## # # # Adresa de rețea pe care ascultă serverul. Adresa poate fi scrisă astfel: # # ListenAddress host|IPv4_addr|IPv6_addr # # ListenAddress gazdă|IPv4_addr:port # # ListenAddress :port # # Dacă nu este specificat niciun port, sshd va asculta la această adresă și # # pe port specificat în portul opțional. Dacă # # utilizați ListenAddress fără a specifica un port, opțiunea # # Port trebuie să fie înaintea opțiunii ListenAddress. Dacă este lăsată omisă, # # este implicit să asculte la toate # # adresele locale. Puteți specifica mai multe adrese. # # # ## AdresaFamilie ######################################## ## # Specifică ce familie de adrese IP # # ar trebui să fie utilizată de sshd. Opțiuni posibile : # # „orice” - orice # # „inet” (doar IPv4) # # „inet6” (doar IPv6) # # Implicit este „orice”. # AdresăFamilie inet # # ## UtilizațiDNS ####################################### # ####### # # # Specifică dacă sshd ar trebui să verifice numele gazdei și # # să folosească acel nume pentru a verifica adresa IP dată de client față de # # primită de la DNS. # # Valoarea implicită este „da”. # # # ############################################### # ############# ############ Setări de acces utilizator ############## ###### # ################################################################## ## ### # # # A permite/refuza un utilizator este definită de directivele # # DenyUsers, AllowUsers, DenyGroups și AllowGroups. # # în același timp, verificarea merge de sus în jos de-a lungul lanțului: # # ## DenyUsers ## # # || # # ## AllowUsers ## # # || # # ## DenyGroups ## # # || # # ## AllowGroups ## # # Sunt acceptate numai numele utilizatorilor și grupurilor, identificatorii numerici # # (UserID) nu sunt recunoscuți. Introducerea corectă # # a mai multor utilizatori/grupuri pe rând, separate # # printr-un spațiu. Dacă este scris ca user@host - atunci # # utilizatorul și gazda sunt verificate separat, acest lucru permite # # să restricționeze accesul anumitor utilizatori de la # # anumite gazde. Merită să ne amintim că directivele # # DenyUsers și AllowUsers iau un # # nume de utilizator ca parametru, în timp ce DenyGroups și AllowGroups # # iau un nume de grup. Consultați PATTERNE în man ssh_config pentru mai multe # # informații despre convențiile numelui de utilizator și al grupului. # # # ## DenyUsers ########################################### ## # # # O listă de UTILIZATORI care NU TREBUIE să fie utilizați de sshd. # # Implicit - nespecificat = nimeni nu este interzis. Acestea. # # dacă un utilizator este specificat aici, i se va refuza # # accesul la serverul ssh. # # # ## AllowUsers ########################################### # # # # Lista de UTILIZATORI care TREBUIE să fie utilizați de sshd, # # Implicit - nespecificat = toată lumea este permisă. Acestea. dacă # # este specificat cel puțin un utilizator, accesul ssh la server # # este disponibil numai pentru acesta. # # # ## DenyGroups ########################################## # # # # O listă de GRUPURI care NU TREBUIE să fie folosite de sshd. # # Implicit - nespecificat = niciun grup nu este interzis. # # adică dacă este specificat cel puțin un grup, utilizatorilor # # din acel grup li se va refuza accesul la serverul # # ssh. # # # ## AllowGroups ########################################## # # # O listă de GRUPURI pe care sshd POT folosi. # # Implicit - nespecificat = permis tuturor. Acestea. dacă # # este specificat cel puțin un grup, atunci numai acelor utilizatori# # care aparțin acestuia li se va permite accesul la serverul ssh.# # # ################## ## ########################################################## # Opțiuni care determină starea conexiunii ########## ################################# ## ####################### # # ## TPCKeepAlive ################## ## ###################### # # # Specifică dacă sistemul ar trebui să trimită mesaje TCP către client # # pentru a menține conexiunea. Dacă trimiteți aceste pachete, # # puteți detecta o deconectare. Totuși, acest # # înseamnă, de asemenea, că conexiunea poate fi întreruptă dacă # # există o întrerupere momentană în rutare și # # acest lucru este foarte enervant pentru unii. Pe de altă parte, dacă # # aceste mesaje nu sunt trimise, sesiunile pe server pot rula # # pe termen nelimitat, generând utilizatori „fantomă”# # și devorând resursele serverului. Valoarea implicită este „da”, # # adică trimite astfel de mesaje. Pentru a dezactiva trimiterea de # # astfel de mesaje, setați valoarea la „nu”. Anterior această opțiune # # se numea KeepAlive. Este de remarcat faptul că există # # modalități mai sigure de a verifica starea conexiunii # # (vezi mai jos). # # # TPCKeepAlive da # # ## ClientAliveCountMax ################################# # # # Specifică numărul de mesaje către clienți # # pe care sshd le trimite într-un rând fără a primi niciun răspuns # # de la client. Dacă pragul este atins și # # clientul tot nu răspunde, sshd va deconecta clientul, încheind # # sesiunea ssh. Este de remarcat faptul că utilizarea acestor mesaje # # este fundamental diferită de directiva TPCKeepAlive. # # Mesajele către/de la clienți sunt trimise pe un # # canal criptat și, prin urmare, nu sunt susceptibile de falsificare. # # Mesajele TPCKeepAlive sunt susceptibile de falsificare. Mecanismul client alive # # este deosebit de valoros în cazurile în care serverul și clientul # # trebuie să știe când o conexiune a devenit inactivă. Valoarea implicită # # este 3. Dacă ClientAliveInterval # # este setat la 15 și ClientAliveCountMax este lăsat la # # implicit, clienții care nu răspund vor fi deconectați după aproximativ # # 45 de secunde. Această directivă funcționează numai pentru # # protocolul ssh2. # # # ## ClientAliveInterval ################################## # # # Setează intervalul de timp în secunde. Dacă nu a fost făcută nicio comunicare cu clientul în # # acest interval, sshd # # trimite un mesaj pe un canal criptat # # solicitând un răspuns de la client. Valoarea implicită este 0, adică # # nu trimiteți astfel de mesaje. Această directivă funcționează # # numai pentru protocolul ssh2. # # # ############################################### # ############ ############### Opțiuni generale de autentificare ################ # # ################################################################## ## ####### # # ## AuthorizedKeysFile ################################# ## # # # # Specifică fișierul care conține cheile publice # # folosite pentru autentificarea utilizatorilor. Directiva # # poate conține token-uri de forma %M, care sunt înlocuite în timpul # # procesului de stabilire a conexiunii. # # Următorii marcatori sunt definiți: # # %% - înlocuiți cu literalul „%” # # %h - înlocuiți cu directorul principal # # al utilizatorului care se autentifică # # %u - înlocuit cu numele utilizatorului care se autentifică # # Astfel, fișierul cheie poate fi specificat ca # # cale absolută (adică una dosar comun cu chei) și # # dinamic - în funcție de utilizator (adică, # # un fișier per utilizator). # # Valoarea implicită este „.ssh/authorized_keys”. # # Exemplu pentru un fișier cheie în folderul principal al utilizatorului: # # AuthorizedKeysFile %h/.ssh/authorized_key # # Exemplu pentru un fișier generic: # # AuthorizedKeysFile /etc/ssh/authorized_keys # # Consultați descrierea fișierului authorized_keys pentru mai multe # # informație. # # # ## ChallengeResponseAuthentication ###################### # # # Indică dacă se permite autentificarea provocare-răspuns # # (autentificare provocare-răspuns ). # # Toate tipurile de autentificare de la login.conf sunt acceptate. Implicit este „da”, # # adică. permite. # # Pe Ubuntu, dezactivat din motive de securitate. # # # ChallengeResponseAuthentication nu # # ## HostbasedUsesNameFromPacketOnly ######################## # # # Specifică modul în care serverul ar trebui să recupereze numele de gazdă al clientului # # când schema de autentificare bazată pe gazdă. # # Dacă este setat la „da”, sshd # # va folosi numele de gazdă furnizat de client atunci când verifică o potrivire în fișierele # # ~/.shosts, ~/.rhosts sau /etc/hosts.equiv. # # (efectuează rezoluția DNS inversă) Dacă este setat la „nu” # # - sshd va rezolva numele de la conexiunea TCP în sine. # # Valoarea implicită este „nu”. # # # ## IgnorăRhosts ########################################## # # Dezactivează utilizarea fișierelor .rhosts și .shosts # # în autentificarea bazată pe gazdă. # # (RhostsRSAAuthentication sau HostbasedAuthentication). # # Fișierele /etc/hosts.equiv și /etc/ssh/shosts.equiv sunt # # încă în uz. # # Valoarea implicită este „da”. # # # IgnoreRhosts da # # ## IgnoreUserKnownHosts ################################# # # # Indică ar trebui sshd să ignore fișierul utilizatorului # # „gazde cunoscute” ~/.ssh/known_hosts în timpul # # autentificării bazate pe gazdă (RhostsRSAAuthentication sau HostbasedAuthentication). # # Valoarea implicită este „nu”. # # # ## PermitBlacklistedKeys ################################ # # # Specifică dacă se acceptă cheile sshd pe lista neagră # # ca fiind compromise (chei # # cunoscute-compromise (vezi ssh-vulnkey)). Dacă se setează la „da”, încercările de autentificare # # cu aceste chei vor fi înregistrate # # și acceptate, dacă se setează la „nu”, încercările de autentificare # # vor fi respinse. # # Valoarea implicită este „nu”. # # # ## PermitEmptyPasswords ################################## # # # În cazul autentificării permise cu parola, # # specifică dacă este posibilă autentificarea cu o parolă goală. # # Valoarea implicită este „nu”. # # # PermitEmptyPasswords nu # # ## PermitRootLogin #################################### # # Indică dacă autentificarea ssh ca superutilizator # # (rădăcină) este permisă. Poate lua următoarele valori: # # „da” - superutilizatorul se poate autentifica. # # Este utilizată schema de autentificare globală actuală. # # # # „fără-parolă” - superutilizatorul se poate autentifica. # # Autentificarea cu parolă pentru aceasta va fi dezactivată. # # # # „forțat-comenzi-doar” - superutilizatorul se va putea autentifica # # folosind autentificarea cu cheie publică și # # numai dacă trece comanda necesară pentru a fi executată. # # Este convenabil să faci mișcare Rezervă copie , # # chiar și atunci când este normal (adică nu prin ssh) # # autentificarea rădăcină este refuzată. Toate celelalte # # metode de autentificare pentru superutilizator vor fi dezactivate.# # # # „nu” - superutilizatorul nu poate folosi ssh pentru a # # autentificare în sistem. # # # # Valoarea implicită este „da”. # # # PermitRootLogin da # # ## Protocol ###################################### ######## # # # Specifică ce protocol ar trebui să folosească sshd. # # Valorile posibile ale lui „1” și „2” sunt ssh1 și, respectiv, ssh2 # #. Este posibilă scrierea simultană, în care # # valorile trebuie separate prin virgule. # # Valoarea implicită este „2,1”. # # Este de remarcat faptul că ordinea protocoalelor în # # o intrare nu specifică prioritatea, deoarece clientul alege ce # # dintre mai multe protocoale oferite de server să folosească # # Intrarea „2,1” este exact # # identică cu intrarea „1,2”. # # # Protocolul 2 # # ## Utilizați PAM ###################################### ######### # # # Activează interfața PAM (Pluggable Authentication Module # # interfață). Dacă este setată la „da” - pentru toate tipurile de autentificare # # în plus față de procesarea modulului de sesiune și a contului # # PAM autentificarea va fi utilizată pe baza # # challenge-response (ChallengeResponseAuthentication și # # PasswordAuthentication) # # autentificarea cu răspuns la provocare în PAM îndeplinește de obicei același rol # # ca și autentificarea cu parolă, ar trebui să dezactivați # # fie PasswordAuthentication, fie # # ChallengeResponseAuthentication. Este de remarcat faptul că # # dacă directiva UsePAM este activată, nu veți putea porni # # sshd ca alt utilizator decât root. # # Valoarea implicită este „nu”. # # # Utilizați PAM da # # ## PasswordAuthentication ################################ # # # Specifică dacă autentificare folosind # # parola. # # Valoarea implicită este „da”. # # # ## HostKey ########################################### #### # # # Specifică fișierul care conține cheia privată a gazdei # # folosită de SSH. Valoarea implicită este /etc/ssh/ssh_host_key # # pentru protocolul ssh1 și /etc/ssh/ssh_host_rsa_key și # # /etc/ssh/ssh_host_dsa_key pentru protocolul ssh2. # # Este de remarcat faptul că sshd nu va folosi un fișier # # care este partajat cu altcineva decât utilizatorul. Puteți # # să utilizați mai multe fișiere cheie, cheile sunt „rsa1” # # pentru protocolul ssh1 și „dsa”/“rsa” pentru protocolul ssh2. # # # HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_dsa_key # # ############################## ############################ ######### Opțiuni de protocol SSH versiunea 1 (ssh1) ### ########## ######################################## ################### # NU ESTE RECOMANDAT să folosești protocolul ssh1. # # Protocolul ssh2 este mult mai sigur decât ssh1 # ############################################################### #################### # # ## KeyRegenerationInterval ###################### # ######## # # # Pentru protocolul ssh1 - o dată la un anumit moment # # este generată automat o nouă cheie temporară de server # # (dacă a fost folosită una). Acest lucru se face # # pentru a preveni decriptarea sesiunilor deturnate, pentru a # # ulterior să vă conectați la mașină cu parametrii acestor sesiuni și # # să furați cheile. Această cheie nu este stocată nicăieri (stocat în # # memorie cu acces aleator). Această directivă specifică durata de viață # # a cheii în secunde după care # # va fi regenerată. Dacă valoarea este setată la 0 - # # cheia nu va fi regenerată. # # Valoarea implicită este 3600 (secunde). # # # KeyRegenerationInterval 3600 # # ## RhostsRSAAuthentication ############################### # # # Indică dacă se bazează pe autentificare pe fișierele # # rhosts sau /etc/hosts.equiv, împreună cu # # autentificarea cu succes a gazdei prin RSA. # # Relevant doar pentru protocolul ssh1. # # Valoarea implicită este „nu”. # # # RhostsRSAAuthentication nu # # ## RSAAuthentication #################################### # Indică dacă autentificarea RSA „pură” este permisă. # # Relevant doar pentru protocolul ssh1. # # Valoarea implicită este „da”. # # # RSAAuthentication da # # ## ServerKeyBits ###################################### ### # # # Specifică numărul de biți din cheia temporară a serverului pentru # # protocolul ssh1. Valoarea minimă este 512. # # Valoarea implicită este 1024. # ServerKeyBits 768 # # ################################ ########################## ########## Opțiuni de protocol SSH versiunea 2 (ssh2) #### ######## ########################################## ################# # # ## Cifre ########################### ##################### # # # Specifică algoritmii de criptare permisi pentru # # protocolul ssh2. Mai mulți algoritmi ar trebui să fie # # separați prin virgule. Algoritmi acceptați: # # „3des-cbc”, „aes128-cbc”, „aes192-cbc”, „aes256-cbc”, # # „aes128-ctr”, „aes192-ctr”, „aes256-ctr”, „ arcfour128”, # # „arcfour256”, „arcfour”, „blowfish-cbc”, „cast128-cbc”. # # Valorile implicite sunt: ​​# # aes128-cbc, 3des-cbc, blowfish-cbc, cast128-cbc, arcfour128, # # arcfour256, arcfour, aes192-cbc, aes256-cbc, aes128-ctr, #2- # aes, #5 -ctr # # # ## HostbasedAuthentication ############################## # # # Specifică dacă autentificarea este permisă, pe baza la # # verificarea gazdei. Verificați rhosts sau /etc/hosts.equiv, # # și dacă reușiți, combinat cu o verificare cu succes # # a cheii publice, accesul este acordat. Această directivă este # # aceeași cu directiva RhostsRSAAuthentication și # # se aplică numai protocolului ssh2. # # Valoarea implicită este „nu”. # # # Autentificare bazată pe gazdă nu # # ## MAC-uri ###################################### ############ # # # Indică un algoritm MAC valid (mesaj # # cod de autentificare). algoritm MAC folosit # # de protocolul ssh2 pentru a proteja integritatea datelor. Mai mulți # # algoritmi trebuie despărțiți prin virgule. # # Valorile implicite sunt: ​​# # hmac-md5,hmac-sha1, [email protected] ,hmac-ripemd160, # # hmac-sha1-96,hmac-md5-96 # # # ## PubkeyAuthentication ########################## ########## # # # Indică dacă autentificarea cu cheie publică # # este permisă. Relevant doar pentru protocolul ssh2. # # Valoarea implicită este „da”. # # # PubkeyAuthentication da ###################################################################### ############### ################### Opțiuni GSSAPI ############# ############# ####################################################### ###################### # # ############ Aplicabil numai pentru protocolul ssh2 ######## ### # # ## GSSAPIAuthentication ################################## # # # Specifică dacă autentificarea utilizatorului este # # bazată pe GSSAPI. Valoarea implicită este „nu”, adică. interzisă. # # # ## GSSAPIKeyExchange ################################### # # # Indică dacă cheia schimbul bazat pe # # GSSAPI este permis. Schimbul de chei GSSAPI nu se bazează pe # # chei ssh pentru a verifica identitatea gazdei. # # Valoarea implicită este „nu” - adică schimbul este interzis. # # # ## GSSAPICleanupCredentials ############################# # # # Specifică dacă se distruge automat # # autentificarea utilizatorului memoria cache a acreditărilor când # # se termină sesiunea. # # Valoarea implicită este „da” - adică trebuie distrus. # # # ## GSSAPIStrictAcceptorCheck ############################ # # # Specifică cât de strictă ar trebui să fie verificarea identității # # client la autentificare prin GSSAPI. # # O valoare „da” determină clientul să se autentifice la # # serviciul gazdă care primește pe gazda curentă. O valoare „nu” # # permite clientului să se autentifice cu orice # # cheie de serviciu. # # Valoarea implicită este „da”. # # Rețineți că setarea la „nu” poate funcționa numai # # cu bibliotecile Kerberos GSSAPI rare. # # # ############################################### # ############ ################## Opțiuni Kerberos ############### # ######### ######################################## # ################## # # ## KerberosAuthentication ######################## # ######## # # # Indică dacă parola furnizată # # de utilizator pentru autentificare # # (PasswordAuthentication) necesită validare la Kerberos KDC. # # Pentru a utiliza această opțiune, serverul are nevoie de # # pentru a verifica dacă KDC este adevărat. (Serverul are nevoie de un # # servtab Kerberos care permite verificarea identității # # KDC) # # Implicit este „nu”. # # # ## KerberosGetAFSToken ################################### # # # Dacă AFS este activ iar utilizatorul a primit un Kerberos 5 TGT, # # dacă să încerce să obțină un token AFS înainte ca utilizatorul # # să aibă acces la folderul de acasă. # # Valoarea implicită este „nu”. # # # ## KerberosOrLocalPasswd ################################# # # # Specifică cum să procedezi în caz de dacă autentificarea # # prin Kerberos a eșuat. Dacă # # valoarea este „da”, parola va fi verificată folosind # # orice mecanism de autorizare local suplimentar, # # de exemplu - /etc/passwd. # # Valoarea implicită este „da”. # # # ## KerberosTicketCleanup ################################# # # # Specifică dacă se oprește automat fișierul cu # # cache-ul biletului utilizatorului când se termină sesiunea. # # Valoarea implicită este „da”. # # # ############################################### # ############# ################ Opțiuni de redirecționare ################# # ## ############################################### ## ########### # # ## AllowAgentForwarding ############################## # ### # # # Specifică dacă se activează sau se dezactivează redirecționarea ssh-agent # #. Valoarea implicită este „da”, adică permite. # # Rețineți că dezactivarea redirecționării nu va crește # # securitatea, cu excepția cazului în care utilizatorii vor refuza și # # acces shell deoarece își pot # # instala propriile agenți omologii # # # ## AllowTcpForwarding ##################### ########## ###### # # # Specifică dacă se permite sau se dezactivează redirecționarea TCP # # Valoarea implicită este „da”, adică permite. deoarece # # utilizatorii au acces la consolă, deoarece își pot # # instala omologii # # # # # ## GatewayPorts ######### ## ################################ # # # Specifică dacă se permite gazde la distanță accesați # # porturi redirecționate. În mod implicit, sshd ascultă doar # # pentru porturile redirecționate pe interfața locală # # (loopback). Acest lucru împiedică alte gazde la distanță # # să se conecteze la porturile redirecționate. Puteți utiliza # # GatewayPorts pentru a permite sshd să # # să facă acest lucru. Directiva poate lua 3 valori: # # "nu" - doar loopback. # # „da” - orice adrese. # # „clientspecified” - adrese specificate de client. # # # ## PermisDeschis ########################################### # # # # Specifică unde este permisă redirecționarea portului TCP. # # Sugestia de redirecționare trebuie să aibă una dintre # # următoarele forme: # # PermitOpen host:port # # PermitOpen IPv4_addr:port # # PermitOpen :port # # Mai multe intrări pot fi specificate prin separarea lor cu spații. # # Argumentul „orice” poate fi folosit pentru a elimina toate # # restricțiile de redirecționare a porturilor. În mod implicit, orice # # redirecționare este permisă. # # # ## PermitTunnel ########################################### # # Indică dacă redirecționarea dispozitivului tun este permisă. # # Poate fi setat la: # # „da” # # „punct-la-punct” (al treilea strat de rețea) # # „ethernet” (al 2-lea strat de rețea) # # „nu” # # Valoarea „da” permite ambele „ punct la punct" # # și „ethernet” în același timp. Valoarea implicită este „nu”. # # # ############################################### # ############# ################# Opțiuni de înregistrare ################ # ### ################################################################ ## ############ # # ## SyslogFacility ############################# # ########## # # # Specifică codul obiectului jurnal pentru a scrie mesaje în # # syslog din sshd. Valori posibile: # # DAEMON # # USER # # AUTH # # LOCAL0 # # LOCAL1 # # LOCAL2 # # LOCAL3 # # LOCAL4 # # LOCAL5 # # LOCAL6 # # LOCAL7 # # Valoarea implicită este AUTH. # # # SyslogFacility AUTH # # ## LogLevel ###################################### ######## # # # Setează nivelul de verbozitate al jurnalului sshd. # # Opțiunile sunt: ​​# # SILENT # # QUIET # # FATAL # # EROARE # # INFO # # VERBOSE # # DEBUG # # DEBUG1 # # DEBUG2 # # DEBUG3 # # Implicit este INFO. # # DEBUG și DEBUG1 sunt echivalente între ele. # # DEBUG2 și DEBUG3 setează cele mai înalte niveluri de ieșire de depanare. Conectarea la nivelul DEBUG # # amenință confidențialitatea utilizatorului și nu este recomandată. # # # LogLevel INFO # # ########################################## ############### ################## Redirecționare X11 ############ # ####### ########################################## ################ # # ## X11Redirecționare ######################### ## ############## # # # Indică dacă este permisă redirecționarea subsistemului grafic X11 # #. Poate lua valorile „da” sau „nu”. # # Valoarea implicită este „nu”. # # Avertisment - activarea unei redirecționări simple X11 este # # un risc mare atât pentru server, cât și pentru clienți, deoarece în # # această redirecționare, afișajul proxy sshd va accepta # # conexiuni de la orice adresă. # # Utilizați directiva X11UseLocalhost pentru a restricționa accesul la # # serverul de redirecționare X. Este de remarcat faptul că # # dezactivarea redirecționării nu va garanta că # # utilizatorii nu vor putea redirecționa X11, deoarece având # # acces la consolă își setează întotdeauna redirectorul # #. Redirecționarea X11 va fi # # dezactivată automat dacă # # este utilizată directiva UseLogin. # # # X11Redirecționare da # # ## X11UseLocalhost ###################################### # # # Specifică dacă sshd # # ar trebui să restricționeze redirecționarea X11 la adresa de buclă locală sau # # să permită orice adrese. Implicit - sshd # # „aterizează” serverul de redirecționare X11 adresa locala# # și setează partea numelui de gazdă a variabilei de mediu DISPLAY # # la „localhost”. Rețineți că # # este posibil ca unii clienți X11 mai vechi să nu funcționeze cu # # aceste setări. Valoarea implicită este „da”, adică redirecționarea # # este limitată la localhost, valoarea este „nu” - dezactivează # # restricțiile. # # # ## XAuthLocation ######################################## ## # Specifică calea completă către programul xauth. # # Implicit este /usr/bin/X11/xauth. # # # ## X11DisplayOffset #################################### # # # Indică numărul din primul afișaj disponibil pentru sshd # # ca redirecționare X11. Acest lucru se face astfel # # încât x-urile redirecționate să nu se suprapună cu # # cele reale. Valoarea implicită este 10. # # # X11DisplayOffset 10 # # ################################### #################### ################## Diverse opțiuni ###### # ################ ################################# ######################### # # ## LoginGraceTime ################## # ###################### # # # Timpul după care serverul deconectează # # un utilizator dacă nu se # # autentifică în mod satisfăcător. Valoarea 0 - permite utilizatorului # # să se autentifice pe termen nelimitat. Valoarea implicită este 120 (secunde). # # # LoginGraceTime 120 # # ## MaxAuthTries ##################################### # ### # # # Indică număr maximîncercări de autentificare # # permise pentru fiecare conexiune. # # De îndată ce numărul de încercări eșuate depășește jumătate # # valoarea stabilită, toate încercările ulterioare vor fi # # înregistrate. Valoarea implicită este 6. # # # ## MaxSessions #################################### ###### # # # Specifică numărul maxim de conexiuni concurente # # pentru fiecare conexiune retea. Implicit este 10. # # # ## MaxStartups ##################################### ##### # # # Specifică numărul maxim de conexiuni simultane # # neautorizate la sshd. În cazul în care # # numărul de conexiuni depășește limita - toate # # conexiunile suplimentare vor fi renunțate până când # # conexiunile curente sunt finalizate fie prin autorizare cu succes, # # fie prin expirarea perioadei de timp specificate în directiva # # LoginGraceTime . Valoarea implicită este 10. # # Opțional, puteți seta conexiunile să scadă mai devreme prin # # specificând trei valori separate # # prin două puncte „start:rate:full” (de exemplu: „10:30:60”). # # sshd va respinge o încercare de conectare cu o probabilitate # # de „rate/100” (adică 30% în exemplul nostru) dacă # # există deja conexiuni neautorizate „start” (10). # # Probabilitatea crește liniar și orice # # încercări de conectare vor fi respinse dacă numărul de # # conexiuni neautorizate ajunge la „plin” (60). # # # ## Compresie ########################################### # # # # Indică dacă compresia datelor este activată. Poate fi # # „da” - compresia este activată. # # „întârziat” - compresia este întârziată până când # # utilizatorul este autentificat cu succes. # # „nu” - compresia este dezactivată. # # Valoarea implicită este „întârziată”. # # # ## UtilizațiLogin ########################################### ### # # # Indică dacă autentificarea ar trebui utilizată pentru # # o sesiune interactivă. Valoarea implicită este „nu”. # # Este de remarcat faptul că autentificarea nu a fost niciodată folosită # # pentru a executa comenzi de la distanță. De asemenea, rețineți că # # folosind autentificare va dezactiva directiva # # X11Forwarding deoarece autentificarea nu știe ce să facă # # cu xauth. Dacă directiva # # UsePrivilegeSeparation este activată - va fi dezactivată după # # autorizare. # # # ## UsePrivilegeSeparation ############################### # # # Specifică dacă sshd ar trebui să separe privilegiile. Dacă da # #, atunci va fi creat mai întâi un proces copil neprivilegiat # # pentru traficul de rețea de intrare. După autorizarea cu succes, # # va fi creat un alt proces cu # # privilegiile utilizatorului conectat. # # # Scopul principal al partajării privilegiilor este de a preveni suprascrierile. # # Valoarea implicită este „da”. # # # UsePrivilegeSeparation da # # ## StrictModes #################################### ### # # # Specifică dacă sshd ar trebui să verifice modurile de acces și # # proprietatea folderele utilizatorului și fișiere înainte de a lăsa utilizatorul să intre. Acest lucru se datorează, de obicei, că # # începătorii își fac adesea fișierele inscriptibile # # de către toată lumea. Valoarea implicită este „da”. # # # StrictModes da # # ## AcceptEnv ################################################################# ####### # # # Specifică ce variabile de mediu transmise # # de client vor fi acceptate. Vedeți opțiunea SendEnv din client. # # Rețineți că trecerea variabilelor este posibilă numai # # pentru protocolul ssh2. Variabilele sunt specificate după nume, pot fi utilizate # # metacaractere ('*' și '?'). Puteți specifica # # mai multe variabile separate prin spații sau # # întrerupeți mai multe linii de AcceptEnv. Fiți atenți - unele # # variabile de mediu pot fi folosite pentru a ocoli # # mediile de utilizator interzise. # # Utilizați această directivă cu atenție. În mod implicit, nu sunt acceptate # # variabile de mediu personalizate. # # # AcceptEnv LANG LC_* # # ## PermisUserEnvironment ############################### # # # Specifică dacă sshd # # ar trebui să accepte opțiunea ~/.ssh/environment și mediu= în # # ~/.ssh/authorized_keys. Valoarea implicită este „nu”. Merită # # remarcat faptul că activarea procesării mediului poate oferi utilizatorilor # # posibilitatea de a ocoli restricțiile în unele # # configurații folosind mecanisme precum # # LD_PRELOAD. # # # # # ## Fișier Pid ######################################## ###### # # # Specifică fișierul care conține ID-ul procesului # # (ID-ul procesului, PID) al demonului SSH. # # Implicit este /var/run/sshd.pid # # # # # ## PrintLastLog ########################### ## ############# # # # Specifică dacă sshd ar trebui să afișeze data și ora # # ultimei sesiuni când un utilizator se conectează interactiv. # # Valoarea implicită este „da”. # # # PrintLastLog da # # ## PrintMotd ####################################### ####### # # # Specifică dacă sshd ar trebui să imprime /etc/motd # # când un utilizator se conectează interactiv. Pe unele # # sisteme (de exemplu Ubuntu) această informație este, de asemenea, afișată de # # shell. # # Valoarea implicită este „da”. # # # PrintMotd nr # # ## Banner ###################################### ######### # # # Specifică ce fișier conține bannerul text # # care va fi afișat utilizatorului ÎNAINTE de procedura de autentificare # #. Opțiunea este disponibilă numai pentru protocolul ssh2.# # Implicit - nu arată nimic. # # Pe Ubuntu, fișierul issue.net conține expresia Ubuntu (versiune), # # de exemplu pentru karmic este „Ubuntu 9.10”. # # poate fi folosit pentru a deruta potențialii atacatori prin # # scriind „My D-Link Interet Router” =) # # # Banner /etc/issue.net # # ## ChrootDirectory ########### # ############################ # # # Dacă este specificat, furnizează calea către # # chroot după autentificare. Calea și tot conținutul său # # trebuie să corespundă folderelor # # deținute de superutilizator și care nu pot fi scrise # # de către alți utilizatori. # # Calea poate conține etichete care sunt înlocuite în # # procesul de autentificare: # # %% - înlocuit cu literalul „%” # # %h - înlocuit cu directorul principal # # al utilizatorului care este autentificat # # %u - înlocuit cu numele utilizatorului care este autentificat # # chroot -folderul ar trebui să conțină toate fișierele și # # folderele necesare pentru sesiunea utilizatorului. O sesiune # # interactivă are nevoie de cel puțin: # # un shell, de obicei sh # # dispozitive de bază în /dev, cum ar fi: # # null, zero, stdin, stdout, stderr, random și tty # # pentru o sesiune de transfer de date folosind sftp niciunul # # setari avansate nu este necesar dacă se utilizează # # procesul intern sftp al serverului. Consultați Subsistem pentru # # mai multe informații. În mod implicit, chroot-ul nu este efectuat. # # # ## ForceCommand ########################################### # # Determină executarea comenzii specificate. Ignoră # # orice comenzi date de client sau scrise în # # ~/.ssh/rc. Comanda este invocată din # # shell-ul utilizatorului cu opțiunea -c. Potrivit pentru rularea unui shell, # # comandă sau subsistem. Cel mai util în blocul # # Match. Comanda trimisă inițial de client este stocată # # în variabila de mediu SSH_ORIGINAL_COMMAND. Dacă # # este specificată comanda „internal-sftp”, # # va fi pornit un server sftp intern, care nu are nevoie de fișierele și folderele suplimentare # # descrise în directiva ChrootDirectory. # # # ## Subsistemul ########################################### ## # # # Definește și configurează un subsistem extern (de exemplu # # demonul de transfer de fișiere - transfer de fișier demon). # # Argumentele sunt numele și comanda (cu posibile # # argumente) care vor fi executate în timpul interogării # # pe subsisteme. Comanda sftp-server pornește subsistemul de transfer de fișiere „sftp” # #. Opțional, puteți # # specifica „internal-sftp” ca subsistem, care va porni # # un server intern sftp. Acest lucru poate simplifica # # foarte mult configurația când se folosește directiva # # ChrootDirectory În mod implicit, nu sunt apelate subsisteme # #. Relevant doar pentru protocolul ssh2. # # # Subsistem sftp /usr/lib/openssh/sftp-server # # ############################### # ######################### ################### Bloc de potrivire # ######################### ######################## ################################## # # # Mutat special la sfârșitul fișierului pentru a-l face mai convenabil # # scrie regulile de potrivire. # # MadKox. # # # # Directiva Match este începutul unui # # bloc condiționat. Dacă sunt îndeplinite toate criteriile specificate în linia de potrivire # #, directivele de pe liniile ulterioare ale blocului sunt executate, # # permițându-vă să ocoliți valorile directivelor globale sshd_config # # pentru cazul în care # # se potrivește cu criteriile directivei. Un bloc sunt toate liniile care urmează linia # # cu criteriul (Potrivire - linii) până la următoarea linie de potrivire # # sau până la sfârșitul fișierului. Argumentul pentru directiva Match este una sau # # mai multe perechi de intrări de criterii. Tipurile de înregistrări posibile sunt: ​​# # Utilizator # # Grup # # Gazdă # # Adresă # # Înregistrările pot conține valori individuale # # (de ex. Utilizator=utilizator) sau valori multiple # # separate prin virgule (Utilizator=utilizator1,utilizator2 ). # # Pot fi folosite și expresiile regulate descrise în # # secțiunea PATTERNS din fișierul ssh_config. Intrările din criteriile de adresă # # pot conține adrese în notația CIDR # # (Lungimea adresă/mască, de exemplu „192.0.2.0/24” sau # # „3ffe:ffff::/32”). Este de remarcat faptul că lungimea măștii furnizată # # trebuie să se potrivească cu adresa și # # prea lung/scurt pentru adresă nu va funcționa. # # Directivele de potrivire pot folosi doar # # un anumit set de directive: # # AllowTcpForwarding # # Banner # # ChrootDirectory # # ForceCommand # # GatewayPorts # # GSSAPIAuthentication # # HostbasedAuthentication # # KbdInteractiveAuthentication # # KerberosAuthentication # # # MaxAuthTriess # # # MaxAuthTries PasswordAuthentication # # PermitOpen # # PermitRootLogin # # RhostsRSAAuthentication # # RSAAuthentication # # X11DisplayOffset # # X11Forwarding # # X11UseLocalHost #

Puteți copia textul de mai sus în propriul sshd_config și îl puteți utiliza mai târziu pentru configurare.

În sine, un server SSH configurat greșit este o vulnerabilitate uriașă de securitate, deoarece un posibil atacator are capacitatea de a obține acces aproape nelimitat la sistem. În afară de aceasta, sshd are multe suplimentare opțiuni utile, pe care doriți să-l activați pentru a îmbunătăți gradul de utilizare și securitatea.

Port, ListenAddress și AddressFamily

Aceste trei opțiuni determină porturile și adresele pe care serverul dvs. va asculta pentru conexiunile de intrare. În primul rând, are sens, dacă este posibil, să se limiteze familia de adrese procesate la cele utilizate efectiv, adică dacă utilizați doar IPv4, dezactivați IPv6 și invers. Acest lucru se poate face folosind parametrul AddressFamily, de exemplu (pentru a permite IPv4 și a refuza IPv6):

AddressFamily inet

În al doilea rând, este de dorit să se schimbe portul standard (22) pe care ascultă sshd. Acest lucru se datorează faptului că numeroase scanere de rețeaîncercând constant să se conecteze la cel de-al 22-lea port și cel puțin să obțină acces prin enumerarea login-urilor / parolelor din baza lor de date. Chiar dacă ați dezactivat autentificarea prin parolă, aceste încercări blochează jurnalele și (în în număr mare) poate afecta negativ viteza serverului ssh. Dacă dintr-un motiv oarecare nu doriți să schimbați portul standard, puteți utiliza diverse utilitare externe pentru a combate forțarea brută, cum ar fi fail2ban, sau cele încorporate, cum ar fi MaxStartups.
Puteți seta portul ca valoare absolută pentru toate interfețele folosind directiva Port sau sens specific pentru fiecare interfață, folosind directiva ListenAddress. De exemplu:

Port 2002

ListenAddress 192.168.0.1:2003 ListenAddress 192.168.1.1:2004

Dezactivați accesul de la distanță pentru superutilizator

În mod implicit, accesul root este refuzat prin parolă (prin cheie - puteți) - opțiunea PermitRootLogin este setată la fără parolă. Dar, cu condiția ca implicit utilizator Ubuntu, adăugat în timpul instalării sistemului are capacitatea de a efectua toate sarcinile administrative prin sudo, de a crea capacitatea de a accesa la sistem root prin ssh - pare nerezonabil (chiar și cu autentificarea cheie). Se recomandă oprirea completă. această opțiune sau aplicați-o numai în modul numai pentru comenzi forțate. Puteți dezactiva accesul root astfel:

PermitRootLogin nr

Autentificare prin parolă

Autentificarea prin parolă activată în mod implicit este practic cea mai primitivă modalitate de a vă conecta la sshd. Pe de o parte, acest lucru simplifică configurarea și conectarea noilor utilizatori (este suficient ca utilizatorul să-și cunoască autentificarea / parola de sistem), pe de altă parte, parola poate fi întotdeauna ghicită, iar utilizatorii neglijează adesea să creeze complexe și parole lungi. Boții speciali scanează în mod constant serverele ssh disponibile de pe Internet și încearcă să se autentifice la ele prin enumerarea autentificărilor/parolelor din baza lor de date. Este foarte recomandat să nu utilizați autentificarea prin parolă. Îl poți dezactiva astfel:

PasswordAuthentication nr

Dacă dintr-un motiv oarecare doriți să utilizați autentificarea cu parolă - asigurați-vă că nimeni nu se poate conecta cu o parolă goală. Pentru a face acest lucru, setați directiva PermitEmptyPasswords:

PermitEmptyPasswords nr

Protocoale SSH1 și SSH2

După cum sa menționat deja, sshd poate funcționa cu protocoalele SSH1 și SSH2. Cu toate acestea, utilizarea SSH1 nesigură este foarte descurajată. Puteți forța sshd să funcționeze numai cu protocolul SSH2 astfel:

Autentificare cheie SSH2 RSA

Metoda de autorizare preferată este autentificarea cheii SSH2 RSA. Cu această metodă, utilizatorul generează o pereche de chei pe partea sa, dintre care o cheie este secretă, iar cealaltă este publică. Cheia publică este copiată pe server și servește la verificarea identității utilizatorului. Pentru mai multe informații despre crearea unei perechi de chei și despre cum să le plasați pe server, consultați descrierea clientului SSH. Puteți activa autentificarea cu cheie publică astfel:

PubkeyAuthentication da

Serverul trebuie să știe unde ar trebui să caute cheia publică a utilizatorului. Pentru aceasta este folosit un fișier special authorized_keys. Sintaxa sa poate fi după cum urmează:

# Comentariile sunt scrise numai cu linie nouă# vizualizare generală a intrărilor din fișierul autorizat_keys # [opțiuni] key_type (ssh-rsa sau ssh-dss) very_long_string_incomprehensible_to_ordinary_human [login@host] ssh-rsa AAAAB3Nza...LiPk== [email protected] from="*.sales.example.net,!pc.sales.example.net" ssh-rsa AAAAB2...19Q== [email protected] command="dump /home",no-pty,no-port-forwarding ssh-dss AAAAC3...51R== example.net permitopen="192.0.2.1:80",permitopen="192.0.2.2:25" ssh -dss AAAAB5...21S== tunnel="0",command="sh /etc/netstart tun0" ssh-rsa AAAA...== [email protected]

Puteți specifica atât un fișier partajat cu chei, cât și un fișier pentru fiecare utilizator. Ultima cale este mai convenabil și mai sigur, deoarece, în primul rând, puteți specifica diferite combinații de taste pentru fiecare utilizator și, în al doilea rând, puteți restricționa accesul la cheia publică a utilizatorului. Puteți seta un fișier cu chei utilizând directiva AuthorizedKeysFile:

AuthorizedKeysFile %h/.ssh/my_keys Pe client, setați parametrii în fișierul /etc/ssh/ssh_config (dezactivat implicit):

ForwardAgent da ForwardX11 da

Îl poți rula pe client astfel ssh [email protected] firefox. Sau mai întâi mergem ssh [email protected] apoi rulați, de exemplu sudo synaptic .

SFTP

sshd are un server SFTP încorporat în mod implicit. SFTP (SSH File Transfer Protocol) - protocol SSH pentru transferul de fișiere. Este proiectat să copieze și să efectueze alte operațiuni de fișiere pe lângă un sistem de încredere și conexiune sigură. De regulă, protocolul SSH2 este utilizat ca protocol de bază care asigură conexiunea. Pentru a activa suportul SFTP, adăugați linia la sshd_config

Subsistemul sftp /usr/lib/openssh/sftp-server

În mod implicit, suportul SFTP este activat.

Utilizarea criteriilor. Directiva de potrivire

2. Pregătirea serverului. Trebuie să vă asigurați că configurația sshd permite autentificarea cu chei publice. Pentru a face acest lucru, trebuie să specificați valoarea parametrului „PubkeyAuthentication” în fișierul „sshd_config” la „yes”. Apoi adăugăm cheia noastră publică obținută mai devreme (pe o singură linie) în fișierul „~/.ssh/authorized_keys”. Vă rugăm să rețineți că fișierul „.ssh/authorized_keys” se află în directorul principal al utilizatorului care se va conecta apoi folosind cheia publică.

3. Partea client pe Linux. Va trebui să reconstruiți pachetul OpenSSH fără opțiuni. Se recomandă să specificați doar prefixe de director, cum ar fi --prefix=/usr. De asemenea, rețineți că fișierele de configurare vor fi în /usr/etc. Înainte de a începe, sunt necesare pachete: opensc-lite-devel, zlib-devel, openssl-devel. Instalați driverul pentru cardul inteligent. Pentru comoditate, în configurația ssh_config (a nu se confunda cu sshd_config) specificați calea către biblioteca pkcs: PKCS11Provider=<путь к библиотеке>

4. Rulați ssh pe client [email protected] Dacă este conectat un smart card (token), va fi solicitată o parolă și o sesiune SSH va fi conectată.

Adică user1 poate fi înregistrat atât pentru el însuși - în fișierul /home/user1/.ssh/keys), cât și pentru un alt utilizator, ceea ce îi va permite să se autentifice de pe computer atât „sub el însuși”, cât și sub „altul”

SSH este unul dintre cele mai importante instrumente de administrare a sistemului.

SSH sau Secure Shell (secure shell) este un protocol folosit pentru conexiune sigură la sistemele de la distanță. Acesta este cel mai comun mod de a vă conecta la servere de la distanță Linux și Unix (de exemplu, VPS).

Acest tutorial se va concentra pe utilizarea SSH pentru a vă conecta la un sistem de la distanță.

Sintaxa de bază

Pentru a vă conecta la un sistem de la distanță folosind SSH în Linux, există un instrument cu același nume - ssh.

Tip de comandă de bază:

ssh remote_host

În acest exemplu, expresia „gazdă_la distanță” înlocuiește adresa IP sau Numele domeniului gazdă la care să se conecteze.

Această comandă presupune că numele de utilizator pe sistemele locale și la distanță este același.

Dacă pe sistemul de la distanță este setat un alt nume de utilizator, acesta trebuie specificat folosind următoarea sintaxă:

ssh username@remotehost

După conectarea la server, trebuie să specificați o parolă pentru a trece autorizarea.

Procedura de generare a cheilor care pot fi utilizate în locul unei parole va fi descrisă mai târziu.

Pentru a reveni la sesiunea locală, tastați pur și simplu:

Cum funcționează SSH?

SSH funcționează prin conectarea unui program client la un server ssh.

În comenzile de mai sus, ssh este programul client. Serverul ssh rulează deja pe gazda la distanță specificată.

Dacă serverul ssh nu rulează deja pe VPS, faceți clic pe butonul „Acces la consolă” aflat pe pagina serverului. Aceasta va afișa un ecran de autorizare. Utilizați acreditările pentru a vă conecta.

În general, procesul de pornire a unui server ssh depinde de distribuția Linux pe care o utilizați.

Pe Ubuntu, pentru a rula un server ssh pe un VPS, tastați:

sudo service sshd start

Configurare SSH

Când modificați setările SSH, se schimbă și setările serverului ssh.

Pe Ubuntu, fișierul principal de configurare SSH se află în /etc/ssh/sshd_config.

Crea backup versiunea curentă a acestui fișier înainte de a-l edita:

Sudo cp /etc/ssh/sshd_config(,.bak)

Deschide-l cu un editor de text:

sudo nano /etc/ssh/sshd_config

Unele setări necesită o atenție specială, de exemplu:

Această linie specifică pe ce port va asculta serverul ssh pentru conexiuni. Valoarea implicită este portul 22.

Este recomandabil să folosiți un port non-standard pentru a proteja serverul de scanările accidentale ale portului. Mai târziu vă vom arăta cum să vă conectați la noul port.

HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key

Liniile HostKey indică unde se află cheile gazdă (mai multe despre cheile gazdă mai târziu).

SyslogFacility
INFO LogLevel

Aceste linii conțin setări de înregistrare și definesc nivelul de jurnal.

Dacă întâmpinați probleme cu SSH, este recomandat să creșteți nivelul jurnalului (ceea ce crește cantitatea de date scrise).

LoginGraceTime 120
PermitRootLogin da
StrictModes da

Acești parametri conțin unele informații de înregistrare.

LoginGraceTime Specifică numărul de secunde în care conexiunea trebuie menținută fără autorizație.

Notă: în această linie, setați puțin mai mult timp decât este necesar de obicei pentru înregistrare.

PermitRootLogin determină capacitatea de a vă conecta ca utilizator root.

În cele mai multe cazuri, după crearea unui utilizator cu privilegii ridicate (su sau sudo) și capacitatea de a se conecta prin ssh, se recomandă să setați această linie la „nu”

strictModes este un dispozitiv de securitate care va refuza intrarea dacă fișierele de autentificare sunt citite de toată lumea.

Acest lucru previne încercările de conectare dacă fișierele de configurare nu sunt sigure.

X11 Redirecționare da
X11DisplayOffset 10

Aceste setări configurează o caracteristică numită Redirecționare X11, care vă permite să vizualizați interfața grafică cu utilizatorul (GUI) a unui sistem la distanță pe sistemul local.

Această opțiune trebuie să fie activată atât pe mașinile locale, cât și pe cele de la distanță; pentru a utiliza funcția, trebuie să treceți clientul și opțiunea -X.

Prin editare fisierul dat nu uitați să reporniți serverul ssh pentru activare modificările efectuate:

sudo service sshd restart

În plus, modificările pe care le faceți trebuie să fie testate temeinic pentru a vă asigura că totul funcționează conform așteptărilor.

Dacă întâmpinați probleme, rețineți că vă puteți conecta și folosind butonul „Acces la consolă”.

Conectați-vă cu cheile SSH

Autentificarea bazată pe chei este adesea mult mai sigură decât conectarea la un sistem de la distanță cu o parolă.

Cum funcționează autentificarea bazată pe chei?

Autentificarea bazată pe chei implică crearea unei perechi de chei - private și publice.

Cheia privată se află pe computerul client și trebuie protejată și păstrată secretă.

Cheia publică poate fi dată oricui și plasată pe orice server care trebuie accesat.

Când încercați să vă conectați folosind o pereche de chei, serverul folosește cheia publică pentru a crea un mesaj pentru computerul client care poate fi citit numai folosind cheia privată.

Computerul client trimite apoi un răspuns adecvat serverului, astfel încât serverul să înțeleagă că clientul este legitim.

După configurarea cheilor, întregul proces este efectuat automat în fundal.

Generarea cheilor SSH

Cheile SSH trebuie create pe computerul de la care doriți să vă conectați (de obicei, computerul local).

În linia de comandă, tastați:

ssh-keygen -t rsa

Pentru a accepta setările implicite, apăsați Enter. Cheile vor fi generate în ~/.ssh/id_rsa.pub și ~/.ssh/id_rsa.

Schimbați în directorul .ssh tastând:

Atenție la permisiunile fișierelor:

ls-l
-rw-r--r-- 1 demonstrație demo 807 9 septembrie 22:15 authorized_keys
-rw------- 1 demonstrație demo 1679 9 septembrie 23:13 id_rsa
-rw-r--r-- 1 demonstrație demo 396 9 septembrie 23:13 id_rsa.pub

După cum puteți vedea, doar proprietarul are dreptul de a citi și modifica fișierul id_rsa. Astfel de privilegii sunt necesare pentru a păstra secretul cheii.

În același timp, fișierul id_rsa.pub poate fi partajat deoarece are privilegiile corespunzătoare.

Transferarea cheii publice pe server

Următoarea comandă va copia cheia publică pe serverul de la distanță:

ssh-copy-id remote_host

Aceasta va deschide o sesiune SSH care necesită o parolă pentru a intra.

După introducerea parolei, cheia publică va fi copiată pe server, permițându-vă să vă conectați fără parolă data viitoare.

Setări client SSH

La conectarea prin SSH, pot fi utilizate o serie de steaguri.

Unele dintre ele sunt necesare pentru a seta opțiunile corespunzătoare în fișierul ssh al gazdei la distanță.

De exemplu, dacă numărul portului din configurațiile ssh de pe gazda locală a fost modificat, trebuie să setați portul corespunzător pe partea client, tastând:

ssh -p numărul portului gazdă la distanță

Dacă o comandă trebuie să fie executată pe sistemul de la distanță, aceasta poate fi specificată după cum urmează:

ssh remote_host dorit_command

Această linie va stabili o conexiune la mașina de la distanță și va executa comanda specificată.

După cum sa menționat deja, dacă funcția de redirecționare X11 este activată pe ambele computere, poate fi utilizată tastând:

ssh -X gazdă_remotă

Dacă sistemul local are toate instrumentele de program relevante cu GUI utilizat pe sistemul de la distanță se va deschide pe computerul local.

Rezultate

A învăța cum să lucrezi cu SSH este foarte important, fie și doar pentru că este necesar să realizezi cele mai de bază sarcini.

Folosind constant SSH, nu numai că puteți securiza serverul, ci și puteți deveni un utilizator avansat, ceea ce vă va simplifica foarte mult viața. Protocolul SSH rămâne popular deoarece este sigur, fiabil și util într-o varietate de situații.

Etichete: ,

    Yossi

    Yossi

    imi pare rau, problema rezolvata

Ne-am dat seama ce SSHși care sunt avantajele sale, am implementat și cel mai simplu exemplu ssh- server și client.

Astăzi voi vorbi mai multe setare detaliată ssh- Server.

După cum spune celebra frază, „în linux totul este un fișier”, deci pentru a configura ssh- server, este necesar și suficient să editați un fișier de configurare. Drumul său complet este /etc/ssh/sshd_config. Pentru editare, deschideți acest fișier cu drepturi de superutilizator cu orice editor de text.

Înainte de editare, să o facem pentru orice eventualitate backup fişier:

Sudo cp /etc/ssh/sshd_config(,.bak)

Acum să-i vedem conținutul:

sudo nano /etc/ssh/sshd_config

După fiecare modificare a acestui fișier, trebuie să reporniți ssh- server pentru a aplica modificările noastre.

După cum putem vedea, există destul de mulți parametri aici, ne vom ocupa de fiecare dintre ei treptat.

port

Aici este scris pe ce port va asculta serverul nostru. În mod implicit, ascultă 22 port TCP/IP. Fapt interesant că puteți specifica mai multe porturi. De exemplu:

ListenAddress

Restricție de autorizare prin interfață (Adresa de ascultare)

Vederea generală a setării poate fi scrisă după cum urmează:

ListenAddress gazdă | adresa_IPv4 | Adresă_IPv6 ListenAddress :port

Indică adresă de rețea pe care serverul va asculta.
Dacă serverul are mai multe interfețe de rețea care sunt configurate să utilizeze diferite IP adrese, atunci puteți restricționa accesul prin acest parametru.
De exemplu, pe server următoarele 4 interfețe de rețea:

eth0 - 192.168.0.1 eth1 - 192.168.0.2 eth2 - 192.168.0.3 eth3 - 192.168.0.4

Mod implicit ssh- serverul este într-o stare de așteptare a conexiunii IP adrese. Dacă doriți ca utilizatorii să se poată autentifica numai pe interfețe 2 și 3 , atunci ar trebui să faci asta:

ListenAddress 192.168.0.2 ListenAddress 192.168.0.3

De asemenea, puteți specifica un port aici. De exemplu:

ListenAddress 192.168.0.2:222

Dacă portul nu este setat, ssh va asculta pe aceasta adresa si
pe portul specificat în opțiune port. Dacă vei folosi ListenAddress fără a specifica un port, apoi opțiunea port trebuie să precedă opțiunea ListenAddress. Dacă nu este specificat deloc AscultăAdresă, apoi implicit serverul ascultă pe toate adresele locale.

Adresa familiei

Specifică care familie IP adresele trebuie utilizate de către serviciu ssh. Opțiuni posibile:
"orice"- orice
„inet”(numai IPv4)
"inet6"(numai IPv6)
Mod implicit - "orice".

Este logic, dacă este posibil, să limitați familia de adrese procesate la cele utilizate efectiv, adică dacă utilizați numai IPv4- dezactivați IPv6, si invers.

De exemplu, pentru a permite IPv4și interzicerea IPv6:

AddressFamily inet

Protocol

ssh poate lucra cu protocoale SSH1și SSH2. Cu toate acestea, utilizarea nesigure SSH1 foarte nerecomandat. forta ssh lucreaza doar cu protocol SSH2 este posibil asa:

Protocolul 2

PermitRootLogin

Posibilitate de autorizare sub superutilizator

În mod implicit, conectați-vă la serverul de la distanță ca utilizator rădăcină nimeni nu interzice. Dar nu este complet sigur. În loc de aceasta, va fi mai corect să vă conectați sub utilizator contși ridicați-vă privilegiile cu comanda ‘su-’, fie folosi 'sudo'.

Dacă există mai mulți administratori de sistem în organizația dvs. și toți se conectează la server sub superutilizator, atunci nu este întotdeauna posibil să aflați care dintre administratori se află pe server. Prin urmare, după dezactivarea posibilității de autorizare direct sub utilizator rădăcină, administratorii de sistem mai întâi se vor autentifica cu propriul cont și abia după aceea vor primi privilegii de superutilizator; acest lucru facilitează auditarea serverului și a acțiunilor pe care le efectuează administratorii de sistem.
Pentru a dezactiva funcția de mai sus, dezactivați parametrul PermitRootLogin prin setarea valorii "Nu".

PermitRootLogin nr

PermitEmptyPasswords

Blocarea parolelor goale

PermitEmptyPasswords nr

AllowUsers, AllowGroups

În mod implicit, orice utilizator de server se poate autentifica. Este mai bine să limitați cercul de utilizatori cărora li se permite accesul ssh.
Acest lucru poate fi util atunci când creați un număr de utilizatori în sistem, dar permiteți accesul prin ssh vreau doar cateva.

Pentru a face acest lucru, în fișierul de configurare sshd_config ar trebui să adauge anumiți utilizatori care există pe server. În exemplul de mai jos, aceștia sunt utilizatori John, Peterși michael, cărora li se permite să intre pe server. Numele de utilizator sunt separate prin spații.

AllowUsers john peter michael

Când adăugați toți utilizatorii care sunt prezenți într-un anumit grup, aceștia ar trebui să fie specificați așa cum se arată în exemplul de mai jos. Grupurile de utilizatori cărora li se permite să intre pe server sunt, de asemenea, separate printr-un spațiu.

Administratori de dezvoltatori AllowGroups

DenyUsers, DenyGroups

Spre deosebire de a permite accesul anumitor utilizatori sau grupuri, puteți specifica, de asemenea, utilizatori sau grupuri cărora li se interzice accesul la server.
Pentru a face acest lucru, adăugați la fișierul de configurare sshd_config parametru DenyUsers, în care, despărțiți de un spațiu, specificați acei utilizatori cărora li se interzice accesul la server. În exemplul de mai jos, acesta este un sistem apache, precum și foarte real boris.

DenyUsers apache boris

Există, de asemenea, o setare prin care puteți refuza accesul nu utilizatorilor individuali, ci grupurilor întregi care includ utilizatori. Acesta este parametrul DenyGroups iar grupurile sunt de asemenea indicate cu un spațiu.

Hackerii de marketing DenyGroups

Rețineți că puteți utiliza combinații de parametrii deny și allow: DenyUsers, AllowUsers, DenyGroups, și AllowGroups.

LoginGraceTime

Când încercați să vă conectați cu ssh la serverul pe care îl aveți 2 minute pentru a vă introduce numele de utilizator și parola. Dacă nu faceți acest lucru, conexiunea la server va fi întreruptă. 2 minute de așteptare pentru datele de autorizare sunt destul de multe. ar trebui să se limiteze la 1 minute sau chiar 30 secunde.

Pentru a face acest lucru, modificați parametrul LoginGraceTime prin editarea fișierului sshd_config,și introduceți ora necesară acolo. În exemplul de mai jos acesta 1 minut.

LoginGraceTime 1m

ClientAliveInterval

Deconectați-vă când nu există activitate în shell

După ce v-ați conectat cu succes la server, poate doriți să faceți posibilă întreruperea automată a conexiunii după ce a trecut o perioadă de timp în care nu ați efectuat nicio acțiune în consolă. Acest lucru este denumit în mod obișnuit timp inactiv.

Folosind bash, puteți realiza acest lucru schimbând variabila de mediu TMOUT .

LA OpenSSH acest lucru se realizează printr-o combinație de parametri ClientAliveCountMaxși ClientAliveIntervalîn fișierul de configurare sshd_config.

  • ClientAliveCountMax- indică numărul maxim check-viu mesajele trimise ssh- server, sub care nu primește niciun răspuns de la ssh- client. Valoarea implicită este 3.
  • ClientAliveInterval- indică timpul de expirare (timeout) în secunde. După timpul specificat ssh- serverul va trimite check-viu mesaj către client, în așteptarea unui răspuns de la acesta (raspuns). Valoarea implicită este 0, adică serverul nu va trimite mesaje pentru verificare.

Pentru ca dvs ssh- clientul este deconectat automat după 10 minute ( 600 secunde), trebuie să faceți modificări în fișierul de configurare sshd_config in felul urmator:

ClientAliveInterval 600 ClientAliveCountMax 0

Asta este tot pentru acum. În principiu, cred că acest lucru este deja suficient pentru o configurare bună și îmbunătățirea securității. ssh.În partea următoare, vom analiza mai mulți parametri. ssh- server și poate putem vorbi despre autentificarea bazată pe chei.

Succes tuturor și ne vedem curând pe blogul nostru!

Pentru funcționarea serverului ssh, precum și a clientului ssh, vom folosi binecunoscutul pachet OpenSSH

Instalare

Instalați OpenSSH cu comanda:

sudo apt install ssh

Ajustarea serverului

În timpul instalării, serverul SSH este adăugat automat la pornire. Puteți controla pornirea, oprirea sau repornirea acestuia folosind comenzile:

sudo service ssh stop|start|restart

Fișierul principal de configurare a serverului SSH este fișierul /etc/ssh/sshd_config, care poate fi citit sau editat doar de superutilizator. După fiecare modificare a acestui fișier, trebuie să reporniți serverul ssh pentru ca modificările să aibă efect.

Exemplu de configurare a serverului SSH pe Ubuntu 16.04:

# Ce porturi, adrese IP și protocoale ascultăm pe portul 22 # „oricare” - orice # # „inet” (doar IPv4) # # „inet6” (doar IPv6) # Familie de adrese inet # Care interfețe/rețele sunt permise accesul dacă # nu specifica, apoi ascultă toate adresele. #ListenAddress:: #ListenAddress 0.0.0.0 # Protocolul pe care va rula SSH (al doilea recomandat) Protocol 2 # Specifică fișierul care conține cheia gazdă privată pentru versiunea 2 a protocolului HostKey /etc/ssh/ssh_host_rsa_key #HostKey /etc/ssh/ssh_host_dsa_key #HostKey /etc/ssh/ssh_host_ecdsa_key #HostKey /etc/ssh/ssh_host_ed25519_key #Separarea privilegiilor activată pentru securitate UsePrivilegeSeparation da # Durata de viață și dimensiunea biților de cheie pentru versiunea de protocol 1 #KeyRegenerationInterval #KeyRegenerationInterval 3600 #Server 3600 #Bioi #USERE2 #Localări 1 USE2 # # # LOCAL0 # # LOCAL1 # # LOCAL2 # # LOCAL3 # # LOCAL4 # # LOCAL5 # # LOCAL6 # # LOCAL7 # SyslogFacility AUTH # SILENT # # QUIET # # FATAL # # EROARE # # INFO # # VERBOSE # # DEBUG # # DEBUG1 # # DEBUG2 # # DEBUG3 # LogLevel INFO # Autentificare: LoginGraceTime 45 # Permite sau nu accesul utilizatorului root. # „da” - superutilizatorul se poate autentifica. # Este utilizată schema de autentificare globală actuală. # „fără-parolă” - superutilizatorul se poate autentifica. # Autentificarea cu parolă pentru aceasta va fi dezactivată. # „forțat-comenzi-doar” - superutilizatorul se va putea autentifica # folosind autentificarea cu cheie publică și # numai dacă trece comanda necesară pentru a fi executată. # Toate celelalte metode de autentificare pentru superutilizator vor fi dezactivate. # „nu” - superutilizatorul nu poate folosi ssh pentru a se autentifica. PermitRootLogin nu StrictModes da # Indică dacă este permisă autentificarea RSA brută. # Relevant doar pentru versiunea de protocol 1. RSAAuthentication da # Utilizați autentificarea cu cheie publică PubkeyAuthentication da # Specifică fișierul care conține cheile publice folosite # pentru autentificarea utilizatorilor. #AuthorizedKeysFile %h/.ssh/authorized_keys # Dezactivează utilizarea fișierelor .rhosts și .shosts # # în autentificarea bazată pe gazdă. IgnoreRhosts da # Veți avea nevoie și de chei de gazdă în /etc/ssh_known_hosts pentru ca acest lucru să funcționeze RhostsRSAAuthentication nu # același pentru versiunea de protocol 2 HostbasedAuthentication nu # Specifică dacă sshd ar trebui să ignore utilizatorul # "cunoscute gazde" ~/.ssh/known_hosts pentru RhostsRSAAuthenticationKownIgnoreUthenticationKownIgnoreRhosts da # Activează autentificarea cu parolă goală (NU RECOMANDAT) PermitEmptyPasswords nu # Specifică dacă se permite autentificarea răspunsului la provocare ChallengeResponseAuthentication nu # Specifică dacă este permisă autentificarea cu parolă PasswordAuthentication nu # Opțiuni Kerberos # Specifică dacă o parolă furnizată de utilizator # # este necesară pentru autentificarea Kerberos nu # Dacă AFS este activat și utilizatorul a primit un Kerberos 5 TGT, # dacă să încerce să obțină un token AFS înainte ca utilizatorul # să aibă acces la folderul de acasă. # Valoarea implicită este „nu”. #KerberosGetAFSToken nu # Specifică ce trebuie făcut dacă autentificarea # prin Kerberos eșuează. Dacă # valoare = "da" - parola va fi verificată folosind # orice mecanism de autorizare local suplimentar, # de exemplu - /etc/passwd. # Valoarea implicită este „da”. #KerberosOrLocalPasswd da # Specifică dacă se va distruge automat fișierul cache al # ticket al utilizatorului când se termină sesiunea. # Valoarea implicită este „da”. #KerberosTicketCleanup da # Opțiuni GSSAPI # Indică dacă autentificarea utilizatorului bazată pe GSSAPI este # permisă. Implicit este „nu” #GSSAPIAuthentication no # Specifică dacă se distruge automat # memoria cache a acreditărilor de autentificare a utilizatorului când # sesiunea se termină. # Implicit este „da” #GSSAPICleanupCredentials yes # Indică dacă redirecționarea subsistemului grafic X11 # este permisă. #X11Forwarding yes # Specifică numărul primului afișaj disponibil pentru sshd în # ca redirecționare X11. #X11DisplayOffset 10 # Specifică dacă sshd ar trebui să afișeze informații în /etc/motd # atunci când un utilizator se conectează interactiv. PrintMotd no # Specifică dacă sshd ar trebui să imprime data și ora ultimei # sesiuni pe ecran atunci când un utilizator se conectează interactiv. # Valoarea implicită este „da”. PrintLastLog yes # Indică dacă sistemul ar trebui să trimită mesaje TCP către client pentru # pentru a menține conexiunea. TCPKeepAlive da # Specifică numărul de mesaje către clienți # pe care sshd le trimite într-un rând fără a primi niciun răspuns # de la client. Dacă pragul este atins și # clientul tot nu răspunde, sshd va deconecta clientul, încheind # sesiunea ssh. #ClientAliveCountMax # Setează intervalul de timp în secunde. Dacă nu a fost făcută nicio comunicare cu clientul în # acest interval, sshd # trimite un mesaj pe un canal criptat # solicitând un răspuns de la client. Valoarea implicită este 0, adică # nu trimiteți astfel de mesaje. Această directivă funcționează # numai pentru protocolul ssh2. #ClientAliveInterval # Indică dacă autentificarea ar trebui utilizată pentru # o sesiune interactivă. Valoarea implicită este „nu”. #UseLogin no # Specifică numărul maxim de conexiuni simultane # neautorizate la sshd. # Opțional, puteți specifica o resetare anticipată a conexiunilor, # specificând ca parametru trei valori separate # prin două puncte „start:rate:full” (de exemplu: „3:30:30”). # sshd va respinge o încercare de conectare cu o probabilitate # de „rate/100” (adică 30% în exemplul nostru) dacă # există deja „start” (3) conexiuni neautorizate. # Probabilitatea crește liniar și orice # încercări de conectare vor fi respinse dacă numărul de # conexiuni neautorizate ajunge la „plin” (30). # MaxStartups 3:30:30 # Indică ce fișier conține banner-ul text # care va fi afișat utilizatorului ÎNAINTE de procedura de autentificare #. Opțiunea este disponibilă numai pentru protocolul ssh2. Banner /etc/issue.net # Permite clientului să treacă variabilele de mediu regionale AcceptEnv LANG LC_* # Definește și configurează un subsistem extern (de ex. demon de transfer de fișiere). Subsistem sftp /usr/lib/openssh/sftp-server # Activează interfața PAM (Pluggable Authentication Module # interfață). Dacă este setat la „da” - pentru toate tipurile de autentificare # în plus față de procesarea modulului de sesiune și a contului # PAM va folosi autentificare bazată pe # cerere-răspuns (ChallengeResponseAuthentication și # PasswordAuthentication) challenge-response # autentificare în PAM îndeplinește de obicei același rol ca # autentificare prin parolă, ar trebui să dezactivați # fie PasswordAuthentication, fie # ChallengeResponseAuthentication. Este de remarcat faptul că # dacă directiva UsePAM este activată, nu veți putea rula # sshd ca alt utilizator decât root. # Valoarea implicită este „nu”. Folosește PAM da

Puteți copia textul de mai sus în propriul sshd_config și îl puteți utiliza mai târziu.

În sine, un server SSH configurat greșit este o vulnerabilitate uriașă de securitate într-un sistem, deoarece un posibil atacator are capacitatea de a obține acces aproape nelimitat la sistem. În plus, sshd are multe opțiuni utile suplimentare pe care este de dorit să le activeze pentru a îmbunătăți gradul de utilizare și securitatea).

Port, ListenAddress și AddressFamily

Aceste trei opțiuni determină porturile și adresele pe care serverul dvs. va asculta pentru conexiunile de intrare. În primul rând, are sens, dacă este posibil, să se limiteze familia de adrese procesate la cele utilizate efectiv, adică dacă utilizați doar IPv4, dezactivați IPv6 și invers. Acest lucru se poate face folosind parametrul AddressFamily, de exemplu (pentru a permite IPv4 și a refuza IPv6):

În al doilea rând, este de dorit să se schimbe portul standard (22) pe care ascultă sshd. Acest lucru se datorează faptului că numeroase scanere de rețea încearcă în mod constant să se conecteze la cel de-al 22-lea port și cel puțin să obțină acces prin enumerarea login-urilor / parolelor din baza lor de date. Chiar dacă aveți autentificarea prin parolă dezactivată, aceste încercări înfundă jurnalele și (în număr mare) pot afecta negativ viteza serverului ssh. Dacă dintr-un motiv oarecare nu doriți să schimbați portul standard, puteți utiliza atât diverse utilitare externe pentru a combate brute-forcers, cum ar fi fail2ban, cât și cele încorporate, cum ar fi MaxStartups.
Puteți seta portul ca valoare absolută pentru toate interfețele utilizând directiva Port sau ca valoare specifică pentru fiecare interfață folosind directiva ListenAddress.

Interdicţie acces de la distanță pentru superutilizator

În mod implicit, accesul root este refuzat prin parolă (prin cheie - puteți) - opțiunea PermitRootLogin este setată la fără parolă4). Dar, având în vedere că, în mod implicit, în Ubuntu, utilizatorul adăugat în timpul instalării sistemului are capacitatea de a efectua toate sarcinile administrative prin sudo, crearea capacității de a accesa root la sistem prin ssh pare nerezonabilă (chiar și cu autentificarea cu cheie). Se recomandă oprirea completă. această opțiune sau aplicați-o numai în modul numai pentru comenzi forțate.

Autentificare prin parolă

Autentificarea prin parolă activată în mod implicit este practic cea mai primitivă modalitate de a vă conecta la sshd. Pe de o parte, acest lucru simplifică configurarea și conectarea noilor utilizatori (este suficient ca utilizatorul să-și cunoască autentificarea / parola de sistem), pe de altă parte, parola poate fi întotdeauna ghicită, iar utilizatorii neglijează adesea să creeze complexe și parole lungi. Boții speciali scanează în mod constant serverele ssh disponibile de pe Internet și încearcă să se autentifice la ele prin enumerarea autentificărilor/parolelor din baza lor de date. Este foarte recomandat să nu utilizați autentificarea prin parolă.

Dacă dintr-un motiv oarecare doriți să utilizați autentificarea cu parolă - asigurați-vă că nimeni nu se poate conecta cu o parolă goală. Pentru a face acest lucru, setați directiva PermitEmptyPasswords nr

Protocoale SSH1 și SSH2

După cum sa menționat deja, sshd poate funcționa cu protocoalele SSH1 și SSH2. Cu toate acestea, utilizarea SSH1 nesigură este foarte descurajată. Forțați sshd să funcționeze numai cu protocolul SSH2

Autentificare cheie SSH2 RSA

Metoda de autorizare preferată este autentificarea cheii SSH2 RSA. Cu această metodă, utilizatorul generează o pereche de chei pe partea sa, dintre care o cheie este secretă, iar cealaltă este publică. Cheia publică este copiată pe server și servește la verificarea identității utilizatorului. Pentru mai multe informații despre crearea unei perechi de chei și despre cum să le plasați pe server, consultați descrierea clientului SSH.

Configurarea unui client SSH

Conectarea cu cheie este considerată cea mai sigură și, în majoritatea cazurilor, această caracteristică este activată pe partea serverului, deci nu sunt necesare drepturi de superutilizator pentru ao utiliza. Generați o cheie pe computerul client:

ssh-keygen

Primim o ofertă de a introduce o parolă pentru a proteja fișierul cheie (se dovedește a fi util dacă fișierul cade în mâini greșite). Transferăm cheia publică pe server cu comanda

ssh-copy-id -i ~/.ssh/id_rsa.pub server_user@server_address

Totul, poți intra.

Când ssh rulează pe un port non-standard:

ssh-copy-id -i ~/.ssh/id_rsa.pub -p your_port server_user@server_address

Uneori este nevoie să treceți de la un computer la altul, astfel încât să puteți nu numai să vizualizați datele, ci și să efectuați unele acțiuni. SSH este ideal pentru astfel de sarcini, mai ales în Ubuntu. Vă permite să combinați în siguranță serverul și clientul și, în același timp, instalarea și configurarea nu vă vor lua mult timp dacă urmați instrucțiunile.

Cum se instalează serverul în Ubuntu

Ideea este că implicit sistem de operare Clientul Ubuntu este deja instalat. Prin urmare, principalul lucru este instalarea programului Server OpenSSH pe computer și configurarea lui ulterioară. Pentru a instala serverul, deschideți un terminal și introduceți linia: sudo apt-get install openssh-server. Ubuntu vă va cere apoi o parolă - confirmați-o. Când instalarea este finalizată, va apărea un mesaj care raportează o instalare reușită. Ca rezultat, serverul OpenSSH va fi instalat. Acest program este în distribuții Ubuntu implicit, deoarece serverul OpenSSH este foarte popular printre utilizatorii acestui sistem de operare.

Configurarea serverului ssh în ubuntu

Acum, cel mai important lucru este că trebuie să configurați corect serverul OpenSSH înainte de a-l porni și de a rula clientul printr-un protocol securizat pe gazdă. Setare greșită poate duce la o scădere a nivelului de securitate și serverul dvs. poate fi spart.

Și protocolul SSH este necesar pentru aceasta, astfel încât conexiunea și transferul de date să aibă loc pe canale fiabile, criptate, deci este mai bine să petreceți puțin timp și să înțelegeți setările.

Modul în care va funcționa serverul este scris în fișierul de configurare config. În special, precizează cerințele pe care trebuie să le îndeplinească un client pentru a trece prin protecția SSH. Mai întâi trebuie să decideți care este utilizatorul prin care veți administra sistemul. Utilizatorul implicit este root. Dar a lăsa această setare ca atare nu este sigur - utilizator root prea multe drepturi și puteți dăuna accidental sistemului, așa că este mai bine să dezactivați conexiunea acestuia la server.

Trebuie să reinstalați un alt cont de utilizator pe server, astfel încât să puteți utiliza în siguranță un alt computer prin SSH. Pentru a face acest lucru, va trebui să adăugați un alt utilizator în loc să utilizați root Linie de comanda: nume de utilizator adduser. Dar acest lucru nu este suficient - la urma urmei, uneori veți avea nevoie de un utilizator root. Apoi faceți utilizatorul adăugat un semi-superadministrator, astfel încât să poată primi temporar drepturi root. Pentru a face acest lucru, mergeți la root și scrieți următoarea linie: gpasswd -a nume de utilizator sudo. În acest fel, veți adăuga un nou utilizator la grupul de utilizatori sudo, care are cel mai înalt nivel de acces.

Dacă intenționați să creați un server public folosind SSH și niciun client nu va accesa computerul, atunci este mai bine să eliminați complet utilizatorul root. Dacă sunteți încrezător în abilitățile dvs. și nu intenționați să publicați gazda, atunci puteți face din client un super administrator și îl puteți proteja cu o parolă. Dar uneori după aceea apare un mesaj de eroare: acces refuzat. Accesul de înscriere refuzat după ce ați încercat să vă autentificați în contul de superutilizator prin introducerea unei parole poate însemna un fel de contradicție în configurația fișierului de configurare.

Pentru a elimina accesul refuzat, ar trebui să priviți bine totul în ordine în setări. Cel mai cauza comuna, de ce apare accesul refuzat este activarea opțiunii de autorizare a parolei atât pentru utilizatorii obișnuiți, cât și pentru root. Pentru a elimina accesul refuzat, schimbați PermitRootLogin de la da la fără parolă. Și apoi scrieți PermitRootLogin da. Apoi, reporniți serverul (service ssh restart) și mesajul de acces refuzat va dispărea în sfârșit.

Următorul pas important este să activați autentificarea puternică a utilizatorilor. Autorizarea prin introducerea unei parole este deja o modalitate depășită și ineficientă de a proteja conturile. Acum există multe programe cu care puteți sparge parole selectând-le. Prin urmare, este mai bine să utilizați autentificarea cu cheie publică. Adică, este mai bine să utilizați Autentificarea cu cheie publică și să puneți da lângă acest element în configurație.

Pentru a vă conecta la server prin verificarea cheii publice, trebuie să o generați mai întâi. În Ubuntu, este foarte convenabil să generați chei, deoarece pentru aceasta nu trebuie să descărcați niciuna programe suplimentare- trebuie doar să tastați ssh-keygen în terminal. După aceea, va apărea un mesaj cu informații despre locația cheii create. Acesta va fi localizat în folderul .ssh. După aceea, sistemul vă va cere o parolă, dar este recomandat să o lăsați necompletat - altfel o veți introduce de fiecare dată când efectuați orice operațiune.

Următorul pas este să adăugați cheia publică generată la lista de încredere de pe server. Mai întâi va trebui să copiați cheia publică. Este într-un fișier .pub în folderul .ssh. Copiați-l și mergeți la server. Trebuie să existe și un folder .ssh pe server. Dacă nu există, va trebui să-l creați singur. Și apoi folosind standardul editor de text, creați un fișier autorizat_keys. Aici va trebui să plasați cheia publică. După aceea, veți putea intra pe server fără nicio confirmare. Autentificarea va avea loc automat, în fundal, ceea ce este foarte convenabil și sigur în același timp.

În general, aici se termină configurarea protocolului SSH! Dacă nu poți schimba portul 22 cu altceva.