You are on page 1of 9

Proyecto Final Implementacin de un Servidor en Ubuntu Server 8.

10 que controle el trfico de red a travs de servicio IPTables y Proxy Squid.


Una vez realizada la instalacin del sistema operativo Ubuntu server se necesita proveer el servicio de internet basado en ciertas reglas que controlen el flujo de los datos que se transmiten a travs de ella. El primer paso ser configurar el servidor DHCP, para asignar las ip de manera automtica. Para este caso en particular tomaremos de referencia el siguiente modelo de red.

Se tomaran cono referencia los siguientes valores para asignar la los componentes de la red Direccin de red interna: 192.168.2.0/24 Interface con salida a internet: eth0 Interface conectada a la red interna: eth1 Ip de eth1: 192.168.2.1 Ip de eth0: 192.168.1.100 En este caso la salida a internet por medio de un modem 2wire provisto por la empresa Telmex. Lo primero que debemos da hacer es configurar las ip estaticas, a nuestras interfaces de red. sudo vi /etc/network/interfaces

En este archive utilizaremos esta configuracin # This file describes the network interfaces available on your system# and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto eth0 iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.254 dns-nameservers 192.168.1.254 auto eth1 iface eth1 inet static address 192.168.2.1 netmask 255.255.255.0 Los valores asignado se describen de la siguiente manera: Indica cual es la interface de loopback # This file describes the network interfaces available on your system# and how to activate them. For more information, see interfaces(5). # The loopback network interface auto loiface lo inet loopback Se define la configuracion para eth0 que es la tarjeta que nos conectara a internet # The primary network interface auto eth0 Aqui indicamos que la direccion es de tipo estatico iface eth0 inet static La variable addres es una ip del rango que nos asigna el modem para salir a internet address 192.168.1.100 netmask 255.255.255.0 La red por defecto network 192.168.1.0 broadcast 192.168.1.255 Es la puerta de enlace que nos da salida a internet gateway 192.168.1.254 Y los DNS en este caso usamos el mismo modem para que nos resuelva hacia internet, esto datos cambian segun la configuracion de la red que les da salida a internet dns-nameservers 192.168.1.254

Esta es la configuracin de la tarjeta de red a la que se conectara la red interna, solo hay que indicar la direccin IP y mascara, ya que nos conectaremos a internet por la otra tarjeta de red. auto eth1 iface eth1 inet static address 192.168.2.1 netmask 255.255.255.0 Para que cargue la nueva configuracin reiniciaremos el servicio de red sudo /etc/init.d/networking restart El resultado de nuestra correcta configuracion ser el siguiente. * Reconfiguring network interfaces... * if-up.d/mountnfs[eth0]: waiting for interface eth1 before doing NFS mounts[OK] El siguiente paso es configurar el DHCP, para asignar las direcciones ip de forma automtica, para esto usaremos dhcp3-server sudo apt-get install dhcp3-server Primero hay que indicar en que interface de red es donde va a escuchar para eso editamos el siguiente archivo sudo vi /etc/default/dhcp3-server En nuestro caso la tarjeta que va a proveer el servicio es la eth1 que va a la red interna # Defaults for dhcp initscript# sourced by /etc/init.d/dhcp# installed at /etc/default/dhcp3-server by the maintainer scripts ## This is a POSIX shell fragment# # On what interfaces should the DHCP server (dhcpd) serve DHCP requests?# Separate multiple interfaces with spaces, e.g. "eth0 eth1".INTERFACES="eth1" Ahora hay que configurar el dhcp, en el siguiente archivo. sudo vi /etc/dhcp3/dhcpd.conf Tendremos un muy extenso archivo de configuracin de lo cual solo hay que modificar los siguientes valores. ddns-update-style interim; authoritative; subnet 192.168.2.0 netmask 255.255.255.0 range 192.168.2.100 192.168.2.200; option domain-name-servers 192.168.1.254; option routers 192.168.2.1; option broadcast-address 192.168.2.255; default-lease-time 36000; max-lease-time 180000;

