Sunteți pe pagina 1din 11

Capitolul 5.

Clientul și serverul ssh

Carcasa securizată sau ssh este o colecție de instrumente care utilizează un protocol securizat pentru
comunicații

Cu computere Linux de la distanță.

Acest capitol oferă o prezentare generală a celor mai frecvente comenzi legate de utilizarea

Serverul sshd și clientul ssh.

Client ssh și server

48

5.1. Despre ssh

5.1.1. Coajă sigură

Evitați utilizarea telnet, rlogin și rsh pentru a vă conecta de la distanță la serverele dvs. Aceste
protocoale mai vechi

Nu criptați sesiunea de conectare, ceea ce înseamnă că id-ul dvs. de utilizator și parola pot fi smulse
de

Instrumente cum ar fi wireshark sau tcpdump. Pentru a vă conecta în siguranță la serverele dvs.,
utilizați ssh.

Protocolul ssh este sigur în două moduri. În primul rând, conexiunea este criptată și în al doilea rând

Conexiunea este autentificată în ambele sensuri.

O conexiune ssh începe întotdeauna cu o strângere de mână criptografică, urmată de criptarea

Stratul de transport folosind un cipher simetric. Cu alte cuvinte, tunelul este criptat înainte

Începeți să scrieți ceva.

Apoi, autentificarea are loc (folosind id utilizator / parolă sau chei publice / private) și

Comunicarea poate începe peste conexiunea criptată.

Protocolul ssh își va aminti serverele la care este conectat (și vă avertizează în cazul în care ceva

Sa întâmplat suspicios).

Pachetul openssh este menținut de oamenii OpenBSD și este distribuit cu o mulțime de

Sistemele de operare (poate fi chiar cel mai popular pachet din lume).

5.1.2. / Etc / ssh /

Configurarea clientului ssh și a serverului se face în directorul / etc / ssh. În secțiunile următoare

Vom discuta majoritatea fișierelor găsite în / etc / ssh /.

5.1.3. Ssh versiuni de protocol

Protocolul ssh are două versiuni (1 și 2). Evitați utilizarea versiunii 1 oriunde, deoarece aceasta
Conține unele vulnerabilități cunoscute. Puteți controla versiunea de protocol prin / etc / ssh /

Ssh_config pentru partea clientului și / etc / ssh / sshd_config pentru daemonul serverului openssh.

Paul @ ubu1204: / etc / ssh $ grep Protocolul ssh_config

# Protocol 2,1

Paul @ ubu1204: / etc / ssh $ grep Protocol sshd_config

Protocolul 2

Client ssh și server

49

5.1.4. Cheile publice și private

Protocolul ssh utilizează sistemul bine cunoscut al cheilor publice și private. Mai jos

Explicația este succintă, mai multe informații pot fi găsite pe wikipedia.

http://en.wikipedia.org/wiki/Public-key_cryptography

Imaginați-vă pe Alice și pe Bob, doi oameni care vor să comunice între ei. Utilizarea publicului

Și cheile private pe care le pot comunica cu criptarea și autentificarea.

Când Alice dorește să trimită un mesaj cript lui Bob, ea folosește cheia publică a lui Bob.

Bob împarte cheia publică cu Alice, dar își păstrează cheia privată privată! Din moment ce Bob este

Doar unul are cheia privată a lui Bob, Alice este sigură că Bob este singurul care poate citi

Mesaj criptat.

Când Bob dorește să verifice că mesajul a venit de la Alice, Bob folosește cheia publică a lui

Alice să verifice dacă Alice a semnat mesajul cu cheia privată. Din moment ce Alice este singura

Unul pentru a avea cheia privată a lui Alice, Bob este sigur că mesajul a venit de la Alice.

5.1.5. Algoritmi rsa și dsa

Acest capitol nu explică implementarea tehnică a algoritmilor criptografici,

Explică doar modul de utilizare a instrumentelor ssh cu rsa și dsa. Mai multe informații despre
acestea

Algoritmi pot fi găsiți aici:

http://en.wikipedia.org/wiki/RSA_(algorithm)

http://en.wikipedia.org/wiki/Digital_Signature_Algorithm

5.2. Conectați-vă la un server de la distanță

Următoarea captura de ecran arată cum se utilizează ssh pentru a vă conecta la un computer la
distanță care rulează
Linux. Utilizatorul local este numit paul și se conectează ca administrator admin42 pe telecomandă

sistem.

Paul @ ubu1204: ~ $ ssh admin42@192.168.1.30

