PDA

Ver la versión completa : Instalar y Configurar SQUID en Debian 6.0 Squeeze



mikrotikperu
27/05/2013, 00:50
Squid es un popular programa de software libre que implementa un servidor proxy y un dominio para caché de páginas web, publicado bajo licencia GPL. Tiene una amplia variedad de utilidades, desde acelerar un servidor web, guardando en caché peticiones repetidas a DNS y otras búsquedas para un grupo de gente que comparte recursos de la red, hasta caché de web, además de añadir seguridad filtrando el tráfico. Está especialmente diseñado para ejecutarse bajo entornos tipo Unix.
Squid ha sido desarrollado durante muchos años y se le considera muy completo y robusto. Aunque orientado principalmente a HTTP y FTP es compatible con otros protocolos como Internet Gopher. Implementa varias modalidades de cifrado como TLS, SSL, y HTTPS.

Características:

Squid posee las siguientes características:

Proxy y Caché de HTTP, FTP, y otras URL
Squid proporciona un servicio de Proxy que soporta peticiones http, HTTPS y FTP a equipos que necesitan acceder a Internet y a su vez provee la funcionalidad de caché especializado en el cual almacena de forma local las páginas consultadas recientemente por los usuarios. De esta forma, incrementa la rapidez de acceso a los servidores de información Web y FTP que se encuentra fuera de la red interna.

Proxy para SSL
Squid también es compatible con SSL (Secure Socket Layer) con lo que también acelera las transacciones cifradas, y es capaz de ser configurado con amplios controles de acceso sobre las peticiones de usuarios.

Jerarquías de caché
Squid puede formar parte de una jerarquía de caches. Diversos proxys trabajan conjuntamente sirviendo las peticiones de las páginas. Un navegador solicita siempre las páginas a un sólo proxy, si este no tiene la página en la caché hace peticiones a sus hermanos, que si tampoco las tienen las hacen a su/s padre/s... Estas peticiones se pueden hacer mediante dos protocolos: HTTP e ICMP.

ICP, HTCP, CARP, caché digests
Squid sigue los protocolos ICP, HTCP, CARP y caché digests que tienen como objetivo permitir a un proxy "preguntarle" a otros proxys caché si poseen almacenado un recurso determinado.

Caché transparente
Squid puede ser configurado para ser usado como proxy transparente de manera que las conexiones son enrutadas dentro del proxy sin configuración por parte del cliente, y habitualmente sin que el propio cliente conozca de su existencia. De modo predefinido Squid utiliza el puerto 3128 para atender peticiones, sin embargo se puede especificar que lo haga en cualquier otro puerto disponible o bien que lo haga en varios puertos disponibles a la vez.

WCCP
A partir de la versión 2.3 Squid implementa WCCP (Web Cache Control Protocol). Permite interceptar y redirigir el trafico que recibe un router hacia uno o más proxys caché, haciendo control de la conectividad de los mismos. Además permite que uno de los proxys caché designado pueda determinar como distribuir el tráfico redirigido a lo largo de todo el array de proxys caché.

Control de acceso
Ofrece la posibilidad de establecer reglas de control de acceso. Esto permite establecer políticas de acceso en forma centralizada, simplificando la administración de una red.

Aceleración de servidores HTTP
Cuando un usuario hace petición hacia un objeto en Internet, este es almacenado en el caché, si otro usuario hace petición hacia el mismo objeto, y este no ha sufrido modificación alguna desde que lo accedió el usuario anterior, Squid mostrará el que ya se encuentra en el caché en lugar de volver a descargarlo desde Internet. Esta función permite navegar rápidamente cuando los objetos ya están en el caché y además optimiza enormemente la utilización del ancho de banda.

SNMP
Squid permite activar el protocolo SNMP, este proporciona un método simple de administración de red, que permite supervisar, analizar y comunicar información de estado entre una gran variedad de máquinas, pudiendo detectar problemas y proporcionar mensajes de estados.

Caché de resolución DNS
Squid está compuesto también por el programa dnsserver, que se encarga de la búsqueda de nombres de dominio. Cuando Squid se ejecuta, produce un número configurable de procesos dnsserver, y cada uno de ellos realiza su propia búsqueda en DNS. De este modo, se reduce la cantidad de tiempo que la caché debe esperar a estas búsquedas DNS. fuente : es.wikipedia.org