Empezamos por definir sobre que red se va atrabajar y la mascara ddns-update-style interim; authoritative; subnet 192.168.2.0 netmask 255.255.255.0 Indicamos el rango de direcciones que deseamos que asigne en este caso se asignaran desde la ip 192.168.2.5 hasta la ip 192.168.2.23 range 192.168.2.5 192.168.2.23; Indicamos los DNS option domain-name-servers 192.168.1.254; La puerta de enlace, en este caso el servidor ubuntu, ya que todas las mquinas de la red se conectaran a nosotros para proveerlos de internet. option routers 192.168.2.1; Estos son los valores que en dado caso se tendran que modificar segn su configuracin de red. Solo quedara reiniciar el servicio de DHCP sudo /etc/init.d/dhcp3-server restart Si todo est bien obtendremos esto * Stopping DHCP server dhcpd3 Starting DHCP server dhcpd3 Ahora instalaremos el proxy, en este caso Squid sudo apt-get install squid Es muy importante para poder compartir el internet tener activado al Froward, para esto crearemos un archivo que se ejecutara al inicio del arranque donde tambin se cargaran las reglas iptables, ya que estas configuraciones, se pierden cada vez que se apaga el equipo, este archivo se llamara iptables.cf, o como gusten llamarle sudo vi /etc/init.d/iptables.cf Y pondremos lo siguiente iptables iptables iptables iptables iptables iptables iptables iptables iptables iptables dport 80 -X -Z -t -P -P -P -t -t -t -t -j [ OK ]* [ OK ]

nat -F INPUT ACCEPT OUTPUT ACCEPT FORWARD ACCEPT nat -P PREROUTING ACCEPT nat -P POSTROUTING ACCEPT nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE nat -A PREROUTING -s 192.168.2.0/24 -d ! 192.168.2.0/24 -p tcp -REDIRECT --to-port 3128

iptables iptables iptables iptables iptables iptables iptables iptables iptables echo 1 >

-A INPUT -s 192.168.2.0/24 -i eth1 -j ACCEPT -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport -A FORWARD -s 192.168.2.0/24 -i eth1 -p udp --dport /proc/sys/net/ipv4/ip_forward

993 j ACCEPT 110 -j ACCEPT 465 -j ACCEPT 25 -j ACCEPT 80 -j ACCEPT 443 -j ACCEPT 53 -j ACCEPT 53 -j ACCEPT

Las reglas iptables nos ayudaran a decidir que dejar pasar por la red y por donde dejarlo pasar, en este caso, solo configuraremos las iptables para que nos redireccionen todo el del puerto 80 hacia el puerto 3128 que es el puerto del squid, para que no tengamos que configurar el proxy en todas las maquinas y ya que compartimos el internet enmascaramos todo lo que venga de la red interna y que saldra por la interface eth0, permitiremos tambien el forward para el dhcp y tambien para el correo, para no tener problemas con los clientes de correo. El archivo de configuracin se describe de la siguiente manera: Borramos las reglas que se estn ejecutando iptables -X iptables -Z iptables -t nat -F Aceptamos conexiones saliente, entrantes, el forward, prerouting y postrouting iptables iptables iptables iptables iptables -P -P -P -t -t INPUT ACCEPT OUTPUT ACCEPT FORWARD ACCEPT nat -P PREROUTING ACCEPT nat -P POSTROUTING ACCEPT

Esta es una configuracin muy bsica as que por el momento no nos preocuparemos por el tema de la seguridad (eso es otro HowTo). Habilitamos el enmascaramiento, para que la red interna pueda salir a internet por la conexin del server. iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE Activamos el re direccionamiento para el proxy transparente, tambin indicamos que lo re direccionaremos siempre y cuando el destino no sea una direccin dentro de la misma red, dgase servidores web locales todo lo dems al proxy iptables -t nat -A PREROUTING -s 192.168.2.0/24 -d ! 192.168.2.0/24 -p tcp -dport 80 -j REDIRECT --to-port 3128

Habilitamos el forward para los puertos especficos de correo y dhcp, pop, imap, simap, smtp, ssmtp y dhcp iptables iptables iptables iptables iptables iptables iptables iptables -A -A -A -A -A -A -A -A FORWARD FORWARD FORWARD FORWARD FORWARD FORWARD FORWARD FORWARD -s -s -s -s -s -s -s -s 192.168.2.0/24 192.168.2.0/24 192.168.2.0/24 192.168.2.0/24 192.168.2.0/24 192.168.2.0/24 192.168.2.0/24 192.168.2.0/24 -i -i -i -i -i -i -i -i eth1 eth1 eth1 eth1 eth1 eth1 eth1 eth1 -p -p -p -p -p -p -p -p tcp tcp tcp tcp tcp tcp tcp udp --dport --dport --dport --dport --dport --dport --dport --dport 993 -j ACCEPT 110 -j ACCEPT 465 -j ACCEPT 25 -j ACCEPT 80 -j ACCEPT 443 -j ACCEPT 53 -j ACCEPT 53 -j ACCEPT

