Apartamento En Familia

Apartamento En Familia
Apartamento de playa para vacaciones. https://www.booking.com/hotel/es/apartamento-en-familia.ca.html Número registro HUTT-005768

viernes, 28 de junio de 2013

No se pudo bloquear /var/lib/apt/lists/lock

En alguna ocasión nos puede ocurrir que al intentar actualizar (apt-get update) nuestro repositorio nos salga este error:


E: No se pudo bloquear /var/lib/apt/lists/lock - open (11: Recurso no disponible temporalmente)
E: No se pudo bloquear el directorio /var/lib/apt/lists/

Para solucionarlo basta con borrar el archivo /var/lib/apt/lists/lock

sudo rm /var/lib/apt/lists/lock

Este archivo se genera para bloquear el repositorio cuando se esta usando para evitar problemas de que dos programas (linea de comandos y synaptic, por ejemplo) actuen a la vez. Hay veces que este archivo pudiera quedar por error y entonces lo podemos borrar a mano sin problema.




jueves, 27 de junio de 2013

ACL + Samba + Btrfs

Hoy quiero explicaros como realizar un caso práctico de gestión de ficheros con la información de diversos tutoriales anteriores. Nos planteamos dar acceso via Samba a un grupo de usuarios a los cuales deberemos de otorgar diferentes niveles de acceso. Como la información que se moverá en estas carpetas nos interesará comprimirla, usaremos un sistema de ficheros que nos proporcione compresión.










ACL

Para la designación de accesos usaremos el paquete acl tal y como se explica en los tutoriales "Como extender las posibilidades de UGO hacia ACL" Parte I y Parte II




BTRFS






Podemos escoger el sistema de ficheros de Oracle Btrfs para dotarlo de compresión a tiempo real. En el tutorial "btrfs (Butter FS) en Ubuntu 11.04" explico como instalarlo y usarlo.


btrfs: unrecognized mount option 'acl'

Esto es normal ya que si miramos en https://btrfs.wiki.kernel.org/index.php/Mount_options :

noacl
Do not enable ACL's.

pero en ningún lado pone que para que las 'entienda' debamos poner ninguna opción. Así pues, en btrfs por defecto ya tiene el acl en cuenta.

SAMBA


Samba es una implementación libre del protocolo de archivos compartidos de Microsoft Windows (antiguamente llamado SMB, renombrado recientemente a CIFS) para sistemas de tipo UNIX. De esta forma, es posible que computadoras con GNU/Linux, Mac OS X o Unix en general se vean como servidores o actúen como clientes en redes de Windows. Samba también permite validar usuarios haciendo de Controlador Principal de Dominio (PDC), como miembro de dominio e incluso como un dominio Active Directory para redes basadas en Windows; aparte de ser capaz de servir colas de impresión, directorios compartidos y autentificar con su propio archivo de usuarios.

(Fuente Wikipedia)

Samba v3 ya viene por defecto con soporte acl y por tanto no tenemos que configurarlo de ninguna manera especial par que lo tenga en cuenta.

Para instalar el samba es facil:

sudo apt-get install samba samba-common

y para configurar un recurso compartido editaremos /etc/samba/smb.conf :

[ACLS]
        comment = Test de acls
        path = /con_acl/mi_ruta/aqui
        public = no
        writable = yes
        browseable = yes

 

Resumiendo, instalando los paquetes por defecto no tendremos mayor problema para usarlo.

viernes, 31 de mayo de 2013

Instalar y usar Tenable Nessus en Ubuntu 13.04

Nessus es un programa de escaneo de vulnerabilidades en diversos sistemas operativos. Consiste en un daemon, nessusd, que realiza el escaneo en el sistema objetivo, y nessus, el cliente (basado en consola o gráfico) que muestra el avance e informa sobre el estado de los escaneos. Desde consola nessus puede ser programado para hacer escaneos programados con cron.
En operación normal, nessus comienza escaneando los puertos con nmap o con su propio escaneador de puertos para buscar puertos abiertos y después intentar varios exploits para atacarlo. Las pruebas de vulnerabilidad, disponibles como una larga lista de plugins, son escritos en NASL (Nessus Attack Scripting Language, Lenguaje de Scripting de Ataque Nessus por sus siglas en inglés), un lenguaje scripting optimizado para interacciones personalizadas en redes.

