JavaScript is required to for searching.
Omitir V�nculos de navegaci�n
Salir de la Vista de impresi�n
Guía de administración del sistema: servicios de seguridad
search filter icon
search icon

Información del documento

Prefacio

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)

11.  Privilegios (tareas)

12.  Privilegios (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)

17.  Uso de PAM

18.  Uso de SASL

19.  Uso de Oracle Solaris Secure Shell (tareas)

Oracle Solaris Secure Shell (descripción general)

Autenticación de Oracle Solaris Secure Shell

Secure Shell en la empresa

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)

Parte VI Servicio Kerberos

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)

31.  Auditoría de Oracle Solaris (referencia)

Glosario

Índice

Uso de Oracle Solaris Secure Shell (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).

Cómo generar un par de clave pública y clave privada para utilizar con Secure Shell

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.

  1. Inicie el programa de generación de claves.
    myLocalHost% ssh-keygen -t rsa
    Generating public/private rsa key pair.
    …

    donde -t es el tipo de algoritmo, uno de rsa, dsa o rsa1.

  2. Especifique la ruta al archivo que contendrá la clave.

    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.

  3. Escriba una frase de contraseña para usar la clave.

    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>
  4. Vuelva a escribir la frase de contraseña para confirmarla.
    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
  5. Compruebe los resultados.

    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.

  6. Elija la opción adecuada:
    • Si el administrador ha configurado la autenticación basada en host, es posible que necesite copiar la clave pública del host local en el host remoto.

      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.

      1. Escriba el comando en una línea sin barra diagonal inversa.
        % cat /etc/ssh/ssh_host_dsa_key.pub | ssh RemoteHost \
        'cat >> ~./ssh/known_hosts && echo "Host key copied"'
      2. Cuando se le pida, proporcione la contraseña de inicio de sesión.
        Enter password: <Type password>
        Host key copied
        %
    • Si su sitio utiliza la autenticación de usuario con claves públicas, rellene el archivo authorized_keys en el host remoto.
      1. Copie la clave pública en el host remoto.

        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"'
      2. Cuando se le pida, proporcione la contraseña de inicio de sesión.

        Cuando el archivo se copia, se muestra el mensaje “Key copied” (clave copiada).

        Enter password: Type login password
        Key copied
        myLocalHost%
  7. (Opcional) Reduzca la solicitud de frases de contraseña.

    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"'

Cómo cambiar la frase de contraseña de una clave privada de Secure Shell

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).

Cómo iniciar sesión en un host remoto con Secure Shell

  1. Inicie una sesión de Secure Shell.

    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.

  2. Si se le solicita, verifique la autenticidad de la clave del host remoto.
    • Si no puede confirmar la autenticidad del host remoto, escriba no y póngase en contacto con el administrador del sistema.
      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.

    • Si confirma la autenticidad del host remoto, responda la solicitud y continúe con el siguiente paso.
      Are you sure you want to continue connecting(yes/no)? yes
  3. Autentíquese en Secure Shell.
    1. Cuando se le solicite, escriba la frase de contraseña.
      Enter passphrase for key '/home/jdoe/.ssh/id_rsa': <Type passphrase>
    2. Cuando se le solicite, escriba la contraseña de su cuenta.
      jdoe@myRemoteHost's password: <Type password>
      Last login: Fri Jul 20 14:24:10 2001 from myLocalHost
      myRemoteHost%
  4. Realice transacciones en el host remoto.

    Los comandos que envía están cifrados. Ninguna respuesta que recibe está cifrada.

  5. Cierre la conexión de Secure Shell.

    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%

Cómo reducir indicadores de contraseñas en Secure Shell

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.

  1. Inicie el daemon del agente.
    myLocalHost% eval `ssh-agent`
    Agent pid 9892
  2. Verifique que el daemon del agente se haya iniciado.
    myLocalHost% pgrep ssh-agent
    9892
  3. Agregue la clave privada al daemon del agente.

    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%
  4. Inicie una sesión de Secure Shell.
    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)

Cómo configurar el comando ssh-agent para que se ejecute automáticamente en el CDE

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

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.


  1. Inicie el daemon del agente automáticamente en una secuencia de comandos de inicio de usuario.

    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
  2. Termine el daemon del agente al salir de la sesión del CDE.

    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.

Cómo utilizar el reenvío del puerto en Secure Shell

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.

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.

image:Cuadro de diálogo Aplicación de correo: Inicio de sesión. El campo del servidor IMAP muestra el nombre del servidor, seguido de dos puntos y el número de puerto.

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%

Cómo copiar archivos con Secure Shell

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.

  1. Inicie el programa de copia segura.

    Especifique el archivo de origen, el nombre de usuario en el destino remoto y el directorio de destino.

    myLocalHost% scp myfile.1 jdoe@myRemoteHost:~
  2. Indique la frase de contraseña cuando se le solicite.
    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

Cómo configurar conexiones predeterminadas a hosts fuera de un cortafuegos

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.

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).

  1. Especifique los comandos de proxy y los hosts en un archivo de configuración.

    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
    Host host_exterior

    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.

    comando_proxy

    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

    -h servidor_proxy y -p puerto_proxy

    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).

    host_exterior

    Designa un host específico para conectarse. Utilice el argumento de sustitución %h para especificar el host en la línea de comandos.

    puerto_exterior

    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.

  2. Ejecute Secure Shell especificando el host externo.

    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: