Está en la página 1de 13

CONFIGURAR UN PROXY TRANSPARENTE CON LINUX

La verdad que para muchos realizar una instalacin y configuracin de un servidor Proxy para la empresa puede ser una tarea dura, no lo sabr yo mismo; sin embargo intentare darles un poco de mi experiencia al configurar uno y de paso evitarles los dolores de cabeza que tuve por entender como configurarla adems del considerable ahorro de tiempo. Para la mayora que no conoce mucho sobre infraestructura de redes, se andarn preguntando porque es una buena idea configurar uno en nuestra red de la empresa La respuesta es bastante sencilla, con un servicio de Proxy , se puede acelerar mucho el trafico la red interna y el acceso a internet; muchas empresas hoy en da dependen mucho del internet para sus comunicaciones y su uso intensivo (muchas veces abusivo) por parte de los usuarios hace la red local lenta. Vamos por lo sencillo, nuestro diseo de red original que tanto lio nos da pues ya tenemos un servicio lento tanto para el acceso a internet como el uso de la red interna.

Solo deseamos mejorar el trfico en la red interna, as que en una configuracin as donde todos los usuarios hacen peticiones al router para internet, adems del uso de un servidor de base de datos para la aplicacin que usan en la empresa, har con el tiempo que la red se ponga lenta. La mayora de las personas solo piden ms ancho de banda a s ISP Hagamos algo mejor, coloquemos un Proxy en la red, segn el siguiente diseo, quedara as.

Si lo piensan, es mejor tener un equipo un solo equipo est conectado al router, est equipo estar conectado a la red LAN y su trabajo es pasar el trafico de la red interna a la red externa (sea en NAT o Routeo), y viceversa, sin embargo gracias al Proxy que grabara todas las Pginas web que los clientes de la red LAN ha requerido, de esa manera si otro equipo pide la misma pgina podr entregarla ms rpido ya que la red interna tiene una velocidad de 100 megabits/seg., si es que usan Ethernet CAT5.

Paso1. Requerimientos de la Instalacin: Procesador Intel, mi caso es un Core2 Duo de 2,2Ghz Equipo con 2 tarjetas de red, uno para la LAN, otro para la WAN Memoria RAM suficiente, mi caso 512 MegaBytes, mientras ms RAM mejor

Disco Duro con 40 Gigabytes de espacio Sistema Operativo ubuntu-10.04.1-server-i386 , descargarlo de aqu Servicio squid 3, puedes descargarlo de aqu, Servicio de administracin web WEBAdmin, puedes descrgalo de aqu. Servicio de manejo de Trfico de red IPtables de Netfilter, viene en el Sistema operativo.

Paso2. Instalando Ubuntu server Nota: dentro de la seleccin de los paquetes, instala LAMP, pues vamos a necesitar Apache para hacer funcionar el administrador WebAdmin Cuando arranque, para asegurarnos de tener la ltima versin, ejecutar

sudo aptitude update sudo aptitude safe-upgrade

Paso3. Ingresando como usuario administrador root Ubuntu tiene una cosa particular, no inicia con el usuario administrador root, sino con aquel que creaste en la instalacin, para poder hacer configuraciones habr que permitir el acceso al usuario root. Usando su usuario escriba lo siguiente en la lnea de comando: sudo u root passwrd Luego confirme la clave de seguridad y puede ingresar con el usuario administrador root (nota: sin crear usuario root, se toma el control con el comando sudo su)

Paso4. Realice la configuracin de la red Para configurar la red deber editar el archivo:/etc/network/interfaces, la recomendacin es que siempre los servidores tengan configurado IPs estticas sudo nano /etc/network/interfaces Puede Ud. ver el contenido del archivo antes de editar y habr ms informacin o comentarios, pero yo le recomiendo que este archivo solo tenga lo sgte:

auto eth0 iface eth0 inet static address 192.168.1.5 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1 dns_nameservers 192.168.1.1 post-up iptables-restore < /etc/iptables.up.rules #a mi me da problemas este parmetro y funciona sin l auto eth1 iface eth1 inet static address 192.168.2.1 netmask 255.255.255.0 network 192.168.2.0 broadcast 192.168.2.255 nota: este texto en el archivo debe ser escrito sin espacios o tabulados en la margen izquierda. Despus de editar el archivo, reinicie el servicio de red: sudo /etc/init.d/networking restart realice una prueba de comunicacin de la configuracin IP usando el comando PING, con host de la LAN y host WAN como www.google.com

