twitter
    Sigueme en el Twitter :-)
Mostrando las entradas con la etiqueta squid. Mostrar todas las entradas
Mostrando las entradas con la etiqueta squid. Mostrar todas las entradas

01 junio 2009

Squid + DansGuardian

Hace poco por razones de la vida, tuve que configurar DansGuardian + Squid, ya que me parecia algo curioso y pendiente que tenia, personalmente yo configuro arhivos planos y uso reglas ACL para el bloqueo de Web y accesos, pero quice probar como comente, DansGuardian, y aqui va la receta:

S.O Centos 5.3
1.- Instalamos dansguardian:
yum -y install dansguardian


2.- Instalamos squid:
yum -y install squid squid-common


3.- Nos dirigimos al directorio:
cd /etc/dansguardian


4.- Configuramos el fichero: dansguardian.conf

reportinglevel = 3
languagedir = '/etc/dansguardian/languages'
language = 'ukenglish'
loglevel = 3
logexceptionhits = on
logfileformat = 1
loglocation = '/var/log/dansguardian/access.log'
filterip = 127.0.0.1
filterport = 8181
proxyip = 127.0.0.1
proxyport = 3128
nonstandarddelimiter = on
usecustombannedimage = 1
custombannedimagefile = '/etc/dansguardian/transparent1x1.gif'
filtergroups = 1
filtergroupslist = '/etc/dansguardian/filtergroupslist'
bannediplist = '/etc/dansguardian/bannediplist'
exceptioniplist = '/etc/dansguardian/exceptioniplist'
banneduserlist = '/etc/dansguardian/banneduserlist'
exceptionuserlist = '/etc/dansguardian/exceptionuserlist'
showweightedfound = on
weightedphrasemode = 0
urlcachenumber = 3000
urlcacheage = 900
phrasefiltermode = 2
preservecase = 0
hexdecodecontent = 0
forcequicksearch = 0
reverseaddresslookups = off
reverseclientiplookups = off
createlistcachefiles = on
maxuploadsize = -1
maxcontentfiltersize = 256
usernameidmethodproxyauth = on
usernameidmethodident = off
preemptivebanning = on
forwardedfor = off
usexforwardedfor = off
logconnectionhandlingerrors = on
maxchildren = 120
minchildren = 8
minsparechildren = 4
preforkchildren = 6
maxsparechildren = 32
maxagechildren = 500
ipcfilename = '/tmp/.dguardianipc'
urlipcfilename = '/tmp/.dguardianurlipc'
pidfilename = '/var/run/dansguardian.pid'
nodaemon = off
nologger = off
daemonuser = 'nobody'
daemongroup = 'nobody'
softrestart = off
virusscan = on
virusengine = 'clamav'
tricklelength = 32768
forkscanlength = 32768
firsttrickledelay = 10
followingtrickledelay = 10
maxcontentscansize = 41904304
virusscanexceptions = on
urlcachecleanonly = on
virusscannertimeout = 60
notify = 2 # will notify the admin only
emaildomain = 'tony@tony-server.com'
postmaster = 'admin@tony-server.com'
emailserver = '127.0.0.1:25'
downloaddir = '/tmp/dgvirus'
clmaxfiles = 1500
clmaxreclevel = 3
clmaxfilesize = 10485760
clblockencryptedarchives = off
cldetectbroken = off
#clamdsocket = '127.0.0.1:3310'
accessdeniedaddress = 'http://YOURSERVER.YOURDOMAIN/cgi-bin/dansguardian.pl'


En mi caso: filterip,filterport, proxyip y proxyport, son valores importantes para la conexion de DansGuardian con Squid, si van a usar otros puertos, tengan presente los cambios.

5.- Para bloquear algunas webs de prueba, configuramos el archivo:
bannedsitelist, agregamos por ejm. youtube.com, hi5.com, etc (uno debajo de otro y sin WWW)

6.- Ahora nos dirigimos a configurar squid para que se pueda comunicar con Dansguardian:
vi /etc/squid/squid.conf


Agregamos estas lineas:

http_port 3128 transparent
http_port 127.0.0.1:3128
cache_peer 127.0.0.1 parent 8181 3130


7.- Reiniciamos los servicios:
service squid restart
service dansguardian restart