Y por ltimo habilitamos el forward echo 1 > /proc/sys/net/ipv4/ip_forward Se otorgan permisos de ejecucin al archivo editado. sudo chmod a+x /etc/init.d/iptables.cf Ahora para que se ejecute al arranque instalaremos un pequeo programa que nos ayuda a configurar los archivos que se ejecutan al iniciar el sistema. sudo apt-get install rcconf y lo ejecutaremos con sudo rcconf

Veran esta pantalla solo hay que marcar el iptables.cf

Ahora hay que configurar el Squid, para eso editaremos el siguiente archivo. http_port 3128 transparent cache_mem 16 MB cache_dir ufs /var/spool/squid 700 16 256 ie_refresh on offline_mode on acl all src 0.0.0.0/0.0.0.0 acl red_local src 192.168.2.0/24 acl plus src "/etc/squid/plus.lst" acl sites url_regex "/etc/squid/sites.lst" acl files url_regex -i .exe .flv .mp4 .mp3 .avi .wma .mov .acc .wav .bat .asf .mpeg .3gp .swf acl localhost src 127.0.0.1/255.255.255.255 http_access deny red_local !plus sites http_access deny red_local !plus files http_access allow red_local http_access allow localhost http_access deny all Para que esto funciones habremos de crear dos archivos, uno donde se guardaran las pginas que deseamos bloquear, y otro donde tendremos una lista de las ip que tendrn derechos privilegiados. vi /etc/squid/sites.lst Aqu pondremos las paginas bloqueadas, esta es mi lista, algunas pginas de video redes sociales, mensajeros web etc. hi5.com www.metroflog.com mx.youtube.com es.youtube.com www.youtube.com.us www.youtube.com www.youtube.com.mx www.dailymotion.com www.tu.tv www.ebuddy.com www.meebo.com webmessenger.msn.com skydrive.live.com Y sigue la lista de direcciones privilegiadas sudo vi /etc/squid/plus.lst Y agregamos las ip que deseemos 192.168.2.150 192.168.2.135 Ahora regresando al archivo de configuracin del squid Indicamos que por el puerto 3128 escucharemos y que ser proxy transparente http_port 3128 transparent

Estos valores dejarlos tal cual cache_mem 16 MB cache_dir ufs /var/spool/squid 700 16 256 ie_refresh on offline_mode on Las acl o definiciones de control de acceso, son las que nos permitiran hacer referencias hacia ciertos elementos ya sea ip, direciones etc La definicin all indica un origen definido por todo el rango de direcciones ip acl all src 0.0.0.0/0.0.0.0 La siguiente definicin hace referencia al conjunto de ip comprendidas dentro de nuestra red acl red_local src 192.168.2.0/24 La definicin plus hace referencia alas ip que se encuentran listadas dentro del archivo que creamos acl plus src "/etc/squid/plus.lst" La definicin sites hace referencia ala lista de sitios restringidos acl sites url_regex "/etc/squid/sites.lst" La definicin files es un conjunto de extensiones las cuales se van a restringir para su descarga, hay que tener un poco de cuidado, por ejemplo los archivos .bin pueden ser desde binarios de linux, como imagenes de cd o archivos comprimidos. acl files url_regex -i .exe .flv .mp4 .mp3 .avi .wma .mov .acc .wav .bat .asf .mpeg .3gp .swf Y por ltimo la definicin del loopback acl localhost src 127.0.0.1/255.255.255.255 Ahora ay que generar las reglas, para permitir o denegar el acceso usamos http_acces despus la accion deny o allow aquien se lo vamos a aplicar y que le vamos a restringir Aqui denegamos a todas las direciones de la red que sean diferente a las definidas en la lista plus los sitios definidos por la lista sites http_access deny red_local !plus sites De igual forma denegamos a todas las ip de la red local que sean diferentes a las definidas por la lista plus el acceso al archivo definido en la lista files http_access deny red_local !plus files

Muy importante todas las reglas siempre deben de ir antes de estas ltimas de lo contrario el proxy aparentara que no est funcionando, ya que las reglas llevan un orden de ejecucin http_access allow red_local http_access allow localhost http_access deny all Cada vez que se haga un cambio en las reglas habr que reiniciara el servicio, esto interrumpira todo el trfico que est pasando por el proxy, hasta que recargue el servicio segn la velocidad del servidor y la carga de trafico unos 20 o 30 segundo.