Vamos a ver, hace una semana, más o menos, pedí
ayuda a la lista con un equipo que estoy preparando para que haga de
proxy-firewall de una red. Pues bien, después de unas sugerencias parecía que
estaba funcionando el tema del proxy transparente (al menos para el puerto HTTP,
porque para FTP y HTTPS nunca lo conseguí). La sugerencia fue que habilitara el
puerto 3128 (el del proxy) en las reglas de iptables. Sin embargo, he estado
haciendo más pruebas, sobre todo porque quería quitarle la política por defecto
de ACCEPT y ponerla a DROP, cosa que en cuanto hago deja de funcionar. En
principio, tal y como tengo las reglas parece que para las conexiones entrantes
en la red el firewall funciona perfectamente, pero lo que yo ahora quería era
cambiar la política por defecto a DROP para que la gente que está dentro de la
red no se me conecte por puertos que no sean los que explícitamente yo haya
abierto, es decir, para que no me estén usando el emule, el kazaa, etc.
Ah, otra cosa que no he conseguido que funcione es
el HTTPS y el FTP con squid, desde el mismo momento en que redirecciono los
puertos al squid (443 para https y 20:21 para FTP) estos dejan de funcionar. En
este caso me gustaría a ver si hay alguien que pueda ayudarme.
Les adjunto el contenido de mi script para
iptables, aunque sé que es una jodienda le dejo los comentarios para que se vea
más claro lo que pretendo conseguir. Advierto que tal y como está los
ordenadores de la red local no acceden a internet ni nada por el estilo, y eso
que la política por defecto la tiene en ACCEPT.
######################################################################## # Instalando modulos
modprobe ip_tables modprobe iptable_nat modprobe ip_nat_ftp modprobe ip_conntrack_ftp modprobe ip_conntrack # variables
INTIF="eth0" # La tarjeta que va a la red local EXTIF="eth1" # La tarjeta que va a la red externa INTNET="X.X.X.0/24" # Direccion IP de la red interna INTIP="X.X.X.254/24" # Direccion IP de la tarjeta interna EXTIP="Y.Y.Y.1/24" # Direccion IP de la tarjeta externa UNIVERSO="0.0.0.0" # Con esto permitimos hacer forward de paquetes en
el firewall, o sea
# que otras máquinas puedan salir a traves del firewall. echo 1 > /proc/sys/net/ipv4/ip_forward # Borrar las reglas anteriores
iptables -F # Limpiar la cadena del usuario... Si existe
if [ "'iptables -L | grep drop-and-log-it'" ]; then iptables -F drop-and-log-it fi iptables -t nat -F
iptables -X iptables -Z #Estableciendo la politica por defecto
iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD DROP iptables -t nat -P PREROUTING ACCEPT iptables -t nat -P POSTROUTING ACCEPT # Creando la cadena de usuario para denegar y
registrar
iptables -N drop-and-log-it iptables -A drop-and-log-it -j LOG --log-level info --log-prefix "FIREWALL" iptables -A drop-and-log-it -j DROP # El localhost se deja
iptables -A INPUT -i lo -s $UNIVERSO -d $UNIVERSO -j ACCEPT # Permitir la conexiones SSH
iptables -A INPUT -p tcp -i $INTIF --dport 22 -j ACCEPT iptables -A INPUT -p tcp -i $EXTIF --dport 22 -j ACCEPT # Abrir el puerto para el proxy
iptables -A INPUT -p tcp -s $UNIVERSO -d $UNIVERSO --dport 3128 -j ACCEPT # Capturar todas las reglas, todos los intentos de
conexion son denegados y registrados (log)
iptables -A INPUT -s $UNIVERSO -d $UNIVERSO -j drop-and-log-it # Permitir la conexiones SSH
iptables -A OUTPUT -o $INTIF -p tcp --source-port 22 -j ACCEPT iptables -A OUTPUT -o $EXTIF -p tcp --source-port 22 -j ACCEPT # Abrir el puerto del proxy
iptables -A OUTPUT -d $UNIVERSO -p tcp --dport 3128 -j ACCEPT # Todas las demas salidas son denegadas y
registradas
iptables -A OUTPUT -s $UNIVERSO -d $UNIVERSO -j drop-and-log-it # Permite las conexiones
existentes/relacionadas
iptables -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED -j ACCEPT # Aceptamos que consulten los DNS
iptables -A FORWARD -s $INTNET -d $UNIVERSO -p tcp --dport 53 -j ACCEPT iptables -A FORWARD -s $INTNET -d $UNIVERSO -p udp --dport 53 -j ACCEPT # Permitir la conexiones SSH
iptables -A FORWARD -i $INTIF -o $EXTIF -p tcp --source-port 22 -j ACCEPT iptables -A FORWARD -i $EXTIF -o $INTIF -p tcp --source-port 22 -j ACCEPT # Abrir el correo
iptables -A FORWARD -s $UNIVERSO -d $UNIVERSO -p tcp --dport 110 -j ACCEPT # Abrir el FTP
iptables -A FORWARD -s $UNIVERSO -d $UNIVERSO -p tcp --dport 20:21 -j ACCEPT # Abrir el puerto del proxy
iptables -A FORWARD -s $UNIVERSO -d $UNIVERSO -p tcp --dport 3128 -j ACCEPT # Todos los demas intentos de pasar a traves del
cortafuegos son denegados
iptables -A FORWARD -s $UNIVERSO -d $UNIVERSO -j drop-and-log-it # Emascaramiento del trafico
saliente
iptables -t nat -A POSTROUTING -o $EXTIF -s $INTNET -j MASQUERADE # Redireccionamiento de los servicios
ordinarios
iptables -t nat -A PREROUTING -i $INTIF -p tcp --dport 80 -j REDIRECT --to-port 3128 ########################################################################
Y eso es todo, muchas gracias por su
ayuda
|