SSH

From Bucuresti Linux Users Group

Jump to: navigation, search

Contents

SSH pe Debian

În computere, Secure Shell sau SSH este un set de protocoale de internet standard şi asociate care permite stabilirea unui canal sigur între un computer local şi unul controlat de la distanţa (remote). Este folosită criptografie public-key pentru a autentifica computerul controlat şi (opţional) să permită computerului controlat să autentifice utilizatorul. SSH asigură confidenţialitatea şi integritatea datelor schimbate între cele doua computere prin folosirea encriptării şi a codurilor de autentificare a mesajelor (MACs). SSH este de obicei folosită pentru conectarea de la distanţă şi executarea de comenzi pe acel computer, dar suportă de asemeni tunneling, trimiterea către porturi TCP arbitrare şi conexiuni X11; poate face transfer de fişiere folosind protocoalele asociate SFTP sau SCP. Un server SSH, implicit, ascultă pe portul standard TCP 22.
Pe debian și în toate celelalte distribuții debian based openssh este împarțit astfel: openssh-server fiind daemonul care accepta conexiuni și openssh-client fiind clientul cu care le conectăm la alte servere sshd.

Instalarea server-ului sshd

 apt-get install openssh-server

Instalarea client-ului ssh

 apt-get install openssh-client

Activarea celor mai potrivite protocoale de securitate pentru SSH

Permiterea logării ca root, via ssh, nu este sigură. Noi nu dorim sa vă logaţi ca root deloc, aproape niciodată, Debian trebuie să fie sigur nicidecum nesigur ca sistem, şi nici nu dorim să acordam 10 minute utilizatorilor pentru a încerca atacarea parolelor de logare prin ssh, dar lăsăm la latitudinea dumneavoastră să limitaţi timpul şi numărul de încercări pentru o parolă!

Pentru a va ajuta să faceţi conexiunea ssh mai sigură luaţi editorul dumneavoastră de text favorit, porniţi-l cu privilegii root şi deschideţi acest fişier:

  /etc/ssh/sshd_config

Apoi vom localiza intrările nesigure şi le vom schimba.

Intrările nesigure care trebuiesc localizate sunt:

Port <desired port>: Acesta trebuie setat către portul corect cu care se iese din router. Portul de ieşire deasemeni trebuie setat şi în router. Dacă nu ştiţi cum să faceţi aceste operaţii, poate ar fi mai bine dacă n-aţi utiliza control de la distanţă. Debian setează portul implicit port 22, oricum este recomandat să folosiţi un port în afara ariei de scanare standard. Să spunem că vom folosi portul 5874, deci aceasta devine:

  Port 5874

Mai departe, Protocol 2 este deja implicit în Debian, dar verificaţi ca să fiţi siguri :

LoginGraceTime <seconds to allow for login>: Aceasta are o valoare implicită absurdă de 600 secunde. Nu veţi avea nevoie niciodată de 10 minute pentru a va tipări numele şi parola deci haideţi să fie:

  LoginGraceTime 45

Acum veţi avea doar 45 secunde pentru a va loga, dar hackerii nu vor mai avea 600 secunde pentru a încerca să vă spargă parola ...

PermitRootLogin <yes>: De ce Debian a făcut PermitRootLogin 'yes', este de neînţeles, aşa că noi am schimbat asta în 'no'

  PermitRootLogin no
  StrictModes yes

MaxAuthTries <xxx>: Numărul încercărilor la logare, poţi să o faci 3 sau 4, dar niciodată mai mult de atât.

  MaxAuthTries 2

Va trebui să adaugi fiecare din aceste intrări dacă ele nu există:

  AllowUsers <user names with spaces allowed to access via ssh>

AllowUsers <xxx>: doar utilizatorii înregistraţi pot deschide ssh şi doar cu drepturi de utilizator, folosiţi adduser pentru a adăuga utilizatorul şi apoi specificaţi-i numele aici aşa:

  AllowUsers whomevertheuseris

PermitEmptyPasswords <xxx>: daţi acestui utilizator o parolă foarte lungă ce va fi imposibil de ghicit chiar şi într-un milion de ani, acesta fiind singurul căruia i se va permite să logheze ssh. Odată logat puteţi deveni root cu su.

  PermitEmptyPasswords no

PasswordAuthentication <xxx>: bineînţeles pentru password login, nu şi pentru key login, va trebui ca parola să fie întreagă iar aceasta opţiune să fie yes

  PasswordAuthentication yes [unless using keys]

La sfârşit:

  /etc/init.d/ssh restart

Acum veţi avea o sesiune SSH mai sigură, nu perfectă dar măcar mai bună, inclusiv prin crearea unui cont de utilizator doar pentru SSH cu adduser.

Note: If you get an error message and ssh refuses to connect you, go to your $HOME and look for a hidden folder called .ssh and delete the file called known_hosts and try again. This error mainly occurs when you have dynamically set IP addresses (DCHP)

Rularea Aplicaţiilor X Window Via Network prin SSH

Conectarea cu comanda:

  ssh -X 

vă permite conectarea remote la un computer avand pe computerul local, interfata grafică a programelor accesate prin SSH.

  $ ssh -X username@xxx.xxx.xxx.xxx (sau IP)

Dupa ce puneti parola aferenta userului, puteti rula aplicatii X in shell:

  $ iceweasel 

sau

  $ oocalc 

sau

  $ pidgin

