Professional Documents
Culture Documents
3Mar2009
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 seria 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 grafica así que nuestro
editor de archivos será 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 accion agregamos el ! forzar el guardar :w! o forzar la salida :q!
CODE:
sudo apt-get install vim
CODE:
sudo vi /etc/network/interfaces
CODE:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
auto eth1
iface eth1 inet static
address 192.168.2.1
netmask 255.255.255.0
Que significa esto?
CODE:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
Se define la configuración para eth0 que es la tarjeta que nos conectara a internet
CODE:
# The primary network interface
auto eth0
CODE:
iface eth0 inet static
La variable addres es una ip del rango que nos asigna el modem para salir a internet
CODE:
address 192.168.1.100
netmask 255.255.255.0
CODE:
network 192.168.1.0
broadcast 192.168.1.255
CODE:
gateway 192.168.1.254
Y los DNS en este caso usamos el mismo modem para que nos resuelva hacia internet,
esto datos cambian según la configuración de la red que les da salida a internet
CODE:
dns-nameservers 192.168.1.254
CODE:
auto eth1
iface eth1 inet static
address 192.168.2.1
netmask 255.255.255.0
CODE:
sudo /etc/init.d/networking restart
CODE:
* Reconfiguring network interfaces...
CODE:
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
CODE:
sudo vi /etc/default/dhcp3-server
CODE:
# 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"
CODE:
sudo vi /etc/dhcp3/dhcpd.conf
CODE:
ddns-update-style interim;
authoritative;
CODE:
ddns-update-style interim;
authoritative;
Indicamos el rando de direcciones que deseamos que asigne en este caso asignarás
desde la ip 192.168.2.100 hasta la ip 192.168.2.200
CODE:
range 192.168.2.100 192.168.2.200;
CODE:
option domain-name-servers 192.168.1.254;
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.
CODE:
option routers 192.168.2.1;
Estos son los valores que en dado caso se tendrían que modificar según su
configuración de red. Solo quedaría reiniciar el servicio de DHCP
CODE:
sudo /etc/init.d/dhcp3-server restart
CODE:
* Stopping DHCP server dhcpd3 [
OK ]
* Starting DHCP server dhcpd3
[ OK ]
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 también 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
CODE:
sudo vi /etc/init.d/iptables.cf
Y pondremos lo siguiente
CODE:
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
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 redireccione 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 saldrá por la interface eth0,
permitiremos también el forward para el dhcp y también para el correo, para no tener
problemas con los clientes de correo.
CODE:
iptables -X
iptables -Z
iptables -t nat -F
CODE:
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
Esta es una configuración muy básica, 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
conexión del server
CODE:
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
CODE:
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 específicos de correo y dhcp, pop, imap,
simap, smtp, ssmtp y dhcp
CODE:
iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 993 -j
ACCEPT
iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 110 -j
ACCEPT
iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 465 -j
ACCEPT
iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 443 -j
ACCEPT
CODE:
echo 1> /proc/sys/net/ipv4/ip_forward
Con esto es mas que suficiente, ahora hay que darle permisos de ejecución
CODE:
sudo chmod a+x /etc/init.d/iptables.cf
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
CODE:
sudo apt-get install rcconf
y lo ejecutaremos con
CODE:
sudo rcconf
Verán esta pantalla solo hay que marcar el iptables.cf y todo listo si necesitan correr
un archivo al arranque solo concédanle permisos y de la misma forma : D.
Ahora hay que configurar el Squid, para eso editaremos el siguiente archivo.
CODE:
sudo vi /etc/squid/squid.conf
CODE:
http_port 3128 transparent
cache_mem 16 MB
ie_refresh on
offline_mode on
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
tendrán derechos privilegiados
CODE:
vi /etc/squid/sites.lst
Aquí pondremos las paginas bloqueadas, esta es mi lista, algunas paginas de video
redes sociales, messengers, web etc.
CODE:
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
www.webmessenger.msn.com
www.iloveim.com
www.spacelive.com
home.spaces.live.com/
www.myspace.com/
spaces.live.com/
www.radiusim.com/
www.messengerfx.com
messengerfx.com/
www.facebook.com/
fulltono.com/
www.fulltono.com/
rapidshare.com
megaupload.com
www.veoh.com/
www.megavideo.com/
www.proxybutton.com/
www.videoblogs.com/
video.google.com/
imo.im
www.koolim.com/
koolim.com/
voltv.es/
www.imhaha.com
imhaha.com
proxify.com/
www.proxify.com/
www.megaclick.com/
www.my-proxy.com
www.blogger.com/
cbox.ws
megaclilck.com/
facebook.com/
youporn.com
www.lajaula.net
www.alianzo.com
www.goear.com
www.zshare.com
zshare.net
skydrive.live.com
CODE:
sudo vi /etc/squid/plus.lst
CODE:
192.168.2.150
192.168.2.135
Indicamos que por el puerto 3128 escucharemos y que será proxy transparente
CODE:
http_port 3128 transparent
Estos valores dejarlos tal cual
CODE:
cache_mem 16 MB
ie_refresh on
offline_mode on
Las acl o definiciones de control de acceso, son las que nos permitirán hacer
referencias hacia ciertos elementos ya sea ip, direcciones etc
CODE:
acl all src 0.0.0.0/0.0.0.0
CODE:
acl red_local src 192.168.2.0/24
La definición plus hace referencia alas ip que se encuentran listadas dentro del archivo
que creamos
CODE:
acl plus src "/etc/squid/plus.lst"
CODE:
acl sites url_regex "/etc/squid/sites.lst"
CODE:
acl files url_regex -i .exe .flv .mp4 .mp3 .avi .wma .mov .acc .wav
.bat .asf .mpeg .3gp .swf
CODE:
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
despues la accion deny o allow aquien se lo vamos a aplicar y que le vamos a restringir
Aqui denegamos a todas las direcciones de la red que sean diferente a las definidas en
la lista plus los sitios definidos por la lista sites
CODE:
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 a los archivos definidos en la lista files
CODE:
http_access deny red_local !plus files
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
CODE:
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
interrumpiría todo el trafico que este pasando por el proxy, hasta que recargue el
servicio según la velocidad del servidor y la carga de trafico unos 20 o 30 segundo.