Date post: | 21-Oct-2015 |
Category: |
Documents |
Upload: | christian-s-medina |
View: | 124 times |
Download: | 3 times |
SERVIDOR SQUID PROXY WEB Centos Linux 5.6
Squid es el software para servidor Proxy más popular y
extendido entre los sistemas operativos basados sobre
UNIX®. Es muy confiable, robusto y versátil. Al ser
software libre, además de estar disponible el código
fuente, está libre del pago de costosas licencias por uso o
con restricción a un uso con determinado número de
usuarios.
Christian Medina T. [email protected]
Servidor Proxy Web – Squid 2.6
Centos
5.4
1. SOFTWARE REQUERIDO.
Para poder llevar la cabo los procedimientos descritos en este manual y documentos
relacionados, usted necesitará tener instalado al menos lo siguiente:
Sistema Operativo Centos Linux 5.6
Squid 2.6 STABLE
Apache 2.0
IPTables 1.3.5
Reportador Gráfico SARG 2.2.5
IS-dhcpd 3.0
2. DIAGRAMA LÓGICO DE LA RED
Servidor Proxy Web – Squid 2.6
Centos
5.4
3. INSTALACIÓN DEL SISTEMA OPERATIVO CENTOS LINUX 5.6
Configurar en la BIOS el primer dispositivo de arranque la unidad CD- DVD, inserta el disco y
reinicia la PC.
La ventana de bienvenida, pregunta si deseamos hacer un test antes de la instalación,Dicho
test es para verificar si el CD ó DVD esta en optimas condiciones y no presenta ningun archivo
dañado. Por lo siguiente, damos Skip.
Cargando la configuración de instalación.
Haga clic sobre el botón «Siguiente».
Configuración del idioma selecciona (Español) como muestra en la imagen.
Haga clic sobre el botón «Siguiente».
Servidor Proxy Web – Squid 2.6
Centos
5.4
Selección de teclado busque Español.
Haga clic sobre el botón «Siguiente».
Partición del disco duro, escojamos la opción personalizada.
Servidor Proxy Web – Squid 2.6
Centos
5.4
La herramienta de particiones mostrará el espacio disponible. Haga clic en el botón
«Nuevo».
Ahora bien vamos a crear la partición con sistema de archivo ext3 y el punto de montaje:
/ (Directorio Raíz). Este es la partición donde se instalará el sistema base de CentOS.
Servidor Proxy Web – Squid 2.6
Centos
5.4
Haga clic sobre el botón «Aceptar».
Servidor Proxy Web – Squid 2.6
Centos
5.4
Haga clic en el botón «Nuevo».
Para crear la siguiente partición, intercambio swap no requiere punto de montaje. Seleccione
en el campo de
«Tipo de sistema de archivos» la opción swap.
La partición de intercambio swap, sirve como memoria virtual para ejecutar mas rápidos los
procesos y no se bloque el sistema, si la PC tiene poca memoria física, es recomendable crear
la partición con un tamaño similar a la cantida de MB o Gb que posea de Memoria RAM .
Haga clic sobre el botón «Aceptar».
Haga clic sobre el botón «Siguiente».
Servidor Proxy Web – Squid 2.6
Centos
5.4
Sin modificaciones.
Haga clic sobre el botón «Siguiente».
Configuración de la zona horaria, con el puntero seleccione el mapa de Perú y busque la
capital.
Servidor Proxy Web – Squid 2.6
Centos
5.4
Servidor Proxy Web – Squid 2.6
Centos
5.4
Asigne una clave de acceso al usuario root.
Al terminar, haga clic sobre el botón «Siguiente», y espere a que el sistema haga la lectura de
información de los grupos de paquetes.
Servidor Proxy Web – Squid 2.6
Centos
5.4
Selección del entorno grafico de escritorio escojamos GNOME / KDE.
Haga clic sobre el botón «Siguiente».
Se realizará una comprobación de dependencias de los paquetes a instalar. Este proceso
puede demorar algunos minutos.
Servidor Proxy Web – Squid 2.6
Centos
5.4
Haga clic sobre el botón «Siguiente».
Servidor Proxy Web – Squid 2.6
Centos
5.4
Haga clic sobre el botón «Siguiente».
Dependiendo de la capacidad de la PC, el proceso de instalación puede tardar algunos minutos.
Servidor Proxy Web – Squid 2.6
Centos
5.4
Instalación de finalizada clic en botón Reiniciar.
Una vez terminada la instalación debemos hacer una actualización completa del sistema y
comenzar a bajar los 300Mb que seguramente abran en actualizaciones.
Servidor Proxy Web – Squid 2.6
Centos
5.4
# yum upgrade
Después del upgrade reiniciaremos el server para ver que todo ha ido bien y le echaremos un
vistazo al /var/log/messages
# nano /var/log/messages
Luego instalaremos todos los paquetes que necesitamos para nuestra implementación :
SQUID 2.6 ( SQUID )
yum -y install squid
APACHE 2.0 ( HTTPD )
yum -y install httpd
SERVICIO DHCP ( DHCPD )
yum -y install dhcp
REPORTADOR GRÁFICO SARG.
Ya que el paquete SARG no está en los repositorios oficiales de Centos Linux, lo
instalaremos desde los repositorios del Sitio Web Alcance Libre.
Ingrese al sistema como el usuario root.
Proceda a configurar el depósito YUM de Alcance Libre que incluye el paquete modificado
de squid con soporte para direcciones MAC:
cd /etc/yum.repos.d/
wget -N http://www.alcancelibre.org/al/server/AL-Server.repo
cd -
Servidor Proxy Web – Squid 2.6
Centos
5.4
Proceda a instalar sarg utilizando el siguiente mandato.
yum -y install sarg
Una vez que tenemos todo el software instalado arrancaremos “ntsysv” para
deshabilitar y habilitar todos los servicios que necesitemos y que comienzen
automáticamente cuando el sistema inicie. Tenemos que habilitar iptables, httpd, dhcpd y
squid.
ntsysv
CONFIGURACIÓN DEL GATEWAY
Por defecto Linux no realiza funciones de ruteo (forwarding), por tanto no es capaz de aceptar
un paquete que no sea para el y rutarlo hacia la mejor ruta. Como nuestro objetivo es que
este servidor también haga de gateway tendremos que activar esta opción.
Editaremos :
nano /etc/sysctl.conf
Servidor Proxy Web – Squid 2.6
Centos
5.4
y cambiaremos
“net.ipv4.ip_forward=0”
por “net.ipv4.ip_forward=1”.
Después solo tenemos que reiniciar los servicios de red con
service network restart
ó /etc/init.d/network restart
Si configuramos una estación y le ponemos como puerta de enlace este servidor ya
deberíamos poder navegar por Internet (si no navegamos tendríamos que parar el
iptables ya que aun no lo hemos configurado correctamente).
CONFIGURACIÓN DE LAS INTERFACES DE RED.
Para este servidor físico, se están utilizando 2 interfaces de red. Una que tendrá salida a
internet y la otra hacia nuestra red interna, para ello debemos configurar y asignar las ips
correspondientes para que las peticiones de internet de nuestra LAN tengan salida a
internet por intermedio de dicho servidor.
Salida a Internet : Dispositivo eth1 : Integrado NetXtreme BCM5722 Ethernet Adapater
Para este dispositivo se configurara un Ip de clase C y como puerta de enlace la Ip que por
defecto viene en el Router Zyxel 660H brindado por Telefónica. Editamos el siguiente archivo :
nano /etc/sysconfig/networking/profiles/default/ifcfg-eth1
Quedando el archivo configurado como se muestra en la figura .
Servidor Proxy Web – Squid 2.6
Centos
5.4
Red Interna : Dispositivo eth0 : D-Link System Ethernet Adapater
Para este dispositivo se configurara un Ip de clase A, donde está Ip servirá como puerta de
enlace para todos los equipos asignados por Dhcp de nuestra Red Interna. Editamos el
siguiente archivo.
nano /etc/sysconfig/networking/profiles/default/ifcfg-eth0
Quedando el archivo configurado como se muestra en la figura
Servidor Proxy Web – Squid 2.6
Centos
5.4
Después solo tenemos que reiniciar los servicios de red para que todo quede asignado.
service network restart
ó /etc/init.d/network restart
CONFIGURACIÓN DEL SERVICIO DHCP.
DHCP (acrónimo de Dynamic Host Configuration Protocol que se traduce Protocolo de
configuración dinámica de servidores) es un protocolo que permite a dispositivos individuales en
una red de direcciones IP obtener su propia información de configuración de red (dirección IP;
máscara de sub-red, puerta de enlace, etc.) a partir de un servidor DHCP, en este caso nuestro
servidor.
PROCEDIMIENTOS.
SELinux y el servicio dhcpd.
A fin de que SELinux permita al servicio dhcpd funcionar normalmente y sin protección alguna,
utilice el siguiente mandato.
setsebool -P dhcpd_disable_trans 1
Servidor Proxy Web – Squid 2.6
Centos
5.4
A fin de que SELinux permita al sistema funcionar normalmente y sin protección alguna como
cliente DHCP, utilice el siguiente mandato.
setsebool -P dhcpc_disable_trans 1
Fichero de configuración /etc/dhcpd.conf.
nano /etc/dhcpd.conf
Quedando como se muestra en la figura, en donde definimos el rango de Ips a asignar
automáticamente por el servidor de acuerdo a nuestra IP de clase A que previamente
configuramos en el dispositivo eth0
En este fichero podemos asignar un Ip predeterminada a cada usuario o host de nuestra red,
para que cada vez que se conecten a la red, tengan siempre la misma Ip, para definir un usuario
o host en nuestra red solo debemos colocar los siguientes parámetros, tal y como se muestra
en la siguiente figura :
Servidor Proxy Web – Squid 2.6
Centos
5.4
En donde se define como :
host CATALOGACION { # Nombre del Host de Pc Cliente
option host-name “CATALOGACION”; # Un host name opcional
hardware ethernet 00:24:1d:1e:17:96; # Dirección Mac de nuestro equipo cliente
fixed-address 10.10.1.12; ·# Direccion Ip a asignar siempre
}
Una buena medida de seguridad es hacer que el servicio dhcpd solo funcione a través de la
interfaz de red utilizada por la LAN, esto en el caso de tener múltiples dispositivos de red. Edite
el fichero /etc/sysconfig/dhcpd y agregue como argumento del parámetro DHCPDARGS el
valor eth0, eth1, eth2, etc., o lo que corresponda. Ejemplo, como hemos considerado que eth0
es la interfaz correspondiente a la LAN, quedaría de la siguiente manera :
Fichero de configuración /etc/sysconfig/dhcpd
# Command line options here
DHCPDARGS=eth0
Iniciar, detener y reiniciar el servicio dhcpd.
Para iniciar por primera vez el servicio dhcpd, utilice:
/sbin/service dhcpd start
Servidor Proxy Web – Squid 2.6
Centos
5.4
Para hacer que los cambios hechos a la configuración del servicio dhcpd surtan efecto, utilice:
/sbin/service dhcpd restart
Para detener el servicio dhcpd, utilice:
/sbin/service dhcpd stop
Agregar el servicio dhcpd al arranque del sistema.
Para hacer que el servicio de dhcpd esté activo con el siguiente inicio del sistema, en todos los
niveles de corrida (2, 3, 4, y 5), se utiliza lo siguiente:
/sbin/chkconfig dhcpd on
CONFIGURACIÓN DEL IPTABLES.
Lo primero que vamos hacer es asegurar el servidor configurando el firewall. Para ello
editaremos la configuración de iptables desde “/etc/sysconfig/iptables”. La configuración sería
algo parecida a esta :
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
:LOGDROP - [0:0]
-A LOGDROP -j LOG --log-prefix "IPTABLES "
-A LOGDROP -j DROP
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# Filtro de paquetes entrantes al servidor.
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s
192.168.1.5/255.255.255.255 --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s
192.168.1.5/255.255.255.255 --dport 3128 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp -s
192.168.1.5/255.255.255.255 --dport 10000 -j ACCEPT
# Filtramos donde pueden conectarse las estaciones
# podemos hacer Pings a Internet
-A RH-Firewall-1-INPUT -p icmp -m icmp -s 192.168.1.0/255.255.255.0 --icmp-type echo-
request -j ACCEPT
Servidor Proxy Web – Squid 2.6
Centos
5.4
# Acceso al correo
-A RH-Firewall-1-INPUT -m tcp -p tcp -s 192.168.1.0/255.255.255.0 -d 80.80.80.80 --
dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -m tcp -p tcp -s 192.168.1.0/255.255.254.0 -d 80.80.80.80 --
dport 110 -j ACCEPT
# Acceso a Web seguro
-A RH-Firewall-1-INPUT -m tcp -p tcp -s 192.168.1.0/255.255.255.0 --
dport 443 -j ACCEPT
# permitimos hacer consultas DNS
-A RH-Firewall-1-INPUT -p udp -s 192.168.1.0/255.255.255.0 --
dport 53 -j ACCEPT
# Denegamos el resto de paquetes
-A RH-Firewall-1-INPUT -m tcp -p tcp -j LOGDROP
-A RH-Firewall-1-INPUT -j DROP
# Prohibimos el ICMP Redirect para evitar el cambio de ruta de los paquetes.
-A OUTPUT -p icmp -m icmp --icmp-type redirect -j DROP
COMMIT
*nat
:PREROUTING ACCEPT [2:557]
:POSTROUTING ACCEPT [1:108]
:OUTPUT ACCEPT [1:108]
# Redireccionamiento paral el Transparent-Proxy con Squid
-A PREROUTING -i eth0 -p tcp -m tcp -s 192.168.1.0/255.255.255.0 --dport 80 -j
REDIRECT
--to-ports 3128
COMMIT
Existen multitud de scripts para generar reglas para iptables. Lo que definimos primero son las
reglas necesarias para que solo el administrador del sistema (@ip 10.10.1.25) se pueda
conectar por SSH.
El siguiente conjunto de reglas que vamos a definir en un archivo diferente al que se encuentra
en /etc/sysconfig/iptables y que llamaremos reglas_servidor_muni.sh , contendrán todas la
reglas que definen donde y como se pueden conectar las maquinas de nuestra red . Por
política de la institución a los usuarios que solo podrán navegar. Dichas reglas, se ejecutaran
automáticamente cuando el servidor se inicie,
Para las reglas de NAT introducimos una regla de prerouting por la cual todos los paquetes
que vayan al puerto 80 (http) se redireccionan al pueto 3128 (el Proxy squid).
Nota: Para el que no este acostumbrado al funcionamiento de iptables decir que las ACLs se
procesan de arriba abajo. Cuando una regla es cierta para un paquete, este es denegado o
aceptado y ya no se procesan más reglas. Si al final el paquete no es aceptado por ninguna
regla, la ultima regla elimina el paquete.
Servidor Proxy Web – Squid 2.6
Centos
5.4
Servidor Proxy Web – Squid 2.6
Centos
5.4
Archivo : reglas_servidor_sipan.sh
#!/bin/sh
#Alias servidor
echo -n Aplicando Reglas de Firewall...
/sbin/modprobe ip_tables
/sbin/modprobe iptable_filter
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -t nat -F
/sbin/iptables -t nat -X
/sbin/iptables -t filter -F
/sbin/iptables -t filter -X
/sbin/iptables -t mangle -F
/sbin/iptables -t mangle -X
/sbin/iptables --policy INPUT ACCEPT
/sbin/iptables --policy OUTPUT ACCEPT
/sbin/iptables --policy FORWARD ACCEPT
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -A INPUT -i eth1 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j
ACCEPT
/sbin/iptables -A INPUT -i eth1 -p tcp --dport 20:21 -m state --state NEW,ESTABLISHED -j
ACCEPT
/sbin/iptables -A INPUT -p tcp -i eth1 --dport 21 -m state --state ESTABLISHED,RELATED -
j ACCEPT
/sbin/iptables -A INPUT -p tcp -i eth1 --dport 20 -m state --state ESTABLISHED,RELATED -
j ACCEPT
/sbin/iptables -A INPUT -p tcp -i eth1 --dport 23 -m state --state ESTABLISHED,RELATED -
Servidor Proxy Web – Squid 2.6
Centos
5.4
j ACCEPT
/sbin/iptables -A INPUT -p tcp -i eth1 --dport 443 -m state --state ESTABLISHED,RELATED
-j ACCEPT
# Para salida POP3, SMTP , IMAP
/sbin/iptables -A OUTPUT -s 10.10.1.25 -p tcp --dport 25 -j ACCEPT
/sbin/iptables -A INPUT -d 10.10.1.25 -p tcp --sport 25 -j ACCEPT
/sbin/iptables -A OUTPUT -s 10.0.0.0/8 -p tcp --dport 25 -j ACCEPT
/sbin/iptables -A INPUT -d 10.0.0.0/8 -p tcp --sport 25 -j ACCEPT
/sbin/iptables -A OUTPUT -s 10.10.1.25 -p tcp --dport 143 -j ACCEPT
/sbin/iptables -A INPUT -d 10.10.1.25 -p tcp --sport 143 -j ACCEPT
/sbin/iptables -A OUTPUT -s 10.10.1.25 -p tcp --dport 110 -j ACCEPT
/sbin/iptables -A INPUT -d 10.10.1.25 -p tcp --sport 110 -j ACCEPT
/sbin/iptables -A OUTPUT -s 10.0.0.0/8 -p tcp --dport 110 -j ACCEPT
/sbin/iptables -A INPUT -d 10.0.0.0/8 -p tcp --sport 110 -j ACCEPT
#Bloquear Imo.im
/sbin/iptables -A FORWARD -s 0/0 -d 64.13.161.61 -p tcp --dport 443 -j DROP
/sbin/iptables -A FORWARD -s 0/0 -d 64.13.161.61 -p udp --dport 443 -j DROP
# y por si acaso
/sbin/iptables -A FORWARD -d 0/0 -s 64.13.161.61 -p tcp --sport 443 -j DROP
/sbin/iptables -A FORWARD -d 0/0 -s 64.13.161.61 -p udp --sport 443 -j DROP
# Por recontracaso
/sbin/iptables -A FORWARD -p tcp -d 64.13.161.61 --dport 443 -j REJECT
/sbin/iptables -A FORWARD -p udp -d 64.13.161.61 --dport 443 -j REJECT
/sbin/iptables -A FORWARD -p tcp -d 64.4.15.61 --dport 443 -j REJECT
#---------------------------------------------------------------------------------------
# Al firewall tenemos acceso desde la red local
/sbin/iptables -A INPUT -s 10.10.0.0/8 -i eth0 -j ACCEPT
/sbin/iptables -A INPUT -s 127.0.0.0/8 -p tcp --dport 22 -j ACCEPT
/sbin/iptables -A INPUT -s 190.41.204.95 -i eth1 -j ACCEPT
# Museo
Servidor Proxy Web – Squid 2.6
Centos
5.4
/sbin/iptables -A FORWARD -s 10.0.0.0/8 -d www.museotumbasrealessipan.pe -p tcp -j
ACCEPT
## Acceso al PROXY
/sbin/iptables -A INPUT -i eth0 -s 10.10.0.0/8 -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A FORWARD -m state --state ESTABLISHED -j ACCEPT
/sbin/iptables -A FORWARD -s 10.10.0.0/8 -i eth0 -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A FORWARD -s 10.10.0.0/8 -i eth0 -p tcp --dport 80 -j ACCEPT
/sbin/iptables -A FORWARD -s 10.10.0.0/8 -i eth0 -p tcp --dport 8080 -j ACCEPT
/sbin/iptables -A FORWARD -s 10.10.0.0/8 -i eth0 -p tcp --dport 8081 -j ACCEPT
/sbin/iptables -A FORWARD -s 10.10.0.0/8 -i eth0 -p tcp --dport 20:21 -j ACCEPT
/sbin/iptables -A FORWARD -s 10.10.0.0/8 -i eth0 -p tcp --dport 23 -j ACCEPT
/sbin/iptables -A FORWARD -s 10.10.0.0/8 -i eth0 -p tcp --dport 53 -j ACCEPT
/sbin/iptables -A FORWARD -s 10.10.0.0/8 -i eth0 -p udp --dport 53 -j ACCEPT
/sbin/iptables -A FORWARD -s 10.10.0.0/8 -i eth0 -p tcp --dport 1723 -j ACCEPT
/sbin/iptables -A FORWARD -s 10.10.0.0/8 -i eth0 -p tcp --dport 20 -j ACCEPT
/sbin/iptables -A FORWARD -s 10.10.0.0/8 -i eth0 -p tcp --dport 21 -j ACCEPT
/sbin/iptables -A FORWARD -s 10.10.0.0/8 -i eth0 -p tcp --dport 22 -j ACCEPT
/sbin/iptables -A FORWARD -s 10.10.0.0/8 -i eth0 -p tcp --dport 100 -j ACCEPT
/sbin/iptables -A FORWARD -s 10.10.0.0/8 -i eth0 -p tcp --dport 102 -j ACCEPT
/sbin/iptables -A FORWARD -s 10.10.0.0/8 -i eth0 -p tcp --dport 443 -j ACCEPT
/sbin/iptables -A FORWARD -s 10.10.0.0/8 -i eth0 -p tcp --dport 23 -j ACCEPT
/sbin/iptables -A FORWARD -s 10.10.0.0/8 -i eth0 -p tcp --dport 5432 -j ACCEPT
# Aceptamos que consulten los DNS POP3 Terminal
/sbin/iptables -A FORWARD -s 10.10.0.0/8 -i eth0 -p tcp --dport 25 -j ACCEPT
/sbin/iptables -A FORWARD -s 10.10.0.0/8 -i eth0 -p tcp --dport 110 -j ACCEPT
/sbin/iptables -A FORWARD -s 10.10.0.0/8 -i eth0 -p tcp --dport 3389 -j ACCEPT
/sbin/iptables -A FORWARD -s 10.10.0.0/8 -i eth0 -p tcp --dport 995 -j ACCEPT
# BLOQUEAR CHAT GMAIL
/sbin/iptables -I INPUT -s chatenabled.mail.google.com -j DROP
/sbin/iptables -A OUTPUT -d chatenabled.mail.google.com -j DROP
/sbin/iptables -I FORWARD -s 0/0 -d chatenabled.mail.google.com -j DROP
Servidor Proxy Web – Squid 2.6
Centos
5.4
# Filtrando IP para MSN
/sbin/iptables -t filter -I INPUT -p tcp -s 10.10.0.0/8 --dport 1863 --syn -j ACCEPT
#/sbin/iptables -A FORWARD -p udp -d 10.10.2.130 --dport 3389 -j ACCEPT
# que otras maquinas puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
/sbin/iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth1 -j MASQUERADE
/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.1.2:3128
/sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
/sbin/iptables -N syn_flood
/sbin/iptables -A INPUT -i eth1 -p tcp --syn -j syn_flood
/sbin/iptables -A syn_flood -m limit --limit 1/s --limit-burst 5 -j RETURN
/sbin/iptables -A syn_flood -j DROP
/sbin/iptables -A FORWARD -s 10.10.0.0/8 -i eth0 -j DROP
echo " OK . Verifique que lo que se aplica con: /sbin/iptables -L -n"
#Fin del script
Para que iptables cargue las nuevas reglas definidas en reglas_servidor_sipan.sh solo hay
que ejecutar el script con permisos de root en la ubicación donde hemos guardado dicho script.,
en este caso en /etc/init.d/:
./reglas_servidor_muni.sh
Ejecutado el script, nuestras reglas de filtrado con Iptables queda configurado. Ahora solo falta
configurar SQUID.
Servidor Proxy Web – Squid 2.6
Centos
5.4
CONFIGURACIÓN DEL SQUID.
La política que seguiremos para esta implementación será la siguiente: queremos que todos
los usuarios puedan navegar (a excepción de los que se considere), en el intervalo de tiempo
definido por el administrador, queremos que existen ciertas paginas prohibidas, también
queremos que cierto tipo de archivos (exes, pif, etc) estén prohibidos al igual que las
conexiones a Messenger, Ares, Skype. Además que toda la red solo pueda acceder sólo a
páginas definidas por el administrado tales como, correo institucional, página del museo, etc.
Antes de configurar Squid vamos a crear archivos “listas” de configuración en
”/etc/squid/listas/”:
permitidos.acl : Direcciones MAC de usuarios con acceso total a todo.
accesoweb.acl: Páginas Web permitidas.
WEB_MUSEO.acl: Páginas permitidas para todo la red del Museo Tumbas Reales.
exten.acl Extensiones de archivo a denegar su descarga.
conrestrinccion.acl: Direcciones MAC de usuarios sin ningún privilegio.
por_horas.acl Direcciones MAC de usuarios con acceso por dia/hora.
porno.acl Sitios Web, aplicaciones pornográficas bloqueadas.
gmail_sin_chat.acl Aplicaciones y sitios web de mensajería denegadas.
Macs_https.acl Todas las Mac’s de las pc’s para que no accedan a https
El contenido permitidos.acl será:
00:26:b6:b7:fb:3e # Usuario 1
00:26:6c:3d:83:a9 # Usuario 2
El contenido de accesoweb.acl será:
.elperuano.com.pe
.gob.pe
.museotumbasrealessipan.pe
.eset.com
Servidor Proxy Web – Squid 2.6
Centos
5.4
El contenido de WEB_MUSEO.acl será:
.museotumbasrealessipan.pe
.adobe.com
get.adobe.com/es/flashplayer/
.amigosmuseosipan.com
.tiendamuseotumbassipan.com
.google.com
.google.com.pe
.windowsupdate.com
.mcafee.com
.nod32.com
.eset.com
.avg.com
.panda.com
.avira.com
.free-av.com
.yousendit.com
El contenido de exten.acl será:
.avi$ .mp4$ .mp3$ .mp4$ .mpg$ .mpeg$ .mov$ .ra$ .ram$ .rm$ .vob$ .wma$ .wmv$ .wav$ .mbd$ .ace$ .bat$ .exe$ .lnk$ .pif$ .scr$ .sys$
Servidor Proxy Web – Squid 2.6
Centos
5.4
El contenido de por_horas.acl será:
00:26:b6:b7:fb:3e
# Por ejm. Usuario con acceso
solo los sábados de 8 am – 10
am.
El contenido de conrestrinccion.acl será:
00:1a:73:df:94:0f # Usuario 5
00:25:86:b0:b8:f0 # Usuario 6
00:10:5a:c9:5d:e7 # Usuario 7
El contenido de porno.acl será:
.gemidos.com
.otrositioporno.com
.sitioindeseable.com
.otrositioindeseable.com
.petardas.com
.sexo
sex
porn
xxx
adult
El contenido de gmail_sin_chat.acl será:
^http://chatenabled.mail.google.com
^http:////mail.google.com/mail/channel/bind
mail.google.com/a/museotumbasrealessipan.pe/channel/bind
mail.google.com/a/amigosmuseosipan.com/channel/bind
mail.google.com/a/tiendamuseotumbassipan.com/channel/bind
.chatenabled.mail.google.com
.googlemail1.1.google.com
72.14.253.03
.messenger.yahoo.com
.msg.yahoo.com
.scd.yahoo.com
.sc5.yahoo.com
gmail.com
Servidor Proxy Web – Squid 2.6
Centos
5.4
mail.google.com/mail
webcam.yahoo.com
.skype.com
filetransfer.yahoo.com
mail.google.com/mail/channel/bind
webmessenger
Ahora ya estamos en condiciones de configurar Squid. Partiremos de la configuración estándar
de “/etc/squid/squid.conf” y la iremos modificando para ajustará a nuestras necesidades.
Lo primero que haremos es que el Proxy trabaje por su puerto estándar de forma
transparente. En versiones anteriores a la 2.6 la forma de ponerlo transparente no era tan fácil
como simplemente poner “transparent”.
http_port 3128 transparent
El siguiente paso es definir el conjunto de reglas de control de acceso:
Archivo /etc/squid/squid.conf
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl todo_el_museo src 10.0.0.0/255.0.0.0
acl horario_permitido time 18:10-23:59
#acl por_dias arp "/etc/squid/listas/por_horas.acl"
#acl por_dias_desde time SA
#-----------------------------------------
acl administrador arp "/etc/squid/listas/permitidos.acl"
#------------------------------------------
acl CONNECT method CONNECT
#-------------------------------------------------------------------
#acl aplicaciones_prohibidas
acl messenger url_regex -i messenger
acl meebo url_regex -i meebo
acl msn-messenger1 url_regex -i gateway.dll
acl msn dst 64.4.13.0/24 152.163.241.0/24 64.12.163.0/24
207.46.110.0/24
acl porno url_regex "/etc/squid/listas/porno"
acl extensiones urlpath_regex "/etc/squid/listas/extensiones"
#-------- MSN reglas---------------------
acl msn_url url_regex -i gateway.dll
Servidor Proxy Web – Squid 2.6
Centos
5.4
acl msn_url url_regex -i ADSAdClient31.dll
acl msn_messenger req_mime_type ^application/x-msn-messenger$
acl msn_port port 1863
acl msn_method method POST
# --------------------------------------------------------------
acl gtalk url_regex -i ^http:////mail.google.com/mail/channel/bind
acl gtalk2 url_regex -i chatenabled.mail.google.com
acl gmail url_regex -i gmail.com
acl puertos_gtalk port 5222-5223
acl WEB_MUSEO dstdomain "/etc/squid/listas/WEB_MUSEO.acl"
acl permitidos arp "/etc/squid/listas/permitidos.acl"
acl conrestriccion arp "/etc/squid/listas/conrestriccion.acl"
acl web url_regex "/etc/squid/listas/accesoweb.acl"
acl gmail_sin_chat url_regex "/etc/squid/listas/gmail_sin_chat.acl"
Una vez definidas las ACLs, las aplico para denegarlas o aceptarlas. Estas conjunto de reglas
van después del comentario :
“INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS”.
http_access deny gmail_sin_chat !permitidos
http_access deny !permitidos gtalk2
http_access deny !permitidos gtalk
http_access deny !permitidos puertos_gtalk
http_access deny gmail !permitidos
http_access allow WEB_MUSEO
http_access allow manager localhost
http_access deny manager
http_access deny conrestriccion
http_access allow permitidos
http_access allow web !meebo
http_access allow manager administrador
# bloqueamos el url que contenga gateway.dll
http_access deny !permitidos msn_method msn_url
# bloqueamos el puerto
http_access deny !permitidos msn_port
# bloqueamos por tunneling
http_access deny !permitidos CONNECT msn_port
http_access deny !permitidos msn
http_reply_access deny !permitidos msn-messenger1
#http_access deny !permitidos MSN_Messenger
http_access deny !permitidos msn_messenger
Servidor Proxy Web – Squid 2.6
Centos
5.4
Servidor Proxy Web – Squid 2.6
Centos
5.4
Con esta configuración los usuarios ya podrían comenzar a navegar. Reiniciaremos el
squid con “service squid restart” y echaremos un vistazo a “/var/log/squid/access.log” y
“/var/log/squid/store.log”.
Otra prueba interesante es desde una maquina cliente navegar por
http://whatismyipaddress.com/ la cual nos informa de los detalles del Proxy que esta
haciendo la petición, señal que nos indica que las peticiones las está realizando un Proxy y
no la maquina directamente.
Si un usuario debe descargarse algún programa de alguna pagina confiable pondríamos el
dominio de esta pagina dentro de WEB_MUSEO.acl y si queremos que alguna maquina no
pueda navegar, pondríamos su dirección IP o MAC dentro de conrestriccion.acl.