Montar proxy squid3 en Ubuntu

Las ventajas de instalar un proxy en nuestra red son muchas:

Control de usuarios que acceden a internet, así como de páginas visitadas.

Velocidad de acceso a páginas, ya que permite el cacheo.

Filtrado, tanto de las IP origen que pueden acceder al proxy, como de las páginas que pueden visitar.

Anonimato, todos salen a través del proxy y el control reside en el administrador del mismo.

Hoy le damos un repasito a uno de los famosos, en Ubuntu: SQUID3.

Para instalar, tan sencillo como apt-get install squid3. Así que, instala el CALAMAR 😉

Squid
Squid

En /etc/squid3 vamos a encontrar squid3.conf, el archivo de configuración del proxy.

ACL

Las listas de acceso se pueden definir tanto de origen (IP que acceden al proxy) como de destino (IP visitadas por los usuarios). La sintaxis es:

acl nombre_acl tipo_acl descripción …

acl nombre_acl tipo_acl “fichero_de_descripciones” …

Por tipo_acl, podemos tener:

src

Cuando indicamos una lista de IPs permitidas para acceder al proxy, como:

acl red_local src 192.168.1.0/24

También podría indicarse qué dominios pueden acceder al proxy mediante el tipo_acl srcdomain, pero lo más habitual es hacerlo a través de las IPs de la red local que pueden salir a través del proxy.

dst

Cuando indicamos una lista de IPs que pueden visitar los clientes, como:

acl google_es dst 216.239.0.0/24

Aquí sí que es interesante establecer los destinos por dominios, tipo_acl dstdomain,

Esto va a permitir filtrar por listas negras de páginas web supuestamente maliciosas, y por tanto que no queremos que sean visitadas. Lo mismo para filtrar el acceso a redes sociales o páginas con contenidos no permitidos. Por suerte no tenemos que crear nosotros estas listas negras, sino que podemos descargarlas por ejemplo de:

http://urlblacklist.com/?sec=download

Hay muchas listas negras de pago también.

acl blacklist_1 dstdomain “/etc/squid/lista_negra_1.txt”

url_regex

Otra de las ACL más útiles son las expresiones regulares en las URL. Por ejemplo, podemos filtrar la descarga de archivos ejecutables, procesos por lotes, etcétera:

acl tipoexe url_regex -i exe$ pif$ bat$ cmd$

O también los molestos banners, anuncios y popups, que suelen tener una forma similar a:

acl incordios url_regex http://popup.* http://ads.* http://ads.*

Las posiblidades son mucho mayores, pudiéndose filtrar por la hora y día de la semana que se accede al contenido, la página web de donde procede la petición (Referer). Todas estas opciones pueden consultarse en:

http://www.eu.squid-cache.org/Doc/config/acl/

ACCESS

La directiva es http_access:

http_access allow|deny [!]acl …

En cuanto una directiva se cumpla, se realizará el allow/deny. Todas las directivas se van aplicando como un OR.

Por lo tanto, siempre que se cumpla una regla con la directiva allow el tráfico se permitirá. Por eso se recomienda denegar más arriba el tráfico más específico de esa regla allow que se quiera denegar.

http_access deny blacklist

http_access deny tipoexe

http_access deny incordios

http_access allow red_local

Si no se cumple ninguna regla, entonces la acción a aplicar será la contraria a la última línea http_access. Para evitar confusión, se recomienda que la última línea sea:

http_access deny all

Esta regla se cumple siempre que no se cumpliera alguna antes. Y como se cumplirá, se denegará en último caso.

DELAY

Otra de las configuraciones interesantes es la limitación del ancho de banda asociado a cada una de las listas (delay_access y delay_parameters).

acl red1 src 192.168.1.0/24        # red 1
acl red2 src 192.168.2.0/24       # red 2
delay_pools 2                     # voy a tener 2 delay pools

delay_class 1 1                   # el delay pool 1  es de clase 1
delay_class 2 2                    # el delay pool 2  es de clase 2

delay_access 1 allow red1          # el delay pool 1  para la red 1

delay_access 1 deny all

delay_access 2 allow red2          # el delay pool 2  para la red 2

delay_access 2 deny all

# se limita 1Mb rate / 100Mb Max para la red
# se limita 100 Kb rate / 10 Mb Max por IP

delay_parameters 1 1000000/100000000  100000/10000000

# se limita 150Kb rate / 1Mb Max para la red
# se limita 10 Kb rate / 100 Kb Max por IP

delay_parameters 2 150000/1000000 10000/100000

AUTENTICACIÓN

¿Qué hay de los usuarios y contraseñas para acceder al proxy?

Nos vamos a servir de htpasswd de apache para generar los usuarios y contraseñas del proxy. En squid.conf:

auth_param basic program /usr/lib/squid3/ncsa_auth /etc/squid3/claves
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours

El fichero de ‘claves’ lo generamos con htpasswd.

Creamos la ACL:

acl password proxy_auth REQUIRED

Y siempre que queramos que nos pida usuario y contraseña del fichero /etc/squid3/claves, lo añadimos a la directiva http_access. En el ejemplo de antes:

http_access allow red_local password

Las reglas que se añaden en una misma directiva http_access deben cumplirse simultáneamente, como si fuera un AND.

CACHEO

Como hemos dicho al principio, squid3 aporta rapidez porque permite cacheo. Pero para acceder al script CGI que permite la administración del cacheo hemos de configurar nuestro apache (httpd.conf, no squid.conf) para que lo ejecute:

First, make sure the cgi-bin directory you’re using is listed with a ScriptAlias in your Apache httpd.conf file like this:

        ScriptAlias /Squid/cgi-bin/ /usr/local/squid/cgi-bin/

It’s probably a bad idea to ScriptAlias the entireusr/local/squid/bin/ directory where all the Squid executables live.

Next, you should ensure that only specified workstations can access the cache manager. That is done in your Apache httpd.conf, not in squid.conf. At the bottom of httpd.conf file, insert:

        <Location /Squid/cgi-bin/cachemgr.cgi>
        order allow,deny
        allow from workstation.example.com
        </Location>

You can have more than one allow line, and you can allow domains or networks.

Alternately, cachemgr.cgi can be password-protected. You’d add the following to httpd.conf:

        <Location /Squid/cgi-bin/cachemgr.cgi>
        AuthUserFile /path/to/password/file
        AuthGroupFile /dev/null
        AuthName User/Password Required
        AuthType Basic
        require user cachemanager
        </Location>

Consult the Apache documentation for information on using htpasswd to set a password for this “user.”

 

 

One thought on “Montar proxy squid3 en Ubuntu

  • julio 24, 2015 at 6:32 am
    Permalink

    We are the worlds leading publisher of Squid ‘Native ACL’ formatted blacklists, that allow for web filtering directly with Squid proxy. Of course we also offer alternative formats for the most widely used third party plugins, such as DansGuardian and Squidguard. And while our blacklists are subscription based, they are as a result of our efforts, of a much higher degree of quality than the free alternatives.

    We hope to serve you,


    Signed,

    Benjamin E. Nichols
    http://www.squidblacklist.org

    Reply

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *