configuración dhcp e iptables en ubuntu server

16
Configuración de Ubuntu Server: DHCP + Squid + Iptables 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. Para este caso en particular tomaremos de referencia la siguiente información Dirección 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 salimos a internet por medio de un modem 2wire de Telmex, aun que esto no importa demasiado, solo es para referencia.

Upload: yaloc

Post on 02-Jul-2015

1.498 views

Category:

Documents


0 download

DESCRIPTION

Se describe la instalación y configuración de un servidor dhcp y la configuración del iptables en Ubuntu Server

TRANSCRIPT

Page 1: Configuración DHCP e Iptables en Ubuntu Server

Configuración de Ubuntu Server: DHCP + Squid + Iptables3Mar2009

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.

Para este caso en particular tomaremos de referencia la siguiente información

Dirección 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 salimos a internet por medio de un modem 2wire de Telmex, aun que esto

no importa demasiado, solo es para referencia.

Page 2: Configuración DHCP e Iptables en Ubuntu Server

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

Ahi pondremos esto

CODE:

# 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

Page 3: Configuración DHCP e Iptables en Ubuntu Server

Que significa esto?

Esto nos indica cual es la interface de loopback nada interesante

CODE:

# 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

Se define la configuración para eth0 que es la tarjeta que nos conectara a internet

CODE:

# The primary network interface

auto eth0

Aquí indicamos que la dirección es de tipo estático

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

La red por defecto

CODE:

network 192.168.1.0

broadcast 192.168.1.255

Es la puerta de enlace que nos da salida a internet

CODE:

gateway 192.168.1.254

Page 4: Configuración DHCP e Iptables en Ubuntu Server

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

Esta es la configuración de la tarjeta de red a la que se conectara la red interna, solo

hay que indicar la dirección IP y mascara, ya que nos conectaremos a internet por la

otra tarjeta de red.

CODE:

auto eth1

iface eth1 inet static

address 192.168.2.1

netmask 255.255.255.0

Para que cargue la nueva configuración reiniciaremos los servicio de red

CODE:

sudo /etc/init.d/networking restart

Si todo está bien configurado veremos algo como esto

CODE:

* 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

automática, para esto usaremos dhcp3-server

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

Page 5: Configuración DHCP e Iptables en Ubuntu Server

CODE:

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

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"

Ahora hay que configurar el dhcp, en el siguiente archivo.

CODE:

sudo vi /etc/dhcp3/dhcpd.conf

Tendremos un muy extenso archivo de configuración de lo cual solo nos servirá lo

siguiente, lo demás lo podemos eliminar

CODE:

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;

}

Page 6: Configuración DHCP e Iptables en Ubuntu Server

Empezamos por definir sobre que red se va atrabajar y la mascara

CODE:

ddns-update-style interim;

authoritative;

subnet 192.168.2.0 netmask 255.255.255.0{

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;

Indicamos los DNS

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

Si todo esta bien obtendremos esto

CODE:

* Stopping DHCP server dhcpd3                                           [

OK ]

* Starting DHCP server dhcpd3                                           

[ OK ]

Ahora instalaremos el proxy, en este caso Squid

Page 7: Configuración DHCP e Iptables en Ubuntu Server

CODE:

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 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

iptables -P INPUT ACCEPT

iptables -P OUTPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -t nat -P PREROUTING ACCEPT

iptables -t nat -P POSTROUTING ACCEPT

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE

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

iptables -A INPUT -s 192.168.2.0/24 -i eth1 -j ACCEPT

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

Page 8: Configuración DHCP e Iptables en Ubuntu Server

iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 443 -j

ACCEPT

iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT

iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p udp --dport 53 -j ACCEPT

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 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.

Borramos las reglas que se estén ejecutando

CODE:

iptables -X

iptables -Z

iptables -t nat -F

Aceptamos conexiones saliente, entrantes, el forward, prerouting y postrouting

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

Page 9: Configuración DHCP e Iptables en Ubuntu Server

CODE:

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE

Activamos el redireccionamiento para el proxy transparente, también indicamos que lo

redireccionaremos siempre y cuando el destino no sea una dirección dentro de la

misma red, dígase servidores web locales todo lo demás al proxy

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

iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT

iptables -A FORWARD -s 192.168.2.0/24 -i eth1 -p udp --dport 53 -j ACCEPT

Y por ultimo habilitamos el forward

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

Page 10: Configuración DHCP e Iptables en Ubuntu Server

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

Page 11: Configuración DHCP e Iptables en Ubuntu Server

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

De igualmanera, podemos borrar todo y dejar solo lo siguiente

CODE:

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

paginas que deseamos bloquear, y otro donde tendremos una lista de las ip que 

tendrán derechos privilegiados

Page 12: Configuración DHCP e Iptables en Ubuntu Server

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

Page 13: Configuración DHCP e Iptables en Ubuntu Server

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

Y sigue la lista de direcciones privilegiadas

CODE:

sudo vi /etc/squid/plus.lst

Y agregamos las ip que deseemos

CODE:

192.168.2.150

192.168.2.135

Ahora regresando al archivo de configuración del squid

Indicamos que por el puerto 3128 escucharemos y que será proxy transparente

CODE:

http_port 3128 transparent

Page 14: Configuración DHCP e Iptables en Ubuntu Server

Estos valores dejarlos tal cual

CODE:

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 permitirán hacer

referencias hacia ciertos elementos ya sea ip, direcciones etc

La definición all indica un origen definido por todo el rango de direcciones ip

CODE:

acl all src 0.0.0.0/0.0.0.0

La siguiente definicion hace referencia al conjunto de ip comprendidas dentro de

nuestra red

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"

La definicion sites hace referencia ala lista de sitios restringidos

CODE:

acl sites url_regex "/etc/squid/sites.lst"

La definición 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 imágenes de cd o archivos comprimidos, si añaden esa

extensión se darán cuenta que las búsquedas de google desencadenaran el bloqueo

del proxy y no les dejara buscar nada, ya que dentro de la url de la búsqueda se

Page 15: Configuración DHCP e Iptables en Ubuntu Server

generan este tipo de extensiones, la cadena .mp bloquea el yahoo mail, así que sehan

cuidadosos es este sentido, y evítense dolores de cabeza.

CODE:

acl files url_regex -

i .exe .flv .mp4 .mp3 .avi .wma .mov .acc .wav .bat .asf .mpeg .3gp .swf

Y por ultimo la definicion del loopback

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.