openssh

Una de las primeras cosas que realizo, cuando recién me asignan un equipo a administrar, es la instalación de herramientas que me gusta utilizar, pensando, principalmente, en la seguridad. En la mayoría de los sistemas operativos, podemos encontrar paquetes pre-compilados para cada plataforma, en lo particular, prefiero compilarlos para cada una de ellas, aunque también, si tengo plataformas similares, creo mis propios pre-compilados.

OpenSSH (Open Secure Shell) es un conjunto de aplicaciones que permiten realizar comunicaciones cifradas a través de una red, usando el protocolo SSH. Fue creado como una alternativa libre y abierta al programa Secure Shell, que es software propietario.

La suite OpenSSH incluye:

  • ssh, reemplaza rlogin y telnet (Conexión remota)
  • scp, reemplaza rcp (copia remota)
  • sftp, reemplaza ftp (transferencia de archivos)
  • sshd, el demonio SSH

Una de las mejores prácticas en la administración, consiste en saber quién se conecta, desde donde y que es lo que hace en el sistema. Con OpenSSH, podemos asegurar la conexión, ya que se hace de manera cifrada; sin embargo, si nosotros quisiéramos que se auditaran las conexiones, TCP-Wrappers no podría darnos información.

Para corregir esta situación, es necesario compilar OpenSSH con las librerías de TCP-Wrappers, para que se puedan auditar las conexiones.

Primeramente, debemos compilar e instalar TCP-Wrappers, como resultado se generarán varios archivos y librerias, debemos copiar la librería tcpd.h en /usr/include, para añadir el soporte de tcp-wrappers a OpenSSH:

[root@ragnarok ~]# cp tcpd.h /usr/include/

Antes de que se instale OpenSSH deben instalarse Zlib y OpenSSL .

También es necesario crear un grupo llamado sshd, una cuenta de usuario llamada sshd con directorio home /var/empty. Si este directorio no existe, crearlo con permisos 755 y con propietario root, este debe estar vacío, de lo contrario puede ocasionar que OpenSSH no funcione.

Si no existe, agregamos el servicio ssh /etc/services:

ssh        22/tcp        # Secure Shell

ssh        22/udp        # Secure Shell

Al compilar OpenSSH, es necesario pasarle los argumentos necesarios,para que se compile con OpenSSL y el soporte a TCP-Wrappers:

[root@ragnarok openssh-5.2p1]# ./configure –with-ssl-dir=PATH –with-tcp-wrappers[=PATH]

Donde el path de tcp-wrappers es donde se localiza el binario de tcpd:

[root@ragnarok openssh-5.2p1]# ./configure –with-ssl-dir=/usr/local/ssl –with-tcp-wrappers=/usr/local/bin

Cuando termina la configuración, podemos observar que se añadio el soporte a tcp-wrappers:

OpenSSH has been configured with the following options:

User binaries: /usr/local/bin

System binaries: /usr/local/sbin

Configuration files: /usr/local/etc

TCP Wrappers support: yes


Después ejecutamos make && make install, para instalar OpenSSH; y configuramos al demonio inetd para que maneje peticiones de OpenSSH con soporte de tcp-wrappers, agregando en el archivo /etc/inetd.conf:

ssh     stream  tcp     nowait  root    /usr/local/bin/tcpd     sshd -i

eNOTA: En algunos casos es necesario configurar todo el path donde se encuentra el demonio de ssh:

ssh     stream  tcp     nowait  root    /usr/local/bin/tcpd     /usr/local/sbin/sshd -i

Después, reiniciamos el demonio de TCP-Wrappers y verificamos que se estén auditando las conexiones de ssh.

Espero les sea de utilidad.