Linux problema para acceder a Internet (squid + dansguardian + iptables por defecto en DROP

refreegrata

Miembro Regular
Se incorporó
18 Mayo 2009
Mensajes
39
Buenas tardes estimados.

Estoy tratando de configurar mi servidor con iptables + squid + dansguardian.
Squid y dansguardian corriendo en el 3128 y 8080 respectivamente.
Mi intencin es dejar la poltica DROP por defecto. El problema es que cuando hago eso pierdo navegacin http. (https sigue funcionando).
El problema obviamente est en mi archivo de iptables. Tengo que agregar las excepciones para los puertos 8080 y 3128, pero por ms que intento no logro dar con la solucin. Aqu lo que llevo:

Código:
#!/bin/bash
# limpieza
iptables -F 
iptables -X
iptables -Z
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

# politica por defecto
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# --ACEPTADOS--
echo 1 > /proc/sys/net/ipv4/ip_forward

# local
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# http
iptables -A FORWARD -s 192.168.0.0/24 -d 0.0.0.0/0 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -s 0.0.0.0/24 -d 192.168.0.0/24 -p tcp --sport 80 -j ACCEPT

# https
iptables -A FORWARD -s 192.168.0.0/24 -d 0.0.0.0/0 -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -s 0.0.0.0/24 -d 192.168.0.0/24 -p tcp --sport 443 -j ACCEPT

# apache local
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

iptables -A FORWARD -s 192.168.0.0/24 -d 0.0.0.0/0 -p tcp --dport 21 -j ACCEPT
iptables -A FORWARD -s 0.0.0.0/24 -d 192.168.0.0/24 -p tcp --sport 21 -j ACCEPT

iptables -A FORWARD -s 192.168.0.0/24 -d 0.0.0.0/0 -p tcp --dport 23 -j ACCEPT
iptables -A FORWARD -s 0.0.0.0/24 -d 192.168.0.0/24 -p tcp --sport 23 -j ACCEPT

# email
iptables -A FORWARD -s 192.168.0.0/24 -d 0.0.0.0/0 -p tcp --dport 110 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -d 0.0.0.0/0 -p tcp --dport 143 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -d 0.0.0.0/0 -p tcp --dport 993 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -d 0.0.0.0/0 -p tcp --dport 995 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -d 0.0.0.0/0 -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -d 0.0.0.0/0 -p tcp --dport 465 -j ACCEPT
iptables -A FORWARD -s 0.0.0.0/24 -d 192.168.0.0/24 -p tcp --sport 110 -j ACCEPT
iptables -A FORWARD -s 0.0.0.0/24 -d 192.168.0.0/24 -p tcp --sport 143 -j ACCEPT
iptables -A FORWARD -s 0.0.0.0/24 -d 192.168.0.0/24 -p tcp --sport 993 -j ACCEPT
iptables -A FORWARD -s 0.0.0.0/24 -d 192.168.0.0/24 -p tcp --sport 995 -j ACCEPT
iptables -A FORWARD -s 0.0.0.0/24 -d 192.168.0.0/24 -p tcp --sport 25 -j ACCEPT
iptables -A FORWARD -s 0.0.0.0/24 -d 192.168.0.0/24 -p tcp --sport 465 -j ACCEPT

# ssh
iptables -A FORWARD -s 192.168.0.0/24 -d 0.0.0.0/0 -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -s 0.0.0.0/24 -d 192.168.0.0/24 -p tcp --sport 22 -j ACCEPT

# samba
iptables -A INPUT -s 192.168.0.0/24 -p udp --dport 137 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -p udp --dport 138 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 445 -j ACCEPT

# cups
iptables -A INPUT -s 192.168.0.0/24 -p udp -m udp --dport 631 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -p tcp -m tcp --dport 631 -j ACCEPT

# DNS nuestro.
iptables -A FORWARD -s 192.168.0.0/24 -d midns/24 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -s midns/24 -d 192.168.0.0/24 -p udp --sport 53 -j ACCEPT

iptables -A FORWARD -s 192.168.0.0/24 -d midns/24 -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -s midns/24 -d 192.168.0.0/24 -p tcp --sport 53 -j ACCEPT

# redireccion
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 3128 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/24 -p tcp --dport 80 -j REDIRECT --to-port 8080

# squid
iptables -A INPUT -i eth0 -p tcp --dport 3128 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o eth0 -p tcp --sport 3128 -m state --state ESTABLISHED -j ACCEPT

# dansguardian
iptables -A OUTPUT -o eth0 -p tcp --dport 8080 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --sport 8080 -m state --state ESTABLISHED -j ACCEPT

iptables -L -n -v


He intentado varias formas, pero no logro dar con la respuesta.
Obviamente si uso ACCEPT por defefcto funciona. Si no redirigo al 8080 igual funciona, pero no filtra.

Cualquier ayuda sera genial

Saludos
 

K3rnelpanic

non serviam
Miembro del Equipo
MOD
Se incorporó
1 Octubre 2007
Mensajes
6.048
Re: problema para acceder a Internet (squid + dansguardian + iptables por defecto en

Ests seguro que es en Iptables el error?, el log del squid dice algo cuando alguno de los clientes de la Lan navega y este registra eso en la cach cuando tienes las policy en ACCEPT?
 
Upvote 0

yakko

pingüino mal genio
Se incorporó
24 Agosto 2004
Mensajes
16.883
Re: problema para acceder a Internet (squid + dansguardian + iptables por defecto en

1) activa el connection tracking y saca esa cantidad de reglas duplicadas al pedo.
2) si vas a usar un proxy, no tiene ningn sentido dejar abierto la salida de la lan a la wan al puerto 80 y al 443
3) dejar abierto la salida desde la LAN a la WAN a telnet es una falla de seguridad ENORME
4) dejar abierto los puertos de salida desde la LAN a la WAN a los puertos de correo a cualquier destino tambin es una falla grave.
5) dejar la salida de la LAN a la WAN a SSH es la peor falla de seguridad del planeta.
6) midns/24 es una red completa, midns/32 es un slo host.

y la redireccin del 3128 al 8080 no tiene sentido.
 
Upvote 0

davidrios

Miembro Activo
Se incorporó
14 Diciembre 2011
Mensajes
1
Re: problema para acceder a Internet (squid + dansguardian + iptables por defecto en

1) activa el connection tracking y saca esa cantidad de reglas duplicadas al pedo.
2) si vas a usar un proxy, no tiene ningn sentido dejar abierto la salida de la lan a la wan al puerto 80 y al 443
3) dejar abierto la salida desde la LAN a la WAN a telnet es una falla de seguridad ENORME
4) dejar abierto los puertos de salida desde la LAN a la WAN a los puertos de correo a cualquier destino tambin es una falla grave.
5) dejar la salida de la LAN a la WAN a SSH es la peor falla de seguridad del planeta.
6) midns/24 es una red completa, midns/32 es un slo host.

y la redireccin del 3128 al 8080 no tiene sentido.


Jajaja ni dejaste espacio pa comentar algo.

Espero el socio cuente como le fu.
 
Upvote 0

refreegrata

Miembro Regular
Se incorporó
18 Mayo 2009
Mensajes
39
Re: problema para acceder a Internet (squid + dansguardian + iptables por defecto en

Haba dejado un poco de lado esto.

Tratando de estudiar y comprender un poco mejor iptables, he intentando aplicar lo que el gur Yakko indic, llegu a esto:
Código:
#!/bin/bash
# limpieza
iptables -F 
iptables -X
iptables -Z
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

iptables -A INPUT -p tcp --dport 3128 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -m state --state NEW -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -A INPUT -m state --state INVALID -j DROP
iptables -A OUTPUT -m state --state INVALID -j DROP

iptables -A FORWARD -s 192.168.0.0/24 -d 0.0.0.0/0 -p tcp --dport 443 -j ACCEPT
iptables -A FORWARD -s 0.0.0.0/24 -d 192.168.0.0/24 -p tcp --sport 443 -j ACCEPT

iptables -A FORWARD -s 192.168.0.0/24 -d servidor_correos -p tcp --dport 110 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -d servidor_correos -p tcp --dport 143 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -d servidor_correos -p tcp --dport 993 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -d servidor_correos -p tcp --dport 995 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -d servidor_correos -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -s 192.168.0.0/24 -d servidor_correos -p tcp --dport 465 -j ACCEPT
iptables -A FORWARD -s servidor_correos -d 192.168.0.0/24 -p tcp --sport 110 -j ACCEPT
iptables -A FORWARD -s servidor_correos -d 192.168.0.0/24 -p tcp --sport 143 -j ACCEPT
iptables -A FORWARD -s servidor_correos -d 192.168.0.0/24 -p tcp --sport 993 -j ACCEPT
iptables -A FORWARD -s servidor_correos -d 192.168.0.0/24 -p tcp --sport 995 -j ACCEPT
iptables -A FORWARD -s servidor_correos -d 192.168.0.0/24 -p tcp --sport 25 -j ACCEPT
iptables -A FORWARD -s servidor_correos -d 192.168.0.0/24 -p tcp --sport 465 -j ACCEPT

iptables -A FORWARD -m mac --mac-source my_mac -d 192.168.0.0/24 -p tcp --dport 22 -j ACCEPT

# samba
iptables -A INPUT -s 192.168.0.0/24 -p udp --dport 137 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -p udp --dport 138 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 139 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -p tcp --dport 445 -j ACCEPT

# cups
iptables -A INPUT -s 192.168.0.0/24 -p udp -m udp --dport 631 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -p tcp -m tcp --dport 631 -j ACCEPT

# redireccion
iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.0/24 -p tcp --dport 80 -j REDIRECT --to-port 8080

# DNS
iptables -A INPUT -s 192.168.0.0/24 -d ip_del_proxy -p udp -m udp --dport 53 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -d ip_del_proxy -p tcp -m tcp --dport 53 -j ACCEPT

iptables -A INPUT -s dns_isp -d ip_del_proxy -p udp -m udp --dport 53 -j ACCEPT
iptables -A INPUT -s dns_isp -d ip_del_proxy -p tcp -m tcp --dport 53 -j ACCEPT

iptables -A INPUT -j LOG
iptables -A INPUT -j DROP
iptables -A FORWARD -j DROP

iptables -A OUTPUT -o eth0 -j ACCEPT
iptables -L -n -v

Al final coloqu el OUTPUT en ACCEPT, que es lo mismo que si el OUTPUT en la poltica popr defecto estuviera en ACCEPT. Esto ya que si lo dejaba en DROP no consegua navegar. Supongo que sera una cosa mnima, pero no d con la regla adecuada.

Por otra parte configure un dns con bind en el mismo pc proxy que hace un forwarding al del ISP, y que solo uso para denegar el acceso a los clsicos sitios que funcionan por https.

Lo que me va faltando es ahora una forma de bloquear los tpicos programas tipo tor, ultrasurf y similares. La verdad es que leyendo otros post veo que las opciones estaran en:

- bloquear el 443 y permitir solo lo deseado (esta idea no es de mi agrado)
- limitar el ancho de banda en el puerto (esta idea no es de mi agrado)
- dejar el proxy como no transparente (esta idea me gusta)

El problema que me produce lo de dejar el proxy NO transparente es que por ac ms de la mitad de los equipos son notebooks, ya que la mitad del tiempo son ocupados para "trabajar en terreno" (lase entre comillas). Entonces si les dejo un proxy configurado imagino que no van a poder acceder a Internet afuera ... quizs crear un bat para configurar ese elemento

De momento las pginas https que quiero denegar estn siendo bloqueadas por el DNS. Como denegu el acceso a otros DNS que no fueran el local tampoco pueden cambiar su DNS por otro. Si usan un de estos programas tipo Ultrasurf, ah s saltan el bloqueo.

Saludos
 
Upvote 0

yakko

pingüino mal genio
Se incorporó
24 Agosto 2004
Mensajes
16.883
Re: problema para acceder a Internet (squid + dansguardian + iptables por defecto en

no cambiaste nada de lo que te dije.
 
Upvote 0

refreegrata

Miembro Regular
Se incorporó
18 Mayo 2009
Mensajes
39
Re: problema para acceder a Internet (squid + dansguardian + iptables por defecto en

no cambiaste nada de lo que te dije.

Ah me mataste. Yo pens que esa configuracin era bastante apegada a lo que me recomendabas. Ya saba yo que tena que haber seguido dedicandome a la contabilidad.

Ahora lo edit un poco y sali esto que es como la versin 3, aunque en realidad es como el ensimo intento

Código:
#!/bin/bash
# 1.- Forwarding. Revisar tambien /etc/sysctl.conf
echo 1 > /proc/sys/net/ipv4/ip_forward

# 1.- Modulos que podrian necesitar ser habilitados
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

# 2.- Limpieza de las reglas previas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X

# 3.- Politica por defecto en DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

# 4.- Rango utilizado por UltraSurf
iptables -A FORWARD -d 65.49.14.0/24 -j LOG --log-prefix "=UltraSurf= "

# 5.- Loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# 6.- Conexiones establecidas
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# 7.- Paquetes invalidos
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
iptables -A OUTPUT -m conntrack --ctstate INVALID -j DROP

# 8.- Paso libre para https
iptables -A FORWARD -p tcp -m tcp -s 192.168.0.0/24 --dport 443 -j ACCEPT

# 9.- Email POP, POP SSL 
iptables -A FORWARD -s 192.168.0.0/24 -d ip_servidor_correo -p tcp --dport 110 -j ACCEPT
iptables -A FORWARD -d 192.168.0.0/24 -s ip_servidor_correo -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -s 192.168.0.0/24 -d ip_servidor_correo -p tcp --dport 995 -j ACCEPT
iptables -A FORWARD -d 192.168.0.0/24 -s ip_servidor_correo -p tcp --sport 995 -j ACCEPT

# 10.- Email SMTP, SMTP SSL 
iptables -A FORWARD -s 192.168.0.0/24 -d ip_servidor_correo -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -d 192.168.0.0/24 -s ip_servidor_correo -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -s 192.168.0.0/24 -d ip_servidor_correo -p tcp --dport 465 -j ACCEPT
iptables -A FORWARD -d 192.168.0.0/24 -s ip_servidor_correo -p tcp --sport 465 -j ACCEPT

# 11.- SSH
iptables -A INPUT -m mac --mac-source mi_mac -d ip_proxy -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m mac --mac-source mi_mac -d ip_pc_externo -p tcp --dport 22 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT

# 12.- Servicio Apache local
iptables -A INPUT -s 192.168.0.0/24 -d ip_proxy -p tcp -m tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT

# 13.- Salida a DNS ISP desde Proxy
iptables -A OUTPUT -d ip_dns_isp -s ip_proxy -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
iptables -A OUTPUT -d ip_dns_isp -s ip_proxy -p tcp -m tcp --dport 53 -m conntrack --ctstate NEW -j ACCEPT

# 14.- Consulta de los clientes al DNS instalado en el proxy
iptables -A INPUT -s 192.168.0.0/24 -d ip_proxy -p udp -m udp --dport 53 -m conntrack --ctstate NEW -j ACCEPT
iptables -A INPUT -s 192.168.0.0/24 -d ip_proxy -p tcp -m tcp --dport 53 -m conntrack --ctstate NEW -j ACCEPT

# 16.- Redireccion de los paquetes para filtrado
iptables -t nat -A PREROUTING -i eth0 -m iprange --src-range 192.168.0.6-192.168.0.254 -p tcp --dport 80 -j REDIRECT --to-ports 8080

# 17.- Permitir entrada a dansguardian
iptables -A INPUT -i eth0 -p tcp --dport 8080 -m conntrack --ctstate NEW -j ACCEPT

# 18.- Salida desde squid al exterior
iptables -A OUTPUT -o eth0 -s ip_proxy -p tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
iptables -A OUTPUT -o eth0 -s ip_proxy -p tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT

iptables -L -v -n

Ah pude dejar el INPUT, OUTPUT y FORWARD en DROP por default, y trat de utilizar las propiedades que da connection tracking (y que an no entiendo del todo); excepto para el email, por que no consegua que funcionara. Lo de los origenes y destinos de ssh y mail lo restring bastante

Para el ultrasurf estoy utilizando la tcnica de fail2ban y la verdad es que est funcionando bastante mejor de lo que esperaba. Se que no va a ser igual que si dejara el proxy NO transparente, o si bloquease la navegacin por defecto a travs del 443; pero es algo. Por otra parte, la navegacin va lenta; tan lenta que no creo que alguien se interese por usarla.
 
Upvote 0

yakko

pingüino mal genio
Se incorporó
24 Agosto 2004
Mensajes
16.883
Re: problema para acceder a Internet (squid + dansguardian + iptables por defecto en

nada del conntrack que pusiste es til y sigues duplicando reglas.

a penas tenga tiempo te corrijo algunas cosas.
 
Upvote 0

refreegrata

Miembro Regular
Se incorporó
18 Mayo 2009
Mensajes
39
Re: problema para acceder a Internet (squid + dansguardian + iptables por defecto en

GRacias por responder

Por otra parte, la navegacin va lenta; tan lenta que no creo que alguien se interese por usarla.
Quise decir "La navegacin por TOR" es lenta. No he probado otros programas de este tipo

El tema del connection tracking an no lo entiendo demasiado. Lo que he notado es que ahora, que veo los estados de la conexin, he podido eliminar algunas reglas que antes no poda.

Por ejemplo en lo del DNS tena el doble de reglas, ya que deba configurar el input y el output al momento de recibir consultas al dns interno y al consultar desde el proxy al dns del isp. Y lo mismo sucedi con el SSH, y lo de especificar explicitamente los permisos para acceso a los puertos de squid que ahora no fue necesario declarar. Bueno, con el email no me funcion y por eso lo dej as. A parte de eso no entiendo an todas las ventajas del conntrack. Voy a re-leer con un poco ms de dedicacin los manuales.

Saludos
 
Upvote 0
Subir