twitter
    Sigueme en el Twitter :-)

21 noviembre 2008

Yeah! Firewall + Proxy Transparente

El dia de ayer, sabado, le dijo a mi tia, que iría a formatear su pc y regresarla a XP :( (tenia Ubuntu y le gustaba), pero los pinches PDT no funcan en Linux asi es que ni modo, aparte que ya habian algunas cosas que cambiar en el disco duro y afines.
Bueno ya que su maquina tenia firestarter (era el antiguo firewall o sea era el server), me dije a mi mismo... ¿ubuntu server o Centos? lo estuve pensando por un laaargo rato, al final opte por centos...El nuevo server era una PIII (pc de la secre) ups!! sin problemas la instalación y demás ... así es que empezo la hora de la verdad FIREWALL.... Para que les voy a mentir, siempre he usado Firestarter, pero esta vez iba por lo serio... un iptables a lo macho !!! si señor.

Antes de hacerlo me lei varios how-tos por la web, e hice uno para llevarlo y probarlo, el primer firewall, funcó (omg!!), pero no era transparente :( o sea que tenia que poner la ip y puerto en el navegador web, aparte que mi adorado primin, no podia jugar Linage ... juas... pero si funciona todo, entra la msn, bloquea el pinche Ares.. que hagooo... me puse a revisar regla por regla, y nada... casi tiro la toalla, hasta que recorde que tenia un script firewall que alguna vez nxvl hizo, jejeje, asi es que lo puse en marcha... cambiando algunos parametros, el script funcionó, pero el pinche proxy no era transparente.... googleando (y para mas curioso), solo tuve que agregar esta regla:


/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
Donde eth0 es la tarjeta asignada para la red local, 3128 el puerto de Squid

Recapitulando, mi script era bueno, pero se necesitaba pulir, el script que tenia era igual que el mio, pero ya no habia problemas con el juego de mi primin, revisando las reglas que tenia del script de nvxl, cambie la que hizo, pero la de arriba y wooala!!! Proxy Transparente...... see.. casi lloro de la emocion, jajaja, ya lo demas fue "chizito" cambie algunas reglas para cerrar algunos puertos, y abri otros a pedido de mi primin, que no me dejo de que me fuera hasta que termine, en parte le agradesco porque me puse a estudiar iptables y lo logré... ahora no digo que sea un capo, no no no, aun tengo mucho que aprender, pero este es mi primer firewall con iptables y eso me alegra.

P.D Resumen:
S.O= Centos 5.2
Proxy= Squid 2.6
Firewall=script en iptables
Servicio DHCP
Samba + Quotas

Les dejo el script espero que les sirva... sls, en mi caso, como ya lo mencioné, cambie algunas reglas, abri/cerre puertos específicos y lo puse para que se inicie cada vez que se reinicie el server


#SCRIPT ELABORADO POR NICOLAS VALCARCEL aka nvxl
#!/bin/sh
#SCRIPT de iptables
##
##
##Activando modulos
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack
##
##
##Forwadeo
echo 1 > /proc/sys/net/ipv4/ip_forward
##
##
#DECLARACION DE VARIABLES
##
IPTABLES=/sbin/iptables
IP=/sbin/ip
EXTIF=eth0
INTIF=eth1
LAN=192.168.1.0/255.255.255.0
DEFVAL=ACCEPT
PROXY=192.168.1.2

## FLUSH DE REGLAS
$IPTABLES -F
$IPTABLES -X
$IPTABLES -Z
$IPTABLES -t nat -F

# APLICANDO REGLAS POR DEFECTO
iptables -P INPUT $DEFVAL
iptables -P FORWARD $DEFVAL
iptables -P OUTPUT $DEFVAL

## Permitir todo trafico al localhost
$IPTABLES -A INPUT -i lo -j ACCEPT
$IPTABLES -A OUTPUT -o lo -j ACCEPT

#### forward para el web server
$IPTABLES -t nat -A PREROUTING -i $EXTIF -p tcp --dport 80
-j DNAT --to 192.168.1.2:8080

##########MSN
$IPTABLES -A FORWARD -p TCP --dport 1863 -j REJECT
$IPTABLES -A FORWARD -p TCP --sport 1863 -j REJECT
#$IPTABLES -A FORWARD -p TCP -d 192.168.1.0/24 -j REJECT

## Redirigir trafico web al proxy
$IPTABLES -t mangle -A PREROUTING -j ACCEPT -p tcp --dport
80 -s $PROXY
$IPTABLES -t mangle -A PREROUTING -j MARK --set-mark 3 -p
tcp --dport 80
$IP rule add fwmark 3 table 2
$IP route add default via $PROXY dev $INTIF table 2

## Bloquear el trafico desde el puerto 25
$IPTABLES -t nat -A PREROUTING -i $INTIF -p tcp --sport 25
-j DROP

## Redireccionar el trafico de la red interna a internet
$IPTABLES -A FORWARD -i $INTIF -j ACCEPT

$IPTABLES -t nat -A POSTROUTING -o $EXTIF -s $LAN
-j MASQUERADE

No hay comentarios.: