Está en la página 1de 7

SSH (Secure SHell)

SSH es un servicio de arquitectura cliente-servidor que permite conectarse desde una estacin a otra a travs de la red para ejecutar programas de forma remota. Dado que exista un servidor de SSH, los clientes pueden autenticarse en este e invocar comandos que se ejecutan en el servidor. SSH puede sustituir a programas como telnet, rsh, rlogin y rcp. Estos tienen como desventaja fundamental su gran vulnerabilidad debido a que la infomacin intercambiada se trasmite de la misma forma en que se enva, pudiendo ser accedida por ``clientes'' no autorizados. En cambio SSH provee varios mecanismos para encriptar lo trasmitido a travs de canales inseguros. Con SSH tambin se pueden mover ficheros desde un extremo a otro de la conexin as como establecer conexiones grficas X seguras. SSH prosee las siguientes ventajas: Autenticacin potente. Cierra la mayora de los huecos de seguridad. Brinda nuevos mtodos de autenticacin tales como: fichero .rhosts ms autenticacin RSA7.1 basada en host, y autenticacin RSA pura. Incremento de la privacidad. Toda la comunicacin es trasparente y automticamente encriptada. La encriptacin comienza antes de la autenticacin y esto permite que los passwords no se trasmitan claramente. La encriptacin tambin permite protegerse de los paquetes falsos. Sesiones X Window seguras. Cualquier conexin TCP/IP puede ser redireccionada a travs de un canal de encriptacin SSH en ambas direcciones. No es necesaria ninguna adecuacin para los usuarios, todo ocurre automticamente. Los antiguos ficheros .rhosts pueden funcionar con una autenticacin potente si se instalan los ficheros de llaves por host. Nunca se confa en la red. Se tiene la menor confianza posible en el lado remoto de la conexin y en los servidores de nombre de dominio. La autenticacin RSA pura no cree en nada ms que en la llave privada. Automticamente se ejecuta rsh si no existiera un servidor de SSH en la mquina remota con la cual se desea establecer la conexin. Compresin opcional de los datos trasmitidos utilizando gzip. Particularmente para las conexiones X puede resultar ventajoso si el ancho de banda es limitado. Sustitucin total de rsh, rlogin, rcp. OpenSSH es el nombre de una implementacin libre con cdigo abierto (OpenSource) de la ltima versin libre del SSH. Esta es la que brindan las distribuciones de Linux incluyendo a Red Hat. OpenSSH contiene varias utilidades y programas:
ssh:

es el comando que permite invocar el cliente SSH para conectarse a la mquina servidora o ejecutar comandos en ella. Tambin se puede llamar slogin. Sustituye a telnet, rsh y rlogin. sshd: es el daemon servidor de SSH. Siempre est escuchando las solicitudes de los clientes y cuando uno se conecta realiza la autenticacin y comienza a servir al cliente mientras dure la conexin. scp: pemite copiar ficheros de una mquina a otra a travs de un canal SSH. Sustituye a rcp.

sftp

y sftp-server: constituyen las partes cliente y servidora del servicio FTP con las facilidades del SSH incorporadas. ssh-keygen: permite generar llaves para autenticacin RSA y DSA tanto basada en hosts como en usuarios. En Red Hat el paquete que contiene los programas clientes de openSSH se nombra openssh-clients, el del servidor es openssh-server y uno que posee utilidades comunes es openssh. Una vez instalado el servidor este se puede manipular a travs del script de inicio /etc/rc.d/init.d/sshd. Ejemplos:
# service sshd start Starting sshd: ] # service sshd status sshd (pid 1575) is running... # service sshd reload Reloading sshd: ] [ OK [ OK