(Fuente Wikipedia)

Lo primero que vamos a hacer para instalar el programa es descargarnos el paquete para Ubuntu desde la página oficial. Yo lo hice aquí:


http://www.tenable.com/products/nessus/select-your-operating-system


Para instalar el paquete deberíamos poder usar cualquiera de las herramientas típicas de instalación. Para mirar de hacerlo lo más visual y estándard posible podemos mirar de usar el Centro de software de Ubuntu aunque la instalación a mi no me fue bien:


Si no podeis hacerlo con el Centro de software de Ubuntu hacerlo por linea de comandos:

root@eithel-inside:~/Escritorio# dpkg -i Nessus-5.2.1-ubuntu1110_amd64.deb
(Leyendo la base de datos ... 439156 ficheros o directorios instalados actualmente.)
Preparando para reemplazar nessus 5.2.1 (usando Nessus-5.2.1-ubuntu1110_amd64.deb) ...
$Shutting down Nessus : .
Desempaquetando el reemplazo de nessus ...
Configurando nessus (5.2.1) ...
nessusd (Nessus) 5.2.1 [build N24021] for Linux
Copyright (C) 1998 - 2013 Tenable Network Security, Inc

Processing the Nessus plugins...
[##################################################]

All plugins loaded

 - You can start nessusd by typing /etc/init.d/nessusd start
 - Then go to https://localhost:8834/ to configure your scanner

Procesando disparadores para ureadahead ...

Una vez instalado el paquete, hagamos lo que nos dice. Primero arrancamos el servicio con /etc/init.d/nessusd start y luego accedemos al scanner mediante la URL https://localhost:8834

Tendremos que rellenar un formulario muy intuitivo:
  • Initial Account Setup
  • Plugin Feed Registration (aqui debereis seleccionar si es para uso empresarial o para casa).
  • Download plugins
  • Nessus Initializing
Con esto ya lo tendremos todo instalado y podremos empezar a usarlo.

¡Buen escaneo a todos!

miércoles, 17 de abril de 2013

Cómo solucionar "Agent admitted failure to sign using the key."

En publicaciones anteriores he hablado de como identificarse en un servidor mediante certificado ,como arreglar el típico problema del "Offending Key" de diversas maneras.

En mi caso, yo tenia unas claves publica/privada con las que me conectaba a algunos sitios por ssh. El caso es que me canvié las claves, las distribuí en donde me conectaba pero me dió el error "Agent admitted failure to sign using the key.". Pues bien, esto es porque además de generar las nuevas claves, hemos de decirle a nuestro agente ssh que las tenga en cuenta. Es decir, que las añada en su lista de claves. Esto lo hacemos con el comando ssh-add:


ssh-add
Identity added: /home/ediaz/.ssh/id_rsa (/home/ediaz/.ssh/id_rsa)


Con esto habremos arreglado el problema.

viernes, 5 de abril de 2013

Como extender las posibilidades de UGO hacia ACL (Access Control List) (parte 2)

En el último artículo Como extender las posibilidades de UGO hacia ACL (Access Control List) explicaba como instalar y ver y aplicar acls básicas para resolver algunos problemas de acceso que con el método UGO nos costaría bastante o simplemente no podríamos hacer. En este artículo quiero extender un poco el uso de las acl's explicando como poder borrar una acl (o todas), hacerla recursiva o hacer una acl por defecto.


Aplicar una acl por defecto

Cuando aplicas una acl sobre una carpeta tenemos el problema que las subcarpetas que se creen dentro de ella no heredan automáticamente estas acls. Así pues, en muchos casos, las acls base no nos satisfacen del todo. Si lo que queremos es se apliquen las acl automáticamente en los archivos y carpetas nuevos que se creen dentro, para ello tenemos que aplicar una acl por defecto. Para hacer esto:

setfacl -d -m g:prof_1er:rwx 1er_Grado
 
getfacl 1er_Grado
# file: 1er_Grado
# owner: root
# group: root
user::rwx
group::r-x
other::---
default:user::rwx
default:group::r-x
default:group:prof_1er:rwx
default:mask::rwx
default:other::---
Si miramos el man:
       -d, --default
           All operations apply to the Default ACL. Regular ACL entries in the input set are promoted to Default ACL entries. Default ACL entries in the input set are discarded. (A warning is issued if
           that happens).

Borrar una acl

Para borrar una acl (por ejemplo, si a una carpeta hemos dado privilegios a diferentes grupos y queremos sacar sólo a uno) lo podemos hacer de la siguiente manera:

setfacl -x g:prof_1er 1er_Grado/

Si miramos el man:
       The -x (--remove) and -X (--remove-file) options remove ACL entries. It is not an error to remove an entry which does not exist.  Only ACL entries without the perms field are accepted as parameters, unless POSIXLY_CORRECT is defined.

Borrar todas las acl en un fichero

Para borrar todas acl que tengamos aplicadas sobre una carpeta/archivo lo podremos hacer de la siguiente manera:

Imaginemos que tenemos:

getfacl 1er_Grado/
 

# file: 1er_Grado/
# owner: root
# group: root
user::rwx
group::r-x
group:prof_1er:rwx
mask::rwx
other::---


Bien, ahora lo que queremos es dejarlo como si nunca hubiéramos aplicado una acl:

setfacl -b -k 1er_Grado/
 

getfacl 1er_Grado/
# file: 1er_Grado/
# owner: root
# group: root
user::rwx
group::r-x
other::---



Si miramos el man:
       -b, --remove-all
           Remove all extended ACL entries. The base ACL entries of the owner, group and others are retained.

       -k, --remove-default
           Remove the Default ACL. If no Default ACL exists, no warnings are issued.
Es decir, con el -b borramos las acl y con -k borramos las acl por defecto. 



Aplicar una acl de modo recursivo


De la misma manera que lo hacemos con UGO, si queremos aplicar una ACL de modo recursivo, lo podremos hacer:

setfacl -R -m g:prof_1er:rwx 1er_Grado

Si miramos el man:
       -R, --recursive
           Apply operations to all files and directories recursively. This option cannot be mixed with `--restore'.


jueves, 28 de marzo de 2013

Como extender las posibilidades de UGO hacia ACL (Access Control List)



Una lista de control de acceso o ACL (del inglés, access control list) es un concepto de seguridad informática usado para fomentar la separación de privilegios. Es una forma de determinar los permisos de acceso apropiados a un determinado objeto, dependiendo de ciertos aspectos del proceso que hace el pedido.

(Fuente wikipedia)





¿Para que las necesitamos?

En algunas ocasiones nos podemos plantear a la hora de dar permisos a grupos o archivos de como crear un grupo de grupos. Algo parecido como los grupos anidados de samba (nested groups). Por ejemplo, imaginemos esta situación:

Profesores de primer grado: usuario1, usuario2, usuario3
Profesores de segundo grado: usuario4, usuario5
Alumnos: usuario6, usuario7, usuario8, usuario9
Dirección: usuario10

Es posible que queramos crear un grupo (por ejemplo que llamaremos Escuela) en el cual todos los otros grupos estén incluidos. Por ejemplo:


Profesores: @Profesores de primer grado, @Profesores de segundo grado
Escuela: @Profesores, @Alumnos, @Dirección


Esto por defecto no lo podríamos hacer con nuestro sistema de ficheros ext4 tal como viene por defecto.

Así pues, lo que querremos explicar en este artículo como extender los habituales controles de acceso a los ficheros mediante acl.

Instalación

Lo haremos o bien por el gestor de paquetes visual o por linea de comandos:



apt-get install acl

Ahora tendremos que incluir una opción extra en el /etc/fstab para que cuando monte nuestro disco duro tenga en cuenta las acl:

por ejemplo:
UUID=2ed78188-b7b5-411f-887b /punto/montaje      ext4    acl,errors=remount-ro 0        1

Remontamos el disco (por si no queremos reiniciar, que no es necesario)

sudo mount -o remount /punto/montaje


si queremos comprobar que lo hemos hecho correctamente:

mount | grep acl
 

/dev/sdb1 on /punto/montaje type ext4 (rw,acl,errors=remount-ro)

Planteando el problema

Pues bien, ahora ya tenemos nuestro sistema de archivos preparado para aplicar acl's en las carpetas y/o ficheros. Vemos algunos ejemplos de como conseguirlo:

Imaginemos que tenemos la siguiente estructura de carpetas:

/home/Escuela
/home/Escuela/Profesores
/home/Escuela/Profesores/1er_Grado
/home/Escuela/Profesores/2nd_Grado 
/home/Escuela/Alumnos
/home/Escuela/Dirección

Lo que queremos es que cada grupo de usuarios pueda leer/escribir únicamente en su carpeta y las carpetas superiores. Es decir, un profesor de 1er Grado deberia poder leer/escribir en

/home/Escuela/Profesores/1er_Grado
/home/Escuela/Profesores/
y
/home/Escuela

pero no debería poder acceder/escribir al resto de carpetas.
Para ello la estrategia será crear un grupo de usuarios para cada grupo final de nuestro árbol de usuarios. Es decir, crearemos estos grupos:

prof_1er (Profesores de primer grado)
prof_2nd
(Profesores de segundo grado)
alumnos
direccion



¡Empecemos a dar accesos!

Creamos los usuarios (usuario1 ... usuario10):

usuario1:x:1001:1001:,,,:/home/usuario1:/bin/bash
usuario2:x:1002:1002:,,,:/home/usuario2:/bin/bash
usuario3:x:1003:1003:,,,:/home/usuario3:/bin/bash
usuario4:x:1004:1004:,,,:/home/usuario4:/bin/bash
usuario5:x:1005:1005:,,,:/home/usuario5:/bin/bash
usuario6:x:1006:1006:,,,:/home/usuario6:/bin/bash
usuario7:x:1007:1007:,,,:/home/usuario7:/bin/bash
usuario8:x:1008:1008:,,,:/home/usuario8:/bin/bash
usuario9:x:1009:1009:,,,:/home/usuario9:/bin/bash
usuario10:x:1010:1010:,,,:/home/usuario10:/bin/bash


y metemos a cada usuario en su grupo:


prof_1er:x:1011:usuario1,usuario2,usuario3
prof_2nd:x:1012:usuario4,usuario5
alumnos:x:1013:usuario6,usuario7,usuario8,usuario9
direccion:x:1014:usuario10


Antes de nada vamos a ver como esta el directorio Escuela para familiarizarnos con las acl's:


getfacl Escuela/
# file: Escuela/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x


He usado el comando getfacl (get file access control lists) para obtener la información de acceso.

Ahora para dar acceso usaremos el comando setfacl (set file access control lists).


Miremos como esta la carpeta 1er_Grado:
getfacl /con_acl/Escuela/Profesores/1er_Grado

# file: con_acl/Escuela/Profesores/1er_Grado/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

Ahora apliquemos opciones de rwx al grupo prof_1er y saquemos los privegios al resto y veamos como queda: 

setfacl -m g:prof_1er:rwx /con_acl/Escuela/Profesores/1er_Grado/
setfacl -m o::--- /con_acl/Escuela/Profesores/1er_Grado/
getfacl /con_acl/Escuela/Profesores/1er_Gradogetf

# file: con_acl/Escuela/Profesores/1er_Grado/
# owner: root
# group: root
user::rwx
group::r-x
group:prof_1er:rwx
mask::rwx
other::---

Probemos a ver si un profesor de 2nd Grado puede acceder:

su usuario4
ls
1er_Grado  2nd_Grado
cd 1er_Grado/
bash: cd: 1er_Grado/: Permiso denegado


Como vemos, no podemos acceder a la carpeta, como esperábamos.

Ahora es ir asignado los permisos a los grupos en las carpetas según los comandos antes vistos para obtener un control mucho más flexible de accesos:

setfacl -R -m o::--- /con_acl/Escuela
setfacl -m g:prof_1er:rwx /con_acl/Escuela/Profesores/1er_Grado
setfacl -m g:prof_2nd:rwx /con_acl/Escuela/Profesores/2nd_Grado
setfacl -m g:prof_1er:rwx /con_acl/Escuela/Profesores
setfacl -m g:prof_2nd:rwx /con_acl/Escuela/Profesores
setfacl -m g:alumnos:rwx /con_acl/Escuela/Alumnos
setfacl -m g:direccion:rwx /con_acl/Escuela/Dirección

y finalmente:
setfacl -m g:prof_1er:rwx /con_acl/Escuela
setfacl -m g:prof_2nd:rwx /con_acl/Escuela
setfacl -m g:alumnos:rwx /con_acl/Escuela
setfacl -m g:direccion:rwx /con_acl/Escuela


Si ahora comprobamos los accesos de la raiz, veremos que diferentes grupos de usuarios tienen acceso:
getfacl Escuela
 

# file: Escuela
# owner: root
# group: root
user::rwx
group::r-x
group:prof_1er:rwx
group:prof_2nd:rwx
group:alumnos:rwx
group:direccion:rwx
mask::rwx
other::---


Con esto habríamos conseguido nuestro ejercicio inicial, dar a una carpeta acceso a diferentes grupos de usuarios.







jueves, 14 de marzo de 2013

Instalar Squid (proxy) en Ubuntu 12.10 (+OpenLDAP)

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.

(Fuente Wikipedia)

Instalación

La instalación de squid3 se puede hacer fácilmente desde el repositorio de Ubuntu. Para ello, como es habitual:

apt-get update
apt-get upgrade
apt-get install squid

squid es un paquete de transición (un enlace) a la última versión de squid. En el momento de redactar estas lineas era squid3.

Configuración 

La configuración de squid se encuentra en la carpeta /etc/squid3.

Los archivos que nos encontramos son:
  • errorpage.css: Hoja de estilos para las páginas que queremos mostrar los errores (de acceso a páginas no permitidas, etc)
  • msntauth.conf: Para autenticación MSNT.
  • squid.conf: El archivo de configuración general de squid.

Así pues, vamos a centrarnos en su archivo de configuración general. De todas maneras, posiblemente, sin tocar nada el equipo ya esté funcionando como proxy. Probadlo. En muchos casos la configuración por defecto ya es más que suficiente.

squid.conf

En este archivo, de inicio, encontraremos un 90% de comentarios y el resto de configuración. Esto va genial para poder entender que hace cada opción de squid, si bien, para configurarlo podemos querer tenerlo más 'limpio'. Para ello podemos limpiarlo siguiendo el artículo "Cómo crear un archivo de configuración limpio de comentarios" .

Una vez limpio de comentarios, os pongo un ejemplo y vamos comentando las diferentes opciones. No obstante, podréis encontrar la información más completa en http://www.squid-cache.org/Doc/config/:

auth_param

Este parámetro sirve para especificar la autenticación a nuestro proxy. En nuestro caso la autentificación la haremos contra un servidor OpenLDAP.

auth_param basic program /usr/lib/squid3/squid_ldap_auth -b "dc=dominio,dc=es" -f "uid=%s" servidor_ldap.dominio.es
auth_param basic realm Empresa Proxy Cache
auth_param basic credentialsttl 10 second
auth_param basic children 5

acl

Este parámetro sirve para definir las 'Access List', o listas de acceso. Siempre tiene la forma siguiente:
acl nombre_identificativo tipo_acl argument
Aquí no digo si deniego o accedo. Simplemente doy nombre a las cosas. A una parte de la red le puedo llamar, por ejemplo, Empresa_LAN y a otra parte de la red le llamo proxy_empresarial. Seria como inicializar unas variables que luego haré servir para dar o no acceso al proxy (o requerir contraseña, etc). También puedo definir puertos.

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 Empresa_LAN src 192.168.1.0/24

acl proxy_empresarial src 192.168.22.0/24
acl password proxy_auth REQUIRED
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

acl local-servers dstdomain .potito.uk
acl local-servers2 dstdomain 141.69.0.0/16

http_access

Con las acl decía que identificaba puertos o segmentos de la red dándoles nombre pero que no permitia o denegaba acceso. Bien, con http_access si. Una vez tenemos una acl, con http_access decimos allow o deny para permitir o denegar respectivamente.

http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access allow Empresa_LAN
http_access allow proxy_empresarial
http_access allow password
http_access deny all


http_reply_access

Como complemento a http_access tenemos este parámetro. Nos sirve para dar acceso o no a las respuestas de servidor hacia los clientes.

http_reply_access allow all

icp_access

Basándonos también en las acl declaradas, aquí denegamos o permitimos acceso al ICP Port (Internet Cache Protocol)

icp_access allow proxy_empresarial
icp_access deny all

http_port

Es el puerto de escucha de nuestro servidor proxy. Por defecto escucha por el puerto 3128. Nosotros podemos mirar de cambiárselo para evitar ataques DoS, etc

http_port 4500

include

Esto no es un parámetro en si. Squid nos da la posibilidad de incluir otros archivos a nuestro archivo de configuración de manera que según que parámetros los tengamos separados del squid.conf general. A mi me resulta útil para separar conceptos y no hacer un squid.conf muy grande que dificulte su comprensión. Como mi lista de acl user src y tcp_outgoing (veremos que es este parámetro) era muy larga, he preferido crear unos archivos fuera del squid.conf e incluirlos mediante include.
 
include /etc/squid3/acl_user_src_IP.txt
include /etc/squid3/tcp_outgoing_address.txt

tcp_outgoing_address

Con este parámetro lo que haremos es mapear, asignar, una ip de salida a un usuario o ip origen. Es decir, imaginemos que tenemos 5 usuarios y queremos que cada usuario salga por nuestro proxy con una IP diferente (para ello hemos de disponer de esas IPs, claro está). Pues lo que haremos es primero definir mediante las acl a los usuarios. Por ejemplo:
acl usuari1 src 192.168.1.10
acl usuari2 src
192.168.1.12
acl usuari3 src 192.168.1.13

Esto como hemos visto antes en el 'include' lo tengo en un archivo llamado acl_user_src_IP.txt , pero perfectamente podria estar en el propio squid.conf. Bien, pues una vez hecha la acl (osea, identificado el usuario con su IP), le decimos mediante tcp_outgoing_address por que IP ha de salir:

tcp_outgoing_address 84.80.60.53 usuari1
tcp_outgoing_address 84.80.60.185 usuari2
tcp_outgoing_address 84.80.60.54 usuari3

Con esto lo que hemos hecho es que el usuario que en la red local tiene la IP 192.168.1.10, al salir por el proxy, éste hace que salga a Internet (o otra red) por la IP 84.80.60.53. Y lo mismo con los otros tres.

Yo lo que también hice es meter toda la configuración tcp_outgoing_address en otro archivo e incluirla con el include. Se podía haber dejado en el propio squid.conf.

always_direct

Este parámetro nos permitirá permitir o denegar conexiones directas a un destino sin usar caché. No significa que hagamos un bypass del proxy, sino que si hacemos una petición podemos hacer que haga una redirección directa, no cacheada. Para ello, usaremos una acl creada.

always_direct allow local-servers
always_direct allow local-servers2

cache_mem y cache_dir

cache_mem nos permite especificar la cantidad de memoria que puede dedicar a la cache (no al squid). cache_dir nos permite especificar donde y que sistema usar para los archivos de la cache. 
cache_mem 100 MB
cache_dir ufs /var/spool/squid3 100 16 256

refresh_pattern

Es para discernir si lo que hay en la cache ha expirado ya o no para según patrones (explicados mediante expresiones regulares regex). Los estados de un objeto en cache son FRESH o STALE (fresco o viciado).
 
refresh_pattern ^ftp:        1440    20%    10080
refresh_pattern ^gopher:    1440    0%    1440
refresh_pattern -i (/cgi-bin/|\?) 0    0%    0
refresh_pattern (Release|Packages(.gz)*)$      0       20%     2880
refresh_pattern .        0    20%    4320

read_timeout

Es el tiempo de espera que queremos para cuando una conexión que ha sido satisfactoria y no nos devuelve ningún tipo de datos.

read_timeout 400 minutes

visible_hostname

Nombre visible con el que queremos que se vea nuestro proxy.

visible_hostname proxy_empresa

forwarded_for

Esto es por si queremos que en las peticiones HTTP se incluya la IP del cliente. Las opciones son on o off. Sería del tipo X-Forwarded-For: IP-Cliente  si lo ponemos a on y X-Forwarded-For: unknown si lo ponemos a off.

forwarded_for off

header_access

Esta opcion viola los estandares de HTTP. Se suele usar para crear un proxy anónimo. Nosotros simplemente denegaremos los X-Forwarded-For ya que los desactivé en una opción anterior.
 
header_access Via deny all
header_access X-Forwarded-For deny all
Con estas opciones (o muchas menos si no tenéis una red muy compleja) podéis hacer funcionar un proxy fácilmente. 

Links de interés 

http://www.squid-cache.org/

That u don't know what you've got 'til it's gone