Serverul Ssh (yyr) pe ubuntu

Serverul Ssh (yyr) pe ubuntu
Bună ziua, utilizatorii și administratorii Debian și Ubuntu. Astăzi vreau să atingeți acest subiect aparent evident - instalarea și configurarea serverului ssh pe Debian. Anterior nu am putut ajunge la mâinile noastre.







Introducere în SSH

Informații tehnice privind protocolul SSH

În activitatea sa, SSH folosește următoarele tipuri de criptare. autentificarea se realizează utilizând criptarea asimetrică a cheilor publice (versiunea SSH1 - RSA, SSH2 - RSA / DSA). Schimbul de date în timpul conexiunii stabilite - simmetrichnoeshifrovanie (IDEA - patentat, DES, Triple DES (3DES), ARCFOUR, BLOWFISH, CAST128, AES / Rijndael). Integritatea datelor transmise este verificată utilizând CRC32 în SSH1 și HMAC-SHA1 / HMAC-MD5 în SSH2. Pentru a comprima date criptate, se poate folosi algoritmul LempelZiv (LZ77), care oferă același nivel de compresie ca arhivatorul ZIP. Specificația protocolului SSH-2 este descrisă în RFC 4251.

Anterior (SSH1) conectarea se efectuează astfel: Când conectați mai întâi la client la server (în acest exemplu, se înțelege - un computer care execută daemon sshd), clientul a primit de la serverul de chei publice și îl stochează în baza de date proprie. Cu următoarele conexiuni, clientul a verificat dacă cheia dată sa schimbat. Mai târziu, clientul a generat un set de caractere arbitrare de 256 de biți și a criptat acest set cu o cheie publică. Serverul a descifrat această frază și la trimis clientului. Clientul, asigurându-se că fraza decriptată este validă - a stabilit conexiunea și fraza dată a fost folosită în continuare de către client și server ca cheie de sesiune pentru criptarea datelor transmise.

În implementarea modernă (SSH2), se utilizează un algoritm mult mai complex (algoritmul Diffie-Hellman, descris în rfc4419).

Arhitectura protocolului SSH poate fi împărțită în mai multe niveluri:

Stratul de transport RFC 4253 - funcționează în partea de sus a protocolului TCP. oferă schimbul inițial de chei, stabilește criptarea, comprimarea și verificarea integrității. Nivelul de autentificare RFC 4252 - funcționează la nivelul stratului de transport. oferă autentificare client și server. Cele mai populare metode de autentificare pentru ssh:

  • Parolă - o metodă bazată pe o intrare simplă a parolei.
  • Cheia publică - o metodă bazată pe o cheie publică RSA / DSA
  • Interactivă - o metodă în care serverul trimite una sau mai multe cereri de introducere de informații către client, iar clientul le afișează și trimite înapoi răspunsurile introduse de utilizator înapoi la server. Folosit pentru parolele de autentificare de o singură dată.
  • GSSAPI este o metodă de autentificare care oferă autentificare folosind mecanisme externe, cum ar fi Kerberos 5 sau NTLM.

Protocolul de conectare RFC 4254 funcționează pe lângă protocolul de autentificare. permite utilizarea canalului stabilit pentru transmiterea mai multor fluxuri de informații în ambele direcții. Folosit pentru a lucra în coajă, în trafic de tuneluri sau în fișiere de copiere.

Instalarea OpenSSH pe Debian

În Debian, OpenSSH este reprezentat de mai multe pachete:

cele mai importante sunt serverul openssh-server și clientul openssh. În acest caz, acesta din urmă este cel mai des instalat împreună cu sistemul. Deci, pentru a instala serverul ssh în Debian Squeeze. rulați comanda:

Serverul Ssh (yyr) pe ubuntu

În timpul instalării, se vor genera automat cheile de criptare necesare (RSA și DSA). Daemonul sshd va fi adăugat la pornire și lansat. În acest sens, puteți considera că serverul SSH este pe deplin operațional. Dar setările implicite nu sunt complet corecte și sigure.

