Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
3Mar2009
Filed under: LINUX Author: yovany
Después de instalar un servidor con Ubuntu Server en este caso 8.10, lo que
normalmente necesitamos es proveer de servicio de internet y con ello establecer
ciertas reglas para controlar el acceso a ciertas páginas, para mantener fluido el trafico
de nuestra red, el primer paso sería configurar el servidor DHCP, para asignar las ip
automáticamente.
Ip de eth1: 192.168.2.1
Ip de eth0: 192.168.1.100
En este caso salimos a internet por medio de un modem 2wire de Telmex, aun que
esto no importa demasiado, solo es para referencia.
Lo primero que debemos da hacer es configurar las ip estáticas, como estamos usando
una versión de servidor asumimos que no tenemos interface gráfica así que nuestro
editor de archivos sera VI , pero pueden usar el que mas les acomode.
En vi hay dos modos de trabajo edición y comandos, para edita un archivo hay que
presionar la tecla [insert] para salir del modo de edición y pasar a comandos
presionamos la tecla [esc] si queremos guardar el archivo entramos a modo de
comandos y tecleamos :w si queremos salir es :q si queremos guardar y salir :wq para
forzar cualquier acción agregamos el ! forzar el guardar :w! o forzar la salida :q!
PLAIN TEXT
CODE:
PLAIN TEXT
CODE:
1. sudo vi /etc/network/interfaces
PLAIN TEXT
CODE:
Se define la configuracion para eth0 que es la tarjeta que nos conectara a internet
PLAIN TEXT
CODE:
PLAIN TEXT
CODE:
La variable addres es una ip del rango que nos asigna el modem para salir a internet
PLAIN TEXT
CODE:
1. address 192.168.1.100
2. netmask 255.255.255.0
PLAIN TEXT
CODE:
1. network 192.168.1.0
2. broadcast 192.168.1.255
PLAIN TEXT
CODE:
1. 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
PLAIN TEXT
CODE:
1. dns-nameservers 192.168.1.254
PLAIN TEXT
CODE:
1. auto eth1
2. iface eth1 inet static
3. address 192.168.2.1
4. netmask 255.255.255.0
PLAIN TEXT
CODE:
PLAIN TEXT
CODE:
Primero hay que indicar en que interface de red es donde va a escuchar para eso
editamos el siguiente archivo
PLAIN TEXT
CODE:
1. sudo vi /etc/default/dhcp3-server
PLAIN TEXT
CODE:
PLAIN TEXT
CODE:
1. sudo vi /etc/dhcp3/dhcpd.conf
PLAIN TEXT
CODE:
1. ddns-update-style interim;
2.
3. authoritative;
4.
5. subnet 192.168.2.0 netmask 255.255.255.0{
6. range 192.168.2.100 192.168.2.200;
7. option domain-name-servers 192.168.1.254;
8. option routers 192.168.2.1;
9. option broadcast-address 192.168.2.255;
10. default-lease-time 36000;
11. max-lease-time 180000;
12. }
PLAIN TEXT
CODE:
1. ddns-update-style interim;
2.
3. authoritative;
4.
5. subnet 192.168.2.0 netmask 255.255.255.0{
Indicamos el rando de direcciones que deseamos que asigne en este caso asiganras
desdela ip 192.168.2.100 hasta la ip 192.168.2.200
PLAIN TEXT
CODE:
PLAIN TEXT
CODE:
La puerta de enlace, en este caso el servidor ubuntu, ya que todas las maquinas de la
red se conectaran a nosotros para proveerlos de internet.
PLAIN TEXT
CODE:
Estos son los valores que en dado caso se tendrian que modificar segun su
configuracion de red. Solo quedaria reiniciar el servicio de DHCP
PLAIN TEXT
CODE:
PLAIN TEXT
CODE:
PLAIN TEXT
CODE:
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 tambien se
cargaran las iptables, ya que estas configuraciones, se pierden cada vez que se apaga
el equipo, este archivo se llamara iptables.cf, o como gusten llamarle
PLAIN TEXT
CODE:
1. sudo vi /etc/init.d/iptables.cf
Y pondremos lo siguiente
PLAIN TEXT
CODE:
1. iptables -F
2.
3. iptables -X
4. iptables -Z
5. iptables -t nat -F
6.
7. iptables -P INPUT ACCEPT
8. iptables -P OUTPUT ACCEPT
9. iptables -P FORWARD ACCEPT
10. iptables -t nat -P PREROUTING ACCEPT
11. iptables -t nat -P POSTROUTING ACCEPT
12. iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
13.
14. 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
15.
16. iptables -A INPUT -s 192.168.2.0/24 -i eth1 -j ACCEPT
17.
18. iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 993 -j ACCEPT
19. iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 110 -j ACCEPT
20. iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 465 -j ACCEPT
21. iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 25 -j ACCEPT
22. iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT
23. iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 443 -j ACCEPT
24.
25. iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT
26. iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p udp --dport 53 -j ACCEPT
27.
28. echo 1> /proc/sys/net/ipv4/ip_forward
Que es esto?
Las 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.
PLAIN TEXT
CODE:
1. iptables -X
2. iptables -Z
3. iptables -t nat -F
PLAIN TEXT
CODE:
Habilitamos el enmascaramiento, para que la red interna pueda salir a internet por la
conexion del server
PLAIN TEXT
CODE:
PLAIN TEXT
CODE:
Habilitamos el forward para los puertos especificos de correo y dhcp, pop, imap,
simap, smtp, ssmtp y dhcp
PLAIN TEXT
CODE:
PLAIN TEXT
CODE:
Con esto es mas que suficiente, ahora hay que darle permisos de ejecucion
PLAIN TEXT
CODE:
Ahora para que se ejecute al arranque instalaremos un pequeño programa que nos
ayuda a configurar los archivos que se ejecutan al iniciar el sistema
PLAIN TEXT
CODE:
y lo ejecutaremos con
PLAIN TEXT
CODE:
1. sudo rcconf
Veran esta pantalla solo hay que marcar el iptables.cf y todo listo si nececitan correr
un archivo al arranque solo concedanle permisos y de la misma forma : D.
Ahora hay que configurar el Squid, para eso editaremos el siguiente archivo.
PLAIN TEXT
CODE:
1. sudo vi /etc/squid/squid.conf
Para que esto funciones habremos de crear dos archivos, uno donde se guardaran las
paginas que deseamos bloquear, y otro donde tendremos una lista de las ip
que tendran derechos privilegiados
PLAIN TEXT
CODE:
1. vi /etc/squid/sites.lst
Aqui pondremos las paginas bloqueadas, esta es mi lista, algunas paginas de video
redes sociales, mensageros web etc.
PLAIN TEXT
CODE:
1. hi5.com
2. www.metroflog.com
3. mx.youtube.com
4. es.youtube.com
5. www.youtube.com.us
6. www.youtube.com
7. www.youtube.com.mx
8. www.dailymotion.com
9. www.tu.tv
10. www.ebuddy.com
11. www.meebo.com
12. webmessenger.msn.com
13. www.webmessenger.msn.com
14. www.iloveim.com
15. www.spacelive.com
16. home.spaces.live.com/
17. www.myspace.com/
18. spaces.live.com/
19. www.radiusim.com/
20. www.messengerfx.com
21. messengerfx.com/
22. www.facebook.com/
23. fulltono.com/
24. www.fulltono.com/
25. rapidshare.com
26. megaupload.com
27. www.veoh.com/
28. www.megavideo.com/
29. www.proxybutton.com/
30. www.videoblogs.com/
31. video.google.com/
32. imo.im
33. www.koolim.com/
34. koolim.com/
35. voltv.es/
36. www.imhaha.com
37. imhaha.com
38. proxify.com/
39. www.proxify.com/
40. www.megaclick.com/
41. www.my-proxy.com
42. www.blogger.com/
43. cbox.ws
44. megaclilck.com/
45. facebook.com/
46. youporn.com
47. www.lajaula.net
48. www.alianzo.com
49. www.goear.com
50. www.zshare.com
51. zshare.net
52. skydrive.live.com
PLAIN TEXT
CODE:
1. sudo vi /etc/squid/plus.lst
PLAIN TEXT
CODE:
1. 192.168.2.150
2.
3. 192.168.2.135
Indicamos que por el puerto 3128 escucharemos y que sera proy tranparente
PLAIN TEXT
CODE:
PLAIN TEXT
CODE:
1. cache_mem 16 MB
2.
3. cache_dir ufs /var/spool/squid 700 16 256
4.
5. ie_refresh on
6.
7. 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
PLAIN TEXT
CODE:
PLAIN TEXT
CODE:
PLAIN TEXT
CODE:
PLAIN TEXT
CODE:
PLAIN TEXT
CODE:
1. acl files url_regex -i .exe .flv .mp4 .mp3 .avi .wma .mov .acc .wav .bat .asf
.mpeg .3gp .swf
PLAIN TEXT
CODE:
Ahora ay que generar las reglas, para permitir o denegar el acceso usamos http_acces
despues 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
PLAIN TEXT
CODE:
De igual forma denegamos a todas las ip de la red local que sean diferentes a las
definidas por la lista plus el acceso a los archivo definidos en la lista files
PLAIN TEXT
CODE:
Muy importante todas las reglas siempre deben de ir antes de estas ultimas de lo
contrario el proxy aparentara que no esta funcionando, ya que las reglas llevan un
orden de ejecucion
PLAIN TEXT
CODE:
Cada vez que se haga un cambio en las reglas habra que reiniciara el servicio, esto
interrunpuria todo el trafico que este pasando por el proxy, hasta que recargue el
servcio segun la velocidad del servidor y la carga de trafico unos 20 o 30 segundo.
Espero sea de utilidad, y como siempre espero sus comentarios, criticas y chiste.
Pd. este post fue motivado por algunas dudas de los amigos del foro de Byte.
Pues ahora que tenemos instalada la red y el acceso mediante proxy cache vamos a intentar
regular el consumo de ancho de banda. Resulta interesante que nadie pueda cometer abusos y
consumir todos los recursos de la red a costa del resto de usuarios. La regulación del ancho de
banda se puede llevar a cabo utilizando distintos criterios: la máquina origen, la dirección o página
destino o el tipo de transferencia.
Por un lado podemos intentar discriminar el origen de los datos, resumiendo que los jefe dispongan
de mejor conexión. Resumiendo, vamos a asignar distintos anchos de banda a distintos rangos de
direcciones IP.
También se nos puede dar el caso de que haya consultas masivas a unos determinados dominios o
páginas y puede ser práctico delimitar el ancho de banda asignado a ese dominio.
En general el volumen de tráfico que genera el acceso a páginas web en html es bastante bajo, lo
que realmente consume un volumen apreciable del ancho de banda son ficheros de sonido e
imagen y una medida posible podría ser limitar de alguna forma la transferencia de estos tipos de
ficheros.
Otra posibilidad sería que limitar el ancho de banda sólo para descargas de ficheros grandes y dejar
un mayor ancho de banda a ficheros pequeños para que la navegación por páginas html sea más
rápida.
Mediante Squid podemos establecer límites al ancho de banda mediante una de sus características
de configuración denominada "delay pools". Establecemos una definición de regulación de ancho de
banda, establecemos una ACL y asociamos la regulación a la ACL.
Parámetros de configuración
Cada una de las reglas de regulación está definida por un número entero que vamos a utilizar para
indentificarlo en los distintos parámetros.
delay_pools
Esta parámetro se utiliza para definir cuantas reglas de regulación vamos a definir.
delay_class
Este parámetro toma dos argumentos el primero el identificador de la regla y en segundo lugar el
tipo (clase) de la regla.
El segundo argumento puede ser 1,2 ó 3 para indicar uno de estos tipos de reglas.
delay_parameters
Establece los valores de la regla. Los argumentos de este parámetro son parejas de valores
velocidad/tamaño, donde velociad es un número entero que indica una velocidad en bytes por
segundo (B/s), y tamaño indica el número de bytes de reserva que se transmiten antes de aplicar
la velocidad de transferencia.
Es decir cada pareja especifica el número de bytes de margen que se permiten antes de se haga
efectiva la restricción de velocidad.
Clase 1
La clase uno consiste en un canal individual compartido por todos los usuarios. Es la clase más
simple, todas las tasas de descarga van juntas y lo único que tenemos que especificar es la
velocidad, en bytes por segundo, y el número de bytes a partir de los cuales tiene que retardar la
descarga.
Ejemplo: Supongamos que queremos que la velocidad de descarga de los ficheros .wmv que
ocupen más de 1Mb sea de 8k/s.
delay_pools 1
delay_class 1 1
delay_parameters 1 8192/1048576
acl ficheros_wmv url_regex \.wmv$
delay_access 1 allow ficheros_wmv
Cuando en esa red, algún equipo haya bajado más de 1Mb correspondiente a ficheros .wmv
entonces la descarga total de ficheros .wmv se hará a una velocidad de 8k/s. Si quisiéramos
establecer este límite para los hosts de una red deberíamos elegir la clase 2.
En el anterior ejemplo hemos supuesto que hay un único canal de regulación en el parámetro
delay_pools. Ahora vamos a ver un ejemplo con dos canales de clase 1. Queremos que el tráfico de
la red local no tenga límite de transferencia, mientras que para las conexiones a internet vamos a
utilizar un total de 256Kbits/s.
delay_pools 2
delay_class 1 1
delay_parameters 1 -1/-1
acl red_local src 192.168.0.0/24
delay_access 1 allow red_local
delay_class 2 1
delay_parameters 2 32768/1024
acl resto all src 0.0.0.0/0.0.0.0
delay_access 2 allow resto
La tasa de transferencia viene especificada en bytes por segundo, por ejemplo convirtiendo a otras
unidades uno de los parámetros de delay_parameters:
El valor 1024 es un número de bytes lo suficientemente pequeño para que se alcance pronto y se
estabilice el ancho de banda.
El valor -1 indica ilimitado.
Las regulaciones de clase 1 están diseñadas para evitar que la acl correspondiente consuma todo el
ancho de banda, es decir definen la suma máxima de los anchos de banda de todos los clientes,
pero no evita que un cliente pueda consumir ese ancho de banda a costa de otro; todos los clientes
comparten un máximo ancho de banda.
Clase 2
La clase dos que consiste en un canal común con 256 canales individuales. Es decir tenemos un
canal global y dentro de él otros 256 canales que se aplican a las máquinas de una red de clase C.
Ahora vamos a ver otro ejemplo con dos canales, en este caso ambos de de clase 2. Ahora también
que el tráfico de la red local no tenga límite de transferencia, ni global ni por IP, mientras que para
las conexiones a internet vamos a utilizar un total de 256Kbits/s y a cada máquina de la red le
asigna un máximo de 64kbits/s.
delay_pools 2
delay_class 1 2
delay_parameters 1 -1/-1 -1/-1
acl red_local src 192.168.0.0/24
delay_access 1 allow red_local
delay_class 2 2
delay_parameters 2 32768/1024 8192/1024
acl resto all src 0.0.0.0/0.0.0.0
delay_access 2 allow resto
Este ejemplo es muy parecido al anterior de clase 1, sólo tenemos que agregarle una pareja de
valores al parámetro "delay_parameters". La primera pareja de este parámetro especifica el ancho
de banda global, mientras que la segunda pareja especifica el ancho de banda por host.
Hay que tener en cuenta que los clientes están limitados por el tamaño del canal más pequeño, por
lo que no tiene sentido que el canal común tenga un tamaño menor que los canales individuales.
Clase 3
La clase tres que define un canal común que contiene 256 canales de red, 65536 canales
individuales. Muy parecida a la clase dos pero par redes de clase B.
delay_pools 1
delay_class 1 1
delay_parameters 1 131072/8192
acl lista src 192.168.5.100-192.168.5.199/32
delay_access 1 allow lista
Es como el ejemplo anterior, pero añadiendo restricciones adicionales a cada una de las máquinas,
por lo que tendremos que elegir la clase 2:
delay_pools 1
delay_class 1 2
delay_parameters 1 131072/8192 65536/8192
acl lista src 192.168.5.100-192.168.5.199/32
delay_access 1 allow lista
delay_pools 1
delay_class 1 2
delay_parameters 1 4096/4096 2048/2048
acl publicidad url_regex http://ad.*
delay_access 1 allow publicidad
delay_pools 1
delay_class 1 2
delay_parameters 1 -1/-1 -1/-1
acl redlocal url_regex -i 192.168
delay_access 1 allow redlocal
delay_pools 3
delay_class 1 1
delay_class 2 1
delay_class 3 1
delay_parameters 1 -1/-1
delay_parameters 2 131072/8192
delay_parameters 3 65536/8192
acl jefes src 192.168.5.1-192.168.5.50/32
acl subjefes src 192.168.5.51-192.168.5.99/32
acl resto src 0/0
delay_access 1 allow jefes
delay_access 2 allow subjefes
delay_access 3 allow resto
Si a pesar de todo queremos esta configuración, tendremos que decirle al navegador que utilice
como proxy el equipo que alberga Squid y el puerto el 3128. El puerto se puede cambiar en el
fichero de configuración. Otro puerto que se suele usar para proxy es el 8080, pero ¿para qué
cambiarlo?
Proxy Transparente
Como queremos evitar tener que configurar los navegadores cliente y queremos evitar posibles
puertas traseras de salida vamos a configurar un proxy transparente.
¿Qué es un proxy transparente? Es un proxy que no necesita ninguna configuración especial en los
clientes. Se denomina transparente porque el cliente en realidad no sabe que lo está usando, es
transparente para él.
Cómo configurar el proxy transparente, pues en primer lugar tenemos que configurar el
cortafuegos para que reenvíe todas las peticiones que se hagan a un puerto 80 hacia el puerto
3128 que utiliza Squid. Es decir, capturamos todas las peticiones que se hagan a un servidor http y
se las enviamos a Squid para que él se encarge del resto.
Estas son las reglas de iptables. La primera para redrigir las peticiones al proxy la siguiente para
rechazar el resto de los reenvíos.
Si queremos que las páginas web pasen por el proxy con squid que está en 192.168.5.254, pero el
resto siga con acceso normal, pondríamos: