Configuración de OpenSSH

Embed Size (px)

Citation preview

  • Certificacin LPIC-1

    Configuracin de OpenSSH.

    Introduccin.

    Acerca de SSH.

    SSH (Secure Shell) es un conjunto de estndares y protocolo de red que permite establecer una comunicacin a travs de un canal seguro entre un cliente local y un servidor remoto. Utiliza una clave pblica cifrada para autenticar el servidor remoto y, de manera opcional, permitir al servidor remoto autenticar al usuario. SSH provee confidencialidad e integridad en la transferencia de los datos utilizando criptografa y MAC (Message Authentication Codes o Cdigos de Autenticacin de Mensaje). De modo predeterminado, escucha peticiones a travs del puerto 22 por TCP.

    Acerca de SFTP.

    SFTP (SSH File Transfer Protocol) es un protocolo que provee funcionalidad de transferencia y manipulacin de archivos a travs de un flujo confiable de datos. Comnmente se utiliza con SSH para proveer a ste de transferencia segura de archivos.

    Acerca de SCP.

    SCP (Secure Copy o Copia Segura) es una protocolo seguro para transferir archivos entre un anfitrin local y otro remoto, a travs de SSH. Bsicamente, es idntico a RCP (Remote Copy o Copia Remota), con la diferencia de que los datos son cifrados durante la transferencia para evitar la extraccin potencial de informacin a travs de programas de captura de las tramas de red (packet sniffers). SCP slo implementa la transferencia de archivos, pues la autenticacin requerida es realizada a travs de SSH.

    Acerca de OpenSSH.

    OpenSSH (Open Secure Shell) es una alternativa de cdigo fuente abierto, con licencia BSD, hacia la implementacin propietaria y de cdigo cerrado SSH creada por Tatu Ylnen. OpenSSH es un proyecto creado por el equipo de desarrollo de OpenBSD y actualmente dirigido por Theo de Raadt. Se considera es ms segura que la versin privativa Ylnen, gracias a la constante auditora que se realiza sobre el cdigo fuente por parte de una enorme comunidad de desarrolladores, una ventaja que brinda el Software Libre.

    OpenSSH incluye servicio y clientes para los protocolos SSH, SFTP y SCP.

    URL: http://www.openssh.org/.

    1

  • Certificacin LPIC-1

    Equipamiento lgico necesario.

    En CentOS, Fedora y Red Hat Enterprise Linux.

    Si realiz una instalacin mnima, ejecute lo siguiente para instalar la paquetera necesaria:

    yum -y install openssh openssh-server openssh-clients

    En openSUSE y SUSE Linux Enterprise.

    Si realiz una instalacin mnima, ejecute lo siguiente para instalar la paquetera necesaria:

    yast -i openssh

    Activar, desactivar, iniciar, detener y reiniciar el servicio ssh. De modo predeterminado, el servicio sshd est activo en los niveles de ejecucin 2, 3, 4 y 5.

    En CentOS, Fedora y Red Hat Enterprise Linux.

    Ejecute lo siguiente slo si necesita desactivar el servicio sshd de todos los niveles de ejecucin:

    chkconfig sshd off

    Ejecute lo siguiente para ejecutar por primera vez el servicio sshd:

    service sshd start

    Ejecute lo siguiente para hacer que surtan efecto los cambios hechos a la configuracin del servicio sshd:

    service sshd restart

    Ejecute lo siguiente para detener el servicio sshd:

    rcsshd stop

    En openSUSE y SUSE Linux Enterprise.

    Ejecute lo siguiente slo si necesita desactivar el servicio sshd de todos los niveles de ejecucin:

    2

  • Certificacin LPIC-1

    insserv -r sshd

    Ejecute lo siguiente para ejecutar por primera vez el servicio sshd:

    rcsshd start

    Ejecute lo siguiente para hacer que surtan efecto los cambios hechos a la configuracin del servicio sshd:

    rcsshd restart

    Ejecute lo siguiente para detener el servicio sshd:

    service sshd stop

    Modificaciones necesarias en el muro cortafuegos. Es necesario abrir el puerto 22 por TCP (SSH) o bien el puerto que se haya seleccionado para el servicio.

    En CentOS, Fedora y Red Hat Enterprise Linux.

    Servicio iptables.

    Puede utilizar iptables, ejecutando lo siguiente:

    iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT service iptables save

    O bien aada lo siguiente al archivo /etc/sysconfig/iptables:

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

    Y reinicie el servicio iptables:

    service iptables restart

    Shorewall.

    Edite el archivo /etc/shorewall/rules:

    vim /etc/shorewall/rules

    Las reglas corresponderan a algo similar a lo siguiente:

    #ACTION SOURCE DEST PROTO DEST SOURCE # PORT PORT(S)1

    3

  • Certificacin LPIC-1

    ACCEPT net fw tcp 22 #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

    Si la red de rea local (LAN) va a acceder hacia el servidor recin configurado, es necesario abrir el puerto correspondiente.

    #ACTION SOURCE DEST PROTO DEST SOURCE # PORT PORT(S)1 ACCEPT net fw tcp 22 ACCEPT loc fw tcp 22 #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

    O bien, hacer todo lo anterior, con una sola regla, que permita el acceso desde cualquier zona del muro cortafuegos:

    #ACTION SOURCE DEST PROTO DEST SOURCE # PORT PORT(S)1 ACCEPT all fw tcp 22 #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

    Si se decidi ofuscar el puerto de SSH, puede utilizar la siguiente regla, donde, en lugar de 52341, deber especificar el puerto que haya elegido:

    #ACTION SOURCE DEST PROTO DEST SOURCE # PORT PORT(S)1 ACCEPT all fw tcp 52341 #LAST LINE -- ADD YOUR ENTRIES BEFORE THIS ONE -- DO NOT REMOVE

    Al terminar de configurar las reglas para Shorewall, reinicie el muro cortafuegos, ejecutando el siguiente mandato:

    service shorewall restart

    En openSUSE y SUSE Linux Enterprise.

    Ejecute el mandato yast del siguiente modo:

    yast firewall

    Habilite Secure Shell Server o bien el puerto seleccionado para utilizar el servicio y aplique los cambios.

    4

  • Certificacin LPIC-1

    Mdulo de cortafuegos de YaST, habilitando Secure Shell Server.

    SELinux y el servicio sshd. Si utiliza openSUSE y SUSE Linux Enterprise omita la siguiente seccin.

    Si se utiliza de CentOS, Fedora o Red Hat Enterprise Linux, el sistema incluye tres polticas para el servicio sshd.

    Poltica ssh_chroot_rw_homedirs.

    Esta poltica habilita o deshabilita, la lectura y escritura de archivos a travs de SFTP en los directorios de inicio de los usuarios enjaulados. El valor predeterminado es deshabilitado. Para habilitar, ejecute lo siguiente

    setsebool -P ssh_chroot_rw_homedirs 1

    Poltica fenced_can_ssh.

    Esta poltica habilita o deshabilita, que usuarios enjaulados a travs de SFTP puedan ingresar tambin a travs de SSH. El valor predeterminado es deshabilitado. Para habilitar, ejecute lo siguiente

    setsebool -P fenced_can_ssh 1

    Poltica ssh_sysadm_login.

    Esta poltica habilita o deshabilita, el acceso a travs del servicio de SSH como administrador del sistema (contextos sysadm_r:sysadm_t, que corresponden a los del

    5

  • Certificacin LPIC-1

    directorio de inicio del usuario root o bien que pueden ser aplicados al directorio de inicio de otro usuario con privilegios). El valor predeterminado es deshabilitado. Para habilitar, ejecute lo siguiente

    setsebool -P ssh_sysadm_login 1

    Poltica allow_ssh_keysign.

    Esta poltica habilita o deshabilita, el acceso a travs de ssh utilizando firmas digitales. El valor predeterminado es deshabilitado. Para habilitar, ejecute lo siguiente

    setsebool -P allow_ssh_keysign 1

    Para ms detalles, consulte el documento titulado Cmo utilizar OpenSSH con autenticacin a travs de firma digital..

    Contexto ssh_home_t.

    El contexto de SELinux para de los directorios ~/.ssh y sus contenidos, debe ser tipo ssh_home_t. En caso de haber actualizado el sistema desde versiones anteriores a CentOS 6.3 o Red Hat Enterprise Linux 6.3, puede re-establecer los contextos ejecutando lo siguiente:

    restorecon -R /root restorecon -R /home

    O bien ejecutando:

    chcon -R -t ssh_home_t /root/.ssh chcon -R -t ssh_home_t /home/*/.ssh

    Archivos de configuracin.

    /etc/ssh/sshd_config Archivo principal de configuracin del servidor SSH.

    /etc/ssh/ssh_config Archivo principal de configuracin de los clientes SSH utilizados desde el anfitrin local.

    ~/.ssh/config Archivo personal para cada usuario, que almacena la configuracin utilizada por los clientes SSH utilizados desde el anfitrin local. Permite al usuario local utilizar una configuracin distinta a la definida en el archivo /etc/ssh/ssh_config.

    ~/.ssh/known_hosts

    6

  • Certificacin LPIC-1

    Archivo personal para cada usuario, el cual almacena las firmas digitales de los servidores SSH a los que se conectan los clientes. Cuando stas firmas cambian, se pueden actualizar utilizando el mandato ssh-keygen con la opcin -R y el nombre del anfitrin como argumento, el cual elimina la entrada correspondiente del archivo ~/.ssh/known_hosts, permitiendo aadir de nuevo el anfitrin con una nueva firma digital. Ejemplo: ssh-keygen -R nombre.dominio.tld.

    ~/.ssh/authorized_keys Archivo personal para cada usuario, el cual almacena los certificados de los clientes SSH, para permitir autenticacin hacia servidores SSH sin requerir contrasea. Consulte el documento titulado Cmo utilizar OpenSSH con autenticacin a travs de firma digital.

    Cuando se utilizan cuentas con acceso al intrprete de mandatos, las opciones suministradas al mandato ssh tienen precedencia sobre las opciones establecidas en el archivo ~/.ssh/config, que a su vez tiene precedencia sobre las opciones definidas en el archivo /etc/ssh/ssh_config.

    Procedimientos. Edite el archivo /etc/ssh/sshd_config.

    vim /etc/ssh/sshd_config

    A continuacin se analizarn las opciones bsicas que se recomienda modificar.

    Parmetro Port.

    Una forma de elevar considerablemente la seguridad al servicio de SSH, consiste en cambiar el nmero de puerto utilizado por el servicio, por otro que slo conozca el administrador del sistema. A este tipo de tcnicas se les conoce como Seguridad por Oscuridad. La mayora de los delincuentes informticos utiliza guiones que buscan servidores que respondan a peticiones a travs del puerto 22. Cambiar de puerto el servicio de SSH disminuye considerablemente la posibilidad de una intrusin a travs de este servicio.

    Port 22

    SSH trabaja a travs del puerto 22 por TCP. Puede elegirse cualquier otro puerto entre el 1025 y 65535. En el siguiente ejemplo, se establecer el puerto 52341:

    Port 52341

    7

  • Certificacin LPIC-1

    Parmetro ListenAddress.

    De modo predeterminado, el servicio de SSH responder peticiones a travs de todas las direcciones presentes en todas las interfaces de red del sistema. En el siguiente ejemplo, el servidor a configurar tiene la direccin IP 192.168.1.254, la cual slo podra ser accedida desde la red local:

    ListenAddress 192.168.1.254

    Parmetro PermitRootLogin.

    Establece si se va a permitir el ingreso directo del usuario root al servidor SSH. Si se va a permitir el ingreso hacia el servidor desde redes pblicas, resultar prudente utilizar este parmetro con el valor no, de modo que sea necesario ingresar primero con una cuenta de usuario activa, con un intrprete de mandatos que permita el acceso.

    PermitRootLogin no

    Parmetro X11Forwarding.

    Establece si se permitir la ejecucin remota de aplicaciones grficas que utilicen el servidor X11. Resultar conveniente para algunas tareas administrativas que slo puedan llevarse a cabo con herramientas grficas o bien si se requiere utilizar una aplicacin grfica en particular. Para este fin, este parmetro puede establecerse con el valor yes.

    X11Forwarding yes

    Parmetro AllowUsers.

    Permite restringir el acceso por usuario y/o por anfitrin. El siguiente ejemplo restringe el acceso hacia el servidor SSH para que slo puedan hacerlo los usuarios fulano y mengano, desde cualquier anfitrin.

    AllowUsers fulano mengano

    El siguiente ejemplo restringe el acceso hacia el servidor SSH para que slo puedan hacerlo los usuarios fulano y mengano, pero slo desde los anfitriones 10.1.1.1 y 10.2.2.1.

    AllowUsers [email protected] [email protected] [email protected] [email protected]

    Parmetro UseDNS.

    Cuando un cliente realiza una conexin hacia un servidor SSH, ste ltimo intentar resolver en el DNS predeterminado del sistema, la direccin IP del cliente. Si el servidor DNS predeterminado del sistema carece de una zona de resolucin inversa que resuelva

    8

  • Certificacin LPIC-1

    un nombre para la direccin IP del cliente, la conexin se demorar algunos segundos ms de lo normal. Algunos administradores prefieren desactivar esta funcin, con el fin de agilizar las conexiones SSH en redes donde se carece de servidores DNS que tengan zonas de reenvo para resolver los nombres o zonas de resolucin inversa para resolver las las direcciones IP de los segmentos de red local, definiendo el valor no para este parmetro.

    UseDNS no

    Del lado del cliente se realiza un proceso de validacin, que tiene como objetivo verificar si se estn falsificando registros en un servidor DNS, en el caso de que ste ltimo se haya visto comprometido en su seguridad. La opcin que controla esta funcin es CheckHostIP, tiene establecido yes como valor predeterminado y se define en el archivo /etc/ssh/ssh_config (archivo de configuracin para los clientes SSH del anfitrin local). Por lo general se recomienda dejar intacta esta opcin, con el valor predeterminado, salvo que los servidores SSH involucrados carezcan de resolucin en algn servidor DNS. Establecer el valor no, tiene como riesgo el ser susceptible de conectarse inadvertidamente a un servidor distinto al que realmente se quera utilizar, cuya resolucin de nombre de anfitrin haya sido falsificada y que pudiera estar siendo utilizado con malas intenciones para engaar y poder capturar nombres de usuario y contraseas, para posteriormente ser utilizados para acceder al servidor verdadero.

    Probando OpenSSH.

    Acceso con intrprete de mandatos.

    Para acceder con intrprete de mandatos hacia el servidor, basta con ejecutar desde el sistema cliente el mandato ssh, definiendo como argumentos el usuario a utilizar, una arroba y la direccin IP o nombre del servidor al cual se quiera conectar:

    ssh [email protected]

    Si el servidor SSH opera en un puerto diferente al 22, se puede utilizar la opcin -p con el nmero de puerto utilizado como argumento. En el siguiente ejemplo, utilizando la cuenta del usuario juan, se intentar acceder hacia el servidor con direccin IP 192.168.70.99, el cual tiene un servicio de SSH que responde peticiones a travs del puerto 52341.

    ssh -p 52341 [email protected]

    Transferencia de archivos a travs de SFTP.

    Para acceder a travs de SFTP hacia el servidor, basta con ejecutar desde el sistema cliente el mandato sftp definiendo el usuario a utilizar y el servidor al cual conectar:

    sftp usuario@servidor

    9

  • Certificacin LPIC-1

    El intrprete de mandatos de SFTP es muy similar al utilizado para el protocolo FTP y tiene las mismas funcionalidades.

    Para acceder hacia un puerto en particular, en el cual est trabajando el servicio de SSH, se hace travs de el parmetro -o, con la opcin Port=nmero de puerto. En el siguiente ejemplo, utilizando la cuenta del usuario juan, se acceder a travs de SFTP hacia el servidor 192.168.70.99, el cual tiene trabajando el servicio de SSH en el puerto 52341.

    sftp -o Port=52341 [email protected]

    Si dispone de un escritorio en GNU/Linux, con GNOME 2.x, puede acceder hacia servidores SSH a travs del protocolo SFTP utilizando el administrador de archivos (Nautilus) para realizar transferencias y manipulacin de archivos, especificando el URI (Uniform Resource Locator o Localizador Uniforme de Recursos) sftp:, seguido del servidor y la ruta hacia la que se quiere acceder, seguido del puerto, en el caso que sea distinto al 22.

    Nautilus, accediendo hacia un directorio remoto a travs de SFTP.

    Jaulas para los usuarios que acceden a travs de SFTP.

    La funcin de chroot (jaula de confinamiento de los usuarios) viene incluida desde la versin 4.9p1 de OpenSSH. Para habilitarla, es necesario editar el archivo /etc/ssh/sshd_config:

    vim /etc/ssh/sshd_config

    Casi al final del archivo, localice la siguiente lnea:

    Subsystem sftp /usr/libexec/openssh/sftp-server

    10

  • Certificacin LPIC-1

    Comente la lnea con una almohadilla y aada el siguiente contenido:

    #Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp Match Group sftpusers ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no

    Guarde el archivo y regrese al intrprete de mandatos

    Reinicie el servicio sshd ejecutando lo siguiente:

    service sshd restart

    Utilice el mandato groupadd para crear el grupo sftpusers.

    groupadd sftpusers

    Aada a los usuarios a los cuales se quiera enjaular, al grupo sftpusers.

    gpasswd -a perengano sftpusers

    Cambie los permisos del directorio de inicio de los usuarios involucrados, para que pertenezcan a root y tengan permiso de acceso 755.

    chown root:root /home/perengano chmod 755 /home/perengano

    Finalmente, cambie el intrprete de mandatos de los usuarios involucrados a /sbin/nologin.

    usermod -s /sbin/nologin perengano

    A partir de este momento, los usuarios involucrados podrn ingresar al sistema a travs de SFTP, pero slo podrn tener acceso a su directorio de inicio.

    [fulano@centos6 ~]$ sftp [email protected] [email protected]'s password: Connected to 192.168.80.8. sftp> pwd Remote working directory: / sftp> ls -a . .. .bash_logout .bash_profile .bashrc sftp>

    Transferencia de archivos a travs de SCP.

    Para realizar transferencias de archivos a travs de SCP, es necesario conocer las rutas de los directorios objetivo del anfitrin remoto. A continuacin se describen algunas de las opciones ms importantes del mandato scp.

    11

  • Certificacin LPIC-1

    12

    -p (minscula) Preserva el tiempo de modificacin, tiempos de acceso y los modos del archivo original.

    -P (mayscula) Especifica el puerto para realizar la conexin.

    -r Copia en modo descendente de los directorios especificados.

    En el siguiente ejemplo, se transferir el archivo algo.txt, preservando tiempos y modos, hacia el directorio de inicio del usuario fulano en el servidor 192.169.0.99.

    scp -p algo.txt [email protected]:~/

    En el siguiente ejemplo, se transferir la carpeta Mail, junto con todo su contenido, preservando tiempos y modos, hacia el directorio de inicio del usuario fulano en el servidor 192.169.0.99.

    scp -rp Mail [email protected]:~/

    En el siguiente ejemplo, se transferir la carpeta Mail, junto con todo su contenido, desde el directorio de inicio del usuario fulano en el servidor 192.169.0.99, cuyo servicio de SSH escucha peticiones a travs del puerto 52341, preservando tiempos y modos, hacia el directorio del usuario con el que se est trabajando en el anfitrin local.

    scp -P 52341 -rp [email protected]:~/Mail ./

    Configuracin de OpenSSH.Introduccin.Acerca de SSH.Acerca de SFTP.Acerca de SCP.Acerca de OpenSSH.

    Equipamiento lgico necesario.En CentOS, Fedora y Red Hat Enterprise Linux.En openSUSE y SUSE Linux Enterprise.

    Activar, desactivar, iniciar, detener y reiniciar el servicio ssh.En CentOS, Fedora y Red Hat Enterprise Linux.En openSUSE y SUSE Linux Enterprise.

    Modificaciones necesarias en el muro cortafuegos.En CentOS, Fedora y Red Hat Enterprise Linux.Servicio iptables.Shorewall.

    En openSUSE y SUSE Linux Enterprise.

    SELinux y el servicio sshd.Poltica ssh_chroot_rw_homedirs.Poltica fenced_can_ssh.Poltica ssh_sysadm_login.Poltica allow_ssh_keysign.Contexto ssh_home_t.

    Archivos de configuracin.Procedimientos.Parmetro Port.Parmetro ListenAddress.Parmetro PermitRootLogin.Parmetro X11Forwarding.Parmetro AllowUsers.Parmetro UseDNS.

    Probando OpenSSH.Acceso con intrprete de mandatos.Transferencia de archivos a travs de SFTP.Jaulas para los usuarios que acceden a travs de SFTP.

    Transferencia de archivos a travs de SCP.