Secure Shell

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

https://sites.google.com/site/seguridadinformaticajavier/_/rsrc/1527464087843/4-criptografia/5-sistemas-hibridos/cifrado%20hibrido.png

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í #

  1. 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
Sí no podem fer el ssh-copy-id l'única que hem de fer és copiar la clau pública del usuari al client al fitxer authorized_keys del usuari concret del servidor

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.

  1. 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). ↩︎

  2. (ATENCIÓ: El fitxer del client es diu ssh_config, sense la d darrera de la lletra h). ↩︎

  3. É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. ↩︎