La configuracin del servicio SSH se agrupa en el directorio /etc/ssh/. Aqu se encuentra el fichero de configuracin fundamental del daemon nombrado sshd_config. Su estructura es muy simple pues est formado por lneas de la forma ``atributo valor'' y comentarios de la manera usual (precedidos por un signo ``#'').

SSH posee dos versiones en su protocolo de comunicacin: la 1 y la 2. Esta es determinada por el cliente. Las diferencias fundamentales estn en la forma de encriptacin y autenticacin. A continuacin se mencionan en el orden en que ocurren los tipos de autenticacin que trata de emplear el cliente para cada versin: Versin 1 o Autenticacin basada en ficheros .rhosts. o Autenticacin basada en ficheros .rhosts combinada con autenticacin RSA basada en host. o Autenticacin RSA pura. o Autenticacin basada en passwords. Versin 2 o Autenticacin basada en llave pblica. o Autenticacin basada en passwords. En las siguientes secciones se describe brevemente cada tipo de autenticacin:

Autenticacin basada en passwords


La forma bsica de autenticacin con SSH es la tradicional basada en passwords. Dado que no se han configurado o fallen todas las formas de autenticacin mencionadas anteriormente se asumir la basada en passwords, que simplemente consiste en que el

usuario para conectarse al servidor o ejecutar comandos en l debe indicar el password de la cuenta correspondiente. Como se hizo alusin anteriormente existen dos herramientas bsicas que funcionan como clientes en SSH. Estas son los comandos ssh y scp A continuacin se ejemplifica como se emplea cada uno:
ssh

Sintaxis: ssh [-l usuario] [host | usuario@host] [comando] De no especificarse usuario se asume aquel con el que se est conectado en el cliente. Si la autenticacin es efectiva y se indic un comando este se ejecutar en el servidor mostrando su salida a travs de la terminal cliente. Si no se indica comando alguno se establecer un shell remoto similar al de una sesin ``telnet''. El comando ssh puede tener una sintaxis ms compleja que incluye un conjunto de opciones. Ejemplos:
$ ssh root@sion root@sion's password: $ ssh -l root sion tail /var/log/messages root@sion's password:

scp

Sintaxis: scp [opciones] [usuario@host:]<fuente> [...]


[usuario@host:]<destino>

Traslada ficheros o directorios del servidor al cliente o viceversa. Para referirse a un fichero local se puede hacer de la forma tradicional (absoluta o relativa al directorio actual). En cambio para los ficheros remotos es necesario indicar el usuario y el nombre del servidor donde se encuentran, separados por un caracter ``@'', a continuacin se coloca el nombre del fichero separado por un caracter ``:''. El nombre del fichero remoto puede ser absoluto o relativo al directorio base del usuario en el servidor. Algunas opciones:
-C

: realiza el traslado del fichero de forma compactada utilizando gzip.


-r

: permite hacer copias recursivas para los directorios


-q

: no muetra la informacin del progreso de la copia como se hace por defecto Ejemplos:
$ scp -r root@sion:/etc/mail /tmp root@sion's password: sendmail.mc 100% |******************************************************| 00:00 mailertable.db 100% |******************************************************| 00:00

9291 306

access.db 100% |******************************************************| 487 00:00 ... $ scp -C /etc/passwd /etc/shadow root@sion:/tmp root@sion's password: passwd 100% |******************************************************| 2106 00:00 shadow 100% |******************************************************| 1564 00:00

Configuracin de las autenticaciones RSA y basada en llave pblica


Para configurar una autenticacin basada en llaves se deben seguir los siguientes pasos: 1-. Generar el par de llaves pblica y privada. Para ello se emplea el comando ssh-keygen. Este permite generar un par de llaves pblica y privada a partir de un algoritmo: DSA o RSA (versin 1 o 2 de SSH). El tipo de algoritmo se indica a travs de la opcin -t y puede ser rsa1 (para RSA versin 1), rsa (para RSA versin 2) o dsa (para DSA versin 2). Por defecto es rsa1. Para el caso de la autenticacin basada en usuario, las llaves privadas se almacenarn por defecto de forma encriptada en $HOME/.ssh/identity si es rsa1, en $HOME/.ssh/id_rsa si es rsa, y en $HOME/.ssh/id_dsa si es dsa. Las llaves pblicas correspondientes estarn en ficheros del mismo nombre pero con extensin ``.pub''. Para la encriptacin de la llave privada se emplea la ``frase de paso'', que se puede cambiar luego con la opcin -p. Ejemplos:
$ ssh-keygen Generating public/private rsa1 key pair. Enter file in which to save the key (/home/alina/.ssh/identity): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/alina/.ssh/identity. Your public key has been saved in /home/alina/.ssh/identity.pub. The key fingerprint is: 10:9c:df:d5:0f:54:0d:6b:2c:cb:e7:0d:a4:80:6e:b7 alina@sion $ ssh-keygen -p Enter file in which the key is (/home/alina/.ssh/identity): Key has comment 'alina@gloin.disaic.cu'

Enter new passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved with the new passphrase.

2-. Aadir la llave pblica en el fichero de autorizados en el servidor. Si es una autenticacin basada en usuario debe hacerse en el fichero $HOME/.ssh/authorized_keys para la versin 1 de SSH, o $HOME/.ssh/authorized_keys2 para la versin 2. En cambio para una autenticacin RSA basada en host debe hacerse en el fichero /ets/ssh/ssh_known_hosts que tambin se utiliza para chequear si el host que accede es el correcto. Este tipo de chequeo adicional lo reliza SSH para detectar que alguna mquina se est haciendo pasar por otra en un nivel anterior a la fase de autenticacin7.4. Para aadir la llave se puede emplear el propio servicio SSH. Ejemplos:
$ scp ~/.ssh/identity.pub pepe@sion:.ssh/authorized_keys # sobrescribe el fichero # destino $ ssh pepe@gloin cat .ssh/identity.pub >> ~/.ssh/authorized_keys # solo aade la llave pero # se ejecuta en la # mquina servidora $ scp ~/.ssh/id_dsa.pub pepe@sion:.ssh/authorized_keys2 # para autenticacin dsa $ ssh pepe@gloin cat .ssh/id_dsa.pub >> ~/.ssh/authorized_keys2 # para autenticacin dsa

Alternativamente se puede utilizar cualquier mtodo para transferir ficheros a travs de la red o de dispositivos externos. Los ficheros contentivos de llaves pblicas pueden ser accedidos por todos (lectura), aunque no es necesario, ni til que lo sean. En cambio, los que contienen las llaves privadas de cualquier tipo de autenticacin no pueden ser accedidos por ningn usuario distinto a su dueo (permisos 600). De hecho SSH ignora estos ficheros cuando poseen permisos inadecuados ofreciendo la advertencia correspondiente. 3-. Indicar la versin del protocolo a emplear por el cliente. La versin del protocolo SSH a emplear se puede configurar a nivel de sistema o por usuario. Para el sistema es en el fichero /etc/ssh/ssh_config y para los usuarios, en $HOME/.ssh/config. Ambos tienen la misma sintaxis. Se debe modificar el atributo Protocol. Ejemplo:
Host sion Protocol 2 # para el host sion solo se emplea el protocolo 2 Host * Protocol 1,2 # para el resto de los hosts tiene preferencia el protocolo 1 sobre el 2

En estos ficheros se pueden configurar otros aspectos la mayora de los cuales est comentados con sus valores por defecto. Los atributos se pueden indicar por host o de forma general empleando un caracter `*'. Los especficos se colocan antes que los generales. Ejemplo:
Host sion Cipher 3des Protocol 2 IdentityFile ~/.ssh/my_identity Host * ForwardAgent no ForwardX11 no RhostsAuthentication no RhostsRSAAuthentication yes RSAAuthentication yes PasswordAuthentication yes FallBackToRsh no UseRsh no BatchMode no CheckHostIP yes StrictHostKeyChecking yes IdentityFile ~/.ssh/identity IdentityFile ~/.ssh/id_dsa IdentityFile ~/.ssh/id_rsa1 IdentityFile ~/.ssh/id_rsa2 Port 22 Protocol 2,1 Cipher blowfish EscapeChar ~

FTP

a travs de SSH

Como se mencion anteriormente a travs de un canal SSH se pueden transferir ficheros a la manera del servicio FTP. Los programas empleados para ello son sftp-server disponible en el paquete openssh-server y sftp que forma parte de opensshclients. El servidor FTP en este caso no es un daemon independiente sino que constituye un subsistema del servidor principal del SSH. Se habilita a travs de un atributo en la configuracin del daemon SSH en /etc/ssh/sshd_config aadiendo una lnea de la forma:
Subsystem sftp /usr/lib/ssh/sftp-server

El cliente sftp es una herramienta similar al comando ftp que puede operar en modo interactivo o no. Tambin es capaz de emplear las formas de autenticacin descritas anteriormente. Sintaxis:

sftp [opciones] [usuario@]host[:fuente [destino]] sftp [opciones] [usuario@]host[:directorio]

Algunas opciones:
-C : habilita el modo de transferencia compactado. -b <fichero> : opera en modo no interactivo o batch,

o sea toma los comandos a ejecutar a partir de un fichero en lugar de la entrada estndar como es por defecto. Ejemplos:
$ sftp -C pepe@sion:.bash_profile pepe_profile sion con el usuario pepe y copia .bash_profile en pepe_profile $ sftp sion:/tmp sion con el usuario actual y # se conecta a # su fichero # se conecta a

# cambia hacia el directorio /tmp $ sftp -b sftpCommads root@sion # se conecta a sion con el usuario root y ejecuta Connecting to sion... # en modo no interactivo los comandos presentes sftp> mget .bash* tmp # en el fichero sftpCommands Fetching /root/.bash_history to tmp/.bash_history Fetching /root/.bash_logout to tmp/.bash_logout Fetching /root/.bash_profile to tmp/.bash_profile Fetching /root/.bashrc to tmp/.bashrc sftp> lcd .ssh sftp> put id_rsa.pub .ssh/authorized_keys2 Uploading id_rsa.pub to /root/.ssh/authorized_keys2 sftp> exit $ more sftpCommads mget .bash* tmp lcd .ssh put id_rsa.pub .ssh/authorized_keys2 exit

Algunos comandos que se pueden ejecutar en una sesin sftp son: cd, lcd, ls, lls, umask, lumask, chmod, chown, help, mkdir, lmkdir, get, mget, put, mput, exit, quit, ?, ln, pwd, lpwd, rm, rmdir, ln, y otros.

También podría gustarte