TCP-Wrappers permite controlar y proteger los servicios de red, limitando el acceso como sea posible, registrando todas las conexiones, para hacer el trabajo de detectar y resolver problemas de forma más fácil. Esta herramienta ha sido utilizada exitosamente en la protección de sistemas y la detección de actividades ilícitas. Fue desarrollada por Wietze Zweitze Venema y esta basada en el concepto de wrapper; es una herramienta de seguridad libre y muy útil.
Un wrapper es un programa que controla el acceso a un segundo programa. El wrapper literalmente cubre la identidad del segundo programa, obteniendo con esto un más alto nivel de seguridad.
Lo más común en sistemas *nix es correr un daemon que espera cualquier solicitud de conexión a través de la red. Cuando una solicitud de conexión tiene lugar, este daemon (usualmente inetd en unix) corre el servicio apropiado y regresa a su estado latente, en espera de otras solicitudes de conexiones, como se muestra:
Lo que hace TCP-Wrappers, consiste en hacer un intercambio, cuando una solicitud de conexión tiene lugar, el daemon que atiende esta solicitud es el de tcp-wrappers (tcpd), el cual revisa en sus archivos de control si la solicitud está permitida, y de ser así, permite la ejecución del servicio de red solicitado, en caso contrario se niega el acceso; en ambos casos, el daemon registra los datos de la solicitud (equipo remoto, servicio de red solicitado, fecha y hora) en la bitácora, como se ilustra:
TCP-Wrappers se compone de 5 programas:
- tcpd. Es el daemon de tcp-wrappers.
- tcpdmatch. Predice como tcpd manejaría una petición en específico.
- tcpdchk. Verifica las reglas de control de acceso contenidas en los archivos hosts.allow y hosts.deny.
- safe-finger. Versión de finger, para la implementación de finger reversivo.
- try-form. Permite probar si el sistema es capaz de reconocer que máquina la esta contactando.
El tcpd soporta una forma sencilla para controlar los acceso a los servicios ofrecidos por nuestro sistema, los cuales pueden ser manejados ya sea por máquina, por servicio o por combinaciones de ambos. Revisa que servicio está siendo solicitado y desde donde, con base a reglas de control de acceso que se encuentran en los archivos hosts.allow y hosts.deny, normalmente ubicados bajo el directorio /etc:
- hosts.allow. Contiene las reglas que especifican las máquinas y servicios que están autorizados.
- hosts.deny. Contiene las reglas que especifican las máquinas y servicios que NO están autorizados para ser utilizados en nuestro sistema.
La configuración de estos archivos, se realiza en el formato:
lista-daemons : lista-hosts [ : comando-shell ]
donde:
lista-daemons es la lista de los nombres de los daemons (servicios);
lista-hosts, lista los nombres, direcciones o patrones de hosts que serán comparados con el nombre o dirección del host cliente que realiza la petición del servicio. Esta comparación se realiza de manera secuencial, línea por línea, empezando por el archivo hosts.allow y terminado por el hosts.deny. La búsqueda se suspende cuando una regla de control de acceso es activada;
comando-shell es el comando, o comandos, que podemos ejecutar, normalmente se utiliza para implementar registro de las solicitudes.
Existen, básicamente, 3 palabras clave que se pueden utilizar en ambos archivos:
- ALL. Se refiere a cualquier host o servicio de red.
- LOCAL. Se refiere a todos los hosts, dados de alta en el archivo /etc/hosts de nuestro sistema.
- EXCEPT. Se usa para excluir algún host o servicio.
El código fuente lo podemos obtener de:
[…] puertos (telnet y ftp), verificar usuarios y permisos de los mismos, auditar las conexiones con TCP-Wrappers, implementar Sudo y sudosh, hacer un ligero hardening en […]
[…] se hace de manera cifrada; sin embargo, si nosotros quisiéramos que se auditaran las conexiones, TCP-Wrappers no podría darnos […]
gracias por la informacion muy buena ..