Secure Shell Herramieta para acceso remoto seguro en entornos unix y windows, proporciona un canal cifrado para evitar ataques de robo de password en claro • Introducción • ¿Qué es Secure Shell? • ¿De qué Previene Secure Shell? • Protocolos de Secure Shell • ¿Dónde obtener el Secure Shell? • Instalación de Secure Shell cliente/servidor para Unix • Instalación de OpenSSH • Zlib • OpenSSL • OpenSSH • Clientes de Secure Shell • Instalación de Secure Shell cliente para Windows 32 bits • Windows 95/98/ME • Windows NT • Windows 2000 • Secure Shell Tera Term Pro v2.3 (Ambiente Gráfico, protocolo SSH1) • Secure Shell y Secure File Transfer v2.4 (Ambiente Gráfico, protocolo SSH2) • Usando SSH • Sesión entre máquinas en UNIX • Ejemplos • Transferencia de archivos • Uso de .shosts en Secure Shell 1 • Accesos de Mecanismos de Confianza • Referencias • Revisión histórica Introducción Actualmente las Redes de Computadoras son los medios digitales más usados en todos los ámbitos de la sociedad para la transferencia de información. Normalmente se les encuentran en redes públicas, por lo cual están expuestas a intervenciones de una u otra forma. Cuando se realiza una conexión a un servidor remoto usando por ejemplo el comando telneto ftp, el login(usuario)y password(contraseña)son transmitidos en la red de forma clara, lo cual representa un gran riesgo en caso de exisitir un programa basado en el modo promiscuo de las redes ethernet (comúnmente llamado sniffer),para capturar información, esto expone al login y al passwordy hace posible posteriores irrupciones en el servidor. Este tipo de comunicación en claro se muestra en la siguiente ilustración: Este tipo de problemáticas ha llevado al diseño de herramientas que permitan evitar estas situaciones, una de ellas es Secure Shell (ssh), desarrollado por Tatu Ylonenen la Universidad Tecnológica de Helsinki, Finlandia y OpenSSH, que nace del proyecto de un sistema operativo orientado con la filosofía de la seguridad en mente como lo es OpenBSD. Secure Shelly OpenSSHpermiten realizar la comunicación y transferencia de información de forma cifrada proporcionando fuerte autenticación sobre el medio inseguro. Este tipo de conexión se muestra en la siguiente ilustración: ¿Qué es Secure Shell? Secure Shell(SSH) es un programa que permite realizar conexiones entre máquinas a través de una red abierta de forma segura, así como ejecutar programas en una máquina remota y copiar archivos de un equipo a otro. Tal y como se explica en el RFC (Request for comment) de Secure Shell: "SSH es un programa para conectarse a otros equipos a través de una red, para ejecutar comandos en una máquina remota y para mover archivos de una máquina a otra. Proporciona una exhaustiva autenticación y comunicaciones seguras en redes no seguras" SSH provee fuerte autenticación y comunicación segura sobre un canal inseguro y nace como un reemplazo a los comandos telnet, ftp, rlogin, rsh, y rcp, los cuales proporcionan gran flexibilidad en la administración de una red, pero sin embargo, presenta grandes riesgos en la seguridad de un sistema. Adicionalmente, SSHprovee seguridad para conexiones de servicios X Windowsy envío seguro de conexiones arbitrarias TCP. Secure Shell admite varios algoritmos de cifrado entre los cuales se incluyen: • Blowfish • 3DES • IDEA • RSA La ventaja más significativa de SSH es que no modifica mucho las rutinas. En todos los aspectos, iniciar una sesión de SSH es tan sencillo como ( e incluso similar a) iniciar una sesión de telnet. Tanto el intercambio de llaves, la autenticación y el posterior cifrado de sesiones son transparentes para los usuarios. ¿De qué Previene Secure Shell? Debido a la promiscuidad de la interfaz ethernet, se genera una problemática sobre los siguientes servicios de red usados en la actualidad, como son: • telnet • ftp • http • rsh • rlogin • rexec Ello representa un problema importante, ya que, incluso en un entorno cerrado de red , debe existir como mínimo un medio seguro para poder desplazar archivos, hacer copia de archivos, establecer permisos, ejecutar archivos, scrips, etc., a través de medios seguros. Por ello, para evitar que determinadas personas capturen el tráfico diario de la red, es conveniente instalar el Secure Shell(SSH). Entre los ataques más comunes que previene Secure Shell están: • Sniffering(Captura de trafico) • IP Spoofing • MACpoofing • DNS Spoofing • Telnet Hickjacking • ARP Spoofing • ARP Spoofing • IP Routing Spoofing • ICMP Spoofing Protocolos de Secure Shell Existen actualmente dos protocolos desarrollados sobre SSH: • SSH1: La última versión de SSH cliente/servidor para Unix que soporta este protocolo es la 1.2.31, ésta puede ser utilizada libremente para propósitos no comerciales y es ampliamente usada en ambientes académicos. • SSH2: Provee licencias más estrictas que SSH1 ya que es de carácter comercial. La última versión de SSH cliente/servidor para Unix con este protocolo es la 2.4.0 y se puede utilizar libremente respetando la licencia expresa. Actualmente existe un proyecto llamado OpenSSH, el cual fue desarrollado inicialmente dentro del proyecto OpenBSD. OpenSSHes una versión libre de los protocolos SSH/SecSHbajo licencia BSD y es totalmente compatible con los protocolos SSH1y SSH2. La última versión de OpenSSH cliente/servidorpara Unix es la 2.3.0P1 (Liberada el 6 de Noviembre del 2000). Debido a que OpenSSH rompe la barrera de los protocolos, ha causado confusión entre diversos sectores, al ser muy usada en la comunidad, tal es el caso de distribuciones como Linux RedHat 7.0 que ya la incluye dentro de su sistema operativo. Sin embargo OpenSSH ha demostrado en los últimos meses cierta inestabilidad, por lo que sí se instala dicha versión es altamente recomendable actualizar periódicamente el OpenSSH y estar al pendiente de vulnerabilidades presentadas. ¿Dónde obtener el Secure Shell? 5.1.Secure Shell cliente/servidor para sistemas Unix Sitio FTP de Secure Shell http://ftp.ssh.com/pub/ssh Departamento de Seguridad en Cómputo ftp://ftp.seguridad.unam.mx/Herramientas/Unix/Comunicacion 5.2 OpenSSH Cliente/Servidor para sistemas Unix Sitio FTP de OpenSSH http://www.openssh.com/ftp.html Departamento de Seguridad en Cómputo ftp://ftp.seguridad.unam.mx/Herramientas/Unix/Comunicacion 5.3 Secure Shell cliente para sistemas Windows Sitio FTP de Secure Shell (Solo para clientes con protocolo SSH2) http://ftp.ssh.com/pub/ssh Departamento de Seguridad en Cómputo ftp://ftp.seguridad.unam.mx/Herramientas/Windows/Comunicacion 5.4 Secure Shell cliente para sistemas Mac Departamento de Seguridad en Cómputo ftp://ftp.seguridad.unam.mx/Herramientas/Mac/Comunicacion/Ssh1 Instalación de Secure Shell cliente/servidor para Unix Desafortunadamente los protocolos de Secure Shell(SSH1 y SSH2) no son compatibles uno con otro, por lo tanto, sí se desea que exista compatibilidad es necesario instalar primero Secure Shell protocolo SSH1y posteriormente Secure Shell protocolo SSH2. Otra opción para mantener la compatibilidad con los dos protocolos sin problema alguno es instalar OpenSSH. Secure Shellcon protocolo SSH1y SSH2puede instalarse exactamente tal como se muestra a continuación: Después de obtener el programa de Secure Shell(SSH1 o SSH2) se procede a desempacarlo: $ gunzip ssh-x.x.x.tar.gz $ tar -xvf ssh-x.x.x.tar En este punto se obtendrá un directorio ssh-x.x.xsobre la ruta donde fue desempacado. A continuación se citan los pasos necesarios para configurar y compilar Secure Shell, los cuales pueden realizarse sin ser root. a)Configuración del entorno de compilación. A diferencia de otras herramientas, SSHsshno requiere editar el archivoMakefile, la configuración la realizamos a través de los parámetros que le pasemos al script llamado configure. Dentro del directorio ssh-x.x.xse encuentra el script llamado configure, el cual tiene los siguientes argumentos válidos: --prefix=PREFIX Donde se instalarán los binarios por default /usr/local. Donde se instalarán los ejecutables por default es el mismo que la --exec_prefix=PREFIX variable --prefix. --with-rsh=PATH Permitirá comandos rsh utilizando la estructura de ssh. --without-idea No incluir IDEA --with-tis=PATH Soporte a mecanismo de autenticación Tis authsrv. Ruta sobre la que obtendrá información sobre el sistema por default --with-etcdir=PATH /etc. --with-libwrap=[PATH] Usa libwrap (tcp_wrappers) y inetd. --with-socks4[=PATH] Incluye soporte para SOCKS (Cruce de firewall). --with-socks5[=PATH] Incluye soporte para SOCKS5. --enable-warnigs Habilita la bandera -Wall al compilador gcc. Sí nuestra intención es lograr que tcp-wrapperlleve un control sobre los accesos realizados conssh, se necesitará la bandera --with-libwrap, además, sí se pretende realizar una autenticación de la máquina para ejecutar comandos rsh, se requiere entonces la bandera --with-rsh. Entonces ejecutamos el script tomando en cuenta que tenemos instalado TCP-Wrappersy con soporte para el uso de comandos rsh: $ ./configure --with-libwrap=/path/libwrap.a --with-rsh=/path/rsh. Esto genera los cambios necesarios en los archivos de código fuente para su correcta compilación. Para obtener la ruta del comando rshutilizar el comando whereis. b)Compilar los binarios de Secure Shell (se requiere el compilados GCC). Para ello basta ejecutar: $ make Nota importante:Para poder ejecutar la instalación es necesario estar dentro de la cuenta de root. c)Instalación de Secure Shellen el sistema y obtener las llaves del host. $ make install Los archivos de configuración de Secure Shell(ssh_host_keyy sshd_config) quedan localizados en el directorio "/etc", los programas clientes (sshy scp) quedan en "/usr/local/bin". Finalmente el programa servidor o demonio de Secure Shell (sshd)queda localizado en "/usr/local/sbin". d)Ya que se realizó la instalación en el equipo procedemos a configurar el sistema para poder ejecutar el demonio del servidor de SSH y permitir accesos por el puerto por default de Secure Shell (port 22). • Editar el archivo /etc/inetd.conf e incluir la siguiente línea: (Si no tiene habilitado TCP-Wrapper) ssh tcp root nowait (Si se usa TCP-Wrapper) ssh tcp root nowait /usr/local/sbin/sshd /usr/local/sbin/sshd -i /usr/local/etc/tcpd /usr/local/sbin/sshd -i • Editar el archivo /etc/services y habilitar el puerto para Secure Shell usando la siguiente línea: ... ssh 22/tcp Secure Shell ssh ... 22/udp Secure Shell • Por último reiniciar el demonio de inetd. Obtener el número de procesodel demonio inetd. $ ps -fea | grep inetd Enviar la señal HUP al proceso del inetd. $ kill -HUP procesid En este punto el sistema debe responder a las peticiones de conexión por Secure Shell. Instalación de OpenSSH El proyecto OpenSSH incluye al programa SSH. E incluye el archivo sshd que es el demonio que controla del lado del servidor las peticiones realizadas, así como otras funciones básicas del Secure Shell como ssh-add, ssh-agent y ssh-keygen. Openssh hoy en día soporta ambos protocolos de comunicación segura como lo son los protocolos 1.3, 1.5 y 2.0. Debido a que OpenSSH es desarrollado fuera de los Estados Unidos, usa código de diversos países por lo tanto su uso es libre y sin restricciones bajo la licencia del tipo BSD. Hoy en día OpenSSH corre en diversas plataformas entre las cuales destacan: • OpenBSD • Linux • Solaris • AIX • IRIX • HP/UX • FreeBSD • NetBSD Para poder configurar de manera apropiada el OpenSSH se deben cumplir con tres prerrequisitos básicos para una óptima configuración. 1. Instalación de Zlib 2. Instalación de OpenSSL 3. Instalación de OpenSSH Zlib Zlib es un conjunto de librerías necesarias para el funcionamiento de SSH incluyendo a OpenSSH Zlib se puede obtener de : http://www.freesoftware.com/pub/infozip/zlib/ Departamento de Seguridad en Cómputo ftp://ftp.seguridad.unam.mx/Herramientas/Unix/Comunicación/Openssh/ Una vez obtenido el software Zlib es necesario proceder a la instalación. 7.1.1. Instalación de Zlib Zlib se configura y se instala casi en todas las plataformas sin problema alguno, y para realizarlo se deben seguir estos pasos: Después de obtener el programa de Zlibprocedemos a desempacarlo: $ gunzip zlib.tar.gz $ tar -xvf zlib.tar En este punto obtendremos un directorio zlib-x.x.xsobre la ruta donde desempacamos. a)Configuración del entorno de compilación. Dentro del directorio zlib-x.x.x se encuentra el script llamado configure, el cual se indicará para que automáticamente detecte la configuración y plataforma del sistema. % ./configure b) Compilación de Zlib Paso siguiente, realice la compilación de las librerías de Zlib simplemente tecleando make. % make c)Instalación de Zlib Si no se presentó problema alguno, el paso subsecuente es, una vez como superusuario teclear la sentencia apropiada para la instalación de las librerías. # make install Si todo funcionó perfecto se procede a la instalación del software OpenSSL, descrito a continuación. OpenSSL OpenSSL se puede encontrar en: http://www.openssl.org/ Departamento de Seguridad en Cómputo ftp://ftp.seguridad.unam.mx/Herramientas/Unix/Comunicación/Openssh/ 7.2.1. Instalación de OpenSSL La última versión disponible del OpenSSLes la Versión 0.9.6. OpenSSL se configura y se instala casi en todas las plataformas sin problema alguno, y para poderlo implementar se deben aplicar los siguientes pasos: Después de obtener el programa de OpenSSLse procede a desempacarlo: $ gunzip openssl-0.9.6.tar.gz $ tar -xvf openssl.0.9.6.tar En este punto se obtiene un directorio openssl-0.9.6 sobre la ruta donde fue desempacado. a)Configuración del entorno de compilación. Dentro del directorio openssl-0.9.6se encuentra el script llamado config, el cual automáticamente nos detectará la configuración y plataforma de nuestro sistema, si se diera el caso de no saber con qué plataforma compilarlo. % ./config b)Configuración de acuerdo a la plataforma Una vez detectada la plataforma del sistema, se prosigue a la configuración global de la herramienta, bastará con solo teclear lo siguiente: % ./Configure PLATAFORMA Donde Plataforma es la plataforma que config, previamente había detectado. Por ejemplo si Config detectó lo siguiente: % > ./config Configuring for solaris-sparc-gcc Significa que la plataforma a configurar es solaris-sparc-gcc, por lo que se teclearía lo siguiente: % ./Configure solaris-sparc-gcc c)Compilación de OpenSSL Siguiente paso, realizar la compilación de las librerías de OpenSSL simplemente tecleando make % make d)Instalación de OpenSSL Si no se presentó problema alguno, el paso consiguiente es como superusuario teclear la sentencia apropiada para la instalación de las librerías. # make install Si todo funcionó perfecto se procede a instalar el software OpenSSH, descrito a continuación. OpenSSH Una vez realizados los pasos 7.1 y 7.2 y si la compilación no presentó problema alguno, es ahora necesario instalar OpenSSH. La última versión disponible del OpenSSH es la Versión 2.3.0.P1 (Liberada en Noviembre del 2000). OpenSSHse puede obtener de: http://www.openssh.com Departamento de Seguridad en Cómputo ftp://ftp.seguridad.unam.mx/Herramientas/Unix/Comunicación/Openssh/ Una vez obtenido el software OpenSSH es necesario proceder a la instalación. 7.3.1 Instalación de OpenSSH OpenSSH se configura y se instala casi en todas las plataformas sin problema alguno, y para poderlo implementar se deben aplicar los siguientes pasos: Después de obtener el programa de OpenSSHprocedemos a desempacarlo: $ gunzip openssh-x.x.x.tar.gz $ tar -xvf openssh-x.x.x.tar En este punto se logrará un directorio openssh-x.x.xsobre la ruta donde se desempaquetó. a)Configuración del entorno de compilación. Dentro del directorio openssh-x.x.xse encuentra el script llamado configure, al cual se indicará para que automáticamente detecte la configuración y plataforma del sistema. % ./configure b)Compilación de OpenSSH Lo siguiente es realizar la compilación de las librerías de OpenSSHsimplemente tecleando make. % make c)Instalación de OpenSSH Si no se presentó algún problema, el paso siguiente es como superusuario teclear la sentencia apropiada para la instalación de las librerías. # make install Si todo funcionó perfectamente, se tendrá en el sistema instalado el OpenSSHfuncionando y trabajando de forma apropiada. Para comprobar la existencia de éste bastará sólo con teclear la sentencia: 6 % > ssh -V SSH Version OpenSSH_2.3.0p1, protocol versions 1.5/2.0. Compiled with SSL (0x0090600f). Lo cual indica que el OpenSSH está listo en el sistema aceptando los protocolos 1.5 y 2.0 Clientes de Secure Shell La necesidad de realizar transferencias de información de forma segura entre servidores Unix y clientes Windows y Mac ha propiciado el desarrollo de programas clientes de Secure Shell para diversas plataformas, entre las cuales se encuentra Windows 95/98/ME/NT/2000, MAC, etc. Instalación de Secure Shell cliente para Windows 32 bits 8.1.1. Secure Shell y Secure Copy v1.0.14 (Modo de Comandos, protocolo SSH1) Después de haber obtenido el programa de Secure Shell (ssh32-014.zip) del sitio del Departamento de Seguridad en Cómputo se deben realizar los pasos siguientes. a)Descomprimir el programa usando WinZip o unzip en cualquier directorio temporal. b)Copiar las librerías (*.dll) al directorio correspondiente en Windows. En Windows 95/98/MEcopiarlos al directorioC:\WINDOWS\SYSTEM". Sí usa Windows NT/2000deben de copiarse al directorio "C:\WINNT\SYSTEM32". c)Copiar los programas (*.exe) al directorio donde está instalado Windows(C:\WINDOWS o C:\WINNT). d)Utilizando la interfaz de Comandos(MS-DOS o Command Prompt) debe crear un directorio llamado .ssh. C:\mkdir path-del-usuario\.ssh e)Configuración de la variable de entorno. Windows 95/98/ME Editar el archivo autoexec.bat y agregar la siguiente variable. set HOME=C:\path-del-usuario IMPORTANTE:"Reiniciar el sistema" Windows NT Dentro del Panel de Control, seleccionar Sistema y pasar a la carpeta Entorno para agregar la siguiente variable. Variable: HOME Valor: C:\path-del-usuarios Seleccionar Establecer y Aceptar. Windows 2000 Dentro de las propiedades del icono My Computerque se encuentra localizado en el Escritorio, pase a la carpeta Advancey dé un click en Environment Variables. Dentro deEnvironment Variablesagregamos una nueva variable en el panel User variables for ???. Variable: HOME Valor: C:\path-del-usuarios Seleccionar OK. f) Finalmente, utilizando la interfaz de Comandos (MS-DOS o Command Prompt) ejecute el siguiente comando para generar la llave de intercambio. C:\ssh-keygen.exe C:\>ssh-keygen Initializing random number generator... Generating p: ...........++ (distance 144) Generating q: ....................++ (distance 292) Computing the keys... Testing the keys... Key generation complete. Enter file in which to save the key ($HOME/.ssh/identity): <ENTER> Enter passphrase (empty for no passphrase): <Esta es mi frase> Enter same passphrase again:<Esta es mi frase> A partir de este momento ya se puede utilizar el cliente de Secure Shell y Secure Copy protocolo SSH1 en modo de comandos desde la Interfaz de Comandos(MS-DOS o Command Prompt). Secure Shell Tera Term Pro v2.3 (Ambiente Gráfico, protocolo SSH1) Después de haber obtenido el programa de Secure Shell(sshTeraterm.zip) del sitio del Departamento de Seguridad en Cómputo se debe realizar lo siguiente. a)Descomprimir el programa usando WinZip o unzip en cualquier directorio temporal. b) Ejecute el programa Ttermp23.exe, el cual descomprime en un directorio temporal los archivos para instalar Tera Term Pro. De los archivos descomprimidos se ejecuta el programa llamado setup.exe, seleccione el idioma y la ubicación donde será instalado el programa (Normalmente C:\ARCHIVOS DE PROGRAMA\ TTERMPRO). c)Ahora seleccione el archivo Ttssh151.zipy descomprímalo utilizando WinZipo unzipdentro del directorio donde se instaló Tera Term Pro (C:\ARCHIVOS DE PROGRAMA\TTERMPRO). WinZippreguntará sí se desean remplazar archivos existentes, responda sí a todos los archivos. d)Finalmente, cree un acceso directo desde el Escritorioal programa Secure Shell Tera Term Pro (C:\ARCHIVOS DE PROGRAMA\TTERMPRO\ttssh.exe). De esta manera ya puede utilizar el programa cliente de Secure Shell con una interfaz gráfica agradable. Secure Shell y Secure File Transfer v2.4 (Ambiente Gráfico, protocolo SSH2) Después de haber obtenido el programa deSecure Shell(SSHWin-2.4.0.exe) del sitio de Secure Shell o de sitio del Departamento de Seguridad en Cómputo realice los siguientes pasos. a)Ejecutar el programa de instalación de Secure Shellcliente protocolo SSH2 (SSHWin-2.4.0.exe). Después de aceptar la licencia de uso, indicar el directorio donde será instalado, el fólder donde se almacenarán las herramientas y finalmente los componentes que desean instalarse. Este cliente de Secure Shell le permitirá conectarse a sistemas remotos con Secure Shell protocolo SSH2 y también realizar transferencias de archivos de forma gráfica. Usando SSH Sesión entre máquinas en UNIX SSH permite mantener sesiones interactivas con una máquina remota de la forma como lo hace el comando telnet. ssh [-a] [-c idea|blowfish|des|3des|arcfour|none] [-e esc] [-i identity_file] [-l login_name] [-n] [-k] [-V] [-o] [-p port] [-q] [-P] [-t] [-v] [-x] [-X] [-C] [-g] [-L port:host:hostport] [-R port:host:hostport] hostname [command] A continuación se describen brevemente las principales opciones del comando SSH. -a -c idea|des|3des|... -e -i identity-file -l login-name -p port -q -v -x -C Deshabilita el agente de autenticación Selecciona el algoritmo de cifrado utilizado para encriptar la sesión. Habilita el carácter de escape para una determinada sesión (default:~). Selecciona el archivo donde leerán la llave de autenticación. Por default utiliza .ssh/identity dentro del home del usuario. Especifica la cuenta remota por medio de la cual se desea tener acceso. Puerto remoto de conexión. Causa que todas las advertencias y mensajes de diagnostico sean suprimidos, sólo los mensajes de errores fatales son desplegados. Causa que SSH despliegue mensajes de depuración acerca del proceso de conexión. Deshabilita el reenvío (forwarding) de X11. Compresión de todos los datos transmitidos durante la conexión Ejemplos $ ssh -l micuenta maquina.remota En este ejemplo se utiliza la opción -l para proporcionar el logincon el que se tendrá acceso a la máquina remota. En este caso la cuenta es micuentay la máquina es maquina.remota. $ ssh [email protected] También puede usarse el formato descrito arriba para entrar a una cuenta dentro de una máquina remota. $ ssh maquina.remota En caso de poseer el mismo nombre de cuenta en ambas máquinas (local y remota), es posible acceder a la máquina remota proporcionando solamente el nombre de ésta. Transferencia de archivos Secure Shell proporciona una herramienta que permite realizar transferencia de archivos entre distintos hosts, haciendo uso de las características de ssh, este comando es scp, el cual cuenta con las siguientes opciones: scp [-aAqrvBCL1] [-S path-to-ssh] [-o ssh-options] [-P port] [-c cipher] [-i identity] [[user@]host1:]filename1,... [[user@]host2:]filename2 -a -A -c cipher Habilita la estadística de transferencia de cada archivo que se transfiere. Deshabilita el mensaje de estadística de transferencia. Selecciona el algoritmo de cifrado a utilizar en la transferencia de datos. -i identity Selecciona el archivo donde se tendrá acceso a la llave RSA. -L Uso de puerto no privilegiado. Esta opción posee algunas restricciones como son la imposibilidad de usar rhosts o autenticación rsarhosts. -1 Forzar a scp a usar el comando scp1 por parte de host remoto, Esto puede ser necesario en el caso que el host remoto utilice scp2. -o ssh-options Opciones que se pasarán al ssh. -p Preserva las distintas fechas y horas de acceso, modificación y atributos del archivo original. -q -r Deshabilita el despliegue de estadísticas de transferencia. Copia recursiva de directorios completos. -v Causa que scp y ssh desplieguen mensajes de estado relacionados con el proceso de conexión, etc. Adecuado para depurar errores existentes en las conexiones realizadas. Ejemplos: $ scp micuenta@máquina.remota:/tmpu/archivo /copias En este caso se copiará /tmpu/archivo localizado en la máquina remota maquina.remota al directorio /copias en la máquina local. Se utilizó la cuenta micuenta para acceder al servidor. $ scp /copias/archivo micuenta@máquina.remota:~/bck En este caso se realizará la copia del archivo /copias/archivo localizado en la máquina local a la máquina remota máquina.remota colocando el archivo en el directorio bck del home de micuenta. Uso de .shosts en Secure Shell 1 Los archivos .shostsal igual que los archivos .rhostspermiten realizar conexiones entre hosts sobre mecanismo de confianza, en el caso de .shostseste mecanismo de confianza se habilita sobre las características que proporciona Secure Shell, por ello, aquellas máquinas en las cuales el uso de .rhosts sea indispensable se sugiere la sustitución de todos los .rhostspor .shosts. Para esto se requiere realizar la siguiente serie de pasos: 1.-En la máquina cliente realizar una conexión hacia la máquina servidor que va a usar .shosts. $ ssh -l cuenta maquina.cliente.de.shosts Esto es para que la máquina a la que se entrará, utilice el mecanismo .shostsy obtenga la llave pública de la máquina cliente. 2.-En la máquina servidor cree sobre el homedel usuario el archivo .shostsconteniendo el nombre de la máquina o la IP cliente. $ more .shots maquina.cliente.de.shosts 3.-Desde la máquina cliente realizamos el enlace. $ ssh -l cuenta maquina.con.shosts NOTA:Este tipo de conexiónno solicitará el password. Esta conexión presenta un riesgo, sin embargo, introduce mecanismos propios de SSH, mayores niveles de seguridad se pueden obtener utilizando el método de llave RSA. 9.4.1. Tips Sí no se lleva a cabo la conexión verifique los permisos del archivo. $ chmod 644 .shosts Accesos de Mecanismos de Confianza Para realizar una conexión segura mediante mecanismos de confianza en SSH2realice lo siguiente: 1.-Generar par de llaves dsamediante el comando ssh-keygen. Cliente> ssh-keygen -d ssh-keygen -d Generating public/private dsa key pair. Enter file in which to save the key (/home/usuario/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/usuario/.ssh/id_dsa. Your public key has been saved in /home/usuario/.ssh/id_dsa.pub. The key fingerprint is: 1a:84:34:9f:d1:97:76:03:c0:c7:be:12:b0:95:1e:37 usuario@Cliente Se generan dos archivitos en el directorio ~/.ssh/. id_dsa.pub(publica) id_dsa (privada) 2.-Exportar id_dsa.pubal servidor, éste realizará la conexión, e incluirá su contenido en el archivo ~/.ssh/authorized_keys2. Servidor>cat id_dsa.pub.Cliente >> ~/.ssh/authorized_keys2 Quedando algo así: Servidor> cat ~/.ssh/authorized_keys2 ssh-rsa mslHXihCHvYNADHKvFPSESKHUpwF0TbpmvMesSGifqhQftn8BOU=usuario@Cliente 3.-Probar la conexión. Cliente> ssh cuenta@Servidor Servidor> Referencias OpenSSH - Keeping your communiqués secret http://www.openssh.com/ Revisión histórica • Liberación original: 14-Nov-2004 • Última revisión: 7 de octubre de 2010 La Subdirección de Seguridad de la Información/UNAM-CERT agradece el apoyo en la elaboración y revisión de este documento a: • Galvy Cruz Valencia • Andrés Leonardo Hernández Bermúdez Para mayor información acerca de éste documento de seguridad contactar a: UNAM-CERT Equipo de Respuesta a Incidentes UNAM Subdirección de Seguridad de la Información Dirección General de Cómputo y de Tecnologías de Información y Comunicación Universidad Naciónal Autónoma de México E-Mail: [email protected] http://www.cert.org.mx http://www.seguridad.unam.mx ftp://ftp.seguridad.unam.mx Tel: 56 22 81 69 Fax: 56 22 80 43