SSH
From Bucuresti Linux Users Group
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

