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:
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!