Escolar Documentos
Profissional Documentos
Cultura Documentos
DHCP
Una vez configuradas las tarjetas de red, empezamos con el DHCP.
Para instalar ejecutamos desde una consola el siguiente comando.
$ sudo apt-get install isc-dhcp-server
Ahora debemos configurar los parámetros del servicio DHCP, para eso
vamos a /etc/dhcp y antes de nada hacemos
un backup de dhcpd.conf.
$ sudo cp dhcpd.conf dhcpd.conf.original
Y editamos el fichero.
$ sudo gedit dhcpd.conf
Deberemos tener este conjunto de líneas por cada una de las reservas
que queramos tener.
Ya tenemos el segundo paso terminado.
También vamos a indicar cuando debe Squid vaciar la caché, esto nos
permitirá un mejor mantenimiento. Descomentamos las siguientes
líneas.
cache_swap_low 90
cache_swap_high 95
En mi caso dejo los valores que nos dan por defecto. Como última
modificación en las opciones de configuración de Squid, buscamos la
opción memory_pools, la descomentamos y la ponemos en off.
memory_pools off
Esta opción, hará que Squid libere la memoria RAM que no esté
utilizando.
Por último, tras la siguiente línea,
#
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR
CLIENTS
#
IPTABLES
Ya sólo nos faltan las IPTABLES, estas son muy duras de entender y no
es que las domine, pero podemos encontrar
varios scripts por internet que hacen lo que necesitamos.
Yo me he quedado con el siguiente que se adapta bastante a lo que
necesito.
#!/bin/sh
# IP del servidor SQUID
SQUID_SERVER="192.168.0.1"
# Interface conectada a Internet
INTERNET="eth0"
# Interface interna
LAN_IN="eth1"
# Puerto Squid
SQUID_PORT="3128"
# Limpia las reglas anteriores
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
# Carga los modulos IPTABLES para NAT e IP con soporte
conntrack
modprobe ip_conntrack
modprobe ip_conntrack_ftp
echo 1 > /proc/sys/net/ipv4/ip_forward
# Politica de filtro por defecto
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
# Acceso ilimitado a loop back
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# Permite UDP, DNS y FTP pasivo
iptables -A INPUT -i $INTERNET -m state --state
ESTABLISHED,RELATED -j ACCEPT
# Establece el servidor como router para la red
iptables --table nat --append POSTROUTING --out-interface
$INTERNET -j MASQUERADE
iptables --append FORWARD --in-interface $LAN_IN -j ACCEPT
# acceso ilimiato a la LAN
iptables -A INPUT -i $LAN_IN -j ACCEPT
iptables -A OUTPUT -o $LAN_IN -j ACCEPT
# Redirige las peticiones de la red interna hacia el proxy
iptables -t nat -A PREROUTING -i $LAN_IN -p tcp --dport 80
-j DNAT --to $SQUID_SERVER:$SQUID_PORT
# Redirige la entrada al proxy
iptables -t nat -A PREROUTING -i $INTERNET -p tcp --dport
80 -j REDIRECT --to-port $SQUID_PORT
# Registrar todo
iptables -A INPUT -j LOG
iptables -A INPUT -j DROP
Mi programa de instalación:
i) Sistema: Sistema CPU dual Xeon HP con 8 GB de RAM (suficiente para squid).
iii) Eth1: IP: 192.168.2.1 ( red 192.168.2.0/24 (aproximadamente 150 sistemas Windows))
iv) Sistema operativo Red Hat Enterprise Linux (Siguiendo la instrucción debería funcionar con
Debian y todas las otras distribuciones Linux)
Eth0 conectado a internet y eth1 conectado a lan es decir, actúan como sistema local router.
En primer lugar, el servidor Squid instalado (squid uso up2date) y configurar agregando siguientes
directivas para presentar:
# vi /etc/squid/squid.conf
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
Donde:
•httpd_accel_with_proxy on: Usar Squid tanto como un acelerador de httpd local y como un proxy.
•acl lan src 192.168.1.1 192.168.2.0/24: lista de control de acceso, sólo se permiten equipos de la
LAN para utilizar el squid
•http_access allow localhost: acceso Squid para LAN y localhost ACL sólamente
•http_access allow lan: - ídem -
Aquí está la lista completa de squid.conf para su referencia (grep eliminará todos los comentarios y
sed eliminará todas las líneas vacías)
Salida:
hierarchy_stoplist cgi-bin ?
hosts_file /etc/hosts
cache_mem 1024 MB
visible_hostname myclient.hostname.com
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
coredump_dir /var/spool/squid
Configuración de iptables
A continuación, añadir las siguentes reglas para desviar todas las peticiones http (próximos al
puerto 80) al puerto del servidor Squid 3128:
Aquí está el script completo. Primero configurar el sistema Linux como router y reenvía todas las
peticiones HTTP con el puerto 3128
#!/bin/sh
# squid server IP
SQUID_SERVER="192.168.1.1"
INTERNET="eth0"
# Interface connected to LAN
LAN_IN="eth1"
# Squid port
SQUID_PORT="3128"
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
modprobe ip_conntrack
modprobe ip_conntrack_ftp
#modprobe ip_nat_ftp
# if it is same system
Guardar script de shell. Ejecutar secuencia de comandos para que el sistema actúe como un router
y redirigir los puertos:
# chmod +x /etc/fw.proxy
# /etc/fw.proxy
# chkconfig iptables on
# /etc/init.d/squid restart
# chkconfig squid on
# tail -f /var/log/squid/access.log
El comando de arriba supervisará todas las peticiones entrantes y los ingresa al archivo de
registro /var/squid/access_log. Ahora bien, si alguien accede a un sitio web a través del
navegador, squid registrarán información.
Problemas y soluciones
Todo cliente de Escritorio que solicite una sesión FTP terminará con un error: Comando PORT
ilegal.
Esto es por que no había cargado el módulo del kernel ip_nat_ftp. Sólo tienes que escribir el
siguiente comando y pulsar Enter y ¡voilá!
# modprobe ip_nat_ftp
Tuve a bloquear todas las solicitudes de conexión del router a excepción de nuestro servidor proxy
(192.168.1.1). Así que todos los puertos incluyendo el 443 (HTTPS / SSL). No se puede redirigir el
puerto 443, extraje a partir de la lista de correo Debian: "Respuesta larga: SSL está
específicamente diseñado para impedir el ataque "man-in-the-middle", y consecuente el uso de
squid, de tal manera que sería lo mismo que un ataque "hombre en el medio". Puede que se puede
llegar a alcanzar con éxito esto, pero no sin romper el cifrado y la certificación de que es el punto
detrás de SSL ".
Por lo tanto, yo había reabrir rápidamente el puerto 443 del (firewall router) para todos mis
equipos de la LAN y problema estaba resuelto.
ifconfig
Como vemos en la imagen, poseemos dos interfaces de red, etc0 y eht1. eth0 será la interfaz
que nos conectará con nuestra red local y eth1 nos conectará con el ruter que a su vez no
conectará a Internet. Necesitamos configurar eth0 de forma estática, para ello abrimos un
terminal y tecleamos:
auto lo
iface lo inet loopback
auto eth1
iface eth1 inet dhcp
auto eth0
iface eth0 inet static
address 10.0.0.1
netmask 255.0.0.0
gateway 10.0.0.1
Bien, ya tenemos configurada eth1 como dinámica y eth0 como estática. Ahora reiniciamos el
servicio de red, desde la terminal:
Ya tenemos instalado nuestro servidor DHCP, ahora vamos a configurarlo, así que tenemos
tecleamos lo siguiente en una consola:
Una vez con el archivo abirto, borramos el contenido y lo dejamos aproximadamente así:
cd /usr/local/src
Una vez allí, volvemos a teclear en el terminal lo siguiente:
sudo wget http://www.squid-cache.org/Versions/v3/3.0/squid-3.0.STABLE24.tar.gz
Eso descargará la última versión de Squid al directorio en el que nos encontramos. Cuando ya
tenemos descargado el paquete de Squid, tenemos que descomprimirlo, por lo que tecleamos
en un terminal:
Muy bien, ya tenemos los archivos de Squid listos para compilar, para esto necesitaremos
tener instalado un compilador de C/C++ en nuestra máquina, por lo que en un terminal
tecleamos:
cd squid-3.0.STABLE24
Bien, ya estamos dentro de dicho directorio, ahora de nuevo en un terminal tecleamos lo
siqguiente:
sudo make
Este proceso también tardará unos minutos posiblemente. Al finalizar este proceso, escibimos
lo siguiente en la consola:
Nota: Es posible que al añadir el grupo nos diga que ya existe un grupo
llamado squid, no pasa nada, nos saltamos este paso y sin problemas.
Ahora vamos a hacer al usuario squid dueño de los directorios de Squid. Para ello nos vamos
a un terminal y tecleamos:
cd /usr/local/squid
Una vez estamos en este directorio, tecleamos lo siguiente:
chgrp -R squid *
Con esto, el usuario squid ya es dueño de los directorios que maneja Squid. Vamos ahora a
configurar nuestro Squid para permitir la conexión a nuestra red, nos vamos a un terminal y
tecleamos:
Una vez tenemos el archivo, con Ctrl + F, buscamos la línea http_port, la borramos y la
añadimos de esta forma:
Volvemos a realizar otra búsqueda, esta vez de cache_effective_user, aquí añadimos dos
líneas:
cache_effective_user squid
cache_effective_group squid
Ahora vamos a añadir una ACL, nos vamos a la zona de las ACL, que está por la
línea 600 más o menos, y allí añadimos:
Ya queda poco por hacer, ahora vamos a crear los directorios para la caché de Squid, así que
desde un terminal tecleamos:
sudo /usr/local/squid/sbin/squid -z
Ahora toca configurar rc.local para que arranque Squid y proxy-rules.sh al iniciar Ubuntu,
esto es fácil, desde el terminal tecleamos:
sh /etc/init.d/proxy-rules.sh
cd /usr/local/squid/sbin/
./squid
Magnífico, ya sólo queda reiniciar nuestra máquina y comprobar que hay dos procesos
de Squidejecutándose en nuestro equipo. Una vez con la máquina reiniciada, volvemos a abrir
un terminal y tecleamos:
Si nos apareden los dos procesos de Squid significa que todo está correcto, ya tenemos
nuestroproxy caché transparente instalado y configurado.