Tabla de Contenidos

Curso Linux Avanzado

1.Repaso del curso básico

Objetivos

Recordar conocimientos adquiridos en la parte Básica del curso, para facilitar el aprendizaje en la parte Avanzada, así como responder preguntas que puedan haber surgido con la práctica.

Temario

1.1. [ ] Dispositivos

1.2. [ ] Permisos: conceptos básicos, aplicación

1.3. [ ] Licencia GNU

1.4. [ ] Histórico de comandos

1.5. [ ] Usuarios: creación, modificación y eliminación. Grupos

2. Redes TCP/IP: concepto, estructura y funcionamiento

Objetivos

Incorporar los conocimientos necesarios para poder entender cómo funcionan y cómo se instalan redes bajo estos protocolos

2.1. [ ] Protocolo TCP/IP: conceptos, versiones IPv4 e IPv6

El Protocolo de Control de Transmisión (TCP, Transmission Control Protocol) es uno de los principales componentes del protocolo de Internet (IP, Internet Protocol). El conjunto es a menudo llamado TCP/IP. TCP provee un método de envío de flujo de octetos confiable, ordenado y con comprobación de errores entre programas ejecutándose sobre computadoras conectadas a una red, sea local o pública. Reside en la capa de transporte del modelo OSI.

El Protocolo de Internet (IP, Internet Protocol) es el principal componente del conjunto de protocolos para envío de datagramas a través de redes interconectadas. Su función de ruteo permite internetworking y esencialmente establece Internet.

La versión que actualmente se utiliza en más del 96% de Internet es la 4, que ofrece direcciones de 32 bit. Data del año 1981. Para resolver el tema del agotamiento de las direcciones, entre otros, una nueva especificación fue desarrollada por la IETF. Fue llamada versión 6, y data del año 1998. Entre otras características, ofrece direcciones de 128 bit.

Ejemplo de dirección IPv4 (4 grupos de 8 bit cada uno): 192.0.2.235

Ejemplo de dirección IPv6 (8 grupos de 16 bit cada uno): 2001:0db8:0000:0000:0000:ff00:0042:8329

2.2. [ ] Redes: estructura, capas

Hay varios tipos de redes, siendo la más común hoy en día la topología en estrella. Las capas del modelo OSI son las siguientes:

2.3. [ ] Direcciones IP: rangos, resolución de nombres a direcciones IP

Rangos de direcciones IP en cada clase

Clase Rango N° de Redes N° de Host Por Red Máscara de red Broadcast ID
A 0.0.0.0 - 127.255.255.255 128 16 777 214 255.0.0.0 x.255.255.255
B 128.0.0.0 - 191.255.255.255 16 384 65 534 255.255.0.0 x.x.255.255
C 192.0.0.0 - 223.255.255.255 2 097 152 254 255.255.255.0 x.x.x.255
D 224.0.0.0 - 239.255.255.255 histórico
E 240.0.0.0 - 255.255.255.255 histórico

Rangos de direcciones IP privadas para cada clase

Si bien a bajo nivel la conexión entre equipos se realiza utilizando direcciones IP, para simplificar el trabajo humano y no tener que recordar los números de direcciones, se utilizan nombres de host y un sistema de resolución de nombres en su correspondiente dirección IP: Domain Name Service (DNS).

Si los equipos son pocos, se puede utilizar también el archivo /etc/hosts.

2.4. [ ] Configuración de redes

La configuración de red en CentOS se encuentra en el archivo /etc/sysconfig/network y en el directorio /etc/sysconfig/network-scripts/ dentro de varios archivos y scripts de configuración.

Los archivos más importantes allí dentro son ifcfg-lo y ifcfg-eth0. A continuación, un ejemplo de configuración de ifcfg-eth0 para utilizar una IP fija:

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
NETMASK=255.255.255.0
IPADDR=172.16.23.1
USERCTL=no

Sin embargo, si se desea utilizar DHCP:

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

