Cortafuegos Debian/Iptables
-
¡Saludoss a todos!
Estoy tratando de montar un cortafuegos con Debian e iptables y me han surgido las siguientes dudas. A ver si entre todos me podéis ayudar
El cortafuegos en cuestión tiene instaladas dos tarjetas de red:
- eth0 con la ip 192.168.1.1/255.255.255.0 para comunicarse con la LAN.
- eth1 para comunicarse con internet.
El problema es que no se como tengo que configurar eth1.
¿Tengo que pasar el router ADSL a monopuesto y que eth1 tenga la ip/mascara publica del router?
¿Dejo el router en multipuesto como esta ahora? Si es este caso, ¿qué ip/mascara debe tener eth1?
Espero haberme explicado bien
Otra duda que me surge al montar el firewall es la siguiente:
eth01 – Se encarga de comunicarse con la lan. Por tanto cuando un cliente de la lan quiera salir a internet iptables deberá filtrar la salida sobre esta tarjeta de red ¿es correcto?
eth01 -- se encarga de controlar los accesos desde internet hacia mi lan, iptables controlará en esta tarjeta los accesos hacia dentro ¿es correcto?Saludoss y muchas gracias
-
Yo recomendaría poner el router en monopuesto y utilizar iptables para hacer NAT en vez de dejar que ese trabajo lo haga el router. La ventaja es que netfilter se puede "actualizar" de una forma modular y, por ejemplo, ser capaz de controlar mejor cosas como los ftp activos, el DCC, las conexiones de H323, etc.
En cuanto a lo de dónde se filtran las cosas que salen o entran a la LAN es importante que comprendas cómo funciona netfilter. Intentaré exponerlo de una forma breve:
Netfilter se compone de tablas, cada una de las cuales se destina a un "trabajo" distinto sobre los paquetes. Dichas tablas son "filter" (la tabla por defecto y que se encarga del filtrado de paquetes), "nat" (se encarga de modificar los campos de origen y destino en las cabeceras de los paquetes, posibilitando hacer NAT) y "mangle" (que se utiliza para la modificación de otros campos en las cabeceras de los paquetes).
Cada una de las tablas se divide en cadenas. Dependiendo del origen y el destino del paquete, dichos paquetes irán destinados a una cadena u otra. No todas las tablas tienen las mismas cadenas. De esta forma la tabla filter contiene las cadenas INPUT (para los paquetes que tienen como destino EL CORTAFUEGOS en sí), OUTPUT (para los paquetes que salen DEL PROPIO CORTAFUEGOS, es decir, los que genera ESE EQUIPO), y FORWARD (para los paquetes que ATRAVIESAN el cortafuegos en cualquier sentido, o sea, desde y hacia la LAN).
Por último, dentro de cada una de las cadenas están las reglas. Estas reglas se examinan SECUENCIALMENTE y, en cuanto un paquete coincide con una regla las siguientes reglas no se examinan (a menos que la regla envíe el paquete a LOG, ULOG o a otra cadena creada por el usuario).
Si se llega al final de la cadena sin que el paquete haya "coinicidido" con ninguna regla, se sigue la politica por defecto de la cadena (normalmente DROP o ACCEPT).No olvides activar ip_forwarding para que los paquetes puedan "atravesar" el cortafuegos (echo 1 > /proc/sys/net/ipv4/ip_forward).
Por último un pequeño ejemplo de un cortafuegos, que lo cierra todo a cal y canto
–-------- el script comienza aqui ------------
#!/bin/sh
eliminar rastros de antiguas reglas
iptables -F
iptables -t nat -F
iptables -X
iptables -t nat -Xcortar la entrada y permitir la salida
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
#luego se aceptará solo la salida (*1)
iptables -P FORWARD DROP#cargar modulos para DCC y FTP (mejor hacerlo en otro lado, depende de la distro)
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
modprobe ip_nat_ftp
modprobe ip_nat_irc#activar Masquerading
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE(*1) aceptar la salida de la LAN al exterior
iptables -A FORWARD -i eth0 -o eth1 -j ACCEPT
dejar entrar respuestas a conexiones
iptables -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
dejar que desde la lan se pueda conectar al cortafuegos sin restricciones
iptables -A INPUT -i eth0 -j ACCEPT
#dejar que el cortafuegos reciba respuestas a sus peticiones
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT---------------- el script termina aqui ----------------------
Seguro que me olvido de algo y que no funciona del todo bien (está hecho de un tirón de memoria y sin probar), pero espero que te hagas una idea de cómo va la cosa.
P.D. Se nota que estaba aburrido... ¿a que si?
-
Pues yo lo dejé en multipuesto, lo tendria que haber dejado en monopuesto pero me daba pereza y todo me funciona a la perfección con 3 equipos distintos saliendo a internet a traves del linux, lo único que me costó lo suyo fue hacer que una tarjeta fuese para el router y otra para la lan, este es el cutreapaño que hice yo aunque se puede hacer mejor:
'desconfiguro' eth0 y eth1
ifconfig eth0 down
ifconfig eth1 down#eth0 con ip tipo 172.16.0.x con netmask 255.255.0.0
ifconfig eth0 172.16.0.10 netmask 255.255.0.0 broadcast 172.16.0.255#eth1 con ip tipo 192.168.0.x con netmask 255.255.0.0
ifconfig eth1 192.168.0.10 netmask 255.255.255.0uso eth0 para salir al router (172.16.0.1)
route add -net 172.16.0.0 netmask 255.255.255.0 dev eth0
y eth1 para la lan
route add -net 192.168.0.0 netmask 255.255.255.0 dev eth1
Le digo por donde se sale a internet (gateway)
route add default gw 172.16.0.1 eth0
-
Gracias a los 2
Ahora ya lo tengo bastante más claro Me voy a buscar toda la información que pueda para configurar netfilter a mi gusto y ya os contare. Seguro que este no será mi último post sobre el tema.
Saludoss
-
Pues ahora tengo otro problema.
1 - Instalo debian con una tarjeta de red (eth0).
2 - Instalo más tarde la 2ª tarjeta de red (eth1).
3 - Configuro las ip/mascara para cada tarjeta:
ifconfig eth0 192.168.2.1 netmask 255.255.255.0 up
ifconfig eth1 192.168.1.5 netmask 255.255.255.0 up4 - ¡¡Vienen los problemas!!
Eth0 se ha quedado con las dos direcciones ip's (192.168.2.1 y 192.168.1.5).
Eth1 no tiene asignada ninguna ip.
Ejecuto el comando ifconfig para comprobar el estado de las tarjetas red y parecen estar bien configuradas. Eth0 tiene su ip y su dirección mac y lo mismo para eth1.
Además desde un cliente con la siguiente configuración…
C:\Documents and Settings\Rockman>ipconfig
Configuración IP de Windows
Adaptador Ethernet Conexión de área local 2 :
Sufijo de conexión específica DNS :
Dirección IP. . . . . . . . . . . : 192.168.2.2
Máscara de subred . . . . . . . . : 255.255.255.0
Puerta de enlace predeterminada : 192.168.2.1C:\Documents and Settings\Rockman>
... puedo hacer lo siguiente:
C:\Documents and Settings\Rockman>ping 192.168.1.5
Haciendo ping a 192.168.1.5 con 32 bytes de datos:
Respuesta desde 192.168.1.5: bytes=32 tiempo<1m TTL=255
Respuesta desde 192.168.1.5: bytes=32 tiempo<1m TTL=255
Respuesta desde 192.168.1.5: bytes=32 tiempo<1m TTL=255
Respuesta desde 192.168.1.5: bytes=32 tiempo<1m TTL=255Estadísticas de ping para 192.168.1.5:
Paquetes: enviados = 4, recibidos = 4, perdidos = 0
(0% perdidos),
Tiempos aproximados de ida y vuelta en milisegundos:
Mínimo = 0ms, Máximo = 0ms, Media = 0msC:\Documents and Settings\Rockman>ping 192.168.2.1
Haciendo ping a 192.168.2.1 con 32 bytes de datos:
Respuesta desde 192.168.2.1: bytes=32 tiempo<1m TTL=255
Respuesta desde 192.168.2.1: bytes=32 tiempo<1m TTL=255
Respuesta desde 192.168.2.1: bytes=32 tiempo<1m TTL=255
Respuesta desde 192.168.2.1: bytes=32 tiempo<1m TTL=255Estadísticas de ping para 192.168.2.1:
Paquetes: enviados = 4, recibidos = 4, perdidos = 0
(0% perdidos),
Tiempos aproximados de ida y vuelta en milisegundos:
Mínimo = 0ms, Máximo = 0ms, Media = 0msC:\Documents and Settings\Rockman>
¿Como configuró correctamente las tarjetas de red? A ver si podeis ayudarme
Saludoss
-
Deberias usar una ip del tipo 192.168.0.x para la tarjeta que vaya a tu LAN y una tipo 172.16.0.x para la que vaya a tu router.
¿Has configurado ambas tarjetas con route? con route y como te puse en mi script le dices al linux cual tarjeta ha de usar en función de a donde se quiera conectar, en mi caso eth0 para conectarse al router (172.16.0.1) y eth1 para la lan (192.168.0.x)
Espero que te funcione
-
¿Pero no estoy gastando ip's de diferentes subredes?
192.168.1.5/255.255.255.0 para el router
192.168.2.1/255.255.255.0 para la lanTambién probaré con route tal y como dices, tengo la corazonada que ese es el problema
Ya os cuento como me va más tarde
Saludoss