Ir a contenido


Foto
- - - - -

Squid Sin Webserver?


  • Please log in to reply
9 replies to this topic

#1 Petrus

Petrus

    Super Advanced Member

  • Validating
  • PipPipPip
  • 1373 Mensajes:

Escrito 14 April 2009 - 09:34 AM

Hola peña,

Estoy configurando un servidor proxy con Squid e IPtables para redireccionar el tráfico y que sea transparente. Va a sustituir a uno de los que ya hay funcionando (a medias), pero sigue sin rular como es debido.

He hecho copypasta de los archivos de configuración, de las reglas y de todo. He conseguido hacerlo funcionar como gateway con NAT, peeeeero no hace caso de la directiva donde le indico las urls prohibidas. Aparte, he tenido que comentar dos líneas que dan error:

# acl DIRECT method DIRECT
# http_access allow DIRECT


Se definen asi las webs "baneadas":

acl negadas dstdomain "/etc/squid/url_negadas.txt"
http_access deny negadas


También tenemos una modificación/redirección en el caso de que accedan a una de las webs prohibidas:

proxyserver:/etc/squid# less /usr/share/squid/errors/Spanish/ERR_ACCESS_DENIED


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>ERROR: El URL solicitado no se ha podido conseguir</TITLE>
<STYLE type="text/css"><!--BODY{background-color:#ffffff;font-family:verdana,sans-serif}PRE{font-family:sans-serif}--></STYLE>
</HEAD><BODY onLoad=window.setTimeout("location.href='http://intranet'",60000)>
<script type="text/javascript">

var pagina = 'http://intranet';
var segundos = 0;

function redireccion() {

document.location.href=pagina;

}

setTimeout("redireccion()",segundos);

</script>

<H1>ERROR</H1>
<H2>El URL solicitado no se ha podido conseguir</H2>
<HR noshade size="1px">
<P>
Mientras se intentaba traer el URL:
<A HREF="%U">%U</A>
<P>
Ha ocurrido el siguiente problema:
<UL>
<LI>
<STRONG>
Acceso Denegado.
</STRONG>
<P>
Las reglas de control de acceso impiden que su petici&oacute;n sea
permitida en este momento. Contacte con su proveedor de servicios
si cree que esto es incorrecto
</P>
</UL>

(la direccion http://intranet la resuelve bien, ya lo he comprobado)

Tal vez sea porque no tengo ningún servidor web instalado en la misma máquina, como ocurre en los otros dos casos. ¿Es necesario? ¿Serviría uno sencillo como lighthttpd? ¿Como se comunican entre ambos? ¿Se debe definir un virtualhost antes?

Lo siento, estoy hecho un lio y jamás he configurado un proxy. Muchas gracias por la ayuda.

Este tema ha sido editado por Petrus: 14 April 2009 - 09:38 AM


#2 DrEaMeR86

DrEaMeR86

    Leecher

  • Hentais
  • 60 Mensajes:

Escrito 14 April 2009 - 03:24 PM

Tengo un proxy con Squid actualmente, para una intranet y va de perlas. Tengo incluso una lista de páginas prohibidas también. Lo que no me queda claro es que es lo que intentas hacer, porque eso de lighttpd, virtualhost, huh? XD

#3 Deadsunrise

Deadsunrise

    Speunaigh

  • Admin
  • 27632 Mensajes:

Escrito 14 April 2009 - 03:28 PM

Claro que es posible, si montas un servidor web sera para usar squid como reverse proxy (y para eso casi mejor usa nginx como usamos ahora en fl) pero para usarlo como un proxy normal no te hace falta servidor.

#4 Petrus

Petrus

    Super Advanced Member

  • Validating
  • PipPipPip
  • 1373 Mensajes:

Escrito 14 April 2009 - 05:23 PM

La cosa es que quien instalase los otros 2 Squids que tenemos corriendo en cada SuSE, ni trabaja aqui ni documentó nada. Le daría a "aceptar, aceptar, aceptar" y el último que arree. Al menos uno de ellos tengo que reemplazarlo porque está hecho mierda y la última vez que intenté actualizarle los paquetes, casi me lo cargo.

He copiado punto por punto la configuración de Iptables y Squid en el servidor Debian Lenny que he montado, y no veo donde está el fallo. De momento puedo usar el nuevo equipo como gateway y navegar a través de él, pero el Squid no hace ni puto caso y permite ver cualquier web. Ni siquiera se va llenando el /var/log/squid/access.log

Tiene 3 ethernets:
eth0: 192.168.1.C (LAN 1)
eth1: AA.AA.AA.AA (externa, gateway)
eth2: 192.168.2.C (LAN 2)


Configuración del Squid: (las lineas comentadas estan asi porque daban error)

http_port			   192.168.1.C:3128
http_port			   192.168.2.C:3128
# http_port			 AA.AA.AA.AA:3128

dns_nameservers		XX.XX.XX.XX
dns_nameservers		YY.YY.YY.YY
# Hay 3 DNS más...

refresh_pattern		 ^ftp:		   1440	20%	 10080
refresh_pattern		 ^gopher:		1440	0%	  1440
refresh_pattern		 .			   0	   20%	 4320

acl domain_name src 192.168.0.0/255.255.0.0
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 21 563 70 210 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl Safe_ports port 9696
acl CONNECT method CONNECT
# acl DIRECT method DIRECT
acl negadas dstdomain "/etc/squid/url_negadas.txt"

http_access deny negadas
http_access allow manager localhost
http_access allow aragondigital
#	http_access allow DIRECT
http_access allow SSL_ports
http_access allow CONNECT

http_access allow localhost
http_access deny all
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports


icp_access allow all
miss_access allow all

# httpd_accel_host virtual
# httpd_accel_port 80
# httpd_accel_with_proxy on
# httpd_accel_uses_host_header on

snmp_port 0
icp_port 0

maximum_object_size 150000 KB
error_directory /usr/share/squid/errors/Spanish

Iptables:

#Borramos todas las iptables creadas en el inicio

iptables -F
iptables -X
iptables -Z
iptables -t nat -F

#Hacemos enmascaramiento de red externa,interna y dmz para que un paquete enviado a traves de una ip local, y sea devuelto a traves #de una ip externa, se enmascare con la ip del firewall y sea este el encargado de devolvernosla. Le damos el paquete y el se encarga de # todo. SNAT y DNAT optimizan mas las iptables.


# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth3 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth2 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE

#Activamos el forward

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

#Ponemos politica por defecto para todas las I/O en aceptar todo

iptables -P OUTPUT ACCEPT
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT

#Redirigimos los puertos de la red local a internet para que sean gestionados por squid (ahora es por el puerto 3128)

#iptables -t nat -A PREROUTING -p tcp -s 192.168.1.0/24 -d 192.168.1.C -m multiport --dport 80,8080 -j REDIRECT --to-ports 3128
iptables -t nat -A PREROUTING -p tcp -s 192.168.1.0/24 -d AA.AA.AA.AA -m multiport --dport 80,8080 -j REDIRECT --to-ports 3128

#Activamos el mantenimiento en la comunicacion entre puertos para la politica input, por si hacemos peticion por un puerto y nos devuelven por otro

iptables -A INPUT -j ACCEPT -s 0.0.0.0/0 -d 0.0.0.0/0 -m state --state RELATED,ESTABLISHED

#Filtrado de puertos para la politica INPUT, encargada de paquetes con destino firewall.

iptables -A INPUT -p tcp -s 192.168.1.0/24 -d 0.0.0.0/0 -j ACCEPT
iptables -A INPUT -p tcp -s 194.143.215.32/26 -d 0.0.0.0/0 -j ACCEPT
iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 25 -j ACCEPT
iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 3306 -j ACCEPT
iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 21 -j ACCEPT
iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 20 -j ACCEPT
iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 110 -j ACCEPT
iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 143 -j ACCEPT
iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 993 -j ACCEPT
iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 995 -j ACCEPT
iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 8888 -j ACCEPT
iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 443 -j ACCEPT
iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 53 -j ACCEPT
iptables -A INPUT -p udp -s 0.0.0.0/0 --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 1433 -j ACCEPT
iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 12840 --j ACCEPT
iptables -A INPUT -p icmp -s 0.0.0.0/0 -j ACCEPT
iptables -A INPUT -p tcp -s 0.0.0.0/0 --dport 10000 -j ACCEPT

#Dropeamos al final ya que teniamos aceptar por defecto(si sabes lo que haces puedes quitar el accept)
iptables -P INPUT DROP

#Hacemos lo mismo para la politica FORWard, encargada del redireccionamiento de paquetes de nuestra red a otra.

iptables -A FORWARD -j ACCEPT -s 0.0.0.0/0 -d 0.0.0.0/0 -m state --state RELATED,ESTABLISHED
iptables -A FORWARD -s 192.168.1.0/24 -d 0.0.0.0/0 -j ACCEPT
iptables -A FORWARD -s 0.0.0.0/0 -d 192.168.1.0/24 -j ACCEPT

#iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -p tcp --dport 8080 -j ACCEPT
#iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -p tcp --dport 1863 -j ACCEPT
#iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -p tcp --dport 20 -j ACCEPT
#iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -p tcp --dport 21 -j ACCEPT
#iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -p tcp --dport 443 -j ACCEPT
#iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -p tcp --dport 25 -j ACCEPT
#iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -p tcp --dport 53 -j ACCEPT
#iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -p udp --dport 53 -j ACCEPT
#iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -p tcp --dport 1433 -j ACCEPT
#iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -p icmp -j ACCEPT

iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -p tcp -j DROP

(He editado las IPs y demas datos importantes para no comprometer nada de mi curro)

#5 Deadsunrise

Deadsunrise

    Speunaigh

  • Admin
  • 27632 Mensajes:

Escrito 14 April 2009 - 05:29 PM

las peticiones estan enviandose al squid? porque sino salen en el log probablemente ni le lleguen, con netstat en el servidor del squid ves conexiones cuando navegas con algun equipo?

Si te configuras el squid como proxy en el navegador ves los accesos en el log? te funcionan las paginas que quieres bloquear?

#6 DrEaMeR86

DrEaMeR86

    Leecher

  • Hentais
  • 60 Mensajes:

Escrito 14 April 2009 - 05:41 PM

Eso te iba a decir yo. Yo lo que tengo es en el destination de la redirección de puertos para que sea transparente -d ! LAN. Prueba colocando el puerto directamente en los navegadores como dice Deadsunrise.
Mi línea de squid para denegar es así:
acl denyconf url_regex -i "/etc/squid/deny.conf"
y luego
http_access deny zone denyconf

donde zone es mi lan
acl zone src 10.5.5.0/255.255.255.0
y en este archivo 1 línea por web así "http://web.adenegar.com"

#7 Petrus

Petrus

    Super Advanced Member

  • Validating
  • PipPipPip
  • 1373 Mensajes:

Escrito 14 April 2009 - 05:52 PM

Configurando manualmente el proxy sí que bloquea las páginas:

proxy:/var/log/squid# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address		   Foreign Address		 State
tcp		0	  0 192.168.2.C:3128	   0.0.0.0:*			   LISTEN
tcp		0	  0 192.168.1.C:3128	   0.0.0.0:*			   LISTEN
tcp		0	  0 127.0.0.1:25			0.0.0.0:*			   LISTEN
tcp		0	  0 192.168.1.C:3128	   192.168.1.DD:59901	 ESTABLISHED
tcp		0	  0 192.168.1.C:3128	   192.168.1.DD:59902	 TIME_WAIT
tcp		0	  0 192.168.1.C:3128	   192.168.1.DD:59900	 TIME_WAIT
...etc...

O sea, que no está haciendo bien la función de "proxy transparente". Debe ser problema de Iptables entonces...

El Squid no redirecciona a http://intranet porque tiene un problema extraño de resolución de DNS. Como estoy usando una IP externa algo chunga para probar, se solucionará cuando ponga la buena... espero

#8 Dhampir

Dhampir

    Hentai-sama

  • Hentais
  • PipPipPipPipPipPipPip
  • 4662 Mensajes:

Escrito 14 April 2009 - 06:05 PM

Haz un iptables (-L era?) y mira que la regla de prerouting realmente se está usando, según como duplica la misma regla con un job de Log.
Lo suyo sería depurar con tcpdump (tcpdump -ne src host 192.168.X.X and dst port 3128 p.ej.) o ngrep y ver que está pasando realmente.

Imagen enviada
"On the edge of the blade, but no one makes the hero bleed."


#9 Deadsunrise

Deadsunrise

    Speunaigh

  • Admin
  • 27632 Mensajes:

Escrito 14 April 2009 - 06:06 PM

Configurando manualmente el proxy sí que bloquea las páginas:

proxy:/var/log/squid# netstat -an
 Active Internet connections (servers and established)
 Proto Recv-Q Send-Q Local Address		   Foreign Address		 State
 tcp		0	  0 192.168.2.C:3128	   0.0.0.0:*			   LISTEN
 tcp		0	  0 192.168.1.C:3128	   0.0.0.0:*			   LISTEN
 tcp		0	  0 127.0.0.1:25			0.0.0.0:*			   LISTEN
 tcp		0	  0 192.168.1.C:3128	   192.168.1.DD:59901	 ESTABLISHED
 tcp		0	  0 192.168.1.C:3128	   192.168.1.DD:59902	 TIME_WAIT
 tcp		0	  0 192.168.1.C:3128	   192.168.1.DD:59900	 TIME_WAIT
 ...etc...

O sea, que no está haciendo bien la función de "proxy transparente". Debe ser problema de Iptables entonces...

El Squid no redirecciona a http://intranet porque tiene un problema extraño de resolución de DNS. Como estoy usando una IP externa algo chunga para probar, se solucionará cuando ponga la buena... espero



Entonces seguro que es por iptables si. Lo de que no te resuelva intranet no deberia tener que ver con el squid ya que la redireccion la hace por javascrip, el equipo desde el que te conectas es capaz de resolver "intranet" o ir directamente a esa url?

#10 Petrus

Petrus

    Super Advanced Member

  • Validating
  • PipPipPip
  • 1373 Mensajes:

Escrito 14 April 2009 - 06:19 PM

Entonces seguro que es por iptables si. Lo de que no te resuelva intranet no deberia tener que ver con el squid ya que la redireccion la hace por javascrip, el equipo desde el que te conectas es capaz de resolver "intranet" o ir directamente a esa url?


Eso es lo curioso, que el equipo 192.168.1.DD (cliente con navegador) resuelve de puta madre, pero el 192.168.1.C (que es el proxy y gateway), es incapaz de resolver nada.

Creo que acabaré antes usando un script de iptables bien hecho y adaptarlo a las necesidades del curro. Me pondría un Pfsense, pero no tiene nada parecido a fail2ban (y lo necesito como el comer).

Sigo investigando. Muchas gracias por las ayudas, asi me oriento mejor :y:




1 usuarios están leyendo este tema

0 miembros, 1 invitados, 0 usuarios anónimos