Además, se debe indicar qué servidores DNSs el equipo deberá consultar. Eso se logra con el archivo /etc/resolv.conf colocando dentro algo como:

domain dominio
search dominio
nameserver 172.16.13.1

Firewall

Al ser instalado CentOS, por defecto trae algunas reglas de firewall que cierran el acceso a puertos que pudiesen estar abiertos.

A los efectos de este curso, el firewall no es necesario. Para desactivarlo, se debe limpiar primero las reglas de Netfilter y luego desactivar el script que configura las reglas al inicio del sistema operativo, tanto para IPv4 como IPv6:

iptables -F
chkconfig iptables off ; chkconfig ip6tables off

SELinux

SELinux es una mejora a la seguridad básica del kernel Linux. Sin embargo, si no se utiliza, o no se sabe cómo manejarlo, se debe desactivar para que los sistemas y servicios funcionen como deberían hacerlo por defecto.

Para ello, se debe editar el archivo de configuración /etc/sysconfig/selinux y asegurarse que la siguiente variable quede como:

SELINUX=disabled

3. DNS: qué es y cómo funciona, terminología, configuración

Objetivos

Entender la utilidad de tener un DNS configurado en el servidor, así como aprender la configuración y empleo del DNS BIND9.

3.1. [ ] DNS: utilidad, ventajas, conceptos básicos: zonas, CNAME, A, MX y otros

El Domain Name System (o Service, o Server) se encarga de devolver la dirección IP que corresponde a un nombre de host (resolución forward); también hace lo inverso, devolver el nombre de host que está configurado para una IP (resolución reverse). Como tal es un servicio básico e imprescindible en una intranet ya que, por un lado facilita el trabajo al evitar tener que recordar las direcciones IP que corresponden a los equipos, y por otra parte permite aprovechar servicios como HTTP, que hacen uso intensivo de los nombres de host.

Algunos conceptos:

3.2. [ ] BIND9: instalación, configuración, pruebas

Uno de los servidores de DNS más utilizados es Bind9, desarrollado por Internet Systems Consortium (ISC). Se caracteriza por ser rápido, eficiente y seguro.

Para instalarlo en CentOS:

yum install bind

El proceso se llama named y escucha en los puertos TCP y UDP 53.

La configuración se encuentra en los siguientes archivos y directorios:

Se debe tener en cuenta que la configuración de Bind es sumamente estricta, y un espacio o un punto de más o de menos provoca que el servicio no funcione.

En /etc/named.conf agregar o modificar donde corresponda:

listen-on port 53 { 127.0.0.1; 192.168.1.1;};
allow-query     { localhost; 192.168.1.0/24; };

Y al final de este archivo, pero antes de los includes, agregar la configuración para las zonas:

zone"dominio.local" IN {
type master;
file "forward.dominio";
allow-update { none; };
};
zone"1.168.192.in-addr.arpa" IN {
type master;
file "reverse.dominio";
allow-update { none; };
};

Luego crear ambos archivos en /var/named con lo siguiente:

forward.dominio

$TTL 86400
@   IN  SOA     dns.dominio.local. root.dominio.local. (
        2014060901  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)
@       IN  NS          dns.dominio.local.
@       IN  A           192.168.1.1
dns             IN  A   192.168.1.1

reverse.dominio

$TTL 86400
@   IN  SOA     dns.dominio.local. root.dominio.local. (
        2011071001  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)
@       IN  NS          dns.dominio.local.
@       IN  PTR         dominio.local.
dns             IN  A   192.168.1.1
1       IN  PTR         dns.dominio.local.

3.3. [ ] dig: modo de empleo

Dig es un utilitario para trabajar con DNS, solicitando resolución de hosts, direcciones IP, MX, etc.

Por ejemplo, para solicitar la IP de un host:

dig google.com

En cambio, para solicitar el host de una dirección IP:

dig -x 206.190.36.45

4. Apache

Objetivos

Incorporar los conocimientos que permitan configurar, poner en marcha, agregar funcionalidad y mantener un servidor Apache

4.1. [ ] Servidor web: filosofía y conceptos

Apache HTTP Server es uno de los servidores de dicho protocolo más utilizados en el mundo. Es extremadamente confiable, extensible, versátil y poderoso.

Para instalarlo en CentOS:

yum install httpd

4.2. [ ] Apache: configuración y módulos

En CentOS, la configuración de Apache se encuentra en los siguientes archivos y directorios:

Los archivos del sitio web, llamado document root están en /var/www/html

Los módulos de Apache, se encuentran en usr/lib64/httpd/modules

Por defecto, Apache al iniciar escucha sólo en localhost. Por lo tanto, debe buscarse dentro de httpd.conf la línea:

Listen 80

Y reemplazarla por:

Listen 0.0.0.0:80

4.3. [ ] Configurando un servidor de hosts virtuales

Para crear un nuevo host virtual, basta con agregar en httpd.conf algo como lo siguiente, para cada nuevo host virtual que se desee:

NameVirtualHost *:80

<VirtualHost *:80> 
  ServerAdmin webmaster@sitio1.com 
  DocumentRoot /var/www/sitio1.com/public_html 
  ServerName www.sitio1.com 
  ServerAlias sitio1.com 
  ErrorLog /var/www/sitio1.com/error.log 
  CustomLog /var/www/sitio1.com/requests.log
</VirtualHost>

<VirtualHost *:80> 
  ServerAdmin webmaster@sitio2.com 
  DocumentRoot /var/www/sitio2.com/public_html 
  ServerName www.sitio2.com 
  ServerAlias sitio2.com 
  ErrorLog /var/www/sitio2.com/error.log 
  CustomLog /var/www/sitio2.com/requests.log
</VirtualHost>

5.DHCP

Objetivos

Comprender la utilidad de tener un servidor de automatización de configuraciones de red, así como incorporar los conocimientos para configurarlo y ponerlo en marcha, haciendo que interactúe con otros servicios instalados.

5.1. [ ] Servidor DHCP: conceptos, utilidad, puesta a punto

DHCP ahorra mucho trabajo en la configuración de las estaciones de trabajo, ya que permite administrar la configuración de la red desde el servidor. Esta configuración actualiza el DNS (que debe estar configurado al efecto) con los datos de la estación de trabajo que solicitó una lease; asimismo, configura el navegador de la estación de trabajo con la información para el proxy:

ddns-updates on;
ignore client-updates;
update-static-leases on;
ddns-update-style interim;
option domain-name "dominio";
option domain-name-servers dns1.dominio dns2.dominio;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.10.255;
option ntp-servers time.dominio;
# Hora de Argentina GMT-3
option time-offset -10800;
option routers gateway.dominio;
option netbios-name-servers samba.dominio;
# Para que esto funcione en Mozilla
# tiene que haber un host "wpad.dominio"
# y se debe hacer un hardlink de proxy.pac a wpad.dat
option wpad code 252 = text;
option wpad "http://wpad.dominio/proxy.pac\n";

default-lease-time 600;
max-lease-time 7200;

authoritative;

log-facility local7;

# Configuración de una estación de trabajo
# con IP fija

host esta02 {
    hardware ethernet 00:d0:59:c6:b5:af;
    fixed-address esta02;
}

# Para que DHCP conozca qué zonas debe 
# actualizar
# Esto es MUY IMPORTANTE dado que de otra manera
# NO se actualizan las zonas en Bind
# Recordar que en la configuración de Bind, dichas zonas deben
# estar en /var/lib/bind/ para que puedan ser actualizadas por DHCP
# porque si no AppArmor impide el acceso a las mismas. Se puede hacer
# un hardlink de las mismas a /var/lib/bind/

zone dominio. {
  primary 127.0.0.1;
}

zone 10.168.192.in-addr.arpa. {
  primary 127.0.0.1;
}

# Configuración de un rango de IP's para
# asignación dinámica a las estaciones
# que las soliciten

subnet 192.168.10.0 netmask 255.255.255.0 {
    range 192.168.10.10 192.168.10.40;
}