8.- Chekamos los servicios para que se inicien con el reboot del server:

chkconfig squid on
chkconfig dansguardian on


Luego probamos, y veremos que DansGuardian habrá bloqueado la web que hemos puesto en el ejemplo.
Espero que les ayude a investigar mas sobre esta combinación.
saludos

P.D no se olviden revisar el log de squid si tiene problemas
Sigue Leyendo...

25 mayo 2009

Recordando el primer proxy implementado

Revisando la data de mi USB, encontré esta pantalla de la primera vez que implemente un proxy, recuerdo que por aquellas épocas trabajaba como SysAdmin en un consorcio educativo, alla por chosica, y tenian speedy bussines 1MB 40 pc aprox. y Moodle, el drama era que cuando, los 40 usuarios ingresaban a la vez a la aplicación, solo 15 podian hacerlo, y los demás trabajaban desde sus casas. Esto me motivo a investigar mucho sobre proxys, recuerdo que mi sever era Edubuntu, el cual tenia LAMP, donde estaba desarrollando la futura web, bueno, luego de leer leer mucho, pude levantar el proxy, y a raíz de eso, pude implelemtar mas servicios como DHCP, DNS, y Firewall (firestater con una tarjeta de red), el resultado salto a la vista y la promotoría quizo invertir en linux. Resultado felíz, les pongo la pantalla que encontré:


Sigue Leyendo...

06 enero 2009

Configurando Squid 2.6.x

Bueno este How to es para aquellas personas que me andan preguntando como configurar de manera correcta Squid, no puedo creer que Jefes de Sistemas, lo implementen pero de una manera desastroza... Pero bueno, es mi labor corregir desastrez, bueno, Squid, presenta una configuración que no es dificil de aprender y/o optimizar, es más resulta mas ventajoso correrlo en sistemas BSD que en el propio Linux, pero bueno, empezemos.