Nu poate fi stabilită autenticitatea gazdei "192.168.1.30 (192.168.1.30)".

Antetul de amprentă RSA este b5: fb: 3c: 53: 50: b4: ab: 81: f3: cd: 2e: bb: ba: 44: d3: 75.

Sigur doriți să continuați conectarea (da / nu)?

După cum puteți vedea, userul paul este prezentat cu o amprentă de autentificare rsa de la

Sistem la distanță. Utilizatorul poate accepta această tastare da da. Vom vedea mai târziu că o
intrare va fi

Fi adăugat la fișierul ~ / .ssh / known_hosts.

Paul @ ubu1204: ~ $ ssh admin42@192.168.1.30

Nu poate fi stabilită autenticitatea gazdei "192.168.1.30 (192.168.1.30)".

Antetul de amprentă RSA este b5: fb: 3c: 53: 50: b4: ab: 81: f3: cd: 2e: bb: ba: 44: d3: 75.

Sigur doriți să continuați conectarea (da / nu)? da

Avertisment: A fost adăugată permanent "192.168.1.30" (RSA) în lista gazdelor cunoscute.

Parola admin42@192.168.1.30:

Bine ați venit la Ubuntu 12.04 LTS (GNU / Linux 3.2.0-26-generic-pae i686)

* Documentație: https://help.ubuntu.com/

1 pachet poate fi actualizat.

0 actualizări sunt actualizări de securitate.

Ultima autentificare: Sâmbătă 6 19:25:57 2012 de la 172.28.0.131

admin42 @ ubuserver: ~ $

Utilizatorul poate să iasă din serverul de la distanță introducând ieșirea sau utilizând Ctrl-d.

Admin42 @ ubuserver: ~ exit

logout

Conexiunea la 192.168.1.30 a fost închisă.

paul @ ubu1204: ~ $

5.3. Executarea unei comenzi în telecomandă

Această captură de ecran arată cum se execută comanda pwd de pe serverul de la distanță. Nu este

nevoie să parasiti serverul manual

Paul @ ubu1204: ~ $ ssh admin42@192.168.1.30 pwd


Parola admin42@192.168.1.30:

/ Home / admin42

paul @ ubu1204: ~ $

Client ssh și server

51

5.4. scp

Comanda scp funcționează la fel ca cp, dar permite sursa și destinația copiei

Fi în spatele ssh. Iată un exemplu în care copiem fișierul / etc / hosts de pe serverul de la distanță

La directorul de acasă al utilizatorului paul.

Paul @ ubu1204: ~ $ scp admin42@192.168.1.30: / etc / hosts / home / paul / serverhosts

Parola admin42@192.168.1.30:

Găzduiește 100% 809 0,8 KB / s 00:00

Iată un exemplu de inversare, copierea unui fișier local într-un server de la distanță.

Paul @ ubu1204: ~ $ scp ~ / serverhosts admin42@192.168.1.30: /etc/hosts.new

Parola admin42@192.168.1.30:

Serverhosts 100% 809 0,8KB / s 00:00

5.5. Configurarea ssh fără parole

Pentru a configura autentificarea ssh fără parole prin chei publice / private, utilizați ssh-keygen la

Generați o pereche de chei fără o expresie de acces, apoi copiați cheia publică la destinație

Server. Să facem acest lucru pas cu pas.

În exemplul următor vom seta ssh fără parolă între Alice și Bob.

Alice are un cont pe un server Red Hat Enterprise Linux, pe care Bob îl folosește pe Ubuntu

laptop. Bob dorește să dea accesul lui Alice folosind ssh și sistemul public și privat. Acest

Înseamnă că, chiar dacă Bob își schimbă parola pe laptopul său, Alice va avea în continuare acces.

5.5.1. ssh-keygen

Exemplul de mai jos arată modul în care Alice folosește ssh-keygen pentru a genera o pereche de
taste. Alice o face

Nu introduceți o expresie de acces.

[Alice @ RHEL5 ~] $ ssh-keygen -t rsa

Generarea perechii de chei publice / private rsa.

Introduceți fișierul în care să salvați cheia (/home/alice/.ssh/id_rsa):


Creat directorul "/home/alice/.ssh".

Introduceți expresia de acces (goală fără expresie de acces):

Introduceți din nou aceeași frază de acces:

Identificarea dvs. a fost salvată în /home/alice/.ssh/id_rsa.

Cheia dvs. publică a fost salvată în /home/alice/.ssh/id_rsa.pub.

Dacã amprenta cheie este:

9b: ac: ac: 56: c2: 98: e5: d9: 18: c4: 2a: 51:

[Alice @ RHEL5 ~] $

Puteți folosi ssh-keygen -t dsa în același mod.

5.5.2. ~ / .ssh

În timp ce ssh-keygen generează o cheie publică și privată, va crea și un .ssh ascuns

Director cu permisiuni corespunzătoare. Dacă creați directorul .ssh manual, atunci aveți nevoie

La chmod 700-l! În caz contrar, ssh va refuza să utilizeze cheile (cheile private private pot fi citite

Nu sigur!).

După cum puteți vedea, directorul .ssh este securizat în directorul de acasă al lui Alice.

[Alice @ RHEL5 ~] $ ls -ld .ssh

Drwx ------ 2 Alice Alice 4096 1 Mai 07:38 .ssh

[Alice @ RHEL5 ~] $

Bob folosește Ubuntu acasă. El decide să creeze manual directorul .ssh, așa că are nevoie

Să o securizi manual.

Bob @ laika: ~ $ mkdir .ssh

Bob @ laika: ~ $ ls -ld .ssh

Drwxr-xr-x 2 bob bob 4096 2008-05-14 16:53 .ssh

Bob @ laika: ~ $ chmod 700.ssh /

bob @ Laika: ~ $

5.5.3. Id_rsa și id_rsa.pub

Comanda ssh-keygen generează două chei în .ssh. Cheia publică este numită ~ / .ssh /

id_rsa.pub. Cheia privată este numită ~ / .ssh / id_rsa.

Client ssh și server

53

[Alice @ RHEL5 ~] $ ls -l .ssh /


Total 16

-rw ------- 1 alice alice 1671 1 mai 07:38 id_rsa

-rw-r-r-- 1 alice alice 393 1 mai 07:38 id_rsa.pub

Fișierele vor fi numite id_dsa și id_dsa.pub când se utilizează dsa în loc de rsa.

5.5.4. Copiați cheia publică la celălalt computer

Pentru a copia cheia publică de pe serverul lui Alice tot laptop-ul lui Bob, Alice decide să folosească
scp.

[Alice @ RHEL5 .ssh] $ scp id_rsa.pub bob@192.168.48.92: ~ / .ssh / authorized_keys

Parola bob@192.168.48.92:

Id_rsa.pub 100% 393 0,4KB / s 00:00

Aveți grijă când copiați oa doua cheie! Nu suprascrieți prima cheie, în loc să atașați

Cheia pentru același fișier ~ / .ssh / authorized_keys!

Cat id_rsa.pub >> ~ / .ssh / authorized_keys

Alice ar fi putut folosi și ssh-copy-id ca în acest exemplu.

Ssh-copy-id-i .ssh / id_rsa.pub bob@192.168.48.92

5.5.5. authorized_keys

În directorul ~ / .ssh, puteți crea un fișier numit authorized_keys. Acest fișier poate conține

Una sau mai multe chei publice de la oameni în care aveți încredere. Acei oameni de încredere pot
folosi propriile lor persoane

Chei pentru a-și dovedi identitatea și a avea acces la contul dvs. prin ssh (fără parolă).

Exemplu arată fișierul authorized_keys al lui Bob care conține cheia publică a lui Alice.

Bob @ laika: ~ $ cat .ssh / authorized_keys

Ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEApCQ9xzyLzJes1sR + hPyqW2vyzt1D4zTLqk \

MDWBR4mMFuUZD / O583I3Lg / Q + JIq0RSksNzaL / BNLDou1jMpBe2Dmf / u22u4KmqlJBfDhe \

yTmGSBzeNYCYRSMq78CT9l9a + y6x / shucwhaILsy8A2XfJ9VCggkVtu7XlWFDL2cum08 / 0 \

mRFwVrfc / uPsAn5XkkTscl4g21mQbnp9wJC40pGSJXXMuFOk8MgCb5ieSnpKFniAKM + TeO \

/ VjDGSi3F / bxu691jscrU0VUdIoOSo98HUfEf7jKBRikxGAC7I4HLa + / zX73OIvRFAb2hv \

TUhn6RHrBtUJUjbSGiYeFTLDfcTQ == alice @ RHEL5

5.5.6. Fără parolă ssh

Alice poate folosi acum ssh pentru a conecta fără parolă la laptop-ul lui Bob. În combinație cu ssh