# Más ejemplos de lo que se puede hacer:

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

#subnet 10.152.187.0 netmask 255.255.255.0 {
#}

# This is a very basic subnet declaration.

#subnet 10.254.239.0 netmask 255.255.255.224 {
#  range 10.254.239.10 10.254.239.20;
#  option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org;
#}

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name "internal.example.org";
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  default-lease-time 600;
#  max-lease-time 7200;
#}

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename "vmunix.passacaglia";
#  server-name "toccata.fugue.com";
#}

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.fugue.com;
#}

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class "foo" {
#  match if substring (option vendor-class-identifier, 0, 4) = "SUNW";
#}

#shared-network 224-29 {
#  subnet 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of "foo";
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of "foo";
#    range 10.0.29.10 10.0.29.230;
#  }
#}

Nota: esta configuración crea un DDNS (Dynamic DNS). Para que el DHCP pueda actualizar el DNS, el directorio de configuración del DNS debe tener el mismo usuario con el que se ejecuta su proceso. Por ejemplo, en Debian, el usuario es “bind”, entonces ejecutar “chown -R bind: /etc/bind”.

5.2. [ ] Interacción con otros servicios

proxy.pac (wpad.dat)

Para que la configuración automática de proxy funcione en las estaciones de trabajo, se debe realizar lo siguiente:

  1. Configurar un servidor web (como Apache)
  2. Poner en la raíz del servidor el proxy.pac, y un hard link a él llamado wpad.dat. Se puede ver un ejemplo de proxy.pac en este lugar.
  3. Configurar el DNS con un host llamado “wpad”, para que Mozilla Firefox no tenga problemas para encontrar el proxy.pac

DNS

En Bind, hay que asegurarse que las líneas

allow-update { none; };

Sean modificadas por

allow-update { localhost; };

6. Kernel: compilación y parcheo

Objetivos

Incorporar conocimientos sobre el funcionamiento de Linux, así como aprender a configurar, compilar, instalar y probar kernels en un mismo equipo.

6.1. [ ] Kernel: conceptos y filosofía

6.2. [ ] Compilación: procedimiento, prueba

El primer paso es instalar algunas herramientas de desarrollo, necesarias tanto para compilar, como para preparar el código fuente:

yum groupinstall "Development Tools"
yum install ncurses-devel
yum install hmaccalc zlib-devel binutils-devel elfutils-libelf-devel

6.3. [ ] Parcheo: utilidad, patch, instalando parches

7. Samba: configuración y puesta a punto

Objetivos

Incorporar conocimientos que permitan facilitar la interacción entre equipos Linux y Windows.

7.1. [ ] Samba: conceptos, usos, posibilidades

Samba permite compartir directorios, archivos e impresoras con estaciones de trabajo Windows. Es decir, permite simular el comportamiento de un equipo Windows en lo que a compartición de recursos se refiere. También puede actuar ofreciendo esos servicios a estaciones de trabajo Linux.

Permite también configurar un Primary Domain Controller (PDC) o un Backup Domain Controller (BDC).

7.2. [ ] Configuración y puesta a punto

Los archivos de configuración se encuentran en /etc/samba. El más importante es smb.conf. Este archivo típicamente se recomienda que sea lo más pequeño posible, sin comentarios y no se deben agregar variables o instrucciones a menos que se conozca exactamente el impacto que provocarán.

En un sistema CentOS, para evitar inconvenientes, se debería desactivar SELinux como primera medida, si no se lo necesita.

Un archivo de configuración típico de un Samba actuando como PDC, y con un directorio compartido llamado “archivos” puede ser:

[global]
        workgroup = INTRANET 
        netbios name = FILESRV
        netbios aliases = SERVER
        server string = Samba Server %v
        interfaces = lo eth0
        bind interfaces only = Yes
        passwd program = /usr/bin/passwd %u
        passwd chat = *New*password* %n\n *Retype*new*password* %n\n *passwd:*all*authentication*tokens*updated*successfully*
        unix password sync = Yes
        log file = /var/log/samba/%m.log
        max log size = 50
        max xmit = 65535
        name resolve order = host wins lmhosts bcast
        deadtime = 15
        add machine script = /usr/sbin/useradd -d /dev/null -g machines -s /bin/false -M %u
        logon script = inicio.cmd
        logon drive = Z:
        domain logons = Yes
        os level = 64
        preferred master = Yes
        domain master = Yes
        wins proxy = Yes
        wins support = Yes
        ldap ssl = no
        idmap config * : backend = tdb
        admin users = +admins
        create mask = 0660
        directory mask = 0770
        use sendfile = Yes
        posix locking = No
        strict locking = No

[homes] 
        comment = Home Directories
        read only = No
        browseable = No

[profiles]
        path = /datos/samba/profiles
        read only = No
        create mask = 0600
        directory mask = 0700
        browseable = No

[netlogon]
        comment = Network Logon Service
        path = /datos/samba/netlogon
        write list = +admins
        guest ok = Yes

[archivos]
        comment = Repositorio de archivos
        path = /datos/archivos
        read only = No

7.3. [ ] Administración de usuarios

En forma básica, los usuarios deben ser creados en el sistema primero, con el comando useradd y luego a Samba, con el comando smbpasswd:

useradd usuario
smbpasswd -a usuario

7.4. [ ] Configuración de comparticiones (almacenamiento e impresoras)

Las impresoras configuradas con CUPS, serán compartidas automáticamente mediante Samba con la siguiente configuración en smb.conf:

  [printers]
        comment = All Printers
        path = /tmp
        create mask = 0700
        printable = Yes
        print ok = Yes
        browseable = No

La configuración de un directorio compartido, permitiendo el acceso de los usuarios del grupo “intranet”, se realiza con un bloque de configuración como:

[archivos]
        comment = Archivos de datos
        path = /datos/archivos
        write list = +&intranet
        read only = No

8. Correo-e: SMTP/POP3/IMAP

Objetivos

Aprender a configurar, operar y mantener un servidor de correo electrónico completo.

8.1. [ ] SMTP/POP3/IMAP: conceptos, definiciones, funcionamiento

El servidor SMTP es el encargado de transferir los mensajes de correo electrónico tanto entre servidores, como repartirlo a los usuarios existentes dentro de un servidor. Escucha en el puerto TCP 25, mientras que el puerto seguro es TCP 465. En este curso se usará Postfix.

El servicio POP3 permite la transferencia de los mensajes de correo electrónico que han llegado a una cuenta, desde el servidor hasta la estación de trabajo. Generalmente luego de transferidos, son eliminados del servidor. El puerto del protocolo es TCP 110, mientras que el puerto seguro es TCP 995. En este curso se verá Cyrus POP3.

El servicio IMAP ofrece la posibilidad de que los usuarios puedan leer los mensajes de sus cuentas de correo-e en el servidor, sin que los mensajes queden físicamente en los clientes de correo electrónico, más que en forma temporal en su caché. Esto ofrece la posibilidad a los administradores de configurar permisos sobre los mensajes y carpetas, permitir el acceso a las mismas cuentas a varios usuarios, y otras posibilidades prácticas para empresas y grupos de trabajo. El protocolo tiene especificado el puerto TCP 143, mientras que el seguro es el puerto TCP 993.

8.2. [ ] Postfix: instalación y configuración del servidor SMTP

Postfix es un SMTP seguro, eficiente, flexible y poderoso. Sus archivos de configuración están en /etc/postfix, y los principales son main.cf y master.cf. En el primero se define la mayor parte de la configuración del servicio, mientras que en el segundo se configuran los procesos y sistemas que forman parte de Postfix.

Algunas de las variables más importantes que se debe configurar en main.cf son:

myorigin = $myhostname
inet_interfaces = $myhostname, localhost
mydestination = $myhostname, localhost.$mydomain, localhost

En master.cf para activar el puerto seguro 465, se debe descomentar el siguiente bloque de configuración:

smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING

8.3. [ ] CyrusIMAP: instalación y configuración del servidor IMAP/POP3

Cyrus IMAP proveerá la posibilidad a los usuarios de leer su correo electrónico. Sus archivos de configuración están en /etc y son imapd.conf y cyrus.conf.

En el primero se define la configuración del servicio IMAP:

configdirectory: /var/lib/imap
partition-default: /var/spool/imap
admins: cyrus
sievedir: /var/lib/imap/sieve
sendmail: /usr/sbin/sendmail
hashimapspool: true
sasl_pwcheck_method: saslauthd
sasl_mech_list: PLAIN
tls_cert_file: /etc/pki/cyrus-imapd/cyrus-imapd.pem
tls_key_file: /etc/pki/cyrus-imapd/cyrus-imapd.pem
tls_ca_file: /etc/pki/tls/certs/ca-bundle.crt

Mientras que el segundo configura los procesos que forman parte del sistema IMAP. Por ejemplo, si se desea desactivar la posibilidad de que los usuarios utilicen POP3, se deben comentar ambas líneas en ese archivo:

  # add or remove based on preferences
  imap          cmd="imapd" listen="imap" prefork=5
  imaps         cmd="imapd -s" listen="imaps" prefork=1
  #pop3          cmd="pop3d" listen="pop3" prefork=3
  #pop3s         cmd="pop3d -s" listen="pop3s" prefork=1
  sieve         cmd="timsieved" listen="sieve" prefork=0

8.4. [ ] Otros sistemas que colaboran con el servidor de correo-e

Otros sistemas que son imprescindibles en un servidor de correo electrónico son el filtro antispam y el antivirus. Para el primero, se suele utilizar SpamAssassin, mientras que para el segundo un buen antivirus Open Source es ClamAV. Para unir ambos sistemas con el resto de los componentes, se usa Amavisd-new. La autenticación de usuarios puede ser realizada de manera básica con Cyrus SASL.

9. Squid: servidor proxy HTTP

Objetivos

Incorporar los conocimientos necesarios para configurar, ejecutar y poner a punto un servidor proxy HTTP.

9.1. [ ] Squid: conceptos y definiciones

Squid es un proxy HTTP, es decir, actúa almacenando localmente los archivos que emplean los usuarios al navegar Internet. Cuando otro usuario vuelve a requerir un archivo que ya está almacenado, el proxy se encarga de transferirlo desde la caché evitando así el uso de la conexión a Internet, liberando ésta para tráfico nuevo. Con ello, se mejora en gran medida la congestión de esa conexión.

Además, permite asignar permisos de acceso, o denegarlo a sitios, redes, o según horarios, entre otras posibilidades.

9.2. [ ] Instalación y puesta a punto

En el archivo de configuración, básicamente se deben adaptar dos líneas. La primera es para configurar la red donde está instalado Squid:

acl localnet src 172.16.13.0/24

Asegurarse que la ACL tenga permitido el acceso en la siguiente línea:

http_access allow localnet

Y la segunda el puerto en el cual se desea que Squid esté escuchando:

http_port 8080

Luego se puede mejorar el manejo interno de los archivos de la caché, así como el tamaño de ésta (en este ejemplo 10240 es el tamaño máximo en MB de la caché):

cache_dir aufs /var/spool/squid 10240 16 256

También se puede aumentar el tamaño máximo de los archivos que van a ser almacenados en la caché:

maximum_object_size 204800 KB

Luego, la configuración es muy amplia, existiendo muchísimas variables según lo que se necesite. La configuración de accesos y denegaciones se realiza con un lenguaje de ACLs.

Ejemplos de ACLs

Bloquear por dominio de destino

En squid.conf:

acl bloquear_todos dstdomain -i "/etc/squid/bloqueados.txt"

Y luego definir:

http_access deny bloquear_todos

En el archivo de texto con el listado de dominios, se debe poner éstos línea por línea:

.facebook.com
.youtube.com
.twitter.com