Vamos a necesitar:
  • Sistema Operativo Centos 5.2

  • squid stable 2.6.x

  • Una o más pcs con windows o linux para las pruebas

  • IP del Proxy: 192.168.1.2

  • Bien empecemos:
  • Instalemos Squid: yum -y install squid

  • Luego, nos dirigimos al directorio: cd /etc/squid, y hacemos un backup del fichero squid.conf

  • Editemos el archivo squid.conf, con vim o nano

  • No voy a poner todo el archivo de configuración, solo lo más importante para que pueden tenerlo funcionando, no sean vagos!

  • http_port , define el puerto que usará Squid, por ejemplo:
    http_port 3128 ó http_port 2010

  • por razones muy obvias de la vida, la seguridad es muy importante, asi es que tenemos que decirle a Squid que solo escuche nuestra red lan, un ejemplo sería:
    http_port 192.168.1.2:3128

  • Por defecto, nadie está autorizado a conectarse al servidor proxy, excepto tu máquina. Lo que vamos hacer es crear una regla para nuestra Red Local así:

    acl redlan src 192.168.1.0-255.255.255.0


  • Ahora procedemos a dar acceso a nuestra red creada:
    #Recommended minimum configuration:
    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 to_localhost dst 127.0.0.0/8
    acl SSL_ports port 443 563
    acl Safe_ports port 80
    acl Safe_ports port 21
    acl Safe_ports port 443 563
    acl Safe_ports port 70
    acl Safe_ports port 210
    acl Safe_ports port 1025-65535
    acl Safe_ports port 280
    acl Safe_ports port 488
    acl Safe_ports port 591
    acl Safe_ports port 777
    acl CONNECT method CONNECT
    acl redlan src 192.168.1.0-255.255.255.0


  • Ahora le damos acceso total con salida a internet a nuestra red:
    http_access allow localhost
    http_access allow redlan

  • Es muy importante colocarlo debajo de "localhost" ya que Squid es jerárquico en las reglas, así que mucho cuidado...

  • Ahora le asignamos un tamaño a la caché de Squid:
    cache_dir ufs /var/spool/squid 800 16 256

  • Es muy importante tener un log de nuestro squid, por eso habilitamos la línea:
    access_log /var/log/squid/access.log

  • Ahora habilitamos el usuario que ejecuta squid
    cache_effective group squid

    cache_effective user squid

  • Para finalizar, buscamos el parámetro visible_hostname
    visible_hostname ip o nombre de tu server

  • Bien, ya tenemos Squid operativo, ahora falta solo un par de comandos:
  • Para que se ejecute cuando se reinicie el server:
    chkconfig squid on

  • Inicializamos la cache:
    squid -z

  • Ahora pasamos a iniciar squid:
    service squid start


  • Espero que les sea de ayuda, y tu, si tu, el que me pediste ayuda a las 7am de la noche, ya px. imprime esto y que sea tu biblia... :p
    Sigue Leyendo...

    17 diciembre 2008

    Squid con autenticacion

    Bueno, no es que esté de vago últimamente, pero bueno, hace poco decidí probar esto en squid, para ver que tan llamarivo es, y me agrado, lo que si, e visto que falta, es un sistema en el cual el mismo usuario pueda cambiar su contraseña y no depende del sysadmin, ahora también sería interesante poder integrar estas restricción por Ips y usuarios, aunque creo que esto se puede hacer con Ldap. No estoy seguro, pero ya le daré el tiempo necesario para verificar.

    Bueno empecemos el how to:

    Sistema Operativo: Centos 5.2

    Proxy: Squid 2.X - 3.X
  • Nos dirigimos a la carpeta /etc/squid y aqui creamos un archivo que se llame: "passwd" o el archivo que quieran ponerle.

  • Ahora le damos chmod 666 y chown squid:squid al archivito creado para que sea accesible por SQUID.

  • Bien, vamos bien, ahora, procedemos a ingresar los usuarios para el logeo, ojo, pestaña y ceja!, estos usuarios no son necesariamente USUARIOS DE NUESTRO SISTEMA, solo son usuarios para el logeo a internet por medio de SQUID. Una vez aclarado esto procedemos a crearlos: htpasswd /etc/squid/claves usuario1

  • Si queremos cambiar/agregar usuarios/contraseña, repetimos este procedimiento

  • Pasemos ahora al tema de fondo:Squid, aquí vamos a buscar la siguiente línea: auth_param basic program

  • Bien ahora vamos a proceder a agregar la dirección que sirve para la autenticación, nos debe de quedar así la línea anterior:
    auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd

  • Ahora procederemos a agregar la ACL respectiva:
    acl red local src 192.168.1.0/255.255.255.0
    acl password proxy_auth REQUIRED
    http_access allow redlocal password


  • Reiniciamos el servicio: service squid restart, y woalá.... ya tenemos autenticación, abrimos el navegador(el cual tiene la ip y puerto del proxy), y veremos que nos sale un promt, el cual nos pide usuario y contraseña, ingresamos los datos, y accedemos a internet.

    P.D deben tener en cuenta que Squid es jerárquico, así que usen bien la regla si quieren dar accesos a los usuarios por autenticacion. Y no se olviden de revisar su LOG. Cualquier error ...alli aparece.
    Sigue Leyendo...

    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

    Sigue Leyendo...

    26 diciembre 2007

    Bloquea MSN-LIVE usando SQUID

    Cuantos de nosotros, somos administradores de redes, y tenemos que liar con algunos usuarios, que usan horas del trabajo para chatear (si si lo admito yo tambien a veces lo hago), una de las soluciones es usar Iptables, pero a veces el dicho Msn, se "cuela", bueno, con esta regla de Squid, lo que haremos será cerrar todas las posibles salidas al dicho Msn.

    1.- No dirigimos a la carpeta donde tenemos Squid ($ cd /etc/squid)
    2.- usamos vi o vim: $ vim squid.conf
    3.- Agregamos lo siguiente:
    acl no_msn
    req_mime_type -i "/etc/squid/bloquea_msn"
    http_access deny all no_msn
    4.- Creamos en "/etc/squid" la carpeta bloquea_msn , y dentro de esta colocamos lo
    siguiente: ^application/x-msn-messenger$

    5.- Guardamos el archivo de configuración y reiniciamos squid: $ service squid restart
    P.D para debian/ubuntu: $ sudo ./squid restart

    Espero que les sirva, el día de ayer lo implemente con éxito y nadie entra al msn, jejejeje...
    tomado de referencia en: aqui1 , aqui2

    Sigue Leyendo...