Acces Remote ssh cu X-Forwarding de la un Windows-PC:

  • Descărcaţi şi scrieţi pe un CD Cygwin XLiveCD
  • Introduceţi CD-ul în unitate CD-ROM a computerului windows şi aşteptaţi autolansarea.

Apăsaţi "continue" până la apariţia unei console şi introduceţi:

  ssh -X username@xxx.xxx.xxx.xxx 

Notă: xxx.xxx.xxx.xxx este IP-ul computerului linux comandat sau URL-ul sau (de exemplu un cont dyndns.org), iar username este bineînţeles un nume utilizator ce există pe computerul comandat. După ce v-aţi logat cu succes, porniţi "kmail" de exemplu şi verificaţi-vă mesajele!

Important: fiţi siguri că hosts.allow are o intrare pentru accesul de la computerele din alte reţele. Dacă sunteţi în spatele unui NAT-Firewall sau a unui router asiguraţi-vă că portul 22 este deschis către computerul linux (daca folositi portul 22 implicit).

SSH cu Konqueror

Atât Konqueror cât şi Krusader sunt capabile să acceseze date remote, folosind protocolul sftp://

Cum funcţionează : 1) Deschide-ti o fereastra Konqeror 2) Introduceți in bara de adrese:

  sftp://username@ssh-server.com

Exemplul 1:

  sftp://heinrich@remote_hostname_or_ip

(Nota: un popup se va deschide si vă va cere parola de conectare SSH, introduceti-o si apasati tasta Enter sau click OK)

Exemplul 2 :

  sftp://username:password@remote_hostname_or_ip

(in acest exemplu parola nu vă va mai fi solicitata si veti fi direct conectat)

Pentru conectarea în LAN

  sftp://username@10.x.x.x or 198.x.x.x.x

(Nota: un popup se va deschide si vă va cere parola de conectare SSH, introduceti-o si apasati tasta Enter sau click OK)

Conexiunea Konqueror SSH este acum iniţializată. În această fereastră Konqueror puteţi lucra cu fişierele (copy/view) care sunt pe serverul SSH ca şi cum ar fi într-un folder din computerul local.

NOTA: Daca ai stabilit port-ul SSH diferit de cel default de 22, trebuie sa specificati port-ul pe care sftp trebuie sa-l foloseasca:

  sftp://user@ip:port

'user@ip:port' este sintaxa standard pentru multe programe ca sftp sau smb.

SSHFS - Mounting Remotely

SSFS este o metoda uşoara, rapidă şi sigură care utilizează FUSE pentru a monta un sistem de fişiere de la distanţa. Singura cerinţă ce trebuie îndeplinită de server este rularea unui daemon ssh.

Pe computerul client probabil va trebui să instalaţi sshfs:

  apt-get update && apt-get install sshfs

Acum va trebui să vă re-logaţi.

Montarea unui sistem de fişiere remote este simplă:

  sshfs username@remote_hostname:directory local_mount_point

unde username este numele de utilizator de pe computerul comandat.

Dacă nici un director nu este specificat, directorul /home/username al utilizatorului din computerul remote va fi montat .

Atenţie semnul : (doua puncte) este esenţial chiar dacă nici un director nu este specificat!

După montare de la distanţa directorul se va comporta ca orice alt director local, puteţi răsfoi fişierele, edita sau chiar rula scripturi pe el.

Dacă doriţi să-l de-montaţi folosiţi următoarea comandă:

  fusermount -u local_mount_point

Dacă utilizaţi sshfs frecvent ar fi o decizie bună să adăugaţi o intrare în fstab:

  username@remote_hostname:/remote_directory /local_mount_point fuse.sshfs user,allow_other,uid=1000,gid=1000,noauto 0 0

Asta va permite oricărui utilizator ce face parte din grupul fuse să monteze sistemul de fişiere folosind binecunoscuta comandă mount:

  mount /path/to/mount/point

Având aceasta linie în fstab veţi putea deasemeni folosi şi comanda umount:

  umount /path/to/mount/point

Pentru a verifica dacă faceţi parte sau nu din acest grup lansaţi comanda:

  cat /etc/group | grep fuse

Ar trebui să vedeţi ceva de genul:

  fuse:x:117: <username>

Notă: Parametrul "id" nu va fi listat în grupul "fuse" până când nu veţi ieşi şi vă veţi loga înapoi.

Dacă numele dumneavoastră de utilizator nu este listat folosiţi comanda adduser ca root:

  adduser <username> fuse

Acum numele de utilizator ar trebui să fie listat şi dumneavoastră ar trebui să puteţi rula:

  mount local_mount_point

şi

  umount local_mount_point

Tips & Tricks

Sunt cazuri în care pe serverul remote la care vrem să ne conectăm să nu avem același user ca pe mașina locală sau că portul pe care este configurat serverul să nu fie cel default, caz în care nu putem să ne conectam simplu ca:

  ssh hostname_server

De obicei obișnuiam să ne conectăm cu:

  ssh user@hostname_server -p port_server

Putem să simplificam modalitatea de conectare creându-ne un fișier local de configurare în ~/.ssh/config sintaxa fiind:

vi ~/.ssh/config

Host hostname_server
  HostName hostname_server
  User user_remote
  Port port server

Din motive de securitate schimbăm permisia fișierului ca sa fie accesibil doar userului nostru:

  chmod 600 ~/.ssh/config

Bineînțeles acestea nu sunt singurele opțiuni accesibile. Pentru mai multe detalii man ssh_config


Inițiator tutorial: Heinrich

Personal tools