Sie sind auf Seite 1von 20

UNIVERSIDAD DE CUENCA FACULTAD DE INGENIERA ESCUELA DE INFORMTICA REDES DE COMPUTADORES 1 PRCTICA: INSTALACIN DE SSH NOMBRES: ANGEL OSWALDO VZQUEZ

PATIO NOTA: __________ INTRODUCCIN

La red que se hizo para la prctica es una red virtual en VMware. Existen en esta red virtual dos equipos virtuales: host1 con la direccin IP 192.168.0.1 y el host2 con la direccin IP 192.168.0.2. El servidor ssh estar configurado en el equipo host2.
SSH es un protocolo que permite establecer conexiones seguras a travs de redes que no lo son, adems es capaz de servir de tnel seguro para otros protocolos no seguros. La mayor ventaja de SSH es que no modifica mucho los procedimientos de conexin. Iniciar una sesin de SSH es tan sencillo como iniciar una sesin de telnet. Tanto el intercambio de claves, el proceso de autenticacin, as como el cifrado de sesiones son transparentes para los usuarios. OpenSSH es una versin libre del paquete de herramientas de comunicacin segura del protocolo SSH/SecSH para redes. Algunos usuarios que emplean telnet, rlogin, ftp y otros programas parecidos, no se dan cuenta que la informacin se est transmitiendo sin cifrar a travs de la red. OpenSSH cifra todo el trfico (incluidas las contraseas) para eliminar de un modo efectivo las escuchas, los secuestros de las conexiones y otros ataques a nivel de red. Adems, OpenSSH ofrece amplias posibilidades para la creacin de tneles seguros, aparte de una variedad de mtodos de autenticacin. OBJETIVOS Los objetivos de la prctica son: a. Conocer una herramienta ms segura que los tradicionales servicios de conexin remota disponibles en servidores Linux: telnet, rsh, rlogin, ftp. b. Instalar y configurar un servidor SSH empleando OpenSSH c. Instalar y configurar un cliente SSH empleando OpenSSH d. Conocer el funcionamiento de un esquema de conexin remota con SSH. e. Instalar y utilizar herramientas SSH bajo el sistema Windows. PROCEDIMIENTO Paso 1. Para disponer de un servidor OpenSSH, es necesario asegurarse que el sistema disponga de los paquetes RPM instalados. Se requiere openssh-server, el cual depende a su vez del paquete openssh. En caso de que no lo disponga, puede descargarse de http://www.openssh.com o con el comando yum install desde los repositorios establecidos por RedHat.

En el caso de RedHat los paquetes bsicos son: openssh: contiene los archivos bsicos necesarios para el servidor y clientes ssh. openssh-server: contiene el proceso servidor sshd, permite a los clientes ssh establecer conexiones seguras con el sistema. openssh-clients: contiene los clientes que permiten establecer conexiones con el servidor.

Se requiere tener instalado OpenSSL. Para el caso de la prctica se descargaron los paquetes, pero luego se comprob con el comando rmp qa | grep openss, que ya se tenan instalados los mismos.

Los paquetes descargados son:


openssh-server-5.1p1-3.fc10.i386.rpm openssh-5.1p1-3.fc10.i386.rpm openssh-clients-5.1p1-3.fc10.i386.rpm openssl-0.9.8g-11.fc10.i386.rpm

Nota: La pgina de donde se descargaron los paquetes est especificada en las referencias, al final de este documento. Paso 2. El proceso servidor /etc/ssh/sshd_config. OpenSSH utiliza el archivo de configuracin

Por defecto, el archivo de configuracin instalado con Red Hat Linux debera ser suficiente para la mayora de las configuraciones. Para configurar, emplee un editor de texto y edite /etc/ssh/sshd_config. Para editar el archivo utilizamos la siguiente lnea:

A continuacin se analizan algunos parmetros que se pueden modificar: ListenAddress: Por defecto SSHD escuchar peticiones por todas las interfaces del sistema. En algunos casos es posible que no se desee esto y se prefiera limitar el acceso solo a travs de un

