Reglas para TCP wrappers en Linux: ejemplos prácticos

En los dos últimos posts introdujimos los conceptos fundamentales y explicamos cómo escribir reglas para TCP wrappers en Linux. En esta oportunidad mostraremos cómo distinguir si un servicio de red admite el uso de esta herramienta o no.

Reglas para TCP wrappers

Antes de comenzar, recordemos que con el programa ldd podemos ver las librerías del sistema que son enlazadas dinámicamente a fin de ser utilizadas por un programa. Para que un servicio de red permita el uso de TCP wrappers como medida de protección, es necesario que utilice la librería libwrap.

Probemos con dos servicios conocidos (vsftpd y sshd), y con uno no que quizás no nos resulte familiar ahora pero que lo será en el futuro (apache2, el servidor web Apache). Si la salida del siguiente comando indica la presencia de la librería antes mencionada, el servicio en cuestión admite el uso de envoltorios TCP. Caso contrario, deberemos utilizar otras medidas de protección para el mismo (como un firewall).

sudo ldd $(which sshd) | grep libwrap
sudo ldd $(which vsftpd) | grep libwrap
sudo ldd $(which apache2) | grep libwrap

Veamos en la Fig. 1 los resultados:

Verificando si un servicio admite reglas para TCP wrappers
Figura 1 – Verificando si un servicio admite reglas para TCP wrappers

Como vemos, de los tres servicios que chequeamos en el ejemplo anterior solamente podemos utilizar envoltorios TCP con sshd y vsftpd. Ilustremos con el uso de un ejemplo.

Para permitir el acceso a SSH y FTP de manera local y al equipo con IP 192.168.0.103 solamente, agregaremos las siguientes dos líneas en /etc/hosts.deny:

sshd,vsftpd : ALL
ALL : ALL

mientras que en /etc/hosts.allow deberemos incluir:

sshd,vsftpd : 192.168.0.103,LOCAL

Si en el hosts.allow omitiéramos la palabra LOCAL en la lista de clientes permitidos, no podríamos acceder a los servicios mencionados de manera local, y solamente el cliente con IP 192.168.0.103 podría utilizarlos.

Es importante tener en cuenta que estos cambios toman efecto inmediatamente. Sin embargo, en el caso de vsftpd es necesario habilitar la opción tcp_wrappers=YES y reiniciar el servicio.

Espero que este post les haya resultado de utilidad. ¡Nos leemos en breve!