Paso5 .Verificando actualizaciones disponibles Antes de instalar algn producto, debe realizar una revisin de los paquetes Sudo aptitud update

Paso6. Instalacin del administrador WebAdmin

Webmin es una interface web para administracin de sistema UNIX. Accesible desde un navegador web moderno, Webmin permite configurar servidor Apache, Squid, DNS, usuarios, y mucho ms. Es un interesante complemento para el uso de consola remota

con SSH. Este tutorial explica cmo instalar Webmin en Ubuntu Server 8.10. Es necesario recordar que esta configuracin no ofrece garanta, y que las condiciones de seguridad del servidor deben ser revisadas.

Lo primero que debemos hacer es abrir una terminal y editar el archivo sources.list que se encuentra en /etc/apt para ellos escribimos:
sudo nano /etc/apt/sources.list

Abierto el archivo agregamos las siguientes lneas.


deb http://download.webmin.com/download/repository sarge contrib deb deb http://webmin.mirror.somersettechsolutions.co.uk/repository sarge contrib deb

Una vez agreguemos las lneas anteriores, guardamos los cambios en el documento y salimos del mismo. Ahora necesitamos importar la llave GPG escribimos en la terminal los siguientes comandos.
wget http://www.webmin.com/jcameron-key.asc sudo apt-key add jcameron-key.asc

Una vez realizados estos pasos vamos a proceder a actualizar la lista de repositorios con el siguiente comando.
sudo apt-get update

Ya con todo este prembulo tendremos todo configurado para instalar webmin, solo debemos ejecutar este comando en la terminal.
sudo apt-get install webmin

Luego, abrir el navegador y dirigirlo hacia: https://tuipservidor:10000/ El resultado:

Despus de instalado, puede ingresar desde cualquier terminal de la red usando la cuenta de usuario root o admin y la clave de seguridad (segn mi experiencia la misma que root) con la direccin URL>

Paso7. Instalacin del administrador Squid Necesitas instalar el servicio que permitir acelerar las peticiones HTTP, adems de instalar el paquete, deber configurar el archivo squid.conf. sudo apt-get install squid3 cuando haya terminado de instalar, deber buscar el archivo squid.conf, cuando ingrese con su editor, vera un conjunto de lneas, muchas de ellas estn documentadas y explican cmo funciona el servicio, yo le recomiendo una configuracin, asi que incluya esto dentro del archivo , borre lo dems. sudo nano /etc/squid3/squid.conf Incluya estas lneas:

Cache_mem (1/3 de la memoria) Mb http_port 3128 transparent http_port 8080 transparent

acl mired src 192.168.2.0/24 acl localnet src 127.0.0.1/255.255.255.255 http_access allow mired http_access allow localnet cache_dir ufs /var/spool/squid3 7000 16 256

Reinicie el servicio: sudo /etc/init.d/squid3 restart

Paso8. Configuracin del comportamiento del trafico usando IPTables En este punto, si Uds. usa uno de los terminales internos de la LAN por ejemplo 10.10.10.20 y realiza un ping hacia la tarjeta interna del server 10.10.10.1, tendr un echo positivo, sin embargo si hace ping hacia la tarjeta externa del server no tendr comunicacin, menos si desea hacer ping hacia una pgina web comowww.google.com Las reglas de comportamiento IPTables permiten redirigir el trfico de la red interna hacia la red externa y viceversa. Configure el archivo iptables.up.rules con su editor favorito, nuevamente le recomiendo que borre todo el contenido y copie lo siguiente dentro de l , como lo hice anteriormente con squid.conf sudo nano /etc/iptables.up.rules Configuracion IPtables.up.rules *nat -A PREROUTING i eth1 p tcp m tcp dport 80 j DNAT to-destination 192.168.2.1:3128 -A PREROUTING i eth1 p tcp m tcp dport 80 j REDIRECT to-ports 3128 -A POSTROUTING s 192.168.2.0/24 o eth0 j MASQUERADE