interfaz que slo se pueda acceder desde la red local. Para tal fin puede establecerse lo siguiente, considerando que el servidor a configurar posee la IP 192.168.0.2: ListenAddress 192.168.0.2 PermitRootLogin: Este parmetro sirve para establecer si se va a permitir el acceso directo del usuario root al servidor SSH. Si se va a permitir el acceso hacia el servidor desde redes pblicas, resultar prudente utilizar este parmetro con el valor no. PermitRootLogin no X11Forwarding: Este parmetro establece si se permite o no la ejecucin remota de aplicaciones grficas. Si se va a acceder hacia el servidor desde red local, este parmetro puede quedarse con el valor yes. Si se va a permitir el acceso hacia el servidor desde redes pblicas, resultar prudente utilizar este parmetro con el valor no. X11Forwarding yes A continuacin se muestran partes del archivo de configuracin donde se ve las lneas que se mencionaron anteriormente.

Paso 3. Activacin y desactivacin de SSH. Sshd puede inicializarse, detenerse o reinicializarse a travs de un script similar a los del resto del sistema. De modo tal, podr inicializarse, detenerse o reinicializarse a travs del comando service y aadirse al arranque del sistema en un nivel o niveles de ejecucin en particular con el comando chkconfig. Para ejecutar por primera vez el servicio, ejecute: /sbin/service sshd start

Para hacer que los cambios hechos a la configuracin surtan efecto, ejecute: /sbin/service sshd restart

Para detener el proceso servidor, ejecute: /sbin/service sshd stop

Por defecto sshd est incluido en todos los niveles de ejecucin con servicio de red. Para deshabilitar el servicio Sshd de los niveles 2, 3, 4 y 5, ejecute: /sbin/chkconfig --level 2345 sshd off

Active la ejecucin de ssh en su sistema empleando chkconfig.

Paso 4. Los mtodos de autenticacin disponibles en SSH son: Autenticacin mediante usuario/contrasea: Es la autenticacin bsica. Se puede habilitar o deshabilitar en /etc/ssh/sshd_config y /etc/ssh/ssh_config. Autenticacin basada en host/usuario: Como en los comandos "r", se puede configurar el acceso a ssh mediante archivos que especifican desde que usuario y computador se permite. Estos archivos son:
/etc/ssh/shosts.equiv: con el mismo funcionamiento que /etc/hosts.equiv $HOME/.shosts: a nivel de usuario, como el archivo $HOME/.rhost

Autenticacin mediante claves: Para obtener lo mejor de SSH se puede utilizar su capacidad de autenticacin mediante clave pblica y privada.

Para ello el cliente debe generar sus claves privada y pblica, compartiendo esta ltima con el servidor para poder identificarse. Una vez hecho esto las conexiones se podrn establecer sin necesidad de utilizar el esquema clsico de usuario y contrasea. Considere que un mensaje encriptado con la pblica slo puede desencriptarse con la correspondiente clave privada. OpenSSH utiliza estas propiedades de los algoritmos de clave pblica y privada para realizar la autenticacin sin intercambio de contraseas. Estos son los pasos a seguir para poder utilizar esta autenticacin. 1. Generar la clave en el cliente.

La passphrase si se rellena tiene un comportamiento similar a la contrasea, ser solicitada al utilizar esta clave. Deber ser una frase, en la que se pueden incluir espacios en blanco y signos de puntuacin. En el ejemplo, se ha decidido dejarla vaca para as poder utilizar este mtodo de autenticacin en procesos no interactivos. La passphrase se puede cambiar con el comando ssh-keygen -p. El tipo de la clave se especifica mediante el parmetro -t, y puede ser: o rsa1 para ssh v1 o rsa, dsa para ssh v2 En el ejemplo se ha utilizado el tipo dsa, y se ha guardado en los archivos por defecto. Estos son $HOME/.ssh/id_dsa para la clave privada y $HOME/.ssh/id_dsa.pub para la clave pblica. La clave privada es la que identifica al usuario, por lo que debe ser accesible nicamente por el usuario propietario.

