Configuración básica de Squid en openSUSE Linux
Hace tiempo que tengo guardado los pasos para configurar un servidor de proxy Squid, de forma básica, muy básica y poco segura pero que cumple con su función, y que estos días decidí probarlo nuevamente en un equipo con openSUSE 13.2 para ver si sigue funcionando en las nuevas versiones de Squid.
Configurar correctamente un servidor proxy lleva tiempo y dedicación, por mi parte no recomiendo esta configuración para un entorno de producción, pero si alguien está interesado en probar o experimentar con dicho servicio pueden seguir leyendo este artículo que lo terminé de escribír para evitar la pérdida del poco know how que tengo acerca del tema.
Configurar correctamente un servidor proxy lleva tiempo y dedicación, por mi parte no recomiendo esta configuración para un entorno de producción, pero si alguien está interesado en probar o experimentar con dicho servicio pueden seguir leyendo este artículo que lo terminé de escribír para evitar la pérdida del poco know how que tengo acerca del tema.
Pasos de instalación y configuración
- Primero comenzamos por instalar el paquete squid, eso lo hacemos ejecutando el siguiente comando con el usuario root:
testsrv:~ # zypper in squid
- Luego editamos el archivo de configuración con nuestro editor favorito, en mi caso el Vim como siempre..
testsrv:~ # vi /etc/squid/squid.conf
- En mi caso se configuraron en el archivo las siguientes directivas:
###
Si bien podemos definir de forma explícita en el archivo de configuración squid.conf los equipos y las redes autorizadas a utilizar el servicio, en este caso se opta por registrarlos en un archivo externo así como también las palabras excluidas con las directivas acl hosts src y acl words url_regex respectivamente.
### -->Configuracion de Importancia
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
### -->Configuracion de Importancia
acl to_localhost dst 127.0.0.0/8
acl words url_regex "/etc/squid/palabras_denegadas"
acl hosts src "/etc/squid/hosts_habilitados"
###acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
###acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
###acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
###acl localnet src fc00::/7 # RFC 4193 local private network range
###acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
###acl networks src 192.168.10.0/24 192.168.100.0/24
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
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 CONNECT method CONNECT
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
#
### -->Configuracion de Importancia
http_access deny words
http_access allow hosts
###http_access allow networks
# And finally deny all other access to this proxy
http_access deny all
# TAG: http_reply_access
# Allow replies to client requests. This is complementary to http_access.
#
# http_reply_access allow|deny [!] aclname ...
#
# NOTE: if there are no access lines present, the default is to allow
# all replies
#
# If none of the access lines cause a match the opposite of the
# last line will apply. Thus it is good practice to end the rules
# with an "allow all" or "deny all" entry.
#
#Default:
# none
###
### -->Directorio de Cache
cache_dir ufs /var/cache/squid 2048 16 256
###
### -->Configuracion de Importancia
http_reply_access allow all
###
### -->Configuracion de Importancia
icp_access allow all
###
### -->Configuracion de Importancia
cache_mem 2048 MB
###
### -->Tamanio maximo de objetos
maximum_object_size 25600 KB
###
### --> Configuracion adicional
emulate_httpd_log off - Ahora pasamos a crear el archivo en el cual especificaremos las direcciones IP de los equipos o de las redes autorizadas a utilizar el proxy. Creamos el archivo en el directorio correspondiente y lo editamos:
testsrv:~ # touch /etc/squid/hosts_habilitados
Y le agregamos contenido similar al que sigue para otorgar las autorizaciones:
testsrv:~ # vi /etc/squid/hosts_habilitados#!/bin/bash
# Terminales y redes habilitadas para la navegacion en el sistema
# ===============================================================
192.168.1.10/255.255.255.255
192.168.2.0/255.255.255.0 - Para facilitar la tarea de mantenimiento de los equipos y las redes autorizadas se crea a continuación un script bash que edita el archivo y posteriormente reinicia el servicio para que tome en cuenta las nuevas configuraciones:
testsrv:~ # touch /bin/squidhosts
El archivo debe contener el siguiente código:
testsrv:~ # chmod 755 /bin/squidhosts
testsrv:~ # vi /bin/squidhosts#!/bin/bash
vim /etc/squid/hosts_habilitados
clear
/usr/bin/systemctl restart squid.service
echo
echo Configuracion aplicada y servicio reiniciado exitosamente!
echo - Pasamos a crear el archivo en el cual vamos a especificar las palabras que queremos denegar a partir de las url's a las que tratan de acceder los usuarios. Como siempre editamos el archivo y luego lo editamos:
testsrv:~ # touch /etc/squid/palabras_denegadas
Y le especificamos nuestra lista de palabras denegadas.
testsrv:~ # vi /etc/squid/palabras_denegadas#!/bin/bash
xxx
blabla
bleble - Al igual como hicimos para modificar los equipos y las redes autorizadas, también creamos un script para facilitar la edición de la lista de palabras denegadas..
testsrv:~ # touch /bin/squidwords
Al archivo squidwords le agregamos el siguiente código:
testsrv:~ # chmod 755 /bin/squidwords
testsrv:~ # vi /bin/squidwords#!/bin/bash
vim /etc/squid/palabras_denegadas
clear
/usr/bin/systemctl restart squid.service
echo
echo Configuracion aplicada y servicio reiniciado exitosamente!
echo - Nos falta habilitar el servicio en el firewall de openSUSE. Para ello editamos el archivo SuSEfirewall2 ubicado en el directorio /etc/sysconfig con el usuario root:
testsrv:~ # vi /etc/sysconfig/SuSEfirewall2
Buscamos la directiva FW_SERVICES_EXT_TCP que es normalmente la zona de firewall a la cual se encuentra asociada por defecto la interfaz de red y le agregamos el puerto 3128 correspondiente al servicio squid:FW_SERVICES_EXT_TCP="3128"
Guardamos los cambios del archivo y reiniciamos el firewall:testsrv:~ # rcSuSEfirewall2 restart
- Por último habilitamos el servicio squid y lo arrancamos por primera vez de la siguiente manera:
testsrv:~ # systemctl enable squid.service
Por supuesto, podemos verificar que el servicio esté corriendo correctamente
testsrv:~ # systemctl start squid.servicetestsrv:~ # systemctl status squid.service
- Para acceder al servicio desde otro equipo dentro de nuestra red tenemos que configurar el apartado Proxy del navegador especificando la dirección IP de nuestro servidor Proxy y el puerto del servicio 3128.
Si necesitamos autorizar a un nuevo equipo o red para que puedan utilizar el proxy podemos ejecutar el script squidhosts:testsrv:~ # squidhosts
O el script squidwords para agregar nuevas palabras a la lista de palabras denegadas de squid:testsrv:~ # squidwords
Tampoco tenemos que olvidar de revisar uno de los archivos logs más importantes de squid: access.log.testsrv:~ # tail -f /var/log/squid/access.log
Comentarios
Publicar un comentario