tcp-ip

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:

1

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:

2

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:

ftp://ftp.porcupine.org/pub/security/index.html