Un equipo conectado al exterior es vulnerable. Mas vulnerable cuando esa encendido mucho tiempo y mas aun cuando tiene una ip fija. (puertos de servidores aparte).
Es necesario muchas veces instalar un cortafuegos - Firewall , que cierre completamente los puertos al exterior por mucho troyano o cuerpo extraño que tengamos dentro del equipo. Y muchas veces es necesario tambien negar a ciertos equipos el acceso a interfaces o determinados servicios.
Si quieres poner un servidor de internet, hacer que funcione un ordenador fagocitando del mldonkey 24*7*365 quieres dar internet por NAT a los ordenadores de tu LAN (para ver la web de linuca, para que si no ? :) ). entonces necesitas un cortafuegos. Solo no es recomendable un cortafuegos si tienes el ordenador sin conexión a ninguna red (practicamente nunca :).
La carga que provocara un firewall en el equipo va a ser pequeña en comparación con los beneficios. Hay muchas formas de instalarlo y como no, es iptables (ver articulo de Bolo, iptables en 5 min).
Ahora, tenemos que conocer al dedillo nuestra red. :
-Cuantos equipos son?
-Se sirven las ip por dhcp? (mmm, no muy recomendable)
-Que rangos de red van a tener y cuales seras las ip de los equipos?
-Hay diferentes redes?
-Se nos ha ocurrido poner un AP con wireless¿?¿? mmm que miedo :D
-bla bla bla
Supongamos a modo de ejemplo que tenemos lo siguiente:
-Un superequipo de servidor (lo de super, a partir de un pentium 120 y hasta sobra proceso :P): tiene el iptables, puede tener un proxi (squid) o algun servidor de correo: ip 192.168.0.1
-Dos o tres equipos clientes con ip conocidas 192.168.0.2 y .3 y .4
- Otro equipo con servidor web 192.168.0.5 (apache) p.def. puerto 80
- Una access point (wireless power). al que estamos pensando dejarle libre (192.168.0.100)para que la gente se conecte pero nos permita a nosotros y solo a nosotros conectarnos a internet y a nuestra red con una red privada virtual.
Ahora que ya lo sabemos , nos queda unirlo todo con el equipo que sera la puerta de enlace a internet o el gateway con la ip 192.168.0.1. Este equipo tendra dos tarjetas de red (o una y un usb adsl o cable o modem. una tarjeta a nuestro proveedor (ISP) y otra a nuestra red local (la enchufaremos a un hub o switch).
Este equipo es el que tiene configurado el iptables y tenemos dos formas de configurar este iptables: a manuca o con un asistente.
Ahora mismo, a poca gente le sobra el tiempo para aprender los comandos de configuración de iptables y menos aun para testearlo y asegurar que no hemos cometido un error en una de las 15 o tropecientas lineas que hemos escrito (a mano) (allow all!! :) !). Puesto que cometer errores es de humanos, y tambien aprendemos de estos errores, tengamos un pequeño objeto configurador de iptables ya testeado por mucha gente. Si tenemos las x arrancadas podemos utilizar FIRESTARTER, tiene un pequeño configurador que pregunta cuáles son los dispositivos de red que tenemos , y cuales son los servicios que proveemos para crear las reglas. Estas se pueden ir aumentando posteriormente.
Para el modo consola, (aprender a manejar este, ademas de sencillo nos hara faciles las cosas en equipos sin X que solo hagan de enrutador, firewall o servidor), este programa (que no es en si un programa, es un script) es el FIREWALL JAY(:D nada de calé ni confundir la j con g).
En este articulo nos centraremos en el Firewall - Jay . configurador de iptables.entre otras , sus cualidades son :(sin traducir)
· Access control to TCP/UDP ports
· TCP/UDP Flags Control
· ICMP Control
· UDP/TCP ports forwarding
· Synflood Control (Distributed Denial Of Services)
· Spoofing Control (Bad source ips)
· Denying hosts (IP/MAC)
· Spywares ip list included
· NAT/Masquerading (Internet sharing over a LAN)
· Support for tunneling with restricted access on ports (like vtund)
· Support for multiple internal interfaces
· Support for multiple external interfaces
· Setting up Type Of Service (TOS)
· Support for custom rules
· Support for Pre/Post scripts
· Support for ZorbIPTraffic (Bandwidth traffic analyser in real time http://www.atout.be)
· Log of bad tentatives
· And more ...
Es un script escrito en perl con un pequeño interfaz, aunque para los amantes de los archivos de configuración genera un archivo facil de retocar con todas las reglas.
Su configuración es sencilla y rapida, muy rapida. Debemos tener un kernel que soporte las iptables y su configuración es basicamente la siguiente:
Your kernel needs the netfilter modules. Here is an example of a 2.4.20 kernel configuration.
Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers
Networking options --->
[*] Network packets filtering (replace ipchains)
Networking options --->
IP: Netfilter Configuration --->
<M> Connection tracking (required for masq/NAT)
<M> FTP protocol support
<M> IRC protocol support
<M> IP tables support (required for filtering/masq/NAT)
<M> limit match support
<M> MAC address match support
<M> Packet type match support
<M> netfilter MARK match support
<M> Multiple port match support
<M> TOS match support
<M> LENGTH match support
<M> TTL match support
<M> tcpmss match support
<M> Connection state match support
<M> Connection tracking match support
<M> Unclean match support (EXPERIMENTAL)
<M> Packet filtering
<M> REJECT target support
<M> Full NAT
<M> MASQUERADE target support
<M> REDIRECT target support
<M> Packet mangling
<M> TOS target support
<M> MARK target support
<M> LOG target support
<M> TCPMSS target support
Una vez recompilado el kernel instalamos el script desde la web y pasamos a ejecutarlo en consola con "firewall-config.pl".
Al ejecutarlo veremos una pantalla tal que : .
Lo que haremos sera lo siguiente:
1º Seleccionemos el Internal interface (punto 1 ) donde deberemos pulsar la barra espaciadora para seleccionar el interface interno (generalmente, segun configuración eth0)
2º Seleccionemos el External interface (punto 2) -generalmente eth1
3º En el caso de que en el equipo que tiene las iptables y esta conectado a internet tengamos algun tipo de servidor tcp como apache o postfix, debemos abrir los puertos 80 y 25 (luego mas el pop o imap 110 994)- Introduzcamos entonces aqui los puertos separados por un espacio- Podemos añadir un rango si ponemos 20:90.--> Si tenemos un P2P tipo edonkey , miremos los puertos que utiliza y abramoslos.
4º Analogo al punto 3 pero con puertos UDP (mirar tambien los de los P2P)
5º forwarding o reenvio. Recordemos que tenemos un puerto 80 abierto en el equipo de la lan 192.168.0.5 pues seleccionemos el interfaz externo primero --> eth0 (en nuestro ejemplo) y luego el puerto que queremos dirigir al servidor (en este caso el 80), luego la ip del servidor (192.168.0.5) y luego el puerto de destino, por defecto el 80 , pero podriamos tener el apache en el 10080 y querer redirigirlo, este es el puto. Podriamos añadir varias reglas de forward y a equipos distintos, pero solo una ip del 192.168.0.1 a cada equipo de la LAN.(eso es otro cantar).
6º Forwarding UDP- analogo al punto 5 pero con UDP
7º -En este punto decidimos o no cerrar el acceso al exterior para el tcp a los equipos de la Lan. (por defecto no tocamos)
8º - Analogo al 7 pero UDP
9 En este punto configuraciónes basicas.
-Le decimos en el 9.1 que estamos conectados o no a un ISP que nos da la ip por DHCP. -
En el 9.2 si queremos que los equipos de la Lan tengan internet (punto importante) -> activar NAT.
-En el 9.3 le decimos cuales son nuestros servidores de DNS (segun el ISP)
9.5 Opciones de general LOGs , para que cree logs de las incidencias activamos o no lo que queramos (a gusto del consumidor). --> Si no se es Seguridad-Paranoico no tocar , si no activarlos todos y a flipar con un "tail -f /var/log/syslog". (existen utilidades que en lugar de logs nos permiten pegarle un vistazo al trafico-> "tcpdump -i ethX (X interfaz) > chupopterizado" :)
Pasariamos seguidamente al punto 10 y no le tocamos que ya tenemos bastante.
Ahora ya lo tenemos, salimos del chisme con quit , le decimos que lo grabe y no nos vendria mal reiniciar las reglas del firewall con (segun el caso) "/etc/init.d/fw-jay restart" . Añadira las reglas a las iptables y andando.
Mas o menos esta es una configuración basica y rapida, quedaria ver las reglas para evitar salidas al exterior, o en el caso del Access point 192.168.0.100 cerrarle las conexiónes a los equipos de la red y reenviarle las peticiones al 80 a nuestro apache local para que vea nuestras webs. Le podemos dejar que se baje las utilidades de nuestro ftp y como no , por si tiene windios, se baje una distro-live de linuca del equipo, para esto mirad Redlibre.net .
Este articulo espera servir de ayuda para todo aquel que quiera instalar un firewall bajo linux. Asi que responsabilidad=0.
Es una forma tambien de ver que las cosas que parecen dificilies en este SO, se pueden hacer faciles y no es necesario tener unos grandes conociemientos para realizar grandes cosas con linux.
Salu2 a todos y feliz navidad.
Pedro Luis García -- clipse arroba delpuerto punto com |