Beruflich Dokumente
Kultur Dokumente
Suelen utilizarse como pasarelas que permitan acceder a pginas webs restringidas por pas o dentro de una empresa, es decir, pueden trabajar como muro cortafuegos operando en la capa de red (actuando como filtro de paquetes, como es el caso de iptables) o bien desde la capa de aplicacin controlando diferentes servicios. Otra de sus funciones es actuar como cach de contenido de red (principalmente para el protocolo HTTP), proporcionando mayor proximidad de los clientes a un cach de pginas y archivos de forma que estos accedan con tiempos similares a los de una red local. En este sentido el servidor de proxy cache Squid tiene un alto rendimiento adems de soportar FTP o incluso HTTP sobre IPv4 e Ipv6. Todos los objetos cacheados por Squid permanecen en RAM, incluso consultas de bsquedas DNS. Es importante recalcar que Squid administra todas las peticiones bajo un nico proceso asncrono y no bloqueante. Por otro lado se ofrece soporte SSL y listas de control de acceso.
Instalacin de Squid
En este artculo se instalar Squid 3.1. Para instalarlo en Ubuntu o Debian based: Ver cdigo BASH
1 sudo apt-get install squid3
Despus se debe editar el fichero de configuracin por defecto /etc/squid3/squid.conf Por defecto el acceso http esta negado para todas las peticiones. Por ello debes buscar y borrar en el archivo la configuracin:
En su lugar se puede configurar una lista de acceso basada en rangos de IP al que se quiera permitir el acceso, por ejemplo: Ver cdigo BASH
1 acl our_networks src 123.123.123.0/24 213.213.213.0/24 2 http_access allow our_networks
De igual forma puedes comprobar que la directiva http_port este apuntando al puerto 3128 por defecto o cambiarlo al que necesites. Debes tener en cuenta que de acuerdo a las asignaciones hechas por IANA y continuadas por la ICANN desde el 21 de marzo de 2001, son los Puertos Registrados (rango desde 1024 hasta 49151) y los recomendados para Servidores Proxies son el 3128 y 8080 a travs de TCP. Tambin se pueden configurar varios: Ver cdigo BASH
1 http_port 3128 2 http_port 8080
Una vez configurado, es necesario reiniciar squid con: Ver cdigo BASH
1 sudo service squid3 restart
Tambin existen otras opciones como recargar la configuracin: Ver cdigo BASH
1 service squid reload
Si tienes chkconfig (Sistemas basados en RedHat como Centos) puedes activarlo automticamente en cada inicio del sistema con: Ver cdigo BASH
1 chkconfig squid on
Si existe algun error grave, que no permita iniciar el servicio se debe examinar el contenido del fichero /var/log/squid/squid.out Se puede acceder a los ficheros de log mediante: Ver cdigo BASH
1 sudo cat /var/log/squid3/access.log
Para conocer la ip pblica del proxy puede utilizarse: Ver cdigo BASH
1 curl ifconfig.me
strip_query_terms off
Por otro lado el parmetro cache_mem establece la cantidad de memoria RAM dedicada para almacenar los datos mas solicitados y datos en trnsito (con mayor prioridad de almacenamiento). Los datos son normalmente almacenados en bloques de 4 Kb. El valor por defecto es de 256 MB, pero puede especificarse una cantidad mayor si es necesario. Por ejemplo puede establecerse 2 GB de memoria:
Por defecto, si algo ocurre con la cach, como por ejemplo que el proceso se termine, se enviar un mensaje de aviso a la cuenta de email del webmaster en el servidor. Para configurarla pues cambiarse la directiva cache_mgr: Ver cdigo BASH
1 cache_mgr yo@midominio.net
Se puede especificar un lugar diferente para el registro de accesos con la directiva access_log: Ver cdigo BASH
1 access_log /var/log/squid/access.log squid
Para ver toda tu configuracin squid, sin mostrar los comentarios, puedes usar: Ver cdigo BASH
1 cat /etc/squid/squid.conf | sed '/ *#/d; /^ *$/d'
Solucin de errores
Si intentas conectar a tu servidor proxy y este no atiende tus peticiones, es posible que no hayas abierto los puertos en tu router. Se recomienda abrir el puerto TCP/UDP en el que este configurado Squid.
servidores DNS, programas opcionales para reescribir solicitudes y realizar autenticacin y algunas herramientas para administracin y y herramientas para clientes.
Al iniciar Squid da origen a un nmero configurable (5, de modo predefinido a travs del parmetro dns_children) de procesos de bsqueda en servidores DNS, cada uno de los cuales realiza una bsqueda nica en servidores DNS, reduciendo la cantidad de tiempo de espera para las bsquedas en servidores DNS.
No puede ser utilizado como Servidor Intermediario (Proxy) para protocolos como SMTP, POP3, TELNET, SSH, IRC, etc. Si se requiere intermediar para cualquier protocolo distinto a HTTP, HTTPS, FTP, GOPHER y WAIS se requerir hacer uso de un servidor SOCKS como Dante
No se instala por defecto, pero se encuentra en los repositorios de Ubuntu, por lo que puede ser instalado a travs deSynaptic, Aptitude o apt-get
Configuracin
Squid utiliza el archivo de configuracin localizado en /etc/squid/squid.conf, y se puede editar con el siguiente comando, en modo consola (terminal)
Al menos una Lista de Control de Acceso Al menos una Regla de Control de Acceso httpd_accel_host httpd_accel_port httpd_accel_with_proxy
Parmetro http_port
Los Puertos Registrados recomendados para Servidores Intermediarios (Proxies) pueden ser el 3128 y 8080 a travs de TCP.
http_port 3128
http_port 8080
Si se desea incrementar la seguridad, puede vincularse el servicio a una IP que solo se pueda acceder desde la red local. Considerando que el servidor utilizado posee una IP 10.140.111.1, puede hacerse lo siguiente:
http_port 10.140.111.1:3128
http_port 10.140.111.1:8080
Parmetro cache_mem.
El parmetro cache_mem establece la cantidad ideal de memoria para lo siguiente:
Objetos en trnsito.
De modo predefinido se establecen 8 MB. Si se posee un servidor con al menos 128 MB de RAM, 16 MB es el valor para este parmetro:
cache_mem 16 MB
Parmetro cache_dir:
El parmetro cache_dir se utiliza para establecer que tamao se desea que tenga el cach en el disco duro para Squid. De modo predefinido Squid utilizar un cach de 100 MB, de modo tal que encontrar la siguiente lnea:
Mientras ms grande sea el cach, ms objetos se almacenarn en ste y por lo tanto se utilizar menos el ancho de banda. La siguiente lnea establece un cach de 700 MB:
Los nmeros 16 y 256 significan que el directorio del cach contendr 16 directorios subordinados con 256 niveles cada uno.
Parmetro ftp_user.
Al acceder a un servidor FTP de manera annima, de modo predefinido Squid enviar como clave de acceso Squid@. Puede establecerse una direccin de correo especificada como clave de acceso:
ftp_user proxy@gmail.com
Controles de acceso.
Las Listas de Control de Acceso definen una red o bien ciertas mquinas en particular. A cada lista se le asignar una Regla de Control de Acceso que permitir o denegar el acceso a Squid.
Si se desea establecer una lista de control de acceso que abarque a toda la red local, basta definir la IP correspondiente a la red y la mscara de la sub-red. Por ejemplo, si se tiene una red donde las mquinas tienen direcciones IP 10.140.111.n con mscara de sub-red 255.255.255.0, podemos utilizar lo siguiente:
Ms conveniente es definir una Lista de Control de Acceso especificando un archivo localizado en cualquier parte del disco duro, y la cual contiene una lista de direcciones IP.:
10.140.111.2
10.140.111.3
10.140.111.4
10.140.111.5
10.140.111.6
En caso de querer restringir el acceso de una pc, basta con eliminarla de la lista.
www.microsoft.com
www.ibm.com
www.hotmail.com
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
En este ejemplo la regla que establece acceso permitido a Squid a la Lista de Control de Acceso denominada permitidos:
La expresin !, significa no. Pueden definirse as respecto de dos listas de control de acceso, lista1 y lista2, que se permite el acceso a Squid a lo que comprenda lista1 excepto aquello que comprenda lista2:
Esta regla es til cuando se tiene un gran grupo de IP dentro de un rango de red al que se debe permitir acceso, y otro grupo dentro de la misma red al que se debe denegar el acceso.
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS http_access allow localhost http_access allow todalared http_access deny all
La regla http_access allow todalared permite el acceso a Squid a la Lista de Control de Acceso denominada todalared, la cual est conformada por 10.140.111.0/255.255.255.0. Esto significa que cualquier mquina desde 10.140.111.1 hasta 10.140.111.254 podr acceder a Squid. Si solo se desea permitir el acceso a Squid a ciertas direcciones IP de la red local, deberemos crear un archivo que contenga dicha lista, en modo consola ejecutar
# Recommended minimum configuration: acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl redlocal src /etc/squid/listas/redlocal
http_access allow redlocal Reglas de control de acceso: Acceso a una Lista de Control de Acceso.
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
La regla http_access allow redlocal permite el acceso a Squid a la Lista de Control de Acceso denominada redlocal, la cual est conformada por las direcciones IP especificadas en el archivo /etc/squid/listas/redlocal. Esto significa que cualquier mquina no incluida en /etc/squid/listas/redlocal no tendr acceso a Squid.
Parmetro chache_mgr .
De modo predefinido, si algo ocurre con el cach, se envia un mensaje de aviso a la cuenta webmaster del servidor, puede especificarse una distinta si se considera conveniente;
cache_mgr webmaster@gmail.com
Proxy Acelerado
En la seccin HTTPD-ACCELERATOR OPTIONS deben habilitarse los siguientes parmetros:
httpd_accel_host virtual
httpd_accel_port 0
httpd_accel_with_proxy on
sudo /usr/local/squid/sbin/squid -z
Para que Squid se inicie de manera automtica al inicio el sistema, en modo consola ejecutar:
Cualquier error al inicio de Squid solo significa que hubo errores de sintaxis, errores de teclado o de las rutas hacia los archivos de las Listas de Control de Acceso.
Para realizar el diagnstico de problemas indicndole a Squid que vuelva a leer configuracin, lo cual devuelve los errores que existen en el archivo /etc/squid/squid.conf, en modo consola ejecutar:
En caso de errores graves que no permiten iniciar el servicio, examinar el contenido del archivo /var/log/squid/squid.outejecutando en consola:
less /var/log/squid/squid.out
sudo /sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080
Lo anterior, que requiere un guin de cortafuegos funcional en un sistema con dos interfaces de red, hace que cualquier peticin hacia el puerto 80 (servicio HTTP) hecha desde la red local hacia el exterior, se re-direccionar hacia el puerto 8080 del servidor.
Utilizando Firestarter, la regla anteriormente descrita se aade en el archivo /etc/firestarter/userpost. sudo gedit /etc/firestarter/user-post y se agrega la lnea /sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080
red eth0, eth1 siendo la primera la que tiene la salida a internet, y otra la que se comunica con la red local por medio de un swicht, (Las terminales estan en winxp, por el momento) Cuando instale la maquina ubuntu me consulto cual tarjeta de red tenia queria usar para acceso a internet, en mi caso elegi la eth0, la cual esta conectada al modemADSL y configurada por DHCP desde el modem, Ya terminado de instalar el Ubuntu Server 8,10, nos logueamos y revisamos como ubuntu nos detecto las tarjetas de red. Con el siguiente comando sudo ifconfig En mi caso solo me a mostrado la informacion de eth0, Para configurar la segunda tarjeta de red eth1 la cual tendra la salida a la red local via swicht haremos lo siguiente vamos a ir a cosola y nos dirigimos a /etc/network cd /etc/network ahi esta un archivo que se llama interfaces lo abrimos para editar con nuestro editor favorito en mi caso vim sudo vim interfaces y nos abre este archivo, revisamos las siquientes lineas. # The auto iface eth0 inet dhcp primary network interface eth0
A esto le agregamos auto eth1 iface eth1 inet static address 10.0.0.1 netmask 255.255.255.0 #gateway 10.0.0.1 #( el signo de # se utiliza para comentar en la linea de comando, esto lo hago para que la maquina no se confunda con las puertas de entrada , ami personalmente si no hago esto pierdo la conexin a internet) Por defecto ubuntu detecta la interfaz de red que tengamos instalada y la pone en auto y con cliente dhcp en mi caso eth0 esta en automatico y es la que se asigna dinamicamente por el modem-router dsl de mi proveedor de internet Que fue lo agregamos? le estamos indicando a ubuntu que eth1 sea cargada automaticamente en cada inicio de ubuntu y que le asigne la direccion ESTATICA 10.0.0.1 con su mascara de subred 255.0.0.0 y que sea gateway o puerta de enlace 10.0.0.1(Aunque como esta comentada, no va a plicar) y con esto ya tenemos nuestra tarjeta de red configurada estaticamente solo nos resta guardar los cambios en el archivo y rearrancar el servicio de network, Que como lo rearrancamos? muy facil cd /etc/init.d sudo ./networking restart comprobamos que tengamos todo listo nuevamente con ifconfig si ya tenemos nuestras 2 interfaces con ip y funcionando podemos continuar con este recorrido magico y misterioso
aqu otro detalle antes de continuar es que hagamos, un ping o si quieren sudo apt-get update esto para comprobar que aunque despues de modificar el archivo interfaces, podamos conectarnos a internet (A mi me consto llegarle que el problema era que la maquina no podia decidir en cual gateway salir a internet, por eso comentamos la gateway de eth1) PASO NUMERO 2 Organizando la Fiesta Ahora vamos a instalar nuestro servidor dhcpd sudo apt-get install dhcp3-server y listo con esto ya tenemos nuestro servidor DHCPD instalado, ufff que facil no? ahora vamos a configurarlo jejeje nos vamos a la siguiente ruta cd /etc/dhcp3 y ahi editamos el siguiente archivo sudo vim dhcpd.conf que hacemos ahi??? primero borramos todo todo TODO y luego ponemos nuestra configuracion en mi caso esta ###Empieza script#### option domain-name 123.123.com; #(aqui no estoy seguro, yo puse el dominio del router) option domain-name-server 10.0.0.1; option subnet-mask 255.0.0.0; option netbios-name-servers 10.0.0.1; option routers 10.0.0.1; default-lease-time 600; max-lease-time 7200; subnet 10.0.0.1 range option option option option routers 10.0.0.1; } ###Finaliza script #### En este tutorial vamos a instalar el proxy con squid en cuanto a la configuracion de mi DHCPD lo explicare brevemente se pone el dominio al cual perteneces, nombre del servidor de dominios en el caso seria el mismo el router es el mismo servidor, el tiempo de asignacion de direcciones, despues se pone las subredes o Rangos ya que configuramos nuestro archivo de configuracion dhcpd ahora si arrancamos el servicio uffff cd sudo ./dhcp3-server restart /etc/init.d netmask 10.0.0.2 domain-name-servers subnet-mask netbios-name-servers 255.0.0.0 { 10.0.0.99; 10.0.0.1; 255.0.0.0; 10.0.0.1;
y liiiiisto si no marco ningun error todo ira de pelos para comprobar que nuestros clientes ya tienen direccion ip del tipo 10.0.0.x en mi caso solo conecta algun cliente a tu SWITCH o HUB y haz ping a tu servidor 10.0.0.1 (recuerda que tu le puedes poner lo que quieres 192.168.x.x etc etc dependiendo a tus necesidades, si marco un error el servicio quiere decir que hubo un error en tu configuracion ok ahora si ya tenemos el dhcpd CORRIENDO y ACTIVO. PASO NUMERO 3 - Preparando el pastel Hasta aqui ya llevamos el 50% de nuestro tutorial ahora vamos con IPTABLES pero que pasa con ellas, pues que debemos asignar ciertas reglas para que se carguen automaticamente cada vez que inicie nuestro servidor proxy ubuntu. que vamos a hacer primero para que se carguen automaticamente? primero vamos a la ruta cd /etc/init.d en esta carpeta estan todos los archivos que se ejecutan al iniciar nuestro ubuntu asi que hay que poner uno para que tambien arranque y este contendra las sentencias de iptables para que funcione nuestro proxy TRANSPARENTE. dentro de la carpeta /etc/init.d creamos un nuevo archivo llamale como tu quieras iptables, superproxy, amo_y_seor o como quieras.. sudo vim proxyrules.sh entonces tenemos nuestro ###Empieza#### echo Aplican iptables iptables iptables iptables iptables -Z editor reglas -t -t abierto ponemos de nat nat las siguientes reglas podemos continuar.
redirreciionamiento.... -F -X -F -X
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A PREROUTING -i eth1 -s 10.0.0.0/255.0.0.0 -d 0.0.0.0/0.0.0.0 -p tcp dport 80 -j REDIRECT --to-port 3128 ### Finaliza #### explicamos rapidisimo que significa las reglas iptables , las primeras borran todas las reglas de iptables en ejecucion, el echo indica forwarding activado, la primera cadena de iptables indica que todas las peticiones que nuestra red 10.0.0.0/255.0.0.0 haga al puerto 80 (web) sea redireccionada al puerto 3128 (proxy), y que eth1 es la salida a internet. ahora grabamos nuestra archivo con Esc , : , x en caso de usar vim y damos permisos de ejecucion a nuestro archivo en mi caso con el siguiente comando
sudo chmod 700 proxyrules.sh y despues de eso editamos el archivo rc.local sudo vim rc.local y le ponemos hasta arriba cd ./proxyrules.sh Listo con esto ya tenemos las reglas hechas ahora lo mas IMPORTANTE SQUID PASO NUMERO 4 - Poniendo los Globos y las velitas Para ahorrarse la descarga y copilacion del squid, hagamos lo siquiente sudo apt-get install squid-prefetch esto instalara el squid y un demonio (prefetch), porque no haciamos esto antes, porque antes solo descargando el squid-common via apt no funcionaba la opcion de hacerlo transparente para las terminales, yo instalaba el prefetch para q me funcionara para ciertos sitios por que daba un error de DNS, fue hasta que reinstale mi server para que se me ocurio instalar squid-prefecth primero y mi instalo tambien el squid del reposito de ubuntu, hice los ajustes al squid.conf y me funciona perfecto sin copilar y transparente sale todos los archivos pertenecen a squid ahora vamos a la ruta de configuracion si usamos el reposito Usemos cd /etc/squid/ editamos el archivo de configuracion squid.conf, si no esta o esta algun otro como squid.conf.default lo copiamos y lo renombramos squid.conf abrimos squid.conf sudo vim squid.conf y en la linea que dice http_port vamos a poner http_port 10.0.0.1:3128 transparent recuerden que esta ip es la del servidor y el puerto es por default 3128 mas abajo en la linea que dice cache_dir ponemos cache_dir ufs /usr/local/squid/var/cache 2048 16 256 continuamos mas abajo en donde dice cache_effective_user ponemos cache_effective_user squid cache_effective_group squid /etc/init.d
### Esto yo no lo he probado continuamos mas abajo y buscamos las acls si queremos que nuestros usuarios no descarguen archivos especificos creamos una acl de este tipo acl downloads url_regex -i \.dll$ \.bin$ \.cab$ \.asx$ \.vbs$ \.bat$ \.lnk$ \.scr$ \.pif$ \.msi$ \.exe$ \.mp3$ \.wmv$ \.zip$ \.mpg$ \.torrent$ \.ppt$ \.com$ \.rar$ \.avi$ \.flv$ http_access deny downloads ### mas abajo damos acceso a nuestra red al proxy acl our_networks src 10.0.0.0/24 http_access allow our_networks y listo grabamos nuestro archivo ya nos estamos acercando Ufffff PASO NUMERO 5 - Que comience la fiesta Espero que este COMO sea de ayuda como toda la informacin en este foro, y Blog de Linuxeros que andan por hay,