Omitir V�nculos de navegaci�n | |
Salir de la Vista de impresi�n | |
Guía de administración del sistema: servicios de seguridad |
Parte I Descripción general de la seguridad
1. Servicios de seguridad (descripción general)
Parte II Seguridad de sistemas, archivos y dispositivos
2. Gestión de seguridad de equipos (descripción general)
3. Control de acceso a sistemas (tareas)
4. Control de acceso a dispositivos (tareas)
5. Uso de la herramienta básica de creación de informes de auditoría (tareas)
6. Control de acceso a archivos (tareas)
7. Uso de la herramienta automatizada de mejora de la seguridad (tareas)
Parte III Roles, perfiles de derechos y privilegios
8. Uso de roles y privilegios (descripción general)
9. Uso del control de acceso basado en roles (tareas)
10. Control de acceso basado en roles (referencia)
Parte IV Servicios criptográficos
13. Estructura criptográfica de Oracle Solaris (descripción general)
14. Estructura criptográfica de Oracle Solaris (tareas)
15. Estructura de gestión de claves de Oracle Solaris
Parte V Servicios de autenticación y comunicación segura
16. Uso de servicios de autenticación (tareas)
19. Uso de Oracle Solaris Secure Shell (tareas)
Oracle Solaris Secure Shell (descripción general)
Autenticación de Oracle Solaris Secure Shell
Oracle Solaris Secure Shell y el proyecto OpenSSH
Oracle Solaris Secure Shell (mapa de tareas)
Configuración de Oracle Solaris Secure Shell (mapa de tareas)
Configuración de Oracle Solaris Secure Shell (tareas)
Cómo configurar la autenticación basada en host para Secure Shell
Cómo habilitar Secure Shell v1
Cómo configurar el reenvío del puerto en Secure Shell
Uso de Oracle Solaris Secure Shell (mapa de tareas)
Uso de Oracle Solaris Secure Shell (tareas)
Cómo generar un par de clave pública y clave privada para utilizar con Secure Shell
Cómo cambiar la frase de contraseña de una clave privada de Secure Shell
Cómo iniciar sesión en un host remoto con Secure Shell
Cómo reducir indicadores de contraseñas en Secure Shell
Cómo configurar el comando ssh-agent para que se ejecute automáticamente en el CDE
Cómo utilizar el reenvío del puerto en Secure Shell
Cómo copiar archivos con Secure Shell
Cómo configurar conexiones predeterminadas a hosts fuera de un cortafuegos
20. Oracle Solaris Secure Shell (referencia)
21. Introducción al servicio Kerberos
22. Planificación del servicio Kerberos
23. Configuración del servicio Kerberos (tareas)
24. Mensajes de error y resolución de problemas de Kerberos
25. Administración de las políticas y los principales de Kerberos (tareas)
26. Uso de aplicaciones Kerberos (tareas)
27. El servicio Kerberos (referencia)
Parte VII Auditoría de Oracle Solaris
28. Auditoría de Oracle Solaris (descripción general)
29. Planificación de la auditoría de Oracle Solaris
30. Gestión de la auditoría de Oracle Solaris (tareas)
Secure Shell proporciona acceso seguro entre un shell local y un shell remoto. Para obtener más información, consulte las páginas del comando man ssh_config(4) y ssh(1).
Los usuarios deben generar un par de clave pública y clave privada cuando su sitio implementa la autenticación basada en host o la autenticación de clave pública de usuario. Para obtener opciones adicionales, consulte la página del comando man ssh-keygen(1).
Antes de empezar
Consulte al administrador del sistema si se ha configurado la autenticación basada en host.
myLocalHost% ssh-keygen -t rsa Generating public/private rsa key pair. …
donde -t es el tipo de algoritmo, uno de rsa, dsa o rsa1.
De manera predeterminada, el nombre de archivo id_rsa, que representa una clave v2 RSA, aparece entre paréntesis. Puede seleccionar este archivo presionando la tecla de retorno. O puede escribir un nombre de archivo alternativo.
Enter file in which to save the key (/home/jdoe/.ssh/id_rsa):<Press Return>
El nombre de archivo de la clave pública se crea automáticamente adjuntando la cadena .pub al nombre del archivo de clave privada.
Esta frase de contraseña se utiliza para cifrar la clave privada. Se desaconseja el uso de una entrada nula. Tenga en cuenta que la frase de contraseña no se muestra cuando la escribe.
Enter passphrase (empty for no passphrase): <Type passphrase>
Enter same passphrase again: <Type passphrase> Your identification has been saved in /home/jdoe/.ssh/id_rsa. Your public key has been saved in /home/jdoe/.ssh/id_rsa.pub. The key fingerprint is: 0e:fb:3d:57:71:73:bf:58:b8:eb:f3:a3:aa:df:e0:d1 jdoe@myLocalHost
Compruebe que la ruta al archivo de claves sea correcta.
% ls ~/.ssh id_rsa id_rsa.pub
En este punto, ha creado un par de clave pública y clave privada.
Ahora puede iniciar sesión en el host remoto. Para obtener detalles, consulte Cómo iniciar sesión en un host remoto con Secure Shell.
% cat /etc/ssh/ssh_host_dsa_key.pub | ssh RemoteHost \ 'cat >> ~./ssh/known_hosts && echo "Host key copied"'
Enter password: <Type password> Host key copied %
Escriba el comando en una línea sin barra diagonal inversa.
myLocalHost% cat $HOME/.ssh/id_rsa.pub | ssh myRemoteHost \ 'cat >> .ssh/authorized_keys && echo "Key copied"'
Cuando el archivo se copia, se muestra el mensaje “Key copied” (clave copiada).
Enter password: Type login password Key copied myLocalHost%
Para obtener un procedimiento, consulte Cómo reducir indicadores de contraseñas en Secure Shell. Para obtener más información, consulte las páginas del comando man ssh-agent(1) y ssh-add(1).
Ejemplo 19-2 Establecimiento de una clave RSA v1 para un usuario
En el siguiente ejemplo, el usuario puede ponerse en contacto con hosts que ejecutan v1 del protocolo de Secure Shell. Para ser autenticado por hosts v1, el usuario crea una clave v1 y, a continuación, copia la parte de la clave pública en el host remoto.
myLocalHost% ssh-keygen -t rsa1 -f /home/jdoe/.ssh/identity Generating public/private rsa key pair. … Enter passphrase (empty for no passphrase): <Type passphrase> Enter same passphrase again: <Type passphrase> Your identification has been saved in /home/jdoe/.ssh/identity. Your public key has been saved in /home/jdoe/.ssh/identity.pub. The key fingerprint is: … myLocalHost% ls ~/.ssh id_rsa id_rsa.pub identity identity.pub myLocalHost% cat $HOME/.ssh/identity.pub | ssh myRemoteHost \ 'cat >> .ssh/authorized_keys && echo "Key copied"'
El siguiente procedimiento no cambia la clave privada. El procedimiento cambia el mecanismo de autenticación para la clave privada, la frase de contraseña. Para obtener más información, consulte la página del comando man ssh-keygen(1).
Escriba el comando ssh-keygen con la opción -p y responda a las solicitudes.
myLocalHost% ssh-keygen -p Enter file which contains the private key (/home/jdoe/.ssh/id_rsa):<Press Return> Enter passphrase (empty for no passphrase): <Type passphrase> Enter same passphrase again: <Type passphrase>
donde -p solicita cambiar la frase de contraseña de un archivo de clave privada.
Escriba el comando ssh y especifique el nombre del host remoto.
myLocalHost% ssh myRemoteHost
Una solicitud cuestiona la autenticidad del host remoto:
The authenticity of host 'myRemoteHost' can't be established. RSA key fingerprint in md5 is: 04:9f:bd:fc:3d:3e:d2:e7:49:fd:6e:18:4f:9c:26 Are you sure you want to continue connecting(yes/no)?
Esta solicitud es normal para conexiones iniciales a hosts remotos.
Are you sure you want to continue connecting(yes/no)? no
El administrador es responsable de actualizar el archivo /etc/ssh/ssh_known_hosts global. Un archivo ssh_known_hosts actualizado impide que esta solicitud aparezca.
Are you sure you want to continue connecting(yes/no)? yes
Enter passphrase for key '/home/jdoe/.ssh/id_rsa': <Type passphrase>
jdoe@myRemoteHost's password: <Type password> Last login: Fri Jul 20 14:24:10 2001 from myLocalHost myRemoteHost%
Los comandos que envía están cifrados. Ninguna respuesta que recibe está cifrada.
Cuando haya terminado, escriba salir (exit) o utilice el método habitual para salir de su shell.
myRemoteHost% exit myRemoteHost% logout Connection to myRemoteHost closed myLocalHost%
Si no desea escribir la frase de contraseña ni la contraseña para utilizar Secure Shell, puede utilizar el daemon del agente. Inicie el daemon al comienzo de la sesión. A continuación, almacene las claves privadas con el daemon del agente mediante el comando ssh-add. Si tiene cuentas diferentes en hosts diferentes, agregue las claves que necesita para la sesión.
Puede iniciar el daemon del agente manualmente cuando sea necesario, como se describe en el siguiente procedimiento. O puede establecer que el daemon del agente se ejecute automáticamente en el inicio de cada sesión, como se describe en Cómo configurar el comando ssh-agent para que se ejecute automáticamente en el CDE.
myLocalHost% eval `ssh-agent` Agent pid 9892
myLocalHost% pgrep ssh-agent 9892
Escriba el comando ssh-add.
myLocalHost% ssh-add Enter passphrase for /home/jdoe/.ssh/id_rsa: <Type passphrase> Identity added: /home/jdoe/.ssh/id_rsa(/home/jdoe/.ssh/id_rsa) myLocalHost%
myLocalHost% ssh myRemoteHost
No se le solicita una frase de contraseña.
Ejemplo 19-3 Uso de opciones de ssh-add
En este ejemplo, jdoe agrega dos claves al daemon del agente. La opción -l se utiliza para enumerar todas las claves que se almacenan en el daemon. Al final de la sesión, la opción -D se usa para eliminar todas las claves del daemon del agente.
myLocalHost% ssh-agent myLocalHost% ssh-add Enter passphrase for /home/jdoe/.ssh/id_rsa: <Type passphrase> Identity added: /home/jdoe/.ssh/id_rsa(/home/jdoe/.ssh/id_rsa) myLocalHost% ssh-add /home/jdoe/.ssh/id_dsa Enter passphrase for /home/jdoe/.ssh/id_dsa: <Type passphrase> Identity added: /home/jdoe/.ssh/id_dsa(/home/jdoe/.ssh/id_dsa) myLocalHost% ssh-add -l md5 1024 0e:fb:3d:53:71:77:bf:57:b8:eb:f7:a7:aa:df:e0:d1 /home/jdoe/.ssh/id_rsa(RSA) md5 1024 c1:d3:21:5e:40:60:c5:73:d8:87:09:3a:fa:5f:32:53 /home/jdoe/.ssh/id_dsa(DSA) User conducts Oracle Solaris Secure Shell transactions
myLocalHost% ssh-add -D Identity removed: /home/jdoe/.ssh/id_rsa(/home/jdoe/.ssh/id_rsa.pub) /home/jdoe/.ssh/id_dsa(DSA)
Si utiliza el CDE, puede evitar proporcionar la frase de contraseña y la contraseña cada vez que utiliza Secure Shell mediante el inicio automático de un daemon del agente, ssh-agent. Puede iniciar el daemon del agente desde la secuencia de comandos .dtprofile. Para agregar la frase de contraseña y la contraseña al daemon del agente, consulte el Ejemplo 19-3.
Precaución - Si utiliza el Sun Java Desktop System (Java DS), no configure el comando ssh-agent para que se ejecute automáticamente. Debido a que la terminación del proceso ssh-agent se controla mediante una interfaz del CDE, al salir de Java DS, el daemon sigue ejecutándose. Por ejemplo, si inicia el daemon en una sesión del CDE, se desplaza hasta una sesión de Java DS y cierra sesión, el daemon se sigue ejecutando. Un daemon en ejecución utiliza recursos del sistema. Aunque no hay ningún problema conocido asociado con dejar el daemon ssh-agent en ejecución, el daemon contiene una contraseña, que podría generar un riesgo de seguridad. |
Agregue las siguientes líneas al final de la secuencia de comandos $HOME/.dtprofile:
if [ "$SSH_AUTH_SOCK" = "" -a -x /usr/bin/ssh-agent ]; then eval `/usr/bin/ssh-agent` fi
Agregue las siguientes líneas a la secuencia de comandos $HOME/.dt/sessions/sessionexit:
if [ "$SSH_AGENT_PID" != "" -a -x /usr/bin/ssh-agent ]; then /usr/bin/ssh-agent -k fi
Esta entrada garantiza que nadie pueda utilizar el agente del Secure Shell después de que una sesión del CDE se termina. Debido a que la secuencia de comandos utiliza una interfaz específica del CDE, sessionexit, este procedimiento no termina el daemon del agente en una sesión de Sun Java Desktop System.
Puede especificar que un puerto local se reenvíe a un host remoto. Efectivamente, un socket se asigna para escuchar el puerto en el lado local. La conexión desde este puerto se realiza mediante un canal seguro al host remoto. Por ejemplo, puede especificar el puerto 143 para obtener correo electrónico remotamente con IMAP4. De forma similar, un puerto se puede especificar en el lado remoto.
Antes de empezar
Para utilizar el reenvío del puerto, el administrador debe tener habilitado el reenvío del puerto en el servidor remoto de Secure Shell. Para obtener detalles, consulte Cómo configurar el reenvío del puerto en Secure Shell.
Especifique el puerto local que escucha para la comunicación remota. Además, especifique el host remoto y el puerto remoto que reenvían la comunicación.
myLocalHost% ssh -L localPort:remoteHost:remotePort
Especifique el puerto remoto que escucha para la comunicación remota. Además, especifique el host local y el puerto local que reenvían la comunicación.
myLocalHost% ssh -R remotePort:localhost:localPort
Ejemplo 19-4 Uso del reenvío del puerto local para recibir correo
El ejemplo siguiente muestra cómo puede utilizar el reenvío del puerto local para recibir correo de manera segura desde un servidor remoto.
myLocalHost% ssh -L 9143:myRemoteHost:143 myRemoteHost
Este comando reenvía conexiones del puerto 9143 en myLocalHost al puerto 143. El puerto 143 es el puerto del servidor v2 IMAP en myRemoteHost. Cuando el usuario inicia una aplicación de correo, el usuario debe especificar el número de puerto local, como se muestra en el siguiente cuadro de diálogo.
No confunda localhost en el cuadro de diálogo con myLocalHost. myLocalHost es un nombre de host hipotético. localhost es una palabra clave que identifica el sistema local.
Ejemplo 19-5 Uso del reenvío del puerto remoto para comunicarse fuera de un cortafuegos
En el siguiente ejemplo, se muestra cómo un usuario en un entorno empresarial puede reenviar conexiones desde un host en una red externa hasta un host dentro de un cortafuegos corporativo.
myLocalHost% ssh -R 9022:myLocalHost:22 myOutsideHost
Este comando reenvía conexiones desde el puerto 9022 en myOutsideHost hasta el puerto 22, el servidor sshd, en el host local.
myOutsideHost% ssh -p 9022 localhost myLocalHost%
El siguiente procedimiento muestra cómo usar el comando scp para copiar archivos cifrados entre hosts. Puede copiar archivos cifrados ya sea entre un host local y un host remoto, o entre dos hosts remotos. El comando opera de forma similar al comando rcp, excepto que el comando scp solicita autenticación. Para obtener más información, consulte la página del comando man scp(1).
También puede utilizar sftp, un formato más seguro del comando ftp. Para obtener más información, consulte la página del comando man sftp(1). Si desea ver un ejemplo, consulte el Ejemplo 19-6.
Especifique el archivo de origen, el nombre de usuario en el destino remoto y el directorio de destino.
myLocalHost% scp myfile.1 jdoe@myRemoteHost:~
Enter passphrase for key '/home/jdoe/.ssh/id_rsa': <Type passphrase> myfile.1 25% |******* | 640 KB 0:20 ETA myfile.1
Después de escribir la frase de contraseña, se muestra un indicador de progreso. Consulte la segunda línea en el resultado anterior. El indicador de progreso muestra:
El nombre del archivo
El porcentaje del archivo que se ha transferido
Una serie de asteriscos que indican el porcentaje del archivo que se ha transferido
La cantidad de datos transferidos
El tiempo calculado de llegada, o ETA, del archivo completo (es decir, la cantidad restante de tiempo)
Ejemplo 19-6 Especificación de un puerto cuando se utiliza el comando sftp
En este ejemplo, el usuario desea que el comando sftp utilice un puerto concreto. El usuario utiliza la opción -o para especificar el puerto.
% sftp -o port=2222 guest@RemoteFileServer
Puede utilizar Secure Shell para establecer una conexión desde un host dentro de un cortafuegos hasta un host fuera del cortafuegos. Esta tarea se realiza especificando un comando de proxy para ssh en un archivo de configuración o como una opción en la línea de comandos. Para la opción de línea de comandos, consulte el Ejemplo 19-7.
En general, puede personalizar las interacciones de ssh mediante un archivo de configuración.
Puede personalizar su propio archivo personal en ~/.ssh/config.
O puede utilizar los valores en el archivo de configuración administrativo, /etc/ssh/ssh_config.
Los archivos se pueden personalizar con dos tipos de comandos de proxy. Un comando de proxy es para conexiones HTTP. El otro comando de proxy es para conexiones SOCKS5. Para obtener más información, consulte la página del comando man ssh_config(4).
Utilice la sintaxis siguiente para agregar tantas líneas como sea necesario:
[Host outside-host] ProxyCommand proxy-command [-h proxy-server] \ [-p proxy-port] outside-host|%h outside-port|%p
Limita la especificación del comando de proxy a instancias cuando un nombre de host remoto se especifica en la línea de comandos. Si utiliza un carácter comodín para outside-host, aplica la especificación del comando de proxy a un conjunto de hosts.
Especifica el comando de proxy.
El comando puede ser cualquiera de los siguientes:
/usr/lib/ssh/ssh-http-proxy-connect para conexiones HTTP
/usr/lib/ssh/ssh-socks5-proxy-connect para conexiones SOCKS5
Estas opciones especifican un servidor proxy y un puerto proxy, respectivamente. Si están presentes, los proxies sustituyen cualquier variable de entorno que especifica servidores proxy y puertos proxy, como HTTPPROXY, HTTPPROXYPORT, SOCKS5_PORT, SOCKS5_SERVER y http_proxy. La variable http_proxy especifica una URL. Si las opciones no se usan, las variables de entorno relevantes se deben definir. Para obtener más información, consulte las páginas del comando man ssh-socks5-proxy-connect(1) y ssh-http-proxy-connect(1).
Designa un host específico para conectarse. Utilice el argumento de sustitución %h para especificar el host en la línea de comandos.
Designa un puerto específico para conectarse. Utilice el argumento de sustitución %p para especificar el puerto en la línea de comandos. Al especificar %h y %p sin utilizar la opción Host outside-host, el comando de proxy se aplica al argumento de host cada vez que se invoca el comando ssh.
Escriba, por ejemplo:
myLocalHost% ssh myOutsideHost
Este comando busca una especificación de comando de proxy para myOutsideHost en su archivo de configuración personal. Si la especificación no se ha encontrado, el comando busca en el archivo de configuración de todo el sistema, /etc/ssh/ssh_config. El comando de proxy se sustituye por el comando ssh.
Ejemplo 19-7 Conexión a hosts fuera de un cortafuegos desde la línea de comandos
Cómo configurar conexiones predeterminadas a hosts fuera de un cortafuegos explica cómo especificar un comando de proxy en un archivo de configuración. En este ejemplo, un comando de proxy se especifica en la línea de comandos ssh.
% ssh -o'Proxycommand=/usr/lib/ssh/ssh-http-proxy-connect \ -h myProxyServer -p 8080 myOutsideHost 22' myOutsideHost
La opción -o para el comando ssh proporciona un método de línea de comandos para especificar un comando de proxy. En este ejemplo, el comando realiza lo siguiente:
Sustituye el comando de proxy HTTP para ssh
Utiliza el puerto 8080 y myProxyServer como el servidor proxy
Se conecta al puerto 22 en myOutsideHost