SSH #
- SSH = Secure Shell
- Creat al 1995 a Helsinki després d'un atac e captació de contrasenyes
- Versions
- SSH1 lliure
- SSH2 comercial
- OpenSSH la crea un altre equip per OpenBSD -->lliure
Criptografia i SSH #
-
Clau compartida
- 3DES, AES, Blowfish i IDEA.
-
clau pública
- 1 clau pública i 1 clau privada
-
Sistemes híbrids
- Utilitza el sistema de clau pública per transmetre una clau pública generada dinàmicament
- Després utilitza l'encriptació convencional per a encriptar els missatges
Tècnica criptogràfica | Avantatges | inconvenients |
---|---|---|
Clau compartida | Velocitat | Necessita un canal segur per a l'intercanvi de claus |
Clau pública | No necessita canal segur | Lent. Consumeix molts recursos |
Híbrid | Velocitat | No necessita canal segur |
Instal·lació i primers passos #
- Per instal·lar :
sudo apt-get install ssh (o bé openssh-server)
- veure els paquets i fitxers instal·lats:
dpkg -l | grep ssh
dpkg -L ssh
- Un cop instal·lat comprova que al port 22 està escoltant el servidor ssh (sshd), obriu un altre terminal i feu:
netstat -atunp | grep ssh
- Mirem l'estat del dimoni:
sudo service ssh status
o també
sudo ps -A | grep sshd
- Per mirar els logs (recomenable en una altra terminal:
sudo tail -f /var/log/auth.log | grep ssh
- Si heu de comprovar la sintaxi del fitxer de configuració, executeu:
sshd -t
Prova bàsica #
- Per provar que el servei funciona, obrirem una consola al client i ens connectarem a l'adreça IP del servidor (o des del propi servidor a localhost). El posa l'usuari del servidor amb el que volem iniciar sessió seguit de arroba i l'adreça IP o nom del host :
ssh prova@192.168.3.221
- La primera vegada ens demanarà si- confiem en el servidor i si ho fem, guardarà el servidor a la llista de servidors coneguts.
- Ja no ens tornarà a demanar de nou si volem confiar en el servidor, a no ser que esborrem el fitxer known_hosts.
Configuració #
Fitxers de configuració servidor #
- Els fitxers on es guarda la informació del servidor ssh són:
fitxer | funció |
---|---|
/etc/ssh/sshd_config | guardar la configuració del servei. |
/etc/ssh/ssh_host_* 1 | que contenen les diferents claus privades i públiques del servidor. |
Fitxers de configurció del client #
-
Al client, pel programa ssh_client, es guarden els hosts coneguts al directori personal de l'usuari que està treballant a l'equip client.
-
Per exemple, al client obrim sessió de l'equip amb l'usuari "roger" i ens connectem al servidor ssh al compte "prova".
-
Per tant, al fitxer /home/roger/.ssh es guardarà el fitxer "known_hosts" amb les claus públiques dels hosts als que l'usuari roger s'hagi connectat. Una clau pública per cada línia.
-
Si volem esborrar els hosts coneguts, esborrem les línies corresponents o el fitxer sencer.
Configuració bàsica SSH: #
- Primer de tot fem una còpia de seguretat del fitxer de configuració 2:
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
Editem el fitxer per afegir les directives que ens interessin.
Algunes Directives SSH:
Directiva | Funció |
---|---|
Port 22 | Per configurar el port on escolta el servidor. |
ListenAddress 0.0.0.0 | Per indicar l'adreça IP que escoltarà (en el cas que tinguem més d'una adreça IP al servidor. (Pot ser v4 o v6) |
Protocol 2 | Versió de protocol SSH activada. |
HostKey /etc/ssh/ssh_host_rsa_key ... | Fitxers de claus. |
PermitRootLogin yes | Permet o no iniciar sessió a l'usuari root. |
DenyUsers pep joan | Denega l'accés als usuaris pep i joan, però TOTA la resta podran inciar sessió. 3 |
AllowUsers fulano mengano | Permet que NOMÉS els usuaris fulano i mengano puguin iniciar sessió al servidor. És una llista blanca. |
DenyGroups, AllowGroups | El mateix que les anteriors però per a grups d'usuaris |
PermitEmptyPasswords no | Permet o no passwords buits. |
X11Forwarding yes | Reenvia el protocol X11 per poder engegar aplicacions gràfiques del servidor veient la sortida al client. |
Banner /etc/issue.net | Missatge de benvinguda. |
Subsystem sftp /usr/lib/openssh/sftp-server | Fitxers per sftp. |
UsePAM yes | Per poder fer servir usuaris locals, del sistema |
SCP #
- Es pot copiar arxius des de un equip (remot o no) cap a un altre (remot o no) fent servir la utilitat scp (secure copy)
scp <[usuari1@ip-desti1:]ruta origen> <[usuari2@ip-desti2:]ruta-destí>.
- Per exemple c opiar des de l'equip local cap el remot:
scp /etc/hosts pep@192.168.1.20:/home/pep/Escriptori
- Ex2: copiar des de equip remot cap el local
scp pep@192.168.1.20:/etc/hosts /home/joan/Escriptori
Connectar-se com a root sense saber la contrasenya de l'usuari destí #
- Generar clau de l'usuari local
- Aquesy pas només s'ha de fer si no existeix o vols utiltizar una de nova
ssh-keygen
2 .copiar la clau a la màquina remota a l'usuari destí
Si és la per defecte (rsa)
ssh-copy-id user@host
per a qualsevol altre clau s'ha d'especificar quina és amb "-i"
ssh-copy-id -i ~/.ssh/mykey user@host
Aplicacions gràfiques remotes #
- Es pot iniciar una sessió ssh que permeti veure aplicacions gràfiques remotes a l'equip client que en realitat s'estan executant al servidor.
- Cal activar la directiva X11Forwarding al fitxer de configuració del dimoni ssh, i cridar el clienit ssh amb el paràmetre "-X".
- Un cop iniciada la sessió, podem executar un programa gràfic des de la consola, per exemple, "xcalc &" (& per alliberar la consola i que s'executi el programa en segon pla). Si no funciona també podeu fer-ho així ssh -X user@maquina env
known hosts #
- Si volem que tots els usuaris de l'equip client es refiïn d’un servidor, només cal crear un fitxer de hosts coneguts al directori /etc/ssh. Ho farem copiant el fitxer d'un usuari local que ja hagi iniciat sessió. La còpia ha de tenir el nom “/etc/ssh/ssh_known_hosts”.
- Per provar-ho, podem Iniciar sessió amb un altre usuari local (si no hi és, s'ha de crear), i comprovar que no li demana validar el servidor manualment (el password si, però no demana confiar en el servidor).
Client windows #
- Es pot connectar a un servidor ssh des d'un equip windows, per exemple amb el programa “putty”. Provarem a iniciar sessió per comprovar que la primera vegada es demana confirmar el servidor però no les següents.
- Es pot inciar sessió gràfica en un servidor remot des de un client Windows, instal·lant prèviament un gestor de finestres X al Windows.
SFTP #
- Es pot obrir una sessió sftp (secure FTP) contra un servidor remot i treballar amb comandes interactives per moure arxius com es faria amb un client ftp: sftp pep@192.168.1.20.
- Es pot fer servir Filezilla o d'altres clients FTP amb el protocol SFTP de manera que la transferència d'arxius serà segura.
- Es pot fer un connexió al servidor ssh en mode gràfic des del client Linux amb Nautilus (Llocs->connecta al servidor->servidor sftp o ssh) i comprovar que es pot baixar i pujar fitxers, fent servir el protocol "sftp", inclós al paquet openssh-server.
-
Després de "host" hi ha el nom de l'algorisme d'encriptació al que corresponen les claus (RSA=Rivest, Shamir y Adleman, DSA=Digital Signature Algorithm o ECDSA=Elliptic Curve Digital Signature Algorithm). ↩︎
-
(ATENCIÓ: El fitxer del client es diu ssh_config, sense la d darrera de la lletra h). ↩︎
-
És una llista negra i els usuaris es separen per espais. NO FER SERVIR COMES!!! Sempre es processa primer DenyUsers i després AllowUsers, sense importar l'ordre en que s'escriguin. ↩︎