Siempre es bueno un poco de teoría para calentar motores ahora si manos a la obra:
instalamos un linux normalmente recomendamos instalarlo en debian por ser bien estable , para la instalacion pueden ser clic aqui (http://www.inkalinux.com/foros/showthread.php?99-C%F3mo-instalar-un-servidor-Linux-con-Debian-6-0-Squeeze)

Una vez terminado con la instalacion en consola escribimos

lo siguiente:


apt-get update
apt-get upgrade
apt-get install squid3 beep

mikrotikperu
27/05/2013, 01:09
continuando ....

ejecutan este script en consola


echo "#================ Squid 3.x Conf ==================#
#
# Opciones de SQUID 3.x
#----------------------------------------------------------------------
http_port 5128 intercept
visible_hostname debian
icp_port 0
#----------------------------------------------------------------------
#error_directory /usr/share/squid3/errors/Spanish/
#----------------------------------------------------------------------
# Servidor DNS y Politica de Cambios
#----------------------------------------------------------------------
dns_nameservers 8.8.8.8 8.8.4.4
dns_retransmit_interval 5 seconds
dns_timeout 2 minutes
#----------------------------------------------------------------------
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl CONNECT method CONNECT

acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl SSL_ports port 443
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl Safe_ports port 1863 # MSN
#acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync

http_access allow manager localhost
http_access deny manager all
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
#----------------------------------------------------------------------
coredump_dir /var/spool/squid3
#----------------------------------------------------------------------
# Memoria reservada para cache
# Se recomienda que dedique aprox. 5MB de RAM por cada 1GB asignado a cache_dir
#----------------------------------------------------------------------
cache_mem 512 MB
#----------------------------------------------------------------------
# Maximo tamaño de archivo en cache de memoria
#----------------------------------------------------------------------
maximum_object_size_in_memory 128 KB
#----------------------------------------------------------------------
# Maximo y minimo tamaño de archivos cache en el Disco duro
#----------------------------------------------------------------------
maximum_object_size 30 MB
minimum_object_size 4 KB
#----------------------------------------------------------------------
# Sustituir archivos de cache cuando llegue a 96%
#----------------------------------------------------------------------
cache_swap_low 92
cache_swap_high 96
#----------------------------------------------------------------------
# Total de espacio en HD a ser usado por el cache, numero de carpetas,
# numero de subcarpetas en cache
# 100000 = 100 GB
#----------------------------------------------------------------------
cache_dir aufs /var/spool/squid3 100000 16 256
#----------------------------------------------------------------------
# Estandar de actualización de cache
# 1 mes = 10080 mins, 1 dia = 1440 mins
#----------------------------------------------------------------------
refresh_pattern -i \.jpg$ 14400 80% 43200 reload-into-ims
refresh_pattern -i \.gif$ 14400 80% 43200 reload-into-ims
refresh_pattern -i \.png$ 14400 80% 43200 reload-into-ims
refresh_pattern -i \.jpeg$ 14400 80% 43200 reload-into-ims
refresh_pattern -i \.bmp$ 14400 80% 43200 reload-into-ims
refresh_pattern -i \.tif$ 14400 80% 43200 reload-into-ims
refresh_pattern -i \.tiff$ 14400 80% 43200 reload-into-ims

refresh_pattern -i \.swf$ 14400 80% 43200 reload-into-ims
refresh_pattern -i \.html$ 10 20% 4320 reload-into-ims
refresh_pattern -i \.htm$ 10 20% 4320 reload-into-ims
refresh_pattern -i \.shtml$ 10 20% 4320 reload-into-ims
refresh_pattern -i \.shtm$ 10 20% 4320 reload-into-ims
refresh_pattern -i \.nub$ 2880 80% 21600 reload-into-ims
refresh_pattern -i \.exe$ 14400 80% 43200
refresh_pattern -i \.zip$ 14400 80% 43200
refresh_pattern -i \.mov$ 14400 80% 43200
refresh_pattern -i \.mpe?g?$ 14400 80% 43200
refresh_pattern -i \.avi$ 14400 80% 43200
refresh_pattern -i \.qtm?$ 14400 80% 43200
refresh_pattern -i \.viv$ 14400 80% 43200
refresh_pattern -i \.wav$ 14400 80% 43200
refresh_pattern -i \.aiff?$ 14400 80% 43200
refresh_pattern -i \.au$ 14400 80% 43200
refresh_pattern -i \.ram?$ 14400 80% 43200
refresh_pattern -i \.snd$ 14400 80% 43200
refresh_pattern -i \.mid$ 14400 80% 43200
refresh_pattern -i \.mp2$ 14400 80% 43200
refresh_pattern -i \.mp3$ 14400 80% 43200
refresh_pattern -i \.sit$ 14400 80% 43200
refresh_pattern -i \.zip$ 14400 80% 43200
refresh_pattern -i \.hqx$ 14400 80% 43200
refresh_pattern -i \.arj$ 14400 80% 43200
refresh_pattern -i \.lzh$ 14400 80% 43200
refresh_pattern -i \.lha$ 14400 80% 43200
refresh_pattern -i \.cab$ 14400 80% 43200
refresh_pattern -i \.rar$ 14400 80% 43200
refresh_pattern -i \.tar$ 14400 80% 43200
refresh_pattern -i \.gz$ 14400 80% 43200
refresh_pattern -i \.z$ 14400 80% 43200
refresh_pattern -i \.a[0-9][0-9]$ 14400 80% 43200
refresh_pattern -i \.r[0-9][0-9]$ 14400 80% 43200
refresh_pattern -i \.txt$ 14400 80% 43200
refresh_pattern -i \.pdf$ 14400 80% 43200
refresh_pattern -i \.doc$ 14400 80% 43200
refresh_pattern -i \.rtf$ 14400 80% 43200
refresh_pattern -i \.tex$ 14400 80% 43200
refresh_pattern -i \.latex$ 14400 80% 43200
refresh_pattern -i \.class$ 14400 80% 43200
refresh_pattern -i \.js$ 14400 80% 43200
refresh_pattern -i \.ico$ 14400 80% 43200
refresh_pattern -i \.css$ 10 20% 4320
#----------------------------------------------------------------------
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
#refresh_pattern (Release|Package(.gz)*)$ 0 20% 2880
refresh_pattern . 0 20% 4320
#----------------------------------------------------------------------
# Log de acessos por el cache o para SARG
#----------------------------------------------------------------------
logfile_rotate 7
access_log /var/log/squid3/access.log
access_log /var/log/squid3/error.log
cache_store_log none
#----------------------------------------------------------------------
# Otras configuraciones
#----------------------------------------------------------------------
half_closed_clients off
server_persistent_connections off
client_persistent_connections off
log_fqdn off
quick_abort_min 0 KB
quick_abort_max 0 KB
quick_abort_pct 95
max_filedescriptors 65536
cache_effective_user proxy
cache_effective_group proxy
#----------------------------------------------------------------------
# Manteniendo objetos recientes y pequeños en memoria
#----------------------------------------------------------------------
memory_replacement_policy heap GDSF
cache_replacement_policy heap LFUDA
#----------------------------------------------------------------------
# Sitios que se les niega el cache
#----------------------------------------------------------------------
acl nocache dstdomain .4shared.com .youtube.com .windowsupdate.com .gl$
no_cache deny nocache
#----------------------------------------------------------------------
# Negar cache para archivos con extension .asx e .asf |streaming|
#----------------------------------------------------------------------
acl asx url_regex -i \.asx$
cache deny asx
acl asf url_regex -i \.asf$
cache deny asf" >> /etc/squid3/squid.conf

Luego ejecutan para crear los directorios


/etc/init.d/squid3 stop
squid3 -z

Luego le echamos a correr el squid3


/etc/init.d/squid3 start

Comandos usados para verificar el estado del squid


squid -N -d 1 -D

tail -f /var/log/squid3/access.log

netstat -l

/etc/init.d/squid3 start

/etc/init.d/squid3 stop

/etc/init.d/squid3 restart



en este script debemos tener en cuenta que
estamos asignando 100 gigas en disco duro
nuestro hostname es: debian
los servidores DNS usamos de Google : 8.8.8.8 8.8.4.4
No hay restricciones de acl src origen
asignamos 512 MB ram para almacenar archivos pequeños
los refresh_pattern estan a gusto de cliente pero estos son los mas usados



Ya tenemos nuestro servidor squid listo para redireccionar el trafico y este pueda almacenar todo lo que pase en el puerto 80.

cvargasc
10/07/2013, 11:57
mi estimado tengo en casa levantado un servidor en debian 7 en una PC IBM PIII de 933Mhz, 128mb ram y 15GB disco duro, actualmente trabaja en como DNS Cache con BIND9, Samba y por ultimo le instale Squid para que trabaje como cache y me restrinja algunos sitios, palabra ya que mi intensión es controlar acceso a sitio no deseados a mi menor hija desde su tablet.

Actualmente squid ya esta en funcionamiento lo he probado desde firefox pero desde google chrome no podido configurar por que encuentro un mensaje donde indica que la conexión a internet es a traves de un proxy.

bueno buscando información en internet indican que squid hay que configurar lo de modo transparente para no estar configurando en cada navegador para que apunte al proxy.

ha grandes rasgos mi conexion a internet wifi es a traves de un nanostation Loco M5 que esta conectado por cable utp a eth0 de mi servidor con debian 7 que cuenta con dos interfaces de red, eth1 esta conectado a mi AP que de acceso a internet wifi 2.4Ghz a mi pc, tablet y telefonos moviles.

Eth0 y Eth1 de mi servidor trabajan como switch o brigde bajo la siguiente configuración en Interfaces

auto lo
iface lo inet loopback
auto br0
iface br0 inet static
address 192.168.100.10
netmask 255.255.255.0
gateway 192.168.100.1
network 192.168.100.0
broadcast 192.168.100.255
bridge_ports eth0 eth1
bridge_maxwait 0

mi resolv.conf
nameserver 127.0.0.1
nameserver 192.168.100.1

mi squid.conf
http_port 3128
cache_mem 42 MB
cache_dir ufs /var/spool/squid 500 16 256
acl miredcasa src 192.168.100.0/24
acl noway url_regex "/etc/squid/prohidos"
http_access deny noway
http_access allow miredcasa

te agradecer me puedas dar las pautas para squid funcione en modo transparente, gracias

ed182
10/07/2013, 19:21
Hola amigo , veo que quieres hacer lo correcto en algunos casos para evitarse el problema de modo de configurar en cada browser el proxy.

Mira a tu seteo que estas haciendo le falta unas cosas importantes.

mi squid.conf
http_port 3128 transparent
cachemem , ponle mas memoria aqui lo veo pobre

aca falto algo importante para que tus equipos entiendan que vas hacer transparente el proxy necesitas enrutar para que trafico 80 se redireccione al 3128 , dime usas iptables , puedes poner las reglas

aprendamos juntos ...

cvargasc
10/07/2013, 23:40
Mi estimado en:

http_port 3128 # no lo puse transparent por que todavia no esta en ese modo
cache_men 42 MB #le puse esta cantidad por que tutorial indican que debe ser la 3ra parte de la ram, que mi pc es 128MB, que cantidad recomiendas.

en el tema de iptables no tengo experiencia recien estoy mirando algunos tutoriales.

aprendamos juntos...

mikrotikperu
11/07/2013, 08:24
mi estimado tengo en casa levantado un servidor en debian 7 en una PC IBM PIII de 933Mhz, 128mb ram y 15GB disco duro, actualmente trabaja en como DNS Cache con BIND9, Samba y por ultimo le instale Squid para que trabaje como cache y me restrinja algunos sitios, palabra ya que mi intensión es controlar acceso a sitio no deseados a mi menor hija desde su tablet.

Actualmente squid ya esta en funcionamiento lo he probado desde firefox pero desde google chrome no podido configurar por que encuentro un mensaje donde indica que la conexión a internet es a traves de un proxy.

bueno buscando información en internet indican que squid hay que configurar lo de modo transparente para no estar configurando en cada navegador para que apunte al proxy.

ha grandes rasgos mi conexion a internet wifi es a traves de un nanostation Loco M5 que esta conectado por cable utp a eth0 de mi servidor con debian 7 que cuenta con dos interfaces de red, eth1 esta conectado a mi AP que de acceso a internet wifi 2.4Ghz a mi pc, tablet y telefonos moviles.

Eth0 y Eth1 de mi servidor trabajan como switch o brigde bajo la siguiente configuración en Interfaces

auto lo
iface lo inet loopback
auto br0
iface br0 inet static
address 192.168.100.10
netmask 255.255.255.0
gateway 192.168.100.1
network 192.168.100.0
broadcast 192.168.100.255
bridge_ports eth0 eth1
bridge_maxwait 0

mi resolv.conf
nameserver 127.0.0.1
nameserver 192.168.100.1

mi squid.conf
http_port 3128
cache_mem 42 MB
cache_dir ufs /var/spool/squid 500 16 256
acl miredcasa src 192.168.100.0/24
acl noway url_regex "/etc/squid/prohidos"
http_access deny noway
http_access allow miredcasa

te agradecer me puedas dar las pautas para squid funcione en modo transparente, gracias

Por lo que veo hizistes un bridge con tus dos tarjetas de red, ahora ordenemonos un poco si tu idea es usar IPtables entonces debes sacar de bridge y asignarle a cada ethernet su IP, luego si el problema anda en armar reglas de redireccionamiento DNAT puedes hacerle por dos vías sencillamente usando webmin (http://www.inkalinux.com/foros/showthread.php?113-Instalaci%F3n-de-Webmin-en-Debian-Linux) o shorewall (http://www.inkalinux.com/foros/showthread.php?164-Instalando-un-Firewall-modesto-en-Debian-con-shorewall) ahi juegas un poco gráficamente pronto detallaremos mas de IPTABLES mientras tanto jugamos con shorewall.

Por otro lado puedes armar el mismo esquema con una tarjeta de red conectado directo a una ethernet del mikrotik (modo paralelo) por eso no vi necesario, a menos que quieras armar un esquema bridge en el squid pero el bridge en tu caso solo pasaria transparente todos excepto el 80 entonces para que todo pase transparente tendria que usar en vez de transparent usarias tproxy pero creo que le estoy metiendo pie a esto cualquier duda ahi estamos.

saludos,

cvargasc
11/07/2013, 10:35
Por lo que veo hizistes un bridge con tus dos tarjetas de red, ahora ordenemonos un poco si tu idea es usar IPtables entonces debes sacar de bridge y asignarle a cada ethernet su IP, luego si el problema anda en armar reglas de redireccionamiento DNAT puedes hacerle por dos vías sencillamente usando webmin (http://www.inkalinux.com/foros/showthread.php?113-Instalaci%F3n-de-Webmin-en-Debian-Linux) o shorewall (http://www.inkalinux.com/foros/showthread.php?164-Instalando-un-Firewall-modesto-en-Debian-con-shorewall) ahi juegas un poco gráficamente pronto detallaremos mas de IPTABLES mientras tanto jugamos con shorewall.

Por otro lado puedes armar el mismo esquema con una tarjeta de red conectado directo a una ethernet del mikrotik (modo paralelo) por eso no vi necesario, a menos que quieras armar un esquema bridge en el squid pero el bridge en tu caso solo pasaria transparente todos excepto el 80 entonces para que todo pase transparente tendria que usar en vez de transparent usarias tproxy pero creo que le estoy metiendo pie a esto cualquier duda ahi estamos.

saludos,

buscando información sobre el tema encontré una forma para que funciono mi servidor proxy con squid en modo transparente es con iptables de la siguiente forma

en squid.conf en la linea de:
http_port 3128 transparent #quedo asi

desde el terminal escribimos la siguiente instrucción:

#iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128

en donde br0 es el nombre de interface de red modo bridge

pude probar desde la tablet de mi hija que las restricciones ya hacen efecto desde google chorme.

en el tutorial indican que para que surta efecto en forma definitiva hay guardarlo bajo la siguiente forma:

# iptables save
# service iptables restart

antes de ejecutar la opción guardar he buscado en donde es que guardan las reglas nuevas de iptables, pense que era iptables pero no podido encontrar mientras tanto sigo en buscando información de iptables en debian.

saliendo del tema, veo que el tutorial esta implementado con squid3 y en debian 6, no entiendo porque es que en debian 7 esta con esta versión anterior de squid, por otro lado me esta dando vueltas la idea de reeinstalar mi servidor desde cero para esta vez levantar primero el servidor proxy pero esta vez trabajando con dos tarjetas de red eth0 y eth1.

mi estimado dnsserver ya viene como parte de squid3 o se hace una instalacion aparte.

saludos

mikrotikperu
11/07/2013, 11:21
Si al parecer

# iptables save
# service iptables restart

Es para centos, pero yo no trabajo mucho con esa distro pero la solucion seria el script
la guardas en un archivo tal y le das ejecucion automatica al inicio del arranque del sistema.
seria aprox asi:


#touch /etc/init.d/iptables-firewall

#echo "iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128" >> /etc/init.d/iptables-firewall

#chmod +x /etc/init.d/iptables-firewall

#update-rc.d iptables-firewall defaults

Con estas reglas todo lo que pongas en ese script lo ejecutara automaticamente
sin necesidad que lo ejecutes manualmente como lei que estuvistes haciendo.

cvargasc
11/07/2013, 13:52
Si al parecer

# iptables save
# service iptables restart

Es para centos, pero yo no trabajo mucho con esa distro pero la solucion seria el script
la guardas en un archivo tal y le das ejecucion automatica al inicio del arranque del sistema.
seria aprox asi:


#touch /etc/init.d/iptables-firewall

#echo "iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 3128" >> /etc/init.d/iptables-firewall

#chmod +x /etc/init.d/iptables-firewall

#update-rc.d iptables-firewall defaults

Con estas reglas todo lo que pongas en ese script lo ejecutara automaticamente
sin necesidad que lo ejecutes manualmente como lei que estuvistes haciendo.

Gracias por la información mi estimado, lo pondré en practica