Según Wikipedia, TCP Wrapper ("Envoltorio de TCP") es un sistema de red ACL que trabaja en terminales y que se usa para filtrar el acceso de red a servicios de protocolos de Internet que corren en sistemas operativos (tipo UNIX), como Linux o BSD. Permite que las direcciones IP, losnombres de terminales y/o respuestas de consultas ident de las terminales o subredes sean usadas como tokens sobre los cuales filtrar para propósitos de control de acceso.
El código original fue escrito por Wietse Venema de la Universidad Tecnológica de Eindhoven, Países Bajos, entre los años 1990 y 1995. Desde el 1 de junio de 2001, el programa es lanzado bajo su propia licencia tipo BSD.
El tarball incluye una biblioteca llamada libwrap que implementa la funcionalidad en sí. Inicialmente, solo aquellos servicios que se creaban a partir de cada conexión a un super Servidor (como inetd) eran envueltos (de ahí su nombre) utilizando el programa 'tcpd'. Sin embargo, los demonios de servicio de red más comunes de hoy en día pueden ser enlazados contra libwrap en forma directa. Los demonios que operan sin crear descendientes de un super servidor usan esto, o un proceso único que maneja conexiones múltiples. En caso contrario, solo el primer intento de conexión se chequearía contra sus ACLs.
Al compararse con las directivas de control de acceso de una terminal, que comúnmente se encuentran en los archivos de configuración de los demonios, TCP Wrappers tienen el beneficio de una reconfiguración de ACL en tiempo de ejecución (es decir, los servicios no necesitan ser cargados nuevamente o reiniciados) y de una aproximación genérica a la administración de redes.
Si bien fue escrito para proteger servicios de aceptación de TCP y UDP, también existen ejemplos de uso para filtrado de ciertos paquetes ICMP (tales como 'pingd' – el contestador de pedidos de pings del espacio de usuario).
Utilizando TCP Wrappers en GNU/Linux
Los TCP Wrapper son comúmente utilizados para el control de acceso a los servicios protegidos por Xinetd, como por ejemplo FTPD y SSHD, colocando la palabra clave NAMEINARGS para poner a tcpd como el servicio en el "server" y el nombre del servidor como argumentos en el "server-args":
user = root
server = /usr/sbin/tcpd
server_args = /usr/sbin/sshd
En este caso antes de iniciar el sshd el daemon tcpd determina si el host es permitido, las conexiones fallidas se reportan a syslog. Además debemos denegar todos los servicios en hosts.deny.
$ sudo nano /etc/hosts.deny
ALL : ALL
Para enviar un corro al admin de los intentos fallidos:
ALL : ALL /bin/mail -s "Intento de conexión desde %c administrador@dominio.org"
Para habilitar servicios específicos en hosts.allow
$ sudo nano /etc/hosts.allow
#PERMITIR SSH
sshd : 192.168.24.0/255.255.255.0
#PERMITIR NFS
mountd : 192.168.24.0/255.255.255.0
portmap: 192.168.24.0/255.255.255.0
nfs : 192.168.24.0/255.255.255.0
Estos parámetros aceptan las conexiones a los servicios NFS, Portmap, Mount y SSH a la red 192.168.24.0 completa.
El acceso será otorgado cuando un par de daemon/cliente coincide en una entrada del fichero hosts.allow. En caso contrario el acceso será debegado cuando coinciden en el fichero hosts.deny. De cualquier otra forma el acceso será otorgado. En caso de no existir el fichero de control se tratará igual que si estuviese vacío y el acceso será retirado a todos.
Más info: LinuxHelp | RedHat Docs | Cyberciti
No hay comentarios:
Publicar un comentario