Professional Documents
Culture Documents
PUERTO SEGURO
Un servidor proxy proporciona una navegación más segura y eficiente. Aunque existen soluciones proxy
T
engo una red casera desde hace total de seguridad. Solucionar los pro- Finalmente migré a Linux y configuré
bastantes años. Empecé con un blemas era totalmente imposible. La un firewall con iptables en un Pentium
router usando Windows XP con configuración del firewall quedaba a II que hacía de router. El firewall
ICS (Internet Connection Sharing) y una merced de usuarios inexpertos, que mantiene a los atacantes fuera de mi
tarjeta Ethernet con varias interfaces de podían pulsar aleatoriamente sobre la red, y registra el tráfico entrante y
red. Las principales desventajas eran la configuración de seguridad como el que saliente. Además del firewall iptables,
inestabilidad, bajo rendimiento y falta juega a la ruleta rusa. también configuré un servidor proxy
56 Número 14 WWW.LINUX-MAGAZINE.ES
Squid • ADMINISTRACIÓN
Squid para mejorar el rendimiento de de la casa usando cable UTP estándar o figuración lleguen al mundo exterior
Internet, filtrar los molestos popups y blo- una conexión wireless. La tabla 1 muestra cuando se navegue por la Web:
quear URLs peligrosas. el hardware recomendado para la máquina
Un servidor proxy Squid filtra el tráfico firewall. vi /etc/squid/squid.conf
Web y cachea los archivos a los que se Suponiendo que el firewall esté ya fun- ...
accede frecuentemente. También limita el cionando, el siguiente paso es configurar anonymize_headers deny U
uso del ancho de banda, acelera el acceso Squid. Se encuentra disponible en Internet From Server Via User-Agent
a Web y nos permite filtrar URLs. El blo- en [3] o en uno de los mirrors [4] como forwarded_for off
queo centralizado de publicidad y descar- tar.gz (compilado desde las fuentes). strip_query_terms on
gas peligrosas es rentable y transparente Puede instalarse fácilmente usando uno de
para el usuario final. los siguientes comandos: Nótese que no pueden hacerse anónimos
Squid es una implementación completa Referer y WWW-Authenticate ya que de
en software libre y de alto rendimiento de rpm -i /cdrom/RedHat/RPMS/U lo contrario, los mecanismos de autenti-
un servidor proxy. Proporciona amplios squid-2.4.STABLE7-4.i386.rpmU cación y control de acceso no fun-
controles de acceso y se integra con facili- # Red Hat 8 cionarán.
dad con el firewall iptables. En mi caso, el forwarded_for off significa que la
servidor proxy Squid y el firewall iptables rpm -i /cdrom/Fedora/RPMS/U dirección IP del servidor proxy no será
trabajan juntos para proteger mi red de squid-2.5.STABLE6-3.i386.rpm U enviada al exterior.
intrusos y HTML peligrosos. Encon- # Fedora Core 3 Con strip_query_terms on no se regis-
traremos abundantes artículos acerca de tran en el log los parámetros de las URL
firewalls en libros, revistas y páginas Web. rpm -i /cdrom/.../U más allá del signo ?. Cuando este
(Véanse [1] y [2], por ejemplo). El servidor squid-2.5.STABLE6-6.i586.rpmU parámetro está en off, se registra la URL
proxy Squid, por otro lado, no está bien # SuSE 9.2 completa en los archivos log de Squid.
documentado del todo, especialmente Esta característica puede ayudar a depu-
cuando hablamos de pequeñas redes En el momento de escribir estas líneas, la rar fallos en los filtros de Quid, pero tam-
caseras como la mía. En este artículo, versión estable de Squid es la 2.5. bién puede violar las reglas de privaci-
vamos a mostrar cómo configurar Squid. dad.
Configurar Squid La siguiente configuración identifica el
Comenzamos Una vez que ha sido instalado, será nece- host de Squid, el dominio (interno) donde
El primer paso es encontrar el hardware sario configurarlo. Squid tiene un archivo opera la máquina y el nombre de usuario
necesario. La Figura 1 muestra la configu- de configuración centralizado. Cada vez responsable del servidor. Nótese el punto
ración de red del Pentium II que se ha uti- que cambia este archivo, la configuración delante del dominio. Más adelante,
lizado como firewall y servidor proxy. Este debe recargarse con el comando /sbin/ encontramos el nombre del servidor local
sistema firewall debería operar con una init.d/ squid reload. de DNS y el número de nombres de
mínima intervención humana, por lo que Es posible editar el archivo de configu- dominio a cachear en el servidor Squid.
tras la configuración del sistema, se ración con un editor de textos. Existe una
pueden desconectar el ratón, teclado y descripción detallada de la configuración visible_hostname squid
monitor. Puede que tengamos que ajustar en el archivo squid.conf, aunque la expli- append_domain .mshome.net
la configuración de la BIOS para que el cación a veces es algo técnica y compli- cache_mgr sysman
ordenador pueda trabajar sin el teclado. El cada de entender. Esta sección resume dns_nameservers 192.168.0.1
objetivo es poder colocar todo el sistema algunas configuraciones importantes del dns_testnames router.mshome.net
en el desván, donde ni lo oigamos. Desde archivo squid.conf. fqdncache_size 1024
el minihub mostrado en la Figura 1, se En primer lugar, se habrá de evitar que http_port 80
pueden “bajar las escaleras” hasta la red ciertos metadatos relacionados con la con- icp_port 0
ADMINISTRACIÓN • Squid
Evitar Bloqueos
Squid necesita guardar su caché en
algún lugar del disco duro. La caché es
un árbol de directorios. Con la opción Figura 1: Configuración básica de una LAN Ethernet.
cache_dir en el archivo squid.conf, se
puede especificar la configuración con El espacio en disco se distribuye por Especificación del Formato
características como las siguientes: todos los directorios. Normalmente se de Log
• mecanismo de I/O del disco – aufs esperaría una distribución pareja a lo
• ubicación de la caché en el disco – largo de los directorios, pero en la prác- Puede elegirse entre el formato de log de
/var/cache/squid tica, se acepta una cierta variación en la Squid y el formato estándar de servidor
• cantidad de espacio en disco que distribución. Es posible encontrar confi- Web usando el parámetro
puede ser usado por el servidor proxy guraciones más complejas utilizando emulate_httpd_log. Cuando el parámetro
– 2.5 GB múltiples discos, pero para el uso casero, se fija a on, se usa el formato de Web. Si
• número de directorios principales – 16 una estructura de directorios es sufi- se fija a off, obtendremos más detalles
• subdirectorios – 256 ciente. con el formato Squid. Ver [7] para mayor
Por ejemplo: información acerca del análisis de
Las opciones para métodos de acceso a Sustitución de la Caché archivos log de Squid.
disco son las siguientes: El servidor proxy usa un algoritmo LRU
• ufs – acceso a disco clásico (demasiada (Least Recently Used). Estudios detalla- Jerarquía Proxy
I/O puede ralentizar el servidor Squid) dos de HP Laboratories [6] han revelado El proxy Squid puede trabajar de manera
• aufs – UFS asíncrona con hilos, menos que un algoritmo LRU no es siempre la jerárquica. Si se desea evitar el proxy
riesgo de conflictos de acceso al disco opción más inteligente. La configuración padre para algunos destinos, se puede
• diskd – demonio diskd, evita también GDSF mantiene pequeños objetos popu- habilitar una resolución directa. ¡El
el peligro de conflicto de acceso al disco lares en la caché, mientras que elimina navegador usará aún nuestro proxy
pero usando más memoria. los más grandes y menos usados, incre- local!
UFS es el sistema de I/O de archivos mentando de esta manera el rendimiento
clásico de UNIX. Se recomienda usar global. acl direct-domain U
aufs para evitar cuellos de botella. (Al dstdomain .turboline.be
usar aufs, van a existir menos procesos). cache_replacement_policyU always_direct allow U
heap GDSF direct-domain
# ls -ld /var/cache/squid memory_replacement_policyU acl direct-path urlpath_regexU
lrwxrwxrwx 1 root rootU heap GDSF -i "/etc/squid/direct-path.reg"
19 Nov 22 00:42 U always_direct allow direct-path
/var/cache/squid -> U Los objetos grandes requeridos una
/volset/cache/squid sola vez pueden colocar fuera muchos Algunos ISPs permiten usar su servidor
objetos pequeños, por lo que será conve- proxy para visitar sus propias páginas
E s re c o m e n d a b l e m a n t e n e r l a niente que limitemos el tamaño máximo Web incluso aunque no se sea cliente.
u b i c a c i ó n e s t á n d a r p a ra l a c a c h é de objeto para la caché: Esto puede ayudar a acelerar las visitas
en /var/cache/squid, y de allí a sus páginas. Cuanto más cercano esté
c re a r u n e n l a c e s i m b ó l i c o a l cache_mem 20 MB el proxy a las páginas originales, más
d i re c t o r i o re a l d e c a c h é . S i s e maximum_object_sizeU probabilidad hay de que la página se
m u eve a o t ro d i s c o p o r m o t i vo s 16384 KB cachee. Debido a que nuestro propio
d e re n d i m i e n t o o d e c a p a c i d a d , maximum_object_sizeU ISP es más lejano, el ISP tenderá
sólo será necesario modificar el _in_memory 2048 KB menos a cachear los contenidos de su
enlace simbólico. competidor…
58 Número 14 WWW.LINUX-MAGAZINE.ES
Squid • ADMINISTRACIÓN
cache_peer proxy.tiscali.beU Para Squid, las expresiones regulares acl FTP proto FTP
parent 3128 3130 U pueden especificarse inmediatamente, o always_direct allow FTP
no-query default pueden estar en un nombre de fichero
cache_peer_domain U entre dobles comillas, en cuyo caso el acl local-domain dstdomain U
proxy.tiscali.be .tiscali.be archivo debería contener una expresión .mshome.net
regex por línea, sin líneas vacías. La -i always_direct allow U
no-query significa que no usamos, o no (ignorar mayúsculas) significa que se local-domain
podemos usar, ICP (Internet Caching usarán comparaciones sin diferenciación
Protocol), véase [8]. Puede obtenerse la entre mayúsculas y minúsculas. acl localnet-dst dst U
misma funcionalidad usando expre- Si se está configurando un sistema con 192.168.0.0/24
siones regulares, pero esto proporciona múltiples proxys, es posible especificar un always_direct allow U
round-robin para acelerar la resolución de localnet-dst
cache_peer proxy.tiscali.beU las páginas y minimizar el retraso cuando
parent 3128 3130 U uno de los servidores no esté disponible.
no-query default Recordemos que la mayoría de los naveg- Tabla 2:Guía para ACL
acl tiscali-proxy U adores establecen conexiones en paralelo
• el orden de las reglas es importante
dstdom_regex -i U para obtener todos los elementos de una
\.tiscali\.be$ página. Si se usan múltiples servidores • primero se listan todas las reglas de
denegación
cache_peer_access U proxy para obtener estos elementos, la
proxy.tiscali.be allow U respuesta debería ser más rápida. • se ejecuta la primera regla coinci-
tiscali-proxy Los archivos FTP se descargan normal- dente
mente una sola vez, por lo que general- • el resto de las reglas se ignora
mayor libertad. mente no se deseará cachearlos, excepto • la última regla debería ser permite
El ACL puede incluir también una cuando se descarguen repetidamente. Así todo
expresión regular (regex para abreviar) mismo, las páginas locales no se cachean
con la URL usando una construcción normalmente, debido a que ya residen en La tabla 2 proporciona una guía para
url_regex. nuestra red: la creación de listas ACL. Puede ser una
buena idea permitir la navegación WYSI-
Listado 1: Bloqueando páginas no buscadas WYG (lo-que-ves-es-lo-que-tienes). Si no
01 acl block-ip dst "/etc/squid/block-ip.reg" se quieren ver ciertas páginas o marcos,
02 deny_info filter_spam block-ip se pueden bloquear automáticamente las
03 http_access deny block-ip correspondientes URLs en el servidor
04 proxy.
05 acl block-hosts dstdom_regex -i "/etc/squid/block-hosts.reg" Es posible filtrar por:
06 deny_info filter_spam block-hosts • dominios de cliente o servidor
07 http_access deny block-hosts • subredes IP del cliente o servidor
08 • ruta URL
09 acl noblock-url url_regex -i "/etc/squid/noblock-url.reg" • URLs completas, incluyendo
10 http_access allow noblock-url Safe_ports parámetros
11 • palabras clave
12 block-path urlpath_regex -i "/etc/squid/block-path.reg" • protocolos: HTTP, FTP
13 deny_info filter_spam block-path • métodos: GET, POST, HEAD, CON-
14 http_access deny block-path NECT
15 • día y hora
16 acl block-url url_regex -i "/etc/squid/block-url.reg" • tipo de navegador
17 deny_info filter_spam block-url • nombre de usuario
18 http_access deny block-url El Listado 1 muestra ejemplos de
comandos que bloquean páginas no
deseadas.
cache_peer 80.200.248.199 U Filtrado con Squid El script del Listado 2 hará invisibles
parent 8080 7 U En las secciones precedentes se han las páginas no deseadas. Cada vez que
no-query round-robin comentado algunas configuraciones Squid ejecuta la etiqueta deny_info,
cache_peer 80.200.248.200 U importantes de Squid. También se ha envía el archivo /etc/squid/errors/fil-
parent 8080 7 U dicho que las listas ACL (Access Control ter_spam al navegador en lugar de a la
no-query round-robin Lists) pueden usarse para permitir acceso página Web… filtrando efectivamente
... directo a las páginas sin usar el proxy los objetos no deseados. La marca
cache_peer 80.200.248.207U padre. En esta sección, se examinará <!-- esconde cualquier otro mensaje
parent 8080 7 U cómo usar las listas ACL para un control de error de Squid en el cuerpo del
no-query round-robin más detallado al acceso a Internet. texto.
WWW.LINUX-MAGAZINE.ES Número 14 59
ADMINISTRACIÓN • Squid
60 Número 14 WWW.LINUX-MAGAZINE.ES
Squid • ADMINISTRACIÓN
WWW.LINUX-MAGAZINE.ES Número 14 61