2. Compartir la clave pblica La clave pblica debe ser incluida en el archivo $HOME/.ssh/authorized_keys2 de cada computador en el que se desee utilizar la autenticacin por clave pblica. Para realizar este intercambio se puede utilizar directamente el ssh desde el computador en que se ha generado la clave.

Ahora ya se puede utilizar los comandos de ssh sin utilizar el usuario y contrasea, confiando nicamente en las claves pblica y privada. En el caso de utilizar una passphrase no vaca se solicitara al realizar la autenticacin (en esta prctica no se utiliz passphrase):

Paso 5. Los comandos bsicos de SSH que se disponen son: ssh: El comando ssh ofrece comunicacin encriptada y segura entre dos sistemas sobre una red no segura. Este comando reemplaza al telnet, rlogin, rsh. Para iniciar una sesin en otra mquina usando ssh: Se har la conexin de un cliente (host1, 192.168.0.1) al servidor (host2, 192.168.0.2).

La primera vez que se realiza la conexin se debe aceptar la firma del otro computador. De esta manera se establece una relacin de confianza que se traduce en archivar la clave pblica de este servidor en el archivo $HOME/.ssh/known_hosts. La sintaxis bsica del comando ssh es:

El comando es opcional. Si se especifica en lugar de obtener un shell se ejecuta el comando en el computador remoto.

Por ejemplo, se podra hacer obtener un listado en el computador remoto y observar su salida:

O realizar alguna operacin ms elaborada como realizar una copia en directorio raz de un usuario remoto como si fuera una copia en el computador local:

Una de las funcionalidades que le da mayor potencia a SSH es la redireccin de las X. Si se observa la variable de entorno DISPLAY se puede notar que tiene la forma localhost:n.n, esta permite se redirigir al display del cliente la salida resultante de ejecutar cualquier aplicacin grfica.

scp: El comando scp permite copiar archivos entre dos computadores. Se utiliza SSH para la transmisin de la informacin, por lo que ofrece la misma seguridad que el ssh. De la misma manera utiliza los mtodos de autenticacin de ssh. Este comando reemplaza al rcp, ftp. Este es un ejemplo de uso del scp para copiar desde el computador local a uno remoto:

Tambin se puede copiar archivos entre dos computadores remotos:

A continuacin se muestran los dos archivos en la mquina 192.168.0.2

La sintaxis del comando es:

La sintaxis para especificar el origen o destino de los archivos tiene la forma [[user@]host:]file donde: user: es el usuario del computador. Si no se especifica es el actual. host: es el computador origen o destino del archivo. Si no se informa es el computador local. file: archivo o directorio a copiar. Por defecto es el directorio HOME del usuario. En caso de ser un directorio se debe especificar la opcin -r

sftp: El comando sftp transfiere archivos entre computadores de forma interactiva. Los comandos interactivos son similares al clsico ftp:

Un ejemplo de uso (copiamos el archivo /tmp/copia2.rpm del servidor):

Paso 6. Existen clientes SSH para el sistema Windows, por ejemplo Putty o SecureCRT. Obtngalos de Internet e instlelos en su computador bajo el sistema operativo Windows. Ejecute algunos ejemplos donde se observen los comandos mencionados en este documento.

El cliente SSH que se descarg e instal es Core-FTP. A continuacin se muestra el proceso de instalacin.

Una vez instalado el software, iniciamos el programa.

Una vez que ingresamos al programa nos aparece la siguiente ventana en donde debemos poner los datos del servidor SSH que configuramos a lo largo de la prctica.

Se hace click en Connect y se inicia la conexin con el servidor; despus de aquello se nos presenta el directorio del servidor (derecha) y del computador de Windows (carpeta c:\ a la izquierda), como se muestra a continuacin.

Para realizar la transferencia desde el servidor hacia el cliente (Windows Vista) hacemos click derecho sobre el archivo a descargar (archivo.rpm en el caso de la prctica) y escogemos Download; en seguida se descarga el archivo hacia la carpeta que se indique en la parte izquierda (E:\UNIVERSIDAD\4 AO\REDES DE COMPUTADORES I\TRABAJOS, TAREAS Y PRCTICAS\ en el caso de la prctica). El proceso se muestra a continuacin.

Se puede ver el archivo transferido, a la izquierda en la carpeta de Windows.

De una manera similar para transferir un archivo al servidor SSH, hacemos click derecho sobre el archivo a transferir y escogemos Upload. El archivo se transferir al servidor, mostrndose el mismo a la derecha, en el directorio. El proceso se muestra a continuacin.

INVESTIGACIN 1. El uso de ssh-agent para la gestin de claves ssh-agent es un demonio (al contrario que ssh) que tiene el objetivo de cachear las claves privadas. Ssh se puede comunicar con ssh-agent para obtener las contraseas de las claves privadas, de tal forma que no se deba pedir una contrasea cada vez que se acceda al servidor. Al ejecutar ssh-agent se crean unas variables de entorno (lo ideal, por tanto, es ejecutarlo en el .bash_profile correspondiente). Para aadir una clave privada a ssh-agent utilizamos el comando ssh-add, de la siguiente forma: ssh-add /home/psuau/.ssh/identity (o el correspondiente archivo de clave privada). Sin embargo, ssh-agent tiene dos problemas principales:

Al introducirlo en .bash_profile se ejecutar un ssh-agent por cada login, lo cual puede sobrecargar el sistema. No es adecuado para tareas de cron, ya que el proceso cron no hederar las variables de entorno creadas por ssh-agent.

La idea principal es que al inicio de una [[Entorno de escritorio|Xsession] se ejecute el comando ssh-agent y que el resto de las aplicaciones sean creadas como clientes de dicho daemon. De este modo, si alguna de las aplicaciones necesita autenticarse lo har a travs del agente, liberando al usuario de dicha tarea. Para que las aplicaciones sean capaces de ubicar al agente se utilizan variables de entorno: SSH_AUTH_SOCK y SSH_AGENT_PID. La primera variable de entorno contiene la ruta del socket creado por el agente que veremos ms adelante. La segunda variable contiene el Process ID del agente. Al iniciar el agente, ste crea un socket unix que permite que las aplicaciones se conecten con l. El mismo solo es accesible para el usuario que lo cre, a excepcin obviamente del usuario root. Por

defecto el socket es creado en /tmp/ssh-XXXXXXXX/agent.<ppid>, y es eliminado automticamente cuando el agente termina. El agente puede opcionalmente recibir un comando por parmetro, en cuyo caso, dicho comando es ejecutado como un subproceso del agente. Cuando el comando termine su ejecucin, el agente tambin lo har. El agente es iniciado como sigue: ssh-agent ~/.xinitrc donde .xinitrc es el script de inicio de sesin (KDE). Para detenerlo, basta con correr ssh-agent -k Registro de certificados Inicialmente el agente no contiene ningn certificado, los cules pueden agregarse mediante el comando ssh-add. Para listar todos los certificados que el agente tiene asignadas, basta ejecutar: ssh-agent -l (OpenSSH: ssh-add -l) La idea es que el agente se ejecute localmente. Esto permite que los datos de autenticacin (certificados privados) no necesiten estar almacenados remotamente. A su vez, las passphrases nunca son transmitidas a travs de la red. Como el agente no transmite claves privadas, el host remoto enva "desafos" que necesitan de la clave privada para ser resueltos, y son devueltos a quien lo solicit. 2. Ejecucin de comandos en modo no interactivo La autenticacin mediante claves se puede utilizar para ejecutar comandos sobre equipos remotos desde el cron. Es recomendable que este tipo de comandos se realicen desde un usuario destinado slo a estas tareas. Para se utilizar el campo de opciones $HOME/.ssh/authorized_keys2. para la clave pblica en el fichero

La clave pblica tiene los siguientes campos, separados por espacios:


opciones tipo de clave clave codificada en base64

[usuario1@localhost usuario1]$ cat .ssh/id_dsa.pub ssh-dss AAAAB3NzaC1kc3MAAACBAJRsicUj2jLS69TYC/wbzyTalmRcT3MuMmmQWq09hCupSMeNGc7Fi gvjLFjXD5J+9EJHJOrM6SMADQhn2humsSsoKgyvmffWDPOzjoNBEu3s5eYvcWGjgFkY6wPMG8 FdIJiL3rLKgCLAFQXd+js4S1R5661dR9YgumLmLp+twlRjAAAAFQCyq4J3iqSOHIAERfSkgdL nR706LQAAAIBEwic1s8RDrvDWg9AzyWOpcNOSp65Aw3ihrmEAklX/uwXmEzfvROWauYFHgqUq lhb+rls9kTU7gMkZMbMi40hJNXt4wb+B+iUNTpOcx0PVXzMRLb+ab3g85ZrzIP9ksRzkie4t3 GQGX/l+JH+qNEZdWPkJlqsKyMblPzUpWlQLOAAAAIA9OAOll7kAxWtLoIm7b2ToTzhuP2s3Pv 9FQujEkWPbCh7wu+cjtKqKEVLbx27dkk6tiQbDItNuTaMEn3TCBsRhsQMJiiVjDdNjhTO/mkg

18/Xb9azeYWwcUzw4O1odzZVU45Ar9AAR94td3kME6VOquefLJW1CgS4NdzXSMHyJwA== usuario1@localhost.localdomain

Las opciones irn separadas por comas, algunas de las aceptadas son:

from: permite especificar una lista de hosts desde los que se permite o no el acceso mediante clave pblica. Es una opcin de seguridad, para evitar dejar el acceso libre desde cualquier host a alguien que haya robado la clave privada. command: indica el comando que se ejecutar cuando se use esta clave, restringe una clave para realizar una operacin determinada. El comando que especifique el usuario en su linea de comandos se ignorar.

La variable de entorno SSH_ORIGINAL_COMMAND contiene el comando que lanza el usuario. Esta variable se puede utilizar para extraer los argumentos de la llamada. no-pty: evita el uso de una tty en la ejecucin del comando

Se utilizar esta funcionalidad para acceder, por ejemplo, a logs de apache en sistemas remotos y procesarlos mediante webalizer. Para ello creamos una entrada en $HOME/.ssh/authorized_keys2 con el siguiente formato:
from="IP_cliente.dominio.es",command="/usr/local/root/bin/cat_access_log" ,no-pty ssh-dss AAAAB3NzaC1kc3MAAACBAKh0En5pRLIzlsYdXeN2DylLPZs7Wg5oGQTsfrksIskTAVm0i2ai9 CovnTIgbKOos86y9PQ+ZaVl8mY2Nwt5XHcpuN9OwcI59+uImNm+DSjhrPWh6EKiPwLr75AYLG phy/5junW5zdv0cDYUp6ooIXDinjzwlx8lJwoy0QghQ0p5AAAAFQDuDgk1Ua0xLruNWP6QYML G2mucSQAAAIEApGZ41rpip1k1XxKUiZtWF3K5Wn6aGMAPnp/xpHgEVNI1DKtA+rriKtiWNenV pXGAubk9FQXC+6npf/JwGZMByYXrktoZHmn3lAjea1He4hDhlsZpB5rQ8RKZRX8LFi+hU3bhe lLacrHMXQNZp2vlJRwx2cmMPggH9Y+GoVeo2B0AAACAPQ/XXYm3nzJGLqFR54e8uEWj2BQ1JW c7lBQDlbkjh5HPveHpMUCW4v9EomZxe6VxfhvNJgGUCs+moLr/odvzsiHS81rLq7+nyOGPf43 sBS0ANtMZnAROIo6l1LZjqSi2iMIdRdAJWIMtdCFJ3HOZHbyaXQEsBCA6zJGRTOWY/Qs= saltador@cliente.dominio.es

en ella se especifica que al utilizar esta clave, asociada al usuario saltador de la mquina cliente slo desde esta mquina, se ejecute el comando /usr/local/root/bin/cat_access_log sin reservar una tty. El script asociado al comando ejecuta las siguientes acciones:
#!/bin/bash if [ ! -z "${SSH_ORIGINAL_COMMAND}" ] then host=$(echo ${SSH_ORIGINAL_COMMAND}|awk '{print $2}') else if [ $# -lt 1 ] then echo "Usage: $(basename $0) host" exit 1 else host=$1 fi fi LOGDIR=/var/log/httpd DATA=$(date --date="1 month ago" +%Y%m)

ACCESS=${LOGDIR}/${host}/${DATA}-access_log if [ -f ${ACCESS} ] then cat ${ACCESS} fi

Este permite consultar el ltimo access_log de servidor web, haciendo uso de la variable SSH_ORIGINAL_COMMAND que da acceso a los parmetros originales. Ahora slo nos queda configurar el script que se ejecutar desde el cron en la mquina cliente.
#!/bin/bash COMMAND="/usr/local/root/bin/cat_access_log" SERVER=virtualhost ssh saltador@servidor.dominio.es "${COMMAND} ${SERVER}" | webalizer \ \

En este script se ejecuta el comando especificado con el parmetro sobre la mquina remota. La salida del comando la recoge el programa webalizer que, en la mquina local, procesar el log del servidor web. 3. Con los clientes SSH para el sistema Windows Putty o SecureCRT haga un anlisis de cada uno y genere un cuadro con las ventajas y desventajas. PuTTY Es un cliente Telnet y SSH gratuito para plataformas Windows que permite conectarse a un servidor remoto desde un PC conectado a Internet. Posee muchas opciones de configuracin, es as que podemos configurarlo de tal modo que nos permita una conexin a cualquier tipo de servidor. Adems, no se necesita su instalacin porque slo se necesita el ejecutable. SecureCRT Este programa protege contraseas, cuentas de usuario, y datos, combinando la emulacin terminal roca-slida con el cifrado fuerte, amplias opciones de la autentificacin, y la integridad de datos del protocolo seguro de la cscara (SSH). SecureCRT proporciona las soluciones verstiles para una amplia gama de negocio: de la direccin de la red, seguridad de la informacin, y de las tareas del desarrollo, de usos host-based que tienen acceso y los servidores. Otras caractersticas incluyen la utilidad de la bandeja del activador para reducir al mnimo alboroto de escritorio, la conexin auto, la impresin, el modo de Emacs, y PEGAN la ayuda del cortafuego. SecureCRT apoya SSH1, SSH2, telnet, RLogin, cuento por entregas, y los protocolos y autentificacin de TAPI va contrasea, pu\'blico-llave, y Kerberos v5 va GSSAPI. Las cifras incluyen AES, 3DES, RC4, el blowfish, y Twofish. La ayuda scripting de ActiveX le ahorra tiempo valioso automatizando tareas rutinarias de la configuracin. Las transferencias de archivo seguras se pueden realizar usando la comando-li\'nea usos o zmodem de VCP o de VSFTP dentro de

SecureCRT. El programa incluido de VSH le deja hacer las conexiones SSH2 de la lnea de comando. Comparacin SecureCRT Requisito: Win95, 98, 98SE, Me, 2000, NT, XP Tamao: 7,3 MB Licencia: Hay que pagar por la licencia PuTTY Requisito: Win95, 98, 98SE, Me, 2000, NT, XP Tamao: 444 KB Licencia: Gratis (GPL) NOTA: Puede revisar el sitio http://www.openssh.com/manual.html para obtener informacin de la ayuda del servicio. REFERENCIAS Pgina para descargar paquetes http://rpmfind.net/ ssh-agent http://www.alu.ua.es/p/psp4/Documentacion/Octubre_2001/ssh.html http://quark.fe.up.pt/laespiral/recetas/1-100/receta66.html http://es.wikibooks.org/wiki/SSH-Agent Ejecucin de comandos en modo no interactivo http://www3.uji.es/~galdu/ssh_vs_rsh/x343.html Clientes SSH Para Windows http://www.webadictos.com.mx/2008/01/22/clientes-ssh-para-windows/ Comparacin entre PuTTY y SecureCRT http://putty-portable.softonic.com/comparar/putty,winscp,securecrt