*filter -A INPUT i lo j ACCEPT -A INPUT m state i eth0 state RELATED, ESTABLISHED j ACCEPT -A INPUT eth1 j ACCEPT -A INPUT p tcp m tcp dport 22 j ACCEPT # permite ssh usinando el programa putty -A INPUT p tcp m tcp dport 10000 j ACCEPT # permite el acceso de webmin -A INPUT j LOG -A INPUT j DROP -A FORWARD i eth1 j ACCEPT -A OUTPUT o lo j ACCEPT -A OUTPUT o eth1 j ACCEPT -A FORWARD o eth1 j ACCEPT -A FORWARD s 192.168.2.0/24 o eth0 j ACCEPT -A FORWARD d 192.168.2.0/24 m state state ESTABLISHED, REALTED I eth0 j ACCEPT Nota: recuerde que la red interna es 192.168.2.0/24 representada por eth1, la red externa es 192.168.1.0/24 representada por eth0

Paso9. Configuracin del archivo sysctl.conf y el archivo rc.local Configure el archivo sysctl.conf, habilitando IPv4 para reenvio de paquetes en el trafico sudo nano /etc/sysctl.conf Habilite las lneas Net.ipv4.ip_forward = 1 Net.ipv6.conf.all.forwarding = 1 Configure el archive rc.local, con la configuracin final del IPTable sudo nano /etc/rc.local iptables -t nat -A POSTROUTING -s 192.168.2.0/24 o eth0 -j MASQUERADE

Paso10. Reiniciar el servidor

Reinicie su servidor y pruebe hacer PING entre la LAN y la WAN , abra una pgina web y compruebe la comunicacin.

Paso11. Instalacin y configuracin de squidGuard squidGuard es un programa que, en conjunto con squid, lleva a cabo la tarea de bloquear pginas web utilizando una lista negra de sitios web creada en base al contenido de dichos sitios. shallalist es un equipo de personas que se dedican a mantener el contenido de la lista negra que utilizaremos para nuestros fines. Para instalarlo ejecutar sudo apt-get install squidGuard Para configurarlo primero bajaremos e instalaremos nuestra lista negra de Shallalist: 1. Asignamos permisos adecuados a nuestra carpeta donde se almacena la base de datos de squidGuard: sudo chown -R proxy:proxy /var/lib/squidguard/db El comando chown es para cambiar el propietario de un objeto en nuestro sistema de archivos: ch (change), own (owner). El parmetro R indica que el comando ser ejecutado en forma recursiva, es decir, para cada elemento en el interior de la carpeta y su contenido. Proxy es el nombre de usuario con el que se ejecuta el programa squid. Esto lo podemos verificar en nuestro archivo de configuracin de squid (/etc/squid3/squid.conf) en el valor del parmetro cache_effective_user, que aun cuando pudiera estar comentada esta lnea (#), es el valor predeterminado para este parmetro. 2. A continuacin procederemos a modificar el archivo de configuracin del squidGuard. Este archivo se crea por default en la carpeta /etc/squid (ojo, no squid3!) as que ah ser donde lo buscaremos. sudo nano /etc/squid/squidGuard.conf Los primeros dos parmetros de configuracin son el dbhome y el logdir. Estos son respectivamente el lugar donde se lee la base de datos de squidGuard (La lista negra shallalist) y la ruta donde se guarda la bitcora (log) del squidGuard. 3. Estos parmetros se dejan con el valor predeterminado y se procede a eliminar a partir, de la siguiente lnea, el resto del contenido de este archivo, para remplazarlo con lo siguiente:

(Cuidando de reemplazar el valor <<ip-address>> con la ip que obtuvimos anteriormente usando el ifconfig). dest adv { domainlist urllist } dest porn { domainlist urllist } dest warez { domainlist urllist } acl { default { pass !adv !porn !warez all redirect http://img406.imageshack.us/img406/1734/filtro.png } } warez/domains warez/urls porn/domains porn/urls adv/domains adv/urls

#La direccin web es la de una imagen de bloqueo que cree. Se puede redirigir a cualquier web o a una pgina propia creada como se indica en el punto 6. 4. Guardamos el archivo con CTRL+S y cerramos el Editor de Texto (nano). 5. Volvemos a la terminal y ejecutamos el siguiente comando: sudo squidGuard C all que indica al squidGuard que debe de compilar la lista de dominios en una base de datos (tarda un rato).

6. (Opcional, dependiendo del punto 3.) Crearemos ahora un archivo HTML al cual ser redireccionada cualquier solicitud bloqueada. sudo nano /var/www/blocked.html y en su contenido escribiremos solamente: [Bloqueado por squidGuard] 7. Grabamos el archivo con CTRL+S y cerramos el Editor de Texto 8. Ahora editaremos el archivo de configuracin del squid3 para decirle a este que queremos que valide cada pgina usando el squidGuard. sudo nano /etc/squid3/squid.conf Buscamos en este archivo la seccin de configuracin del parmetro url_rewrite_program y colocamos el valor: url_rewrite_program /usr/bin/squidGuard -c /etc/squidguard/squidGuard.conf 9. Ejecutamos el siguiente comando en la terminal: sudo squid3 -k reconfigure

Black List.- shallalist 1. El siguiente paso es obtener la lista negra de shallalist usando el script distribuido en su sitio web usando los siguientes comandos: cd ~ wget http://www.shallalist.de/Downloads/shalla_update.sh 2. Editaremos este script usando gedit, sin gksudo, pues el propietario de este script es el usuario en sesin: nano shalla_update.sh 3. Modificaremos los valores de inicializacin de las variables para que queden de la siguiente manera:

squidGuardpath="/usr/bin/squidGuard" squidpath="/usr/sbin/squid3" httpget="/usr/bin/wget" tarpath="/bin/tar"

chownpath="/bin/chown" dbhome="/var/lib/squidguard/db" squidGuardowner="proxy:proxy" Con cuidado de las maysculas y minsculas. Todos los datos deben quedar como se describe para evitar fallas. 4. A continuacin ejecutaremos el script usando privilegios de administrador, ya que el script escribe en carpetas para las que el usuario en sesin no tiene privilegios. sudo bash ./shalla_update.sh Lo que hace este script es bajar de internet la base de datos en formato comprimido (tar.gz) dentro de la carpeta /tmp, luego lo descomprime. A continuacin borra la base de datos anterior y luego copia la nueva base de datos. Asigna los permisos apropiados, indica a squidGuard que debe recompilar y a squid3 que debe reconfigurar. En caso de que este script marque un error no se debe intentar ejecutar nuevamente ya que shallalist comenta en su sitio que bloquear el acceso a quien trate de bajar repetidas veces la base de datos en el mismo da. Lo que se debe hacer es modificar este script para que no baje la base de datos nuevamente. Esto sera poner un smbolo de # para comentar la lnea que realiza el download como se muestra a continuacin: #$httpget $shallalist -O $workdir/shallalist.tar.gz || exit 1 Si a pesar de correr nuevamente el script sigue marcando el error entonces se recomienda iniciar el squid sin importar que el script haya fallado. 5. Listo. Ahora podemos levantar squid3, lo que llevar aproximadamente media hora, ya que el tamao de la lista negra es muy grande (menos tiempo). sudo /etc/init.d/squid3 restart 6. Realizar pruebas de sitios que encontremos en la base de datos para asegurarnos que los bloquea con xito. Paso12. Copiar desde un disco externo USB al servidor
Para montar un usb en Ubuntu server

sudo ls /dev Ver si aparece sdb y sdb1 (el disco usb) lo que indica que la mquina reconoce el dispositivo. Para montar el dispositivo es necesario crear una carpeta en el directorio /mnt, para lo cual se escribe:

sudo mkdir /mnt/usb Con el comando sudo ls /mnt verificar que ya este el directorio creado. Con el comando sudo mount /dev/sdb1 /mnt/usb se montara el dispositivo. No se mostrara ningn mensaje. Para asegurar que todo funciona, teclear: ls /mnt/usb se deber mostrar el contenido del usb Para copiar carpetas desde el disco usb al disco duro

sudo cp -v -R /ruta completa carpeta origen /ruta completa carpeta


destino (-v visualizar la accin / -R accin recursiva para copiar todo lo que haya)

Para desmontar utilice el comando

sudo umount /dev/sdb1

También podría gustarte