Capacitatea de a executa comenzi pe gazda de la distanță, acest lucru poate fi util în conductele din
întreaga rețea
Diferite mașini.

[Alice @ RHEL5 ~] $ ssh bob@192.168.48.92 "ls -l .ssh"

Total 4

-rw-r-r-- 1 bob bob 393 2008-05-14 17:03 authorized_keys

[Alice @ RHEL5 ~] $

5.6. X redirecționarea prin ssh

O altă caracteristică populară a ssh este numită redirecționare X11 și este implementată cu ssh -X.

Mai jos un exemplu de redirecționare X: utilizatorul paul se loghează ca utilizator pentru a saluta pe
computerul său pentru a porni

Aplicație grafică mozilla-thunderbird. Deși aplicația se va difuza pe telecomandă

Computerul de la salut, acesta va fi afișat pe ecran atașat local la computerul lui paul

Paul @ debian5: ~ / PDF $ ssh -X greet@greet.dyndns.org -p 55555

Avertisment: A fost adăugată permanent cheia gazdă RSA pentru adresa IP \

'81 .240.174.161 'pe lista de gazde cunoscute.

Parola:

Linux raika 2.6.8-2-686 # 1 Tue Aug 16 13:22:48 UTC 2005 i686 GNU / Linux

Ultima autentificare: Sâmbătă 18:35:56 2007

Salut @ raika: ~ $ ps fax Grep thun

Salut @ raika: ~ $ mozilla-thunderbird &

[1] 30336

5.7. Depanarea problemelor ssh

Utilizați ssh -v pentru a obține informații de depanare despre încercarea de conectare ssh.

Paul @ debian5: ~ $ ssh -v bert@192.168.1.192

OpenSSH_4.3p2 Debian-8ubuntu1, OpenSSL 0.9.8c 05 Sep 2006

Debug1: Citirea datelor de configurare /home/paul/.ssh/config

Debug1: citirea datelor de configurare / etc / ssh / ssh_config

Debug1: Aplicarea opțiunilor pentru *

Debug1: Conectarea la portul 192.168.1.192 [192.168.1.192] 22.

Debug1: conexiunea stabilită.

Debug1: fișier de identitate /home/paul/.ssh/identity type -1

Debug1: fișier de identitate /home/paul/.ssh/id_rsa tip 1


Debug1: fișier de identitate /home/paul/.ssh/id_dsa tip -1

Debug1: Versiunea de protocol de la distanță 1.99, versiunea software la distanță OpenSSH_3

Debug1: meci: OpenSSH_3.9p1 pat OpenSSH_3. *

Debug1: Activarea modului de compatibilitate pentru protocolul 2.0

...

Client ssh și server

55

5.8. sshd

Serverul ssh este numit sshd și este furnizat de pachetul serverului openssh.

Rădăcină @ ubu1204 ~ # dpkg -l openssh-server | Coada -1

Serverul openssh-server 1: 5.9p1-5ubuntu1 secure shell (SSH), ...

5.9. Tastele sshd

Cheile publice utilizate de serverul sshd sunt localizate în / etc / ssh și pot fi citite pe plan mondial.

Cheile private pot fi citite numai de root.

Rădăcină @ ubu1204 ~ # ls -l / etc / ssh / ssh_host_ *

-rw ------- 1 rădăcină de root 668 7 iunie 2011 / etc / ssh / ssh_host_dsa_key

-rw-r-r-- 1 rădăcină rădăcină 598 7 iunie 2011 /etc/ssh/ssh_host_dsa_key.pub

-rw ------- 1 rădăcină rădăcină 1679 7 iunie 2011 / etc / ssh / ssh_host_rsa_key

-rw-r-r-- 1 rădăcină rădăcină 390 7 iunie 2011 /etc/ssh/ssh_host_rsa_key.pub

5.10. ssh-agent

Când generați chei cu ssh-keygen, aveți opțiunea de a introduce o expresie de acces pentru
protejare

Accesul la chei. Pentru a evita să introduceți această expresie de acces de fiecare dată, puteți adăuga
cheia

La ssh-agent folosind ssh-add.

Cele mai multe distribuții Linux vor porni automat ssh-agent atunci când vă conectați.

Rădăcină @ ubu1204 ~ # ps -ef | Grep ssh-agent

Paul 2405 2365 0 08:13? 00:00:00 / usr / bin / ssh-agent ...

Această captură de ecran clipă arată cum se utilizează ssh-add pentru a lista cheile care sunt
adăugate în prezent

La agentul ssh

Paul @ debian5: ~ $ ssh-add -L


Ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAvgI + Vx5UrIsusZPl8da8URHGsxG7yivv3 / \

...

WMGqa48Kelwom8TGb4Sgcwpp / VO / ldA5m + BGCw == paul @ deb503

5.11. Practica: ssh

0. Asigurați-vă că aveți acces la două computere Linux sau lucrați împreună cu un partener

Pentru acest exercițiu. Pentru această practică, vom numi una dintre mașinile serverului.

1. Instalați sshd pe server

2. Verificați în fișierele de configurare ssh că este permisă numai versiunea de protocol 2.

3. Utilizați ssh pentru a vă conecta la server, a afișa directorul dvs. curent și apoi a ieși din server.

4. Utilizați scp pentru a copia un fișier de pe computer pe server.

5. Utilizați scp pentru a copia un fișier de pe server la computer.

6. (opțional, funcționează numai atunci când aveți o instalare grafică de Linux) Instalați pachetul
xeyes

Pe server și folosiți ssh pentru a rula xeyes pe server, dar afișați-l pe clientul dvs.

7. (opțional, la fel ca în precedent) Creați un marcaj în firefox, apoi închideți firefox pe client și

Server. Utilizați ssh -X pentru a rula Firefox pe ecran, dar pe computerul vecinului tău. Tu

Vedeți marcajul vecinului dvs.?

8. Utilizați ssh-keygen pentru a crea o pereche de chei fără frază de acces. Configurați ssh fără parole
între

Tu și vecinul tău. (Sau între clientul dvs. și serverul dvs.)

9. Verificați dacă permisiunile pentru fișierele cheie ale serverului sunt corecte; Lumea citită pentru
public

Chei și numai accesul root pentru cheile private.

10. Verificați dacă agentul ssh funcționează.

11. (opțional) Protejați-vă perechea de chei cu o expresie de acces, apoi adăugați această cheie la
agentul ssh

Și testați ssh fără parole pentru server.

Client ssh și server

57

5.12. Soluție: ssh

0. Asigurați-vă că aveți acces la două computere Linux sau lucrați împreună cu un partener

Pentru acest exercițiu. Pentru această practică, vom numi una dintre mașinile serverului.
1. Instalați sshd pe server

Apt-get instala openssh-server (pe Ubuntu / Debian)

Yum -y instalează serverul openssh (pe Centos / Fedora / Red Hat)

2. Verificați în fișierele de configurare ssh că este permisă numai versiunea de protocol 2.

Protocol grep / etc / ssh / ssh * _config

3. Utilizați ssh pentru a vă conecta la server, a afișa directorul dvs. curent și apoi a ieși din server.

User @ client $ ssh utilizator @ server-ip-adresa

User @ server $ pwd

/ Home / utilizator

User @ server $ exit

4. Utilizați scp pentru a copia un fișier de pe computer pe server.

Scp localfile utilizator @ server: ~

5. Utilizați scp pentru a copia un fișier de pe server la computer.

Scp user @ server: ~ / serverfile.

6. (opțional, funcționează numai atunci când aveți o instalare grafică de Linux) Instalați pachetul
xeyes

Pe server și folosiți ssh pentru a rula xeyes pe server, dar afișați-l pe clientul dvs.

Pe serverul:

Apt-get install xeyes

Pe client:

Ssh -X utilizator @ server-ip

xeyes

7. (opțional, la fel ca în precedent) Creați un marcaj în firefox, apoi închideți firefox pe client și

Server. Utilizați ssh -X pentru a rula Firefox pe ecran, dar pe computerul vecinului tău. Tu

Vedeți marcajul vecinului dvs.?

8. Utilizați ssh-keygen pentru a crea o pereche de chei fără frază de acces. Configurați ssh fără parole
între

Tu și vecinul tău. (Sau între clientul dvs. și serverul dvs.)

Vedeți soluția în cartea "Configurarea ssh fără parole"

9. Verificați dacă permisiunile pentru fișierele cheie ale serverului sunt corecte; Lumea citită pentru

Cheile publice și accesul numai pentru root pentru cheile private.

Ls -l / etc / ssh / ssh_host_ *


10. Verificați dacă agentul ssh funcționează.

Ps fax Grep ssh-agent

11. (opțional) Protejați-vă perechea de chei cu o expresie de acces, apoi adăugați această cheie la
agentul ssh

Și testați ssh fără parole pentru server.

Client ssh și server

58

Omul ssh-keygen

Om ssh-agent

Om ssh-add