OpenSSH în implementarea Debian conține următoarele componente / comenzi:

De fapt, clientul ssh.

Client pentru copierea de la distanță a fișierelor utilizând protocolul SSH.

Un client SSH de tip FTP.

Un demon care oferă de fapt acces protejat la resurse.

O implementare separată a subsistemului SFTP (parte server). Are mai multe capabilități decât sshd-ul încorporat.

Generator de perechi cheie.

Un utilitar pentru verificarea cheilor de gazde. Se utilizează atunci când se utilizează autentificarea gazdă (similară cu rsh) în locul autentificării implicite pentru utilizatori / parole.

Utilitate Utilitate. Permite în câteva secunde colectarea de chei publice de la alte gazde.

Utilitate Utilitate. Sprijină cache-ul cheii private. Caching evită introducerea frecventă a unei parole pentru a decripta cheile înainte de a le utiliza.

Utilitate Utilitate. Adaugă tastele în cache-ul ssh-agent.

Clienții SSH

/.ssh/config. În acest caz, acesta din urmă are o prioritate mai mare. Descrierea acestui fișier este dată în man (5) ssh_config. Cel mai adesea, setările clientului nu trebuie modificate. Fișierul de configurare SSH pentru clientul ssh_config:

Pentru a utiliza cu succes clientul SSH în scopul propus, este necesar: să aveți un server cu un daemon sshd care rulează, să aibă un cont pe sistemul de la distanță. În Debian, cel mai frecvent utilizat client este utilitarul ssh (pachetul openssh-client). Formatul pentru utilizarea comenzii este dat în ssh. Pe scurt, formatul comenzii ssh este:

Prima parte este comanda ssh reală. sunt posibile și alte opțiuni (de exemplu portul -p va specifica un port non-standard), apoi este posibil să specificați un nume de utilizator în numele căruia trebuie să fie conectat la sistemul de la distanță. Dacă nu este specificat numele de utilizator, conexiunea va fi stabilită în numele utilizatorului curent. Apoi, parametrul necesar este numele DNS sau adresa IP a gazdei la distanță. Dacă se specifică o comandă după numele gazdei, această comandă va fi executată și conexiunea va fi deconectată, dacă comanda nu este specificată, interpretul va fi pornit.







Când vă conectați pentru prima dată la server, ssh clientul produce următorul mesaj:

Acest mesaj ne spune că ne conectăm la o gazdă necunoscută cu o cheie RSA care are o astfel de amprentă și care necesită confirmarea conexiunii noastre. În afirmativ (da), clientul adaugă cheia publică a serverului sshd (/etc/ssh/ssh_host_rsa_key.pub) în fișierul de utilizator

/.ssh/ known_hosts pe calculatorul local. Atunci când un client se conectează la mai multe servere, un număr mare de astfel de chei se pot acumula în fișierul specificat. Pentru a urmări proprietatea fiecărei chei pentru fiecare server, clientul adaugă șirul de chei IP al serverului și tipul de criptare.

În plus față de fișierul de utilizator specificat pentru "gazde cunoscute de servere" există, de asemenea, un fișier global / etc / ssh / ssh_known_hosts. Fișierul global trebuie să aibă acces la citire pentru toți utilizatorii și să utilizeze informațiile atunci când se conectează la orice server, dar numai utilizatorul root ar trebui să fie eligibil să scrie. Cum să delimitați drepturile de acces la fișiere. Să examinăm conținutul fișierului known_hosts cu un exemplu:

În exemplu, șirul este împărțit în mod deliberat în mai multe, dar, de fapt, aceasta este o linie. În plus față de comanda ssh în OpenSSH, există o comandă scp. care este foarte asemănătoare în sintaxa cu cp. cu excepția faptului că anumiți parametri sunt adăugați la calea obiectului care este copiat:

