Secure Shell Introducción - UNAM-CERT

Anuncio
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
Descargar