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.