teoría-cortafuegos: (0.08) Un poco de teoría sobre cortafuegos Copyright Manel Marin @ 2000 Cubierto por la licencia GNU GPL disponible en http://www.gnu.org/copyleft/gpl.html Se puede copiar, distribuir y modificar libremente bajo los términos de la GPL e incluyendo siempre este párrafo 1- BREVE INTRODUCCIÓN A LOS CORTAFUEGOS Cortafuegos es el conjunto de medidas destinadas a limitar el acceso desde Internet a tu red interna y a tus servicios. Puede ser de tres tipos (aunque se pueden y deben montar a la vez): - De filtrado de paquetes - Proxys - Limitación de acceso a nuestros servidores privados *DUDA:* ¿Es adecuado considerar la limitación de acceso como un cortafuegos? ¿O mejor como una medida adicional? De hecho es seguridad Unix ¿no? 1.1- CORTAFUEGOS DE FILTRADO El cortafuegos de filtrado de paquetes es difícil de configurar, pero muy efectivo y consume pocos recursos. Básicamente son reglas que deben cumplir los paquetes que entran (INPUT), salen (OUTPUT) y son redirigidos (FORWARD) en nuestro sistema. Lo importante es entender que aceptar y que prohibir y porque, ya que cada versión de kernel utiliza herramientas diferentes y cada una con una sintaxis y bases diferentes: - kernel 2.0 ipfwadm - kernel 2.2 ipchains - kernel 2.4 iptables 1.2- PROXYS Aun no he profundizado con ellos, esto es lo que tengo entendido: En vez de permitir que nuestros clientes "hablen" directamente con Internet podemos obligarlos a hablar con un intermediario, que a su vez "habla" con Internet. Ese intermediario conoce el servicio empleado (por ejemplo www) y solo permite ese tipo de dialogo. Además podemos restringir con quienes dialogan nuestros usuarios, quien puede utilizar el servicio y hasta podemos registrar los accesos. Un proxy puede además tener caché (por ejemplo squid para www) 1.3- LIMITACIÓN DE ACCESO A NUESTROS SERVIDORES PRIVADOS [1] Es conveniente tomar medidas adicionales para proteger nuestros servicios privados, esto se debe de hacer de varias formas simultáneamente: Eliminando servidores no utilizados - No instalándolos - Evitando que arranquen Evitando que se pueda acceder a nuestros servidores - Restringiendo los interfaces en los que están activos [2] a) Usando la opción "bind", "interface" ó "listen on" del servicio b) Lanzando el servicio con xinetd en reemplazo de inetd y añadiendole la opción "interface" a su sección Prohibiendo el acceso - Usando el control de acceso del servicio [2] - Usando desde inetd el tcp-wrappers y hosts.allow / hosts.deny Reduciendo el riesgo en caso de vulnerabilidad (por si todo fallase) - Haciendo que los servicios no corran como root [2] - Encerrando los servicios en una cárcel "chroot" - Eliminando posibilidades de conseguir "root" a los usuarios [2] [1] Bueno este apartado es seguridad Unix genérica y se merece un manual por si solo... aquí solo enumero las ideas básicas. [2] Esto lo estoy investigando actualmente de forma activa. MAS AYUDA: Ver mis chuletas "S2-cortafuegos" y "S2-DOC"