în cazul în care src_host - gazda sursă / calea / src / fișierul - obiectul sursă care urmează să fie copiat, dst_host - gazda de destinație, / calea / dst / fișier - fișierul de destinație.

Aliasuri pentru clientul ssh (

Folosind fișierul de configurare al utilizatorului, puteți face utilizarea clientului ssh mai convenabil. Să presupunem că avem un fișier global / etc / ssh / ssh_config. Specificarea setărilor pentru toate gazdele (gazdă *). În același timp, avem unele server de la distanță ssh, al cărui nume lung (de exemplu, 678-ssh-server.superdomen.com.ua) și port non-standard (de exemplu, 65987), numele de utilizator este, de asemenea, destul de lung (de exemplu, Vasilii-ptrov) . Introduceți de fiecare dată comanda pentru a vă conecta la server:

teribil de incomod și de lung. Să ne simplificăm viața. Pentru a fișier

/.ssh/config, adăugați următoarele informații:

Asta e tot! Acum, tastând în serverul consola ssh, ajungem la serverul potrivit, avem nevoie de un port sub utilizatorul dorit. Sau chiar așa ssh se. Linia se va extinde automat la serverul ssh!

Alți clienți SSH

În plus față de clientul linux-ssh standard, există multe altele, de exemplu, pentru Windows există un software excelent PuTTy.

Serverul OpenSSH (sshd)

După ce citim config-ul, putem configura în siguranță serverul pentru propriile nevoi. Unele recomandări și exemple sunt prezentate mai jos. După ce editați sshd_config, trebuie să reporniți serverul sshd:

În OpenSSH, puteți dezactiva temporar toate conexiunile la server, altele decât utilizatorul rădăcină. Pentru a face acest lucru, trebuie să creați fișierul / etc / nologin. Când acest fișier există, serverul sshd îl afișează

/.ssh/content și nu permiteți / strong / strong să vă conectați pentru alt utilizator decât pentru utilizatorul rădăcină.

OpenSSH tipuri de autentificare

Autentificare utilizator prin parolă.

Cu acest tip de autentificare, setările serverului sshd și clientul ssh în mod implicit sunt destul de suficiente. În timpul autentificării, cheile se schimbă mai întâi între server și client, iar parola hash este trimisă pe server într-o formă criptată. Apoi, datele sunt schimbate.

Autentificarea utilizatorului prin cheia publică.

Acest tip de autentificare poate elimina necesitatea de a introduce o parolă la conectarea la server. Autentificarea cheilor publice se bazează pe verificarea conformității cheii publice a clientului. care este localizat pe server și cheia secretă a clientului (utilizator). care este localizat la client (utilizatorul din directorul de acasă

/.ssh/id_rsa). În același mod în care clientul verifică validitatea serverului pe cheia publică a serverului. Perechea de chei este generată de utilitarul ssh-keygen. apoi în directorul utilizatorului există 2 chei

/.ssh/id_rsa - secret și

/.ssh/id_rsa.pub - public. Cheia publică este plasată pe server ca

/.ssh/authorized_keys. După aceea, la conectarea la serverul de sub utilizator, în directoarele cărora sunt cheile corespunzătoare (pe client -

/.ssh/id_rsa. pe server -

/.ssh/authorized_keys) - nu este nevoie să introduceți o parolă. În dosar

/.ssh/authorized_keys pot conține în mod consecvent mai multe chei pentru a accesa acest server sub acest utilizator de pe mai multe servere. Să examinăm un exemplu practic de instalare a autentificării cheilor publice:


Pentru a specifica tipul de criptare cheie, este specificată opțiunea -t. precum și opțiunea -b. Specifică dimensiunea cheii în octeți. Aceste opțiuni se recomandă să fie utilizate. În plus, atunci când creați o cheie, este solicitată o anumită expresie de acces. Aceasta este parola pentru decriptarea cheii private. care (dacă îl specificați) va fi solicitat când încercați să vă conectați. Această opțiune vă permite să criptați cheia privată în caz de compromis, ceea ce sporește securitatea, dar elimină tot confortul de a intra fără a introduce o parolă.

De asemenea, merită remarcat un astfel de moment de securitate. În cazul în care se va rupe uchetku dvs. (care are o cheie secretă în directorul dvs. de pornire) de pe serverul curent, atacatorul devine automat acces la ambele serverul care este cheia publică corespunzătoare. Deci, fii foarte vigilent!

Această secțiune utilizează metoda de criptare RSA. dar dacă înlocuiți RSA cu DSA în toate comenzile. atunci tipul de criptare DSA va fi utilizat în mod corespunzător.

Alte tipuri de autentificare (gazdă, GSSAPI.)

Unele alte tipuri de autentificare, poate, vor fi în curând completate. Dar unele nu sunt garantate pentru a fi luate în considerare; - învechit. De exemplu, autentificarea bazată pe gazdă nu va fi luată în considerare. care funcționează numai cu protocolul SSH1.

SSH server de securitate

Mai jos sunt câteva sfaturi pentru a reduce cât mai mult posibilitățile de hacking a serverului dvs.:

Există mai multe locuri unde puteți contacta pentru rezolvarea problemelor cu ssh. Pentru început, puteți vedea înregistrările legate de ssh în jurnalele /var/log/autch.log și / var / log / syslog. Iată un mic exemplu, când serverul lucra la un port standard, la fiecare minut de pe Internet au fost încercări de a ridica o parolă:

După cum puteți vedea, aproape în fiecare secundă serverul încearcă să se hrănească cu numele de utilizator "populare" (rădăcină, nimeni etc.)

OpenSSH în modul de depanare

Dacă informațiile din jurnalele de sistem nu sunt suficiente, atunci puteți rula sshd în modul de depanare. specificând opțiunea -d în parametrii de pornire a daemonului (/ etc / defauts / ssh). De asemenea, clientul ssh cu opțiunea -v este ideal pentru diagnosticare (pentru mai multe detalii, puteți specifica -vv).

Verificarea funcționării sshd (indiferent dacă procesul se execută, dacă portul asculta):

Puteți verifica dacă sshd rulează prin:

Pentru a verifica dacă portul necesar ascultă:

  • RFC 4250 (Română) - Protocolul Secure Shell (SSH) alocat numerelor
  • RFC 4251 (Română) - Arhitectura protocolului Secure Shell (SSH)
  • RFC 4252 (în engleză) - Protocolul de autentificare Secure Shell (SSH)
  • RFC 4253 (în engleză) - Protocolul privind stratul de transport Secure Shell (SSH)
  • RFC 4254 (în engleză) - Protocolul de conectare Secure Shell (SSH)
  • RFC 4255 (Română) - Utilizarea DNS pentru publicarea sigură a amprentelor cheii Secure Shell (SSH)
  • RFC 4256 (Română) - Autentificarea Exchange Generică a mesajelor pentru Protocolul Secure Shell (SSH)
  • RFC 4335 (în engleză) - Extensia de rupere a canalului de sesiune Secure Shell (SSH)
  • RFC 4344 (în engleză) - Modurile de criptare a stratului de transport Secure Shell (SSH)
  • RFC 4345 (Engleză) - Moduri îmbunătățite Arcfour pentru protocolul Layer de transport SSH (Secure Shell)
  • RFC 4419 (Română) - Schimb de grup Diffie-Hellman pentru protocolul de transport de tip Secure Shell (SSH)
  • RFC 4432 (Română) - Schimb de chei RSA pentru protocolul de transport de tip Secure Shell (SSH)
  • RFC 4716 (în engleză) - Formatul fișierului cheie securizată (SSH)

Cu respect, Mc.Sim!







Articole similare

Trimiteți-le prietenilor: