InicioLinuxFirewall para servidores expuestos

Firewall para servidores expuestos

Linux12/4/2012

Arquitectura DMZ

Cuando ciertas máquinas de la red interna tienen que ser accesibles desde el exterior (servidor web, un servidor de mensajería, un servidor FTP público, etc.), normalmente es necesario crear una nueva política para una nueva red, accesible tanto desde la red interna como desde el exterior, sin correr el riesgo de comprometer la seguridad de la empresa.

Se habla entonces de una "zona desmilitarizada" (DMZ) para designar esta zona aislada que aloja aplicaciones a disposición del público. El DMZ sirve como una zona intermedia entre la red a proteger y la red hostil.

Una DMZ se crea a menudo a través de las opciones de configuración del cortafuegos, donde cada red se conecta a una interfaz de red distinta. Esta configuración se llama cortafuegos en trípode (three-legged firewall).






Desde el prisma de un purista de la seguridad, el primer paso, para segmentar las redes que existirán en una organización, es identificar los diferentes servidores/servicios para decidir su distribución.

Aquellos que necesiten tener una puerta por la que entre tráfico desde Internet, deberá ir en una DMZ de servicios públicos o frontend. La ubicación de los servidores que nutren estas aplicaciones públicas deben ir en una red diferente y protegida, o de backend.

El tráfico a permitir entre todas estas redes habrá de ser el justo y necesario para evitar exposiciones de servicios/máquinas por error. Más o menos como se puede ver en el dibujo de abajo.





Los servidores en la DMZ se denominan "anfitriones bastión" ya que actúan como un puesto de avanzada en la red de la compañía.



En este tipo de firewall hay que permitir:

- Acceso de la red local a internet y a la DMZ.
- Acceso público desde internet al puerto tcp/80 y tcp/443 de nuestro servidor web 192.168.3.2 de la DMZ
- Obviamente bloquear el resto de acceso de la DMZ hacia la Red local.
¿Qué tipo de reglas son las que hay que usar para filtrar el tráfico entre la DMZ y la LAN? Solo pueden ser las FORWARD, ya que estamos filtrando entre distintas redes, no son paquetes destinados al propio firewall.

Debe tener presente, de esta manera, la DMZ posee un nivel de seguridad intermedio, el cual no es lo suficientemente alto para almacenar datos imprescindibles de la compañía.





Configurando las interfaces de red


Nos logueamos en el firewall, el primer tramite a realizar es configurar las interfaces de red.


su

poner contraseña de root, a partir de ahora y en todo el tutorial vamos a trabajar como usuario root.
(si estas en ubuntu sudo su y pones tu propia contraseña)


ifconfig -a | grep eth*





Podemos ver que las 3 interfaces de red están detectadas, solo una ya posee IP que fue asignada vía DHCP por el router.


El servidor debe tener asignada ip fija en las 3 interfaces de red.

ver los datos actuales

more /etc/resolv.conf

nos muestra los dns en uso.


ifconfig eth0

nos muestra Ip interna, máscara e Ip broadcast, netmask.


netstat -r

nos muestra Ip puerta de enlace y el network.







Asignando las Ips fijas


Vamos a cargar los datos recopilados anteriormente.

nano -wB /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.0.113
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.253

auto eth1
iface eth1 inet static
address 192.168.10.1
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255

auto eth2
iface eth2 inet static
address 192.168.3.1
netmask 255.255.255.0
network 192.168.3.0
broadcast 192.168.3.255





Como se puede apreciar cada interfaz de red usa un rango diferente eth0 192.168.0.0/24 , eth1 192.168.10.0/24 , eth2 192.168.3.0/24



Si querés evitar el tipeado de tantos datos, bajar el archivo:


wget http://files.myopera.com/alband/files/interfaces-dmz


Una vez descargado lo copiamos en su lugar

cp --backup interfaces-dmz /etc/network/interfaces

y lo editamos acorde a los datos que correspondan

nano -wB /etc/network/interfaces



reiniciamos la red

/etc/init.d/networking restart




OpenDNS

Ofrece las siguientes direcciones de servidor de nombres de dominio para uso público 208.67.222.222 208.67.220.220 o puede usar los correspondientes a su proveedor de internet.

echo nameserver 208.67.220.220 > /etc/resolv.conf
echo nameserver 208.67.222.222 >> /etc/resolv.conf





DHCP Server


DHCP responde al protocolo de configuración dinámica de host. En otras palabras, es un protocolo que se utiliza para proporcionar una configuración ip a otros equipos que se encuentren en el mismo segmento de red que el servidor. El servidor DHCP es aquel que proporciona direcciones ip dinámicas a equipos que lo soliciten.



apt-get install dhcp3-server








Luego de la instalación copiamos el archivo /etc/dhcp/dhcpd.conf
cd /etc/dhcp

cp --backup dhcpd.conf ./dhcpd.conf.old

borramos el contenido de archivo

> dhcpd.conf

nano dhcpd.conf




Y en el archivo agregamos estos datos:

authoritative;
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.2 192.168.1.20;
option domain-name-servers 208.67.220.220,208.67.222.222;
option domain-name "firewall";
option routers 192.168.10.1;
option broadcast-address 192.168.10.255;
default-lease-time 600000;
max-lease-time 720000;
}
#host jefe {
#hardware ethernet xx:xx:xx:xx:xx:xx;
#fixed-address 192.168.1.160;
#}
#host alband {
#hardware ethernet xx:xx:xx:xx:xx:xx;
#fixed-address 192.168.1.161;
#}



Si se desea asignar IP fija a algunos equipos en particular, descomentar las últimas 8 lineas y completar con datos que correspondan, host jefe y alband.

La configuración se puede bajar:

wget http://files.myopera.com/alband/files/dmz-dhcpd.conf




cp --backup dmz-dhcpd.conf /etc/dhcp/dhcpd.conf


podemos revisar el resultado

more /etc/dhcp/dhcpd.conf






Debemos editar el archivo de configuración dónde deberemos indicar en que tarjeta se quiere activar el servidor DHCP, modificando la siguiente línea:

INTERFACES="eth1"




nano /etc/default/isc-dhcp-server







Reiniciamos el servicio

/etc/init.d/isc-dhcp-server restart








Iptables

Primero vamos a ver como estará estructurada nuestra red.





En la imagen están los datos reales que usaré, una vez comprendida la imagen anterior ya tenemos más claro que vamos a hacer.

Creamos nuestro script de iptables

nano /etc/network/if-up.d/firewall

#!/bin/sh
## SCRIPT de IPTABLES - ejemplo del manual de iptables
## Ejemplo de script para firewall entre red-local e internet con DMZ
##
## Pello Xabier Altadill Izura
## www.pello.info - [email protected]
## modificado por alband de Taringa

echo -n Aplicando Reglas de Firewall...

## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F

## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT

# eth0 es el interfaz conectado al router y eth1 a la Red local
# Todo lo que venga por el exterior y vaya a los puerto 80 y 433
# lo redirigimos al servidor web (192.168.3.2) de la DMZ
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.3.2:80
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 192.168.3.2:443

# El localhost se deja (por ejemplo conexiones locales a mysql)
iptables -A INPUT -i lo -j ACCEPT

# Al firewall tenemos acceso desde la red local
iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT

# Ahora hacemos enmascaramiento de la red local y de la DMZ
# para que puedan salir haca fuera
# y activamos el BIT DE FORWARDING (imprescindible!!!!!)
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o eth0 -j MASQUERADE

# Con esto permitimos hacer forward de paquetes en el firewall, o sea
# que otras máquinas puedan salir a traves del firewall.
echo 1 > /proc/sys/net/ipv4/ip_forward

## Permitimos el paso de la Red local al servidor web la DMZ
iptables -A FORWARD -s 192.168.3.2 -d 192.168.10.5 -p tcp --sport 80 -j ACCEPT
iptables -A FORWARD -s 192.168.10.5 -d 192.168.3.2 -p tcp --dport 80 -j ACCEPT


# Cerramos el acceso de la DMZ a la Red local
iptables -A FORWARD -s 192.168.3.0/24 -d 192.168.10.0/24 -j DROP

## Cerramos el acceso de la DMZ al propio firewall
iptables -A INPUT -s 192.168.3.0/24 -i eth2 -j DROP

## Y ahora cerramos los accesos indeseados del exterior:
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -p udp --dport 1:1024 -j DROP

# Cerramos un puerto de gestión: webmin
iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 10000 -j DROP


# Algunas medidas de protección
# Deshabilitar broadcast
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Deshabilitar el ping... quizá discutible.
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

# Deshabilitar la redirección del ping
echo "0" > /proc/sys/net/ipv4/conf/all/accept_redirects

# Registrar los accesos extraños, paquetes falseados, etc..
echo "1" > /proc/sys/net/ipv4/conf/all/log_martians

# Anti-flooding o inundación de tramas SYN.
iptables -N syn-flood
iptables -A INPUT -i etho -p tcp --syn -j syn-flood
iptables -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
iptables -A syn-flood -j DROP

echo " OK . Verifique que lo que se aplica con: iptables -nL"

# Fin del script






Para evitar errores recomiendo descargar el script

wget http://files.myopera.com/alband/files/dmz-firewall




luego copiarlo

cp dmz-firewall /etc/network/if-up.d

Le damos permisos de ejecución

chmod +x /etc/network/if-up.d/dmz-firewall


Ahora ejecutamos el script

bash /etc/network/if-up.d/dmz-firewall





Podemos ver las reglas cargadas con

iptables -nL








Servidor web


En el servidor web que estará aislado en la DMZ debemos configurar correctamente su IP.

nano -wB /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.3.2
netmask 255.255.255.0
network 192.168.3.0
broadcast 192.168.0.255
gateway 192.168.3.1





Y cargamos los DNS

echo nameserver 208.67.220.220 > /etc/resolv.conf
echo nameserver 208.67.222.222 >> /etc/resolv.conf







Vamos a probar que se puede hacer ahora


Desde mi ip 192.168.0.101, pongo la ip del firewall y veo el apache del servidor web que esta en la DMZ.
El firewall no responde al ping, recomiendo ampliar la imagen para entender mejor.






Aquí apreciamos un cliente de la red local, el servidor DHCP del firewal le asigo IP, vemos que tiene navegación y puede entrar al servidor web de la DMZ.









Amigos, para consultas puntuales sobre este tema, pasen por esta comunidad, todos serán bienvenidos!!


Únanse a nuestra comunidad haciendo click en la imagen!!!




_____________________________________________________________________



Si te gusto el post comenta!
Estas sin tiempo para leerlo detenidamente? Agregalo a favoritos ya!
No entendiste algo? mandame un MP que te ayudo.

Te gustan mis aportes? Seguime! no te defraudaré.



Fuentes de conocimiento:

http://www.securitybydefault.com/2012/07/securizando-un-entorno-de-maquinas.html

http://es.wikipedia.org/wiki/Zona_desmilitarizada_%28inform%C3%A1tica%29

Datos archivados del Taringa! original
172puntos
629visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
8visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

a
alband🇦🇷
Usuario
Puntos0
Posts71
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.