Tutorial TCP−Wrappers Tcpwrappers TCP Wrappers es una herramienta simple que sirve para monitorear y controlar el tráfico que llega por la red. Esta he utilizada exitosamente en la protección de sistemas y la detección de actividades ilícitas. Fue desarrollada por Wietze esta basada en el concepto de Wrapper; es una herramienta de seguridad libre y muy útil. Introducción El gran desarrollo que han tenido las redes de computadoras han abierto a los usuarios posibilidades nunca antes imag Actualmente una persona puede tener acceso a información que está físicamente localizada del otro lado del Planeta, o cuestión de segundos con personas ubicadas a muchos kilómetros de distancia. Esto ha cambiado la forma como muchos de nosotros vemos y usamos a las computadoras. Sin embargo también ha ab a muchos problemas. A través de los mismos servicios de red que nos permiten difundir y obtener información, en mu sido posible obtener acceso no autorizado a los sistemas, permitiéndo a los intrusos utilizar recursos a los que no debe incluso realizar actos dañinos como robar o destruir información. Los requerimientos de la seguridad varían dependiendo de la complejidad de las tareas o actividades en las cuales se e cómputo y de la plataforma de equipo que éstas involucren. Las medidas de seguridad necesarias para proteger una PC que las medidas de seguridad necesarias para garantizar el funcionamiento continuo de una red de área local (LAN), y menores a las requeridas cuando se trata de una de red área amplia (WAN), que sería el caso de la conexión a INTERN TCP Wrappers permite controlar y proteger los servicios de red, limitando el acceso como sea posible, y registrado t para hacer el trabajo de detectar y resolver problemas de forma más fácil. ¿Qué es TCP−Wrappers? TCP Wrappers es una herramienta simple que sirve para monitorear y controlar el tráfico que llega por la red. Esta her utilizada exitosamente en la protección de sistemas y la detección de actividades ilícitas. Fue desarrollada por Wietze esta basada en el concepto de Wrapper; es una herramienta de seguridad libre y muy útil. ¿Qué es un Wrapper? Un Wrapper es un programa para controlar el acceso a un segundo programa. El Wrapper literalmente cubre la identid programa, obteniendo con esto un más alto nivel de seguridad. Los Wrappers son usados dentro de la Seguridad en Sistemas UNIX. Estos programas nacieron de la necesidad de mo comportamiento del sistema operativo sin tener que modificar su funcionamiento. Los Wrappers son ampliamente utilizados, y han llegado a formar parte de herramientas de seguridad por las siguiente • Debido a que la seguridad lógica esta concentrada en un solo programa, los Wrappers son fáciles y simp • Debido a que el programa protegido se mantiene como una entidad separada, éste puede ser actualizado cambiar el Wrapper. • Debido a que los Wrappers llaman al programa protegido mediante la llamada al sistema estándar exec un solo Wrapper para controlar el acceso a diversos programas que se necesiten proteger. Historia de TCP−Wrappers La historia del TCP Wrappers se remonta a 1990, cuando una de las máquinas de la Universidad de Eindhoven en Hol fuertes ataques por un Hacker alemán, que seguido obtenía privilegios de root. Cuando obtenía dichos privilegios intro 1 Tutorial TCP−Wrappers "rm −rf /". El comportamiento destructivo de este individuo hacía muy difícil averiguar que estaba pasando, dado que "rm −rf" re huella. Una noche Venema noto que el Hacker lo estaba observando a través de la red, esto lo realizaba mediante el co cual proporciona información de los usuarios de manera remota. Este tipo de servicio no requiere un password, y casi registro de su uso, por lo que fue el comienzo del diseño de un sistema que pudiera detectar y registrar información de realizadas. Descripción Esquema de Trabajo Para explicar cómo trabaja el TCP Wrappers, primero necesitamos entender cómo funcionan los servicios de red TC UNIX. Los servicios de red se basan en el modelo Cliente−Servidor. Por ejemplo, cuando alguien usa el comando telnet par servidor, el demonio del proceso telnet dentro del server es ejecutada actuando así como servidor, dando al usuario la poder accesar al sistema. Lo más común en sistemas Server es correr un Daemon que espera cualquier solicitud de conexión a través de la red. solicitud de conexión tiene lugar, este Daemon (Usualmente llamado inetd en Unix) corre el servicio apropiado y reg latente, en espera de otras solicitud de conexiones, como se ilustra en la figura: Una vez analizado el modo en que los servicios de red son inicializados en TCP/IP, veamos como lo hace TCP Wrapp ¿Para qué sirve TCP−Wrappers? El truco consiste en hacer un intercambio, se mueve el programa servidor de red a otro lugar, y se instala un programa servidor original de red. Siempre que una conexión tiene lugar, este programa registra el nombre del servidor remoto y servicio de red correspondiente como se ilustra: 2 Tutorial TCP−Wrappers TCP−Wrappers se compone de 5 programas: • tcpd. Es el demonio del TCP−Wrappers. • tcpdmatch. Predice como el tcpd manejaría una petición en específico. • tcpdchk. Verifica las reglas de control de acceso contenidas en los archivos /etc/hosts.allow y /etc/hosts.deny. • safe−finger. Versión de finger para implementar el finger reversivo. • try−from. Programa que permite probar si el sistema es capaz de reconocer qué máquina la esta contactando. Versión de TCP−Wrappers La versión que a continuación se describe como instalar es la versión 7.6 de distribución gratuita. ¿Dónde obtener TCP−Wrappers? Existen muchos lugares de donde obtener esta herramienta, pero los más conocidos son los siguientes: ftp://ftp.asc.unam.mx/pub/tools/tcp−wrappers.tar.gz ftp://ftp.win.tue.nl/pub/security/tcp_wrappers_7.6.tar.gz ftp://ftp.cert.org.pub/tools/tcp_wrappers/tcp_wrappers_7.6.tar.gz ftp://coast.cs.purdue.edu/pub/tools/unix/tcp_wrappers/tcp_wrappers_7.6.tar.gz Configuración de TCP−Wrappers 1. Descompactar el archivo tcp_wrappers_7.6.tar.gz para después extraer los archivos de esta herramienta. $ gunzip tcp_wrappers_7.6.tar.gz $ tar xvf tcp_wrappers_7.6.tar 2. Revisar en el archivo "/etc/inetd.conf" la ruta del directorio donde se encuentran los demonios de los servicios finger stream tcp nowait nobody /usr/sbin/in.fingerd in.fingerd telnet stream tcp nowait root /usr/sbin/in.telnetd in.telnetd 3 Tutorial TCP−Wrappers En este caso, se encuentran los demonios en /usr/sbin. 3. En el archivo Makefile buscar la cadena REAL_DAEMON_DIR donde aparecerán distintas opciones de ruta descomentar la que corresponda al directorio obtenido en el punto anterior. En este mismo archivo buscar la c FACILITY=LOG_MAIL y sustituirla por FACILITY=LOG_LOCAL0 a fin de que los mensajes generado registren por separado de los generados por el sendmail y para habilitar las extensiones del lenguaje y las opci buscar la cadena STYLE = −DPROCESS_OPTIONS y descomentar la línea. # SysV.4 Solaris 2.x OSF AIX REAL_DAEMON_DIR=/usr/sbin # FACILITY=LOG_LOCAL0 # LOG_MAIL is what most sendmail daemons use # #Optional: Turning on language extensions STYLE = −DPROCESS_OPTIONS # Enable language extensions. TIPS. LINUX RedHat 6.0: En el caso de LINUX RedHat 6.0 al momento de realizar la compilación se genera el siguiente error. percent_m.c:17: conflicting types for `sys_errlist' /usr/include/stdio.h:553: previous declaration of `sys_errlist' make[1]: *** [percent_m.o] Error 1 make[1]: Leaving directory `/home/security/tcp_wrappers_7.6' make: *** [linux] Error 2 Para evitar este problema realizar los siguientes pasos: a). Buscar las siguentes cadenas: linux: @make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \ LIBS= RANLIB=ranlib ARFLAGS=rv AUX_OBJ=setenv.o \ NETGROUP= TLI= EXTRA_CFLAGS="−DBROKEN_SO_LINGER" all b) Incluir dentro de la Definición de banderas extras del compilador C SYS_ERRLIST_DEFINED de forma que la linea quedará como sigue: linux: @make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \ LIBS= RANLIB=ranlib ARFLAGS=rv AUX_OBJ=setenv.o \ 4 Tutorial TCP−Wrappers NETGROUP= TLI= EXTRA_CFLAGS="−DBROKEN_SO_LINGER −DSYS_ERRLIST_DEFINED" all 4. Al ejecutar el comando make sin parámetros aparecerán las versiones de los sistemas operativos para los cual configurado. Ejecutar nuevamente make s.o. , donde s.o. es el sistema de la máquina correspondiente. $ make linux Al terminar la compilación existirán en el directorio actual los archivos ejecutables tcpd, tcpdmatch, tcpdchk safe_finger, los cuales serán copiados al directorio donde se encuentran los demonios de los servicios de red u este caso /usr/sbin). $ mv tcpd tcpdmatch tcpdchk try_from safe_finger /usr/sbin Instalación de TCP−Wrappers 1. Editar el archivo /etc/inetd.conf, sustituyendo todas las referencias a las rutas de los demonios de servicios de protocolo TCP/IP por la ruta donde se encuentra el tcpd. TIPS: hacer una copia de este archivo antes de editarlo finger stream tcp nowait nobody /usr/sbin/tcpd in.fingerd telnet stream tcp nowait root /usr/bin/tcpd in.telnetd 2. Se recomienda mantener el registro de las conexiones hechas por el tcpd en un archivo o bitácora. Se debe agr línea al archivo de configuración /etc/syslog.conf. local0.info /usr/local/adm/tcpd.log La bitácora puede crearse con el comando touch. $touch /usr/local/adm/tcpd.log 3. Reinicializar los demonios inetd y syslogd para que lean su nueva configuración de los archivos correspondien $ ps aux | egrep "inetd|syslogd" $ kill −HUP <pid_inetd> <pid_syslogd> A partir de este momento, el tcpd debe registrar todos los accesos a los servicios para los que se haya activado $ telnet localhost $ cat /usr/local/adm/tcpd.log Sep 28 18:42:59 server in.telnetd[29102]: connect from 127.0.0.1 Operación de TCP−Wrappers Lenguaje de Control de Acceso Patrones 5 Tutorial TCP−Wrappers El lenguaje de control de acceso implementa los siguientes patrones: • Una cadena que comience con el carácter "." • Una cadena que termine con el carácter "." • Una expresión de la forma n.n.n.n/m.m.m.m es interpretada como un patrón dir_red/mascara, es decir, la di máquina cliente coincide si dir_red es igual al AND lógico de la dirección y la mascara. Comodines Operador Descripción ALL. Si este comodin aparece en la lista de demonios dentro de una regla de control de acceso, entonces con cualquier nombre de demonios de red del sistema. Si aparece en la lista de clientes, entonces c con cualquier nombre o dirección de máquinas cliente. LOCAL. Este comodín coincide con cualquier cadena que no contenga el carácter ".", su principal uso se en la lista de clientes. EXCEPT. EXCEPT funciona como un operador que tiene un uso esperado de la siguiente forma: lista_1 EXC lista_2; lo cual coincide todo lo que se encuentre en la lista_1 a menos de que se encuentre en la lis Expansiones %a. Estos caracteres se expanden a la dirección de la máquina cliente. %h. Estos caracteres se expanden al nombre de la máquina cliente (o la dirección si el nombre no está disponi %d. Estos caracteres se expanden al nombre del demonio del servicio de red correspondiente a la petición. %p. Estos caracteres se expanden al identificador del proceso del demonio del servicio de red correspondiente %c. Este caracter se expande a la información del cliente ya sea el nombre de la cuenta junto con la dirección de la máquina cliente, dependiendo de cuánta información esté disponible. Archivos de Control de Acceso El tcpd soporta una forma sencilla para controlar los accesos a los servicios ofrecidos por nuestro sistema, los cuales p manejados ya sea por máquina, por servicio o por combinaciones de ambos. El tcpd revisa que servicio está siendo solicitado y desde donde con base a reglas de control de acceso que se encuentr siguientes archivos (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 Reglas Para el Control de Acceso Cada uno de los archivos de control de acceso consiste de cero o más líneas con el siguiente formato: list−daemons : list−hosts [ : comando−shell ] donde: 6 Tutorial TCP−Wrappers list−daemons list−hosts Lista de los nombres de los demonios (servicios). Lista de nombres, direcciones, o patrones de hosts que serán comparados con el nombre o di del host cliente que realiza la petición del servicio. Esta comparación se realiza de manera se línea por línea empezando por el archivo hosts.allow y terminando por el archivo hosts.deny búsqueda se suspende cuando una regla de control de acceso es activada. comando−shell Comando que podemos ejecutar, normalmente se utiliza para implementar anzuelos. Ejemplos de Archivos de Configuración. Ejemplo 1 /etc/host.deny # Niega todos los servicios a todas las maquinas cliente a menos de que # estén especificadas en el archivo hosts.allow ALL:ALL /etc/hosts.allow # En la primera regla se permite el acceso a los servicios de finger y ftp # solamente al dominio .dominio.mx in.fingerd, in.ftpd:.dominio.mx # En la segunda regla se permite el acceso a todos los servicios de red # solamente a máquinas que van desde la 132.111.222.8 a la 132.111.222.255 ALL:132.111.222. Archivo tcpd.log Sep 25 20:57:04 server in.fingerd[1698]: connect from 132.111.222.3 Sep 25 20:59:24 server in.telnetd[1706]: refused connect from 132.111.222.3 Sep 25 21:02:38 server in.fingerd[1721]: connect from 132.111.222.8 Sep 25 21:03:50 server in.fingerd[1727]: refused connect from otro.dominio.mx Ejemplo 2 /etc/hosts.deny # Niega todos los servicios a todos las máquinas excepto a una en 7 Tutorial TCP−Wrappers # específico: 132.111.222.8 ALL:ALL EXCEPT 132.111.222.8 Archivo tcpd.log Sep 22 13:35:44 server in.fingerd[18227]: refused connect from 132.111.222.9 Sep 22 13:37:39 server in.fingerd[18235]: connect from 132.111.222.8 Ejemplo 3 /etc/hosts.deny # Solamente se permite el servicio de finger para todo mundo excepto # para la máquina 132.111.222.8 ALL EXCEPT in.fingerd:ALL EXCEPT 132.111.222.8 Archivo tcpd.log Nov 22 14:08:35 server in.fingerd[18371]: connect from 132.111.222.3 Ejemplo 4 /etc/hosts.deny # No se permite el acceso a los hosts que van desde la # dirección 132.111.222.0 hasta la 132.111.222.7 ALL:132.111.222.0/255.255.255.248 Archivo tcpd.log Nov 24 16:04:33 server in.ftpd[28591]: refused connect from 132.111.222.3 Nov 24 16:05:04 server in.ftpd[28595]: connect from 132.111.222.21 Ejemplo 5 /etc/hosts.allow # Se permite el acceso a todo mundo menos a las máquinas de la red local ALL:ALL EXCEPT LOCAL Archivo tcpd.log 8 Tutorial TCP−Wrappers Aug 16 23:59:42 server in.telnetd[13347]: refused connect from hwisk Ejemplo 6 /etc/hosts.allow # Se permite el acceso a los dominio otro.dominio.mx a todos los servicios # de red y el servicio ftp solo al dominio mi.dominio.mx ALL:.otro.dominio.mx in.ftpd:.mi.dominio.mx Anzuelos TCP−Wrappers brinda anzuelos para la ejecución de comandos de shell cuando una regla para el control de acceso es activada.Consideremos la siguiente línea del "hosts.deny": ALL:ALL: (/usr/sbin/safe_finger −l @%h | /bin/mail root) En este caso se niega el acceso a todas las máquinas para todos los servicios de red en el sistema y además se impleme recursivo, es decir se hace un finger a la máquina cliente y la salida es enviada por correo electrónico a un usuario dete Date: Wed, 26 Nov 1997 19:37:29 −0600 From: root <[email protected]> To: [email protected] [otro.dominio.unam.mx] Login name: gugoanto In real life: Gutierrez Gomez Antonio No Plan. Banners Esta opción nos permite ser mas corteses cuando negamos la petición de servicios a máquinas cliente. Habilitación de la opción de Banners. Copiar el archivo Banners.Makefile que viene en la distribución del TCP−Wrappers en el directorio donde residirán n Dentro de este directorio crear y editar los archivos correspondientes a cada servicio con su respectivo mensaje. Editar Banners.Makefile en donde se puede identificar fácilmente la parte correspondiente a cada servicio de red. Sustituir l prototype por el nombre del archivo que contenga el mensaje de acuerdo al servicio de red correspondiente. Ejecutar el comando "make" para que actúe sobre el archivo Banners.Makefile. 9 Tutorial TCP−Wrappers Al finalizar el comando make, se habrán creado los archivos con el nombre de los servicios de red (in.ftpd, in.telnetd Linux) los cuales contienen los mensajes en un formato adecuado para que sean manejados por los demonios de los se Otros sitios relacionados • Center for Education and Research in Information Assurance and Security (CERIAS) • Computer Emergency Response Team (CERT) 10