44
pdfcrowd.com open in browser PRO version Are you a developer? Try out the HTML to PDF API IPTABLES Manual práctico (1.2) En este manual se muestran las habituales arquitecturas de redes con firewall y la forma de montar iptables para cada caso, con distintas opciones para cada ejemplo. 1.2 Revision: añadidos los mismos casos pero con DROP por defecto. Por Pello Xabier Altadill Izura Pello Altadill Ingeniero Informático por la UPV-EHU http://www.pello.info/forum/iptables (Actualizaciones y ejemplos en http://www.pello.info - VERSIÓN PDF ) 1. Qué es un firewall 2. Qué es iptables 3. Al grano: creando un firewall con iptables 3.1 Proteger la propia máquina 3.2 Firewall de una LAN con salida a internet 3.3 Firewall de una LAN con salida a internet con DMZ 3.4 Firewall de una LAN con salida a internet y VPNS 3.5 Firewall puro y duro entre redes

Firewall Iptables Linux

Embed Size (px)

DESCRIPTION

Explicación iptables

Citation preview

Page 1: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

IPTABLESManual praacutectico

(12)

En este manual se muestran las habituales arquitecturas de redes con firewall y la forma de montar iptables paracada caso con distintas opciones para cada ejemplo

12 Revision antildeadidos los mismos casos pero con DROP por defecto

Por Pello Xabier Altadill IzuraPello Altadill Ingeniero Informaacutetico por la UPV-EHUhttpwwwpelloinfoforumiptables

(Actualizaciones y ejemplos en httpwwwpelloinfo - VERSIOacuteN PDF)

1 Queacute es un firewall2 Queacute es iptables3 Al grano creando un firewall con iptables31 Proteger la propia maacutequina32 Firewall de una LAN con salida a internet33 Firewall de una LAN con salida a internet con DMZ34 Firewall de una LAN con salida a internet y VPNS35 Firewall puro y duro entre redes

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

36 Firewall con poliacutetica por defecto DROP4 Coacutemo depurar el funcionamiento del firewallEnlaces notas autor

1 Queacute es un firewall

Un firewall es un dispositivo que filtra el traacutefico entre redes como miacutenimo dos El firewall puede ser un dispositivofiacutesico o un software sobre un sistema operativo En general debemos verlo como una caja con DOS o masinterfaces de red en la que se establecen una reglas de filtrado con las que se decide si una conexioacuten determinadapuede establecerse o no Incluso puede ir maacutes allaacute y realizar modificaciones sobre las comunicaciones como elNAT

Esa seriacutea la definicioacuten geneacuterica hoy en dia un firewall es un hardware especifico con un sistema operativo o unaIOS que filtra el traacutefico TCPUDPICMPIP y decide si un paquete pasa se modifica se convierte o se descartaPara que un firewall entre redes funcione como tal debe tener al menos dos tarjetas de red Esta seriacutea la tipologiacuteaclaacutesica de un firewall

Figura 1 esquema de f irewall tiacutepico entre red local e internet

Esquema tiacutepico de firewall para proteger una red local conectada a internet a traveacutes de un router El firewall debecolocarse entre el router (con un uacutenico cable) y la red local (conectado al switch o al hub de la LAN)

Dependiendo de las necesidades de cada red puede ponerse uno o maacutes firewalls para establecer distintos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

periacutemetros de seguridad en torno a un sistema Es frecuente tambieacuten que se necesite exponer alguacuten servidor ainternet (como es el caso de un servidor web un servidor de correo etc) y en esos casos obviamente en principiose debe aceptar cualquier conexioacuten a ellos Lo que se recomienda en esa situacioacuten es situar ese servidor en lugaraparte de la red el que denominamos DMZ o zona desmilitarizada El firewall tiene entonces tres entradas

Figura 2 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En la zona desmilitarizada se pueden poner tantos servidores como se necesiten Con esta arquitecturapermitimos que el servidor sea accesible desde internet de tal forma que si es atacado y se gana acceso a eacutel lared local sigue protegida por el firewall Esta estructura de DMZ puede hacerse tambieacuten con un doble firewall(aunque como se ve se puede usar un uacutenico dispositivo con al menos tres interfaces de red) Seriacutea un esquemacomo este

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 3 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos creado con doble f irewall(periacutemetro)

Los firewalls se pueden usar en cualquier red Es habitual tenerlos como proteccioacuten de internet en las empresasaunque ahiacute tambieacuten suelen tener una doble funcioacuten controlar los accesos externos hacia dentro y tambieacuten losinternos hacia el exterior esto uacuteltimo se hace con el firewall o frecuentemente con un proxy (que tambieacuten utilizanreglas aunque de maacutes alto nivel)Tambieacuten en empresas de hosting con muchos servidores alojados lo normal es encontrarnos uno o maacutes firewallsya sea filtrando toda la instalacioacuten o parte de ella

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 4 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

Sea el tipo de firewall que sea generalmente no tendraacute mas que un conjunto de reglas en las que se examina el

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

origen y destino de los paquetes del protocolo tcpip En cuanto a protocolos es probable que sean capaces defiltrar muchos tipos de ellos no solo los tcp tambieacuten los udp los icmp los gre y otros protocolos vinculados a vpnsEste podriacutea ser (en pseudo-lenguaje) un el conjunto de reglas de un firewall del primer graacutefico

Politica por defecto ACEPTARTodo lo que venga de la red local al firewall ACEPTARTodo lo que venga de la ip de mi casa al puerto tcp 22 ACEPTARTodo lo que venga de la ip de casa del jefe al puerto tcp 1723 ACEPTARTodo lo que venga de horaredirises al puerto udo 123 ACEPTARTodo lo que venga de la red local y vaya al exterior ENMASCARARTodo lo que venga del exterior al puerto tcp 1 al 1024 DENEGARTodo lo que venga del exterior al puerto tcp 3389 DENEGARTodo lo que venga del exterior al puerto udp 1 al 1024 DENEGAR

En definitiva lo que se hace es - Habilita el acceso a puertos de administracioacuten a determinadas IPs privilegiadas- Enmascara el trafico de la red local hacia el exterior (NAT una peticioacuten de un pc de la LAN sale al exterior con laip puacuteblica) para poder salir a internet- Deniega el acceso desde el exterior a puertos de administracioacuten y a todo lo que este entre 1 y 1024

Hay dos maneras de implementar un firewall1) Poliacutetica por defecto ACEPTAR en principio todo lo que entra y sale por el firewall se acepta y solo se denegaraacutelo que se diga expliacutecitamente2) Poliacutetica por defecto DENEGAR todo esta denegado y solo se permitiraacute pasar por el firewall aquellos que sepermita expliacutecitamente

Como es obvio imaginar la primera poliacutetica facilita mucho la gestioacuten del firewall ya que simplemente nos tenemosque preocupar de proteger aquellos puertos o direcciones que sabemos que nos interesa el resto no importa tantoy se deja pasar Por ejemplo si queremos proteger una maacutequina linux podemos hacer un netstat -ln (o netstat -ano netstat -puta | grep LISTEN) saber que puertos estaacuten abiertos poner reglas para proteger esos puertos y ya estaacuteiquestPara queacute vamos a proteger un puerto que realmente nunca se va a abrirEl uacutenico problema que podemos tener es que no controlemos que es lo que esta abierto o que en un momentodado se instale un software nuevo que abra un puerto determinado o que no sepamos que determinados paquetes

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

ICMP son peligrosos Si la poliacutetica por defecto es ACEPTAR y no se protege expliacutecitamente nos la estamosjugando un poco

En cambio si la poliacutetica por defecto es DENEGAR a no ser que lo permitamos expliacutecitamente el firewall seconvierte en un auteacutentico MURO infranqueable El problema es que es mucho maacutes difiacutecil preparar un firewall asiacute yhay que tener muy claro como funciona el sistema (sea iptables o el que sea) y que es lo que se tiene que abrir sincaer en la tentacioacuten de empezar a meter reglas super-permisivas Esta configuracioacuten de firewall es la recomendada aunque no es aconsejable usarla si no se domina miacutenimamenteel sistema Uno de los objetos principales de este documento es mostrar la forma de crear este tipo de firewalls

IMPORTANTEEl orden en el que se ponen las reglas de firewall es determinante Normalmente cuando hay que decidir que sehace con un paquete se va comparando con cada regla del firewall hasta que se encuentra una que le afecta(match) y se hace lo que dicte esta regla (aceptar o denegar) despueacutes de eso NO SE MIRARAacuteN MAacuteS REGLASpara ese paquete iquestCuaacutel es el peligro Si ponemos reglas muy permisivas entre las primeras del firewall puedeque las siguientes no se apliquen y no sirvan de nada

2 Queacute es iptables

IPtables es un sistema de firewall vinculado al kernel de linux que se ha extendido enormemente a partir del kernel24 de este sistema operativo Al igual que el anterior sistema ipchains un firewall de iptables no es como unservidor que lo iniciamos o detenemos o que se pueda caer por un error de programacioacuten(esto es una pequentildeamentira ha tenido alguna vulnerabilidad que permite DoS pero nunca tendraacute tanto peligro como las aplicacionesque escuchan en determinado puerto TCP) iptables esta integrado con el kernel es parte del sistema operativoiquestCoacutemo se pone en marcha Realmente lo que se hace es aplicar reglas Para ellos se ejecuta el comandoiptables con el que antildeadimos borramos o creamos reglas Por ello un firewall de iptables no es sino un simplescript de shell en el que se van ejecutando las reglas de firewall

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Notas bueno para los maacutes geeks y tocapelotas Vale se puede implementar un script de inicio en etcrcdINITd(o etcINITd ) con el que hagamos que iptables se inicie o pare como un servidor maacutes Lo podemos hacernosotros o es probable que venga en la distribucioacuten (como en redhat por ejemplo) Tambieacuten se pueden salvar lasreglas aplicadas con el comando iptables-save en un fichero y gestionar ese fichero con una aplicacioacuten o front-enddesde la X o desde webmin

Vale tenemos una maacutequina linux con soporte para iptables tiene reglas aplicadas y empiezan a llegarsalirpasarpaquetes No nos liemos olvidemos cuantas tarjetas de red hay que direcciones ip tiene la maacutequina y olvidemos siel paquete entra o sale Las reglas de firewall estaacuten a nivel de kernel y al kernel lo que le llega es un paquete(digamos un marroacuten ) ) y tiene que decidir que hacer con eacutel El kernel lo que hace es dependiendo si el paquetees para la propia maquina o para otra maquina consultar las reglas de firewall y decidir que hacer con el paqueteseguacuten mande el firewall Este es el camino que seguiriacutea un paquete en el kernel

Figura 5 cuando un paquete u otra comunicacioacuten llega al kernel con iptables se sigue este camino

Como se ve en el graacutefico baacutesicamente se mira si el paquete esta destinado a la propia maquina o si va a otraPara los paquetes (o datagramas seguacuten el protocolo) que van a la propia maquina se aplican las reglas INPUT yOUTPUT y para filtrar paquetes que van a otras redes o maquinas se aplican simplemente reglas FORWARDINPUTOUTPUT y FORWARD son los tres tipos de reglas de filtrado Pero antes de aplicar esas reglas es posible

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

INPUTOUTPUT y FORWARD son los tres tipos de reglas de filtrado Pero antes de aplicar esas reglas es posibleaplicar reglas de NAT estas se usan para hacer redirecciones de puertos o cambios en las IPs de origen ydestino Veremos ejemplos E incluso antes de las reglas de NAT se pueden meter reglas de tipo MANGLE destinadas a modificar lospaquetes son reglas poco conocidas y es probable que no las usenPor tanto tenemos tres tipos de reglas en iptables- MANGLE- NAT reglas PREROUTING POSTROUTING - FILTER reglas INPUT OUTPUT FORWARD

3 Al grano creando un firewall con iptables

En este tutorial se ha intentado dar una breve introduccioacuten sobre lo que es un firewall sus tipologiacuteas baacutesicas y enconcreto se presenta el sistema iptables Pero vamos al grano y empezamos a ver configuraciones de firewall coniptables empezando desde la maacutes baacutesica a las maacutes complejas en las que se establece la denegacioacuten comopoliacutetica por defecto

Nota se recomienda encarecidamente ir practicando estas reglas en alguna maquina linux disponible yespecialmente hacer uso de la herramienta iptraf para depurar y comprobar el funcionamiento de iptables Coniptraf podemos comprobar si las conexiones TCPIP se llegan a establecer o no Una conexioacuten tcpip empieza conel three-way-handshake- La maquina que desea conectarse a otra envia un paquete con flan SYN- Si la otra maquina acepta envia un SYNACK- Entonces la maacutequina establece la conexioacuten

Si el firewall esta denegando la conexioacuten con iptraf veremos que la maquina origen solo manda paquetes con elflan S (de SYN) y que del otro lado no sale nada Saber usar iptraf nos ayudaraacute mucho

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

31 Proteger la propia maacutequinaMuy bien tenemos una maacutequina linux pinchada en internet y queremos protegerla con su propio firewall Lo uacutenicoque tenemos que hacer es crear un script de shell en el que se van aplicando las reglasLos scripts de iptables pueden tener este aspecto

Saludo a la aficioacuten (echo)Borrado de las reglas aplicadas actualmente (flush)Aplicacioacuten de poliacuteticas por defecto para INPUT OUPUT FORWARD Listado de reglas iptables

Ojo con el orden de las reglas

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp -dport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPT

Y el resto lo cerramosiptables -A INPUT -p tcp --dport 2021 -j DROPiptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 22 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Nota para freaks y geeks siiii que ya lo se se puede mejorar este script usando variables se puede poner elcomando con el path completo pero limiacutetense a hacer copy-paste Para el resto de mortales no olvidarse deponerle flags de ejecucioacuten chmod +x firewall1sh o chmod 750 firewall1sh

En fin ya se ve un script de los maacutes simple con unas pocas reglas con las que cerramos puertos al puacuteblico a losque no tienen porque tener acceso salvo el 80 Pero cualquiera con algo de ojo se habraacute dado cuenta de que ni sefiltra el UDP ni el ICMP Apostariacutea cualquier cosa a que el sistema tiene alguacuten puerto udp abierto y ademaacutespeligroso como el SNMP Como he dicho anteriormente en este tipo de firewall es recordable hacer un netstatpara ver que puertos estaacuten en estado de escucha (abiertos) y salve que un rootkit nos haya modificado losbinarios netstat nos daraacute la informacioacuten precisa que necesitamos Hay gente que se decanta por hacerse un nmapasiacute mismos Cuidado dependiendo de coacutemo lo ejecutemos quizaacute no nos muestre todos los puertos ya que suelemirar los bien conocidosImaginemos que hemos dado un repaso a nuestro sistema y ahora si que tenemos mejor identificados los puertostcp y udp abiertos Pero por si acaso nos curamos en salud y al final del script cerraremos el rango de puertos del 1al 1024 los reservados tanto para tcp como udp

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Ejemplo de script para proteger la propia maacutequina Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp -dport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPT

Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 -j DROPiptables -A INPUT -p udp --dport 11024 -j DROP

Cerramos otros puertos que estan abiertosiptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iquestSencillo no Ahora basta con hacer copy-paste de estas reglas y aplicarlas y ajustarlas en su sistema (quizaacutesuses PostgreSQL) Si tiene miedo de perder el control de una maacutequina remota pruebe el script en una maacutequinalocal y aseguacuterese de que aplica lo que usted quiere Funcionar va a funcionar seguro

- Versioacuten con DROP por defecto

Vale queremos que nuestra maquina sea inexcrutable y que solo tenga abierto un puerto imprescindible para dardeterminado servicio Con DROP por defecto se protege la maquina perfectamente aunque hay que antildeadiralgunas reglas para que la propia maacutequina sea capaz de salir a internetiquest Para queacute hombre porque la maquinanecesita actualizaciones consultar DNS por udp sacar correo etc

Veamos un posible script

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar no empezamos a abrir porque ahora esta TODO denegado Debemos decir de manera explicita queacute es lo que queremos abrir

Operar en localhost sin limitacionessbiniptables -A INPUT -i lo -j ACCEPTsbiniptables -A OUTPUT -o lo -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

Este es el servicio que DA la maquina a internet por tanto todo paquete entrante se acepta para ese puerto y los salientes vinculados se aceptansbiniptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPT

Permitimos que la maquina pueda salir a la websbiniptables -A INPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

Ya tambien a webs segurassbiniptables -A INPUT -p tcp -m tcp --sport 443 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

Reglas necesarias para FTP pasivo y activo Se permiten conexiones entrantes YA establecidassbiniptables -A INPUT -p tcp -m tcp --sport 2021 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 2021 -j ACCEPTsbiniptables -A INPUT -p tcp -m tcp --sport 102465535 --dport 102465535 -m state --state ESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 102465535 -m state --state NEWRELATEDESTABLISHED -j ACCEPT

Permitimos la consulta a un primer DNSsbiniptables -A INPUT -s 211956439 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 211956439 -p udp -m udp --dport 53 -j ACCEPT

Permitimos la consulta a un segundo DNSsbiniptables -A INPUT -s 2119579109 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 2119579109 -p udp -m udp --dport 53 -j ACCEPT

Permitimos consultar el reloj de horaredirises (un pentium166) para sincronizarsesbiniptables -A INPUT -s 1302063166 -p udp -m udp --dport 123 -j ACCEPTsbiniptables -A OUTPUT -d 1302063166 -p udp -m udp --sport 123 -j ACCEPT

Barrera de backup por si cambiamos a modo ACCEPT temporalmente Con esto protegemos los puertos reservados y otros well-knownsbiniptables -A INPUT -p tcp -m tcp --dport 11024 -j DROPsbiniptables -A INPUT -p udp -m udp --dport 11024 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 1723 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 3306 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 5432 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

32 Firewall de una LAN con salida a internetAhora vamos a ver una configuracioacuten de firewall iptables para el tiacutepico caso de red local que necesita salida ainternet

Figura 6 esquema de f irewall tiacutepico entre red local e internet

iquestQueacute es lo que hace falta Obviamente una regla que haga NAT hacia fuera (enmascaramiento en iptables) conlo que se hariacutea dos veces NAT en el firewall y en el router Entre el router y el firewall lo normal es que haya una redprivada (19216811 y 19216812 por ejemplo) aunque dependiendo de las necesidades puede que los dostengan IP puacuteblica El router se supone que hace un NAT completo hacia dentro (quizaacute salvo puerto 23) o sea quedesde el exterior no se llega al router si no que de forma transparente se choca contra el firewall Lo normal eneste tipo de firewalls es poner la poliacutetica por defecto de FORWARD en denegar (DROP) pero eso lo vemos maacutesadelanteVeamos como seriacutea este firewall-gateway

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Pero como somos muy malvados queremos que los empleados solamente puedan navegar por internetdenegando el acceso a Kazaa o edonkey Esta seriacutea una configuracioacuten simple pero efectiva

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con filtro para que solo se pueda navegar

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor decorreo Darle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esospuertos o si no estaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA lared local De todas formas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cadacosa bastante les cuesta a muchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos alpuacuteblico en el propio firewall nos la estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla enla DMZ Supongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil ycon una ip dinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa conuna conexioacuten ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

iexclMaacutes difiacutecil todaviacutea Ahora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IISde un servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para unaempresa externa En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacuteahacer faacutecilmente con un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y alconectarse a eacutel te lleva hasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacerredirecciones con una ventaja no perdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En finveamos la configuracioacuten con las nuevas reglas de DNAT

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables -t nat -A PREROUTING -s 22123124181 -i eth0 -p tcp --dport 3389 -j DNAT --to 19216810123389

Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones ylos servicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de lared local Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red locales evitar escaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buenaconfiguracioacuten con denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de redpor 6euro o dolares y crear una DMZ

33 Firewall de una LAN con salida a internet con DMZ

Bueno esto se va complicando Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos lascosas bien y colocamos ese servidor IIS en una DMZ

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 7 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En este tipo de firewall hay que permitir- Acceso de la red local a internet- Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZ- Acceso del servidor de la DMZ a una BBDD de la LAN- Obviamente bloquear el resto de acceso de la DMZ hacia la LANiquestQueacute tipo de reglas son las que hay que usar para filtrar el traacutefico entre la DMZ y la LAN Solo pueden ser lasFORWARD ya que estamos filtrando entre distintas redes no son paquetes destinados al propio firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 19216832443

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 19216832 -d 192168105 -p tcp --dport 5432 -j ACCEPT

iptables -A FORWARD -s 192168105 -d 19216832 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 19216832 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 19216832 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 2: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

36 Firewall con poliacutetica por defecto DROP4 Coacutemo depurar el funcionamiento del firewallEnlaces notas autor

1 Queacute es un firewall

Un firewall es un dispositivo que filtra el traacutefico entre redes como miacutenimo dos El firewall puede ser un dispositivofiacutesico o un software sobre un sistema operativo En general debemos verlo como una caja con DOS o masinterfaces de red en la que se establecen una reglas de filtrado con las que se decide si una conexioacuten determinadapuede establecerse o no Incluso puede ir maacutes allaacute y realizar modificaciones sobre las comunicaciones como elNAT

Esa seriacutea la definicioacuten geneacuterica hoy en dia un firewall es un hardware especifico con un sistema operativo o unaIOS que filtra el traacutefico TCPUDPICMPIP y decide si un paquete pasa se modifica se convierte o se descartaPara que un firewall entre redes funcione como tal debe tener al menos dos tarjetas de red Esta seriacutea la tipologiacuteaclaacutesica de un firewall

Figura 1 esquema de f irewall tiacutepico entre red local e internet

Esquema tiacutepico de firewall para proteger una red local conectada a internet a traveacutes de un router El firewall debecolocarse entre el router (con un uacutenico cable) y la red local (conectado al switch o al hub de la LAN)

Dependiendo de las necesidades de cada red puede ponerse uno o maacutes firewalls para establecer distintos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

periacutemetros de seguridad en torno a un sistema Es frecuente tambieacuten que se necesite exponer alguacuten servidor ainternet (como es el caso de un servidor web un servidor de correo etc) y en esos casos obviamente en principiose debe aceptar cualquier conexioacuten a ellos Lo que se recomienda en esa situacioacuten es situar ese servidor en lugaraparte de la red el que denominamos DMZ o zona desmilitarizada El firewall tiene entonces tres entradas

Figura 2 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En la zona desmilitarizada se pueden poner tantos servidores como se necesiten Con esta arquitecturapermitimos que el servidor sea accesible desde internet de tal forma que si es atacado y se gana acceso a eacutel lared local sigue protegida por el firewall Esta estructura de DMZ puede hacerse tambieacuten con un doble firewall(aunque como se ve se puede usar un uacutenico dispositivo con al menos tres interfaces de red) Seriacutea un esquemacomo este

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 3 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos creado con doble f irewall(periacutemetro)

Los firewalls se pueden usar en cualquier red Es habitual tenerlos como proteccioacuten de internet en las empresasaunque ahiacute tambieacuten suelen tener una doble funcioacuten controlar los accesos externos hacia dentro y tambieacuten losinternos hacia el exterior esto uacuteltimo se hace con el firewall o frecuentemente con un proxy (que tambieacuten utilizanreglas aunque de maacutes alto nivel)Tambieacuten en empresas de hosting con muchos servidores alojados lo normal es encontrarnos uno o maacutes firewallsya sea filtrando toda la instalacioacuten o parte de ella

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 4 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

Sea el tipo de firewall que sea generalmente no tendraacute mas que un conjunto de reglas en las que se examina el

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

origen y destino de los paquetes del protocolo tcpip En cuanto a protocolos es probable que sean capaces defiltrar muchos tipos de ellos no solo los tcp tambieacuten los udp los icmp los gre y otros protocolos vinculados a vpnsEste podriacutea ser (en pseudo-lenguaje) un el conjunto de reglas de un firewall del primer graacutefico

Politica por defecto ACEPTARTodo lo que venga de la red local al firewall ACEPTARTodo lo que venga de la ip de mi casa al puerto tcp 22 ACEPTARTodo lo que venga de la ip de casa del jefe al puerto tcp 1723 ACEPTARTodo lo que venga de horaredirises al puerto udo 123 ACEPTARTodo lo que venga de la red local y vaya al exterior ENMASCARARTodo lo que venga del exterior al puerto tcp 1 al 1024 DENEGARTodo lo que venga del exterior al puerto tcp 3389 DENEGARTodo lo que venga del exterior al puerto udp 1 al 1024 DENEGAR

En definitiva lo que se hace es - Habilita el acceso a puertos de administracioacuten a determinadas IPs privilegiadas- Enmascara el trafico de la red local hacia el exterior (NAT una peticioacuten de un pc de la LAN sale al exterior con laip puacuteblica) para poder salir a internet- Deniega el acceso desde el exterior a puertos de administracioacuten y a todo lo que este entre 1 y 1024

Hay dos maneras de implementar un firewall1) Poliacutetica por defecto ACEPTAR en principio todo lo que entra y sale por el firewall se acepta y solo se denegaraacutelo que se diga expliacutecitamente2) Poliacutetica por defecto DENEGAR todo esta denegado y solo se permitiraacute pasar por el firewall aquellos que sepermita expliacutecitamente

Como es obvio imaginar la primera poliacutetica facilita mucho la gestioacuten del firewall ya que simplemente nos tenemosque preocupar de proteger aquellos puertos o direcciones que sabemos que nos interesa el resto no importa tantoy se deja pasar Por ejemplo si queremos proteger una maacutequina linux podemos hacer un netstat -ln (o netstat -ano netstat -puta | grep LISTEN) saber que puertos estaacuten abiertos poner reglas para proteger esos puertos y ya estaacuteiquestPara queacute vamos a proteger un puerto que realmente nunca se va a abrirEl uacutenico problema que podemos tener es que no controlemos que es lo que esta abierto o que en un momentodado se instale un software nuevo que abra un puerto determinado o que no sepamos que determinados paquetes

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

ICMP son peligrosos Si la poliacutetica por defecto es ACEPTAR y no se protege expliacutecitamente nos la estamosjugando un poco

En cambio si la poliacutetica por defecto es DENEGAR a no ser que lo permitamos expliacutecitamente el firewall seconvierte en un auteacutentico MURO infranqueable El problema es que es mucho maacutes difiacutecil preparar un firewall asiacute yhay que tener muy claro como funciona el sistema (sea iptables o el que sea) y que es lo que se tiene que abrir sincaer en la tentacioacuten de empezar a meter reglas super-permisivas Esta configuracioacuten de firewall es la recomendada aunque no es aconsejable usarla si no se domina miacutenimamenteel sistema Uno de los objetos principales de este documento es mostrar la forma de crear este tipo de firewalls

IMPORTANTEEl orden en el que se ponen las reglas de firewall es determinante Normalmente cuando hay que decidir que sehace con un paquete se va comparando con cada regla del firewall hasta que se encuentra una que le afecta(match) y se hace lo que dicte esta regla (aceptar o denegar) despueacutes de eso NO SE MIRARAacuteN MAacuteS REGLASpara ese paquete iquestCuaacutel es el peligro Si ponemos reglas muy permisivas entre las primeras del firewall puedeque las siguientes no se apliquen y no sirvan de nada

2 Queacute es iptables

IPtables es un sistema de firewall vinculado al kernel de linux que se ha extendido enormemente a partir del kernel24 de este sistema operativo Al igual que el anterior sistema ipchains un firewall de iptables no es como unservidor que lo iniciamos o detenemos o que se pueda caer por un error de programacioacuten(esto es una pequentildeamentira ha tenido alguna vulnerabilidad que permite DoS pero nunca tendraacute tanto peligro como las aplicacionesque escuchan en determinado puerto TCP) iptables esta integrado con el kernel es parte del sistema operativoiquestCoacutemo se pone en marcha Realmente lo que se hace es aplicar reglas Para ellos se ejecuta el comandoiptables con el que antildeadimos borramos o creamos reglas Por ello un firewall de iptables no es sino un simplescript de shell en el que se van ejecutando las reglas de firewall

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Notas bueno para los maacutes geeks y tocapelotas Vale se puede implementar un script de inicio en etcrcdINITd(o etcINITd ) con el que hagamos que iptables se inicie o pare como un servidor maacutes Lo podemos hacernosotros o es probable que venga en la distribucioacuten (como en redhat por ejemplo) Tambieacuten se pueden salvar lasreglas aplicadas con el comando iptables-save en un fichero y gestionar ese fichero con una aplicacioacuten o front-enddesde la X o desde webmin

Vale tenemos una maacutequina linux con soporte para iptables tiene reglas aplicadas y empiezan a llegarsalirpasarpaquetes No nos liemos olvidemos cuantas tarjetas de red hay que direcciones ip tiene la maacutequina y olvidemos siel paquete entra o sale Las reglas de firewall estaacuten a nivel de kernel y al kernel lo que le llega es un paquete(digamos un marroacuten ) ) y tiene que decidir que hacer con eacutel El kernel lo que hace es dependiendo si el paquetees para la propia maquina o para otra maquina consultar las reglas de firewall y decidir que hacer con el paqueteseguacuten mande el firewall Este es el camino que seguiriacutea un paquete en el kernel

Figura 5 cuando un paquete u otra comunicacioacuten llega al kernel con iptables se sigue este camino

Como se ve en el graacutefico baacutesicamente se mira si el paquete esta destinado a la propia maquina o si va a otraPara los paquetes (o datagramas seguacuten el protocolo) que van a la propia maquina se aplican las reglas INPUT yOUTPUT y para filtrar paquetes que van a otras redes o maquinas se aplican simplemente reglas FORWARDINPUTOUTPUT y FORWARD son los tres tipos de reglas de filtrado Pero antes de aplicar esas reglas es posible

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

INPUTOUTPUT y FORWARD son los tres tipos de reglas de filtrado Pero antes de aplicar esas reglas es posibleaplicar reglas de NAT estas se usan para hacer redirecciones de puertos o cambios en las IPs de origen ydestino Veremos ejemplos E incluso antes de las reglas de NAT se pueden meter reglas de tipo MANGLE destinadas a modificar lospaquetes son reglas poco conocidas y es probable que no las usenPor tanto tenemos tres tipos de reglas en iptables- MANGLE- NAT reglas PREROUTING POSTROUTING - FILTER reglas INPUT OUTPUT FORWARD

3 Al grano creando un firewall con iptables

En este tutorial se ha intentado dar una breve introduccioacuten sobre lo que es un firewall sus tipologiacuteas baacutesicas y enconcreto se presenta el sistema iptables Pero vamos al grano y empezamos a ver configuraciones de firewall coniptables empezando desde la maacutes baacutesica a las maacutes complejas en las que se establece la denegacioacuten comopoliacutetica por defecto

Nota se recomienda encarecidamente ir practicando estas reglas en alguna maquina linux disponible yespecialmente hacer uso de la herramienta iptraf para depurar y comprobar el funcionamiento de iptables Coniptraf podemos comprobar si las conexiones TCPIP se llegan a establecer o no Una conexioacuten tcpip empieza conel three-way-handshake- La maquina que desea conectarse a otra envia un paquete con flan SYN- Si la otra maquina acepta envia un SYNACK- Entonces la maacutequina establece la conexioacuten

Si el firewall esta denegando la conexioacuten con iptraf veremos que la maquina origen solo manda paquetes con elflan S (de SYN) y que del otro lado no sale nada Saber usar iptraf nos ayudaraacute mucho

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

31 Proteger la propia maacutequinaMuy bien tenemos una maacutequina linux pinchada en internet y queremos protegerla con su propio firewall Lo uacutenicoque tenemos que hacer es crear un script de shell en el que se van aplicando las reglasLos scripts de iptables pueden tener este aspecto

Saludo a la aficioacuten (echo)Borrado de las reglas aplicadas actualmente (flush)Aplicacioacuten de poliacuteticas por defecto para INPUT OUPUT FORWARD Listado de reglas iptables

Ojo con el orden de las reglas

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp -dport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPT

Y el resto lo cerramosiptables -A INPUT -p tcp --dport 2021 -j DROPiptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 22 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Nota para freaks y geeks siiii que ya lo se se puede mejorar este script usando variables se puede poner elcomando con el path completo pero limiacutetense a hacer copy-paste Para el resto de mortales no olvidarse deponerle flags de ejecucioacuten chmod +x firewall1sh o chmod 750 firewall1sh

En fin ya se ve un script de los maacutes simple con unas pocas reglas con las que cerramos puertos al puacuteblico a losque no tienen porque tener acceso salvo el 80 Pero cualquiera con algo de ojo se habraacute dado cuenta de que ni sefiltra el UDP ni el ICMP Apostariacutea cualquier cosa a que el sistema tiene alguacuten puerto udp abierto y ademaacutespeligroso como el SNMP Como he dicho anteriormente en este tipo de firewall es recordable hacer un netstatpara ver que puertos estaacuten en estado de escucha (abiertos) y salve que un rootkit nos haya modificado losbinarios netstat nos daraacute la informacioacuten precisa que necesitamos Hay gente que se decanta por hacerse un nmapasiacute mismos Cuidado dependiendo de coacutemo lo ejecutemos quizaacute no nos muestre todos los puertos ya que suelemirar los bien conocidosImaginemos que hemos dado un repaso a nuestro sistema y ahora si que tenemos mejor identificados los puertostcp y udp abiertos Pero por si acaso nos curamos en salud y al final del script cerraremos el rango de puertos del 1al 1024 los reservados tanto para tcp como udp

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Ejemplo de script para proteger la propia maacutequina Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp -dport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPT

Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 -j DROPiptables -A INPUT -p udp --dport 11024 -j DROP

Cerramos otros puertos que estan abiertosiptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iquestSencillo no Ahora basta con hacer copy-paste de estas reglas y aplicarlas y ajustarlas en su sistema (quizaacutesuses PostgreSQL) Si tiene miedo de perder el control de una maacutequina remota pruebe el script en una maacutequinalocal y aseguacuterese de que aplica lo que usted quiere Funcionar va a funcionar seguro

- Versioacuten con DROP por defecto

Vale queremos que nuestra maquina sea inexcrutable y que solo tenga abierto un puerto imprescindible para dardeterminado servicio Con DROP por defecto se protege la maquina perfectamente aunque hay que antildeadiralgunas reglas para que la propia maacutequina sea capaz de salir a internetiquest Para queacute hombre porque la maquinanecesita actualizaciones consultar DNS por udp sacar correo etc

Veamos un posible script

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar no empezamos a abrir porque ahora esta TODO denegado Debemos decir de manera explicita queacute es lo que queremos abrir

Operar en localhost sin limitacionessbiniptables -A INPUT -i lo -j ACCEPTsbiniptables -A OUTPUT -o lo -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

Este es el servicio que DA la maquina a internet por tanto todo paquete entrante se acepta para ese puerto y los salientes vinculados se aceptansbiniptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPT

Permitimos que la maquina pueda salir a la websbiniptables -A INPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

Ya tambien a webs segurassbiniptables -A INPUT -p tcp -m tcp --sport 443 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

Reglas necesarias para FTP pasivo y activo Se permiten conexiones entrantes YA establecidassbiniptables -A INPUT -p tcp -m tcp --sport 2021 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 2021 -j ACCEPTsbiniptables -A INPUT -p tcp -m tcp --sport 102465535 --dport 102465535 -m state --state ESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 102465535 -m state --state NEWRELATEDESTABLISHED -j ACCEPT

Permitimos la consulta a un primer DNSsbiniptables -A INPUT -s 211956439 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 211956439 -p udp -m udp --dport 53 -j ACCEPT

Permitimos la consulta a un segundo DNSsbiniptables -A INPUT -s 2119579109 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 2119579109 -p udp -m udp --dport 53 -j ACCEPT

Permitimos consultar el reloj de horaredirises (un pentium166) para sincronizarsesbiniptables -A INPUT -s 1302063166 -p udp -m udp --dport 123 -j ACCEPTsbiniptables -A OUTPUT -d 1302063166 -p udp -m udp --sport 123 -j ACCEPT

Barrera de backup por si cambiamos a modo ACCEPT temporalmente Con esto protegemos los puertos reservados y otros well-knownsbiniptables -A INPUT -p tcp -m tcp --dport 11024 -j DROPsbiniptables -A INPUT -p udp -m udp --dport 11024 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 1723 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 3306 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 5432 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

32 Firewall de una LAN con salida a internetAhora vamos a ver una configuracioacuten de firewall iptables para el tiacutepico caso de red local que necesita salida ainternet

Figura 6 esquema de f irewall tiacutepico entre red local e internet

iquestQueacute es lo que hace falta Obviamente una regla que haga NAT hacia fuera (enmascaramiento en iptables) conlo que se hariacutea dos veces NAT en el firewall y en el router Entre el router y el firewall lo normal es que haya una redprivada (19216811 y 19216812 por ejemplo) aunque dependiendo de las necesidades puede que los dostengan IP puacuteblica El router se supone que hace un NAT completo hacia dentro (quizaacute salvo puerto 23) o sea quedesde el exterior no se llega al router si no que de forma transparente se choca contra el firewall Lo normal eneste tipo de firewalls es poner la poliacutetica por defecto de FORWARD en denegar (DROP) pero eso lo vemos maacutesadelanteVeamos como seriacutea este firewall-gateway

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Pero como somos muy malvados queremos que los empleados solamente puedan navegar por internetdenegando el acceso a Kazaa o edonkey Esta seriacutea una configuracioacuten simple pero efectiva

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con filtro para que solo se pueda navegar

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor decorreo Darle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esospuertos o si no estaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA lared local De todas formas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cadacosa bastante les cuesta a muchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos alpuacuteblico en el propio firewall nos la estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla enla DMZ Supongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil ycon una ip dinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa conuna conexioacuten ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

iexclMaacutes difiacutecil todaviacutea Ahora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IISde un servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para unaempresa externa En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacuteahacer faacutecilmente con un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y alconectarse a eacutel te lleva hasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacerredirecciones con una ventaja no perdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En finveamos la configuracioacuten con las nuevas reglas de DNAT

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables -t nat -A PREROUTING -s 22123124181 -i eth0 -p tcp --dport 3389 -j DNAT --to 19216810123389

Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones ylos servicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de lared local Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red locales evitar escaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buenaconfiguracioacuten con denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de redpor 6euro o dolares y crear una DMZ

33 Firewall de una LAN con salida a internet con DMZ

Bueno esto se va complicando Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos lascosas bien y colocamos ese servidor IIS en una DMZ

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 7 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En este tipo de firewall hay que permitir- Acceso de la red local a internet- Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZ- Acceso del servidor de la DMZ a una BBDD de la LAN- Obviamente bloquear el resto de acceso de la DMZ hacia la LANiquestQueacute tipo de reglas son las que hay que usar para filtrar el traacutefico entre la DMZ y la LAN Solo pueden ser lasFORWARD ya que estamos filtrando entre distintas redes no son paquetes destinados al propio firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 19216832443

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 19216832 -d 192168105 -p tcp --dport 5432 -j ACCEPT

iptables -A FORWARD -s 192168105 -d 19216832 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 19216832 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 19216832 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 3: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

periacutemetros de seguridad en torno a un sistema Es frecuente tambieacuten que se necesite exponer alguacuten servidor ainternet (como es el caso de un servidor web un servidor de correo etc) y en esos casos obviamente en principiose debe aceptar cualquier conexioacuten a ellos Lo que se recomienda en esa situacioacuten es situar ese servidor en lugaraparte de la red el que denominamos DMZ o zona desmilitarizada El firewall tiene entonces tres entradas

Figura 2 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En la zona desmilitarizada se pueden poner tantos servidores como se necesiten Con esta arquitecturapermitimos que el servidor sea accesible desde internet de tal forma que si es atacado y se gana acceso a eacutel lared local sigue protegida por el firewall Esta estructura de DMZ puede hacerse tambieacuten con un doble firewall(aunque como se ve se puede usar un uacutenico dispositivo con al menos tres interfaces de red) Seriacutea un esquemacomo este

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 3 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos creado con doble f irewall(periacutemetro)

Los firewalls se pueden usar en cualquier red Es habitual tenerlos como proteccioacuten de internet en las empresasaunque ahiacute tambieacuten suelen tener una doble funcioacuten controlar los accesos externos hacia dentro y tambieacuten losinternos hacia el exterior esto uacuteltimo se hace con el firewall o frecuentemente con un proxy (que tambieacuten utilizanreglas aunque de maacutes alto nivel)Tambieacuten en empresas de hosting con muchos servidores alojados lo normal es encontrarnos uno o maacutes firewallsya sea filtrando toda la instalacioacuten o parte de ella

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 4 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

Sea el tipo de firewall que sea generalmente no tendraacute mas que un conjunto de reglas en las que se examina el

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

origen y destino de los paquetes del protocolo tcpip En cuanto a protocolos es probable que sean capaces defiltrar muchos tipos de ellos no solo los tcp tambieacuten los udp los icmp los gre y otros protocolos vinculados a vpnsEste podriacutea ser (en pseudo-lenguaje) un el conjunto de reglas de un firewall del primer graacutefico

Politica por defecto ACEPTARTodo lo que venga de la red local al firewall ACEPTARTodo lo que venga de la ip de mi casa al puerto tcp 22 ACEPTARTodo lo que venga de la ip de casa del jefe al puerto tcp 1723 ACEPTARTodo lo que venga de horaredirises al puerto udo 123 ACEPTARTodo lo que venga de la red local y vaya al exterior ENMASCARARTodo lo que venga del exterior al puerto tcp 1 al 1024 DENEGARTodo lo que venga del exterior al puerto tcp 3389 DENEGARTodo lo que venga del exterior al puerto udp 1 al 1024 DENEGAR

En definitiva lo que se hace es - Habilita el acceso a puertos de administracioacuten a determinadas IPs privilegiadas- Enmascara el trafico de la red local hacia el exterior (NAT una peticioacuten de un pc de la LAN sale al exterior con laip puacuteblica) para poder salir a internet- Deniega el acceso desde el exterior a puertos de administracioacuten y a todo lo que este entre 1 y 1024

Hay dos maneras de implementar un firewall1) Poliacutetica por defecto ACEPTAR en principio todo lo que entra y sale por el firewall se acepta y solo se denegaraacutelo que se diga expliacutecitamente2) Poliacutetica por defecto DENEGAR todo esta denegado y solo se permitiraacute pasar por el firewall aquellos que sepermita expliacutecitamente

Como es obvio imaginar la primera poliacutetica facilita mucho la gestioacuten del firewall ya que simplemente nos tenemosque preocupar de proteger aquellos puertos o direcciones que sabemos que nos interesa el resto no importa tantoy se deja pasar Por ejemplo si queremos proteger una maacutequina linux podemos hacer un netstat -ln (o netstat -ano netstat -puta | grep LISTEN) saber que puertos estaacuten abiertos poner reglas para proteger esos puertos y ya estaacuteiquestPara queacute vamos a proteger un puerto que realmente nunca se va a abrirEl uacutenico problema que podemos tener es que no controlemos que es lo que esta abierto o que en un momentodado se instale un software nuevo que abra un puerto determinado o que no sepamos que determinados paquetes

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

ICMP son peligrosos Si la poliacutetica por defecto es ACEPTAR y no se protege expliacutecitamente nos la estamosjugando un poco

En cambio si la poliacutetica por defecto es DENEGAR a no ser que lo permitamos expliacutecitamente el firewall seconvierte en un auteacutentico MURO infranqueable El problema es que es mucho maacutes difiacutecil preparar un firewall asiacute yhay que tener muy claro como funciona el sistema (sea iptables o el que sea) y que es lo que se tiene que abrir sincaer en la tentacioacuten de empezar a meter reglas super-permisivas Esta configuracioacuten de firewall es la recomendada aunque no es aconsejable usarla si no se domina miacutenimamenteel sistema Uno de los objetos principales de este documento es mostrar la forma de crear este tipo de firewalls

IMPORTANTEEl orden en el que se ponen las reglas de firewall es determinante Normalmente cuando hay que decidir que sehace con un paquete se va comparando con cada regla del firewall hasta que se encuentra una que le afecta(match) y se hace lo que dicte esta regla (aceptar o denegar) despueacutes de eso NO SE MIRARAacuteN MAacuteS REGLASpara ese paquete iquestCuaacutel es el peligro Si ponemos reglas muy permisivas entre las primeras del firewall puedeque las siguientes no se apliquen y no sirvan de nada

2 Queacute es iptables

IPtables es un sistema de firewall vinculado al kernel de linux que se ha extendido enormemente a partir del kernel24 de este sistema operativo Al igual que el anterior sistema ipchains un firewall de iptables no es como unservidor que lo iniciamos o detenemos o que se pueda caer por un error de programacioacuten(esto es una pequentildeamentira ha tenido alguna vulnerabilidad que permite DoS pero nunca tendraacute tanto peligro como las aplicacionesque escuchan en determinado puerto TCP) iptables esta integrado con el kernel es parte del sistema operativoiquestCoacutemo se pone en marcha Realmente lo que se hace es aplicar reglas Para ellos se ejecuta el comandoiptables con el que antildeadimos borramos o creamos reglas Por ello un firewall de iptables no es sino un simplescript de shell en el que se van ejecutando las reglas de firewall

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Notas bueno para los maacutes geeks y tocapelotas Vale se puede implementar un script de inicio en etcrcdINITd(o etcINITd ) con el que hagamos que iptables se inicie o pare como un servidor maacutes Lo podemos hacernosotros o es probable que venga en la distribucioacuten (como en redhat por ejemplo) Tambieacuten se pueden salvar lasreglas aplicadas con el comando iptables-save en un fichero y gestionar ese fichero con una aplicacioacuten o front-enddesde la X o desde webmin

Vale tenemos una maacutequina linux con soporte para iptables tiene reglas aplicadas y empiezan a llegarsalirpasarpaquetes No nos liemos olvidemos cuantas tarjetas de red hay que direcciones ip tiene la maacutequina y olvidemos siel paquete entra o sale Las reglas de firewall estaacuten a nivel de kernel y al kernel lo que le llega es un paquete(digamos un marroacuten ) ) y tiene que decidir que hacer con eacutel El kernel lo que hace es dependiendo si el paquetees para la propia maquina o para otra maquina consultar las reglas de firewall y decidir que hacer con el paqueteseguacuten mande el firewall Este es el camino que seguiriacutea un paquete en el kernel

Figura 5 cuando un paquete u otra comunicacioacuten llega al kernel con iptables se sigue este camino

Como se ve en el graacutefico baacutesicamente se mira si el paquete esta destinado a la propia maquina o si va a otraPara los paquetes (o datagramas seguacuten el protocolo) que van a la propia maquina se aplican las reglas INPUT yOUTPUT y para filtrar paquetes que van a otras redes o maquinas se aplican simplemente reglas FORWARDINPUTOUTPUT y FORWARD son los tres tipos de reglas de filtrado Pero antes de aplicar esas reglas es posible

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

INPUTOUTPUT y FORWARD son los tres tipos de reglas de filtrado Pero antes de aplicar esas reglas es posibleaplicar reglas de NAT estas se usan para hacer redirecciones de puertos o cambios en las IPs de origen ydestino Veremos ejemplos E incluso antes de las reglas de NAT se pueden meter reglas de tipo MANGLE destinadas a modificar lospaquetes son reglas poco conocidas y es probable que no las usenPor tanto tenemos tres tipos de reglas en iptables- MANGLE- NAT reglas PREROUTING POSTROUTING - FILTER reglas INPUT OUTPUT FORWARD

3 Al grano creando un firewall con iptables

En este tutorial se ha intentado dar una breve introduccioacuten sobre lo que es un firewall sus tipologiacuteas baacutesicas y enconcreto se presenta el sistema iptables Pero vamos al grano y empezamos a ver configuraciones de firewall coniptables empezando desde la maacutes baacutesica a las maacutes complejas en las que se establece la denegacioacuten comopoliacutetica por defecto

Nota se recomienda encarecidamente ir practicando estas reglas en alguna maquina linux disponible yespecialmente hacer uso de la herramienta iptraf para depurar y comprobar el funcionamiento de iptables Coniptraf podemos comprobar si las conexiones TCPIP se llegan a establecer o no Una conexioacuten tcpip empieza conel three-way-handshake- La maquina que desea conectarse a otra envia un paquete con flan SYN- Si la otra maquina acepta envia un SYNACK- Entonces la maacutequina establece la conexioacuten

Si el firewall esta denegando la conexioacuten con iptraf veremos que la maquina origen solo manda paquetes con elflan S (de SYN) y que del otro lado no sale nada Saber usar iptraf nos ayudaraacute mucho

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

31 Proteger la propia maacutequinaMuy bien tenemos una maacutequina linux pinchada en internet y queremos protegerla con su propio firewall Lo uacutenicoque tenemos que hacer es crear un script de shell en el que se van aplicando las reglasLos scripts de iptables pueden tener este aspecto

Saludo a la aficioacuten (echo)Borrado de las reglas aplicadas actualmente (flush)Aplicacioacuten de poliacuteticas por defecto para INPUT OUPUT FORWARD Listado de reglas iptables

Ojo con el orden de las reglas

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp -dport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPT

Y el resto lo cerramosiptables -A INPUT -p tcp --dport 2021 -j DROPiptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 22 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Nota para freaks y geeks siiii que ya lo se se puede mejorar este script usando variables se puede poner elcomando con el path completo pero limiacutetense a hacer copy-paste Para el resto de mortales no olvidarse deponerle flags de ejecucioacuten chmod +x firewall1sh o chmod 750 firewall1sh

En fin ya se ve un script de los maacutes simple con unas pocas reglas con las que cerramos puertos al puacuteblico a losque no tienen porque tener acceso salvo el 80 Pero cualquiera con algo de ojo se habraacute dado cuenta de que ni sefiltra el UDP ni el ICMP Apostariacutea cualquier cosa a que el sistema tiene alguacuten puerto udp abierto y ademaacutespeligroso como el SNMP Como he dicho anteriormente en este tipo de firewall es recordable hacer un netstatpara ver que puertos estaacuten en estado de escucha (abiertos) y salve que un rootkit nos haya modificado losbinarios netstat nos daraacute la informacioacuten precisa que necesitamos Hay gente que se decanta por hacerse un nmapasiacute mismos Cuidado dependiendo de coacutemo lo ejecutemos quizaacute no nos muestre todos los puertos ya que suelemirar los bien conocidosImaginemos que hemos dado un repaso a nuestro sistema y ahora si que tenemos mejor identificados los puertostcp y udp abiertos Pero por si acaso nos curamos en salud y al final del script cerraremos el rango de puertos del 1al 1024 los reservados tanto para tcp como udp

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Ejemplo de script para proteger la propia maacutequina Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp -dport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPT

Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 -j DROPiptables -A INPUT -p udp --dport 11024 -j DROP

Cerramos otros puertos que estan abiertosiptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iquestSencillo no Ahora basta con hacer copy-paste de estas reglas y aplicarlas y ajustarlas en su sistema (quizaacutesuses PostgreSQL) Si tiene miedo de perder el control de una maacutequina remota pruebe el script en una maacutequinalocal y aseguacuterese de que aplica lo que usted quiere Funcionar va a funcionar seguro

- Versioacuten con DROP por defecto

Vale queremos que nuestra maquina sea inexcrutable y que solo tenga abierto un puerto imprescindible para dardeterminado servicio Con DROP por defecto se protege la maquina perfectamente aunque hay que antildeadiralgunas reglas para que la propia maacutequina sea capaz de salir a internetiquest Para queacute hombre porque la maquinanecesita actualizaciones consultar DNS por udp sacar correo etc

Veamos un posible script

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar no empezamos a abrir porque ahora esta TODO denegado Debemos decir de manera explicita queacute es lo que queremos abrir

Operar en localhost sin limitacionessbiniptables -A INPUT -i lo -j ACCEPTsbiniptables -A OUTPUT -o lo -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

Este es el servicio que DA la maquina a internet por tanto todo paquete entrante se acepta para ese puerto y los salientes vinculados se aceptansbiniptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPT

Permitimos que la maquina pueda salir a la websbiniptables -A INPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

Ya tambien a webs segurassbiniptables -A INPUT -p tcp -m tcp --sport 443 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

Reglas necesarias para FTP pasivo y activo Se permiten conexiones entrantes YA establecidassbiniptables -A INPUT -p tcp -m tcp --sport 2021 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 2021 -j ACCEPTsbiniptables -A INPUT -p tcp -m tcp --sport 102465535 --dport 102465535 -m state --state ESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 102465535 -m state --state NEWRELATEDESTABLISHED -j ACCEPT

Permitimos la consulta a un primer DNSsbiniptables -A INPUT -s 211956439 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 211956439 -p udp -m udp --dport 53 -j ACCEPT

Permitimos la consulta a un segundo DNSsbiniptables -A INPUT -s 2119579109 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 2119579109 -p udp -m udp --dport 53 -j ACCEPT

Permitimos consultar el reloj de horaredirises (un pentium166) para sincronizarsesbiniptables -A INPUT -s 1302063166 -p udp -m udp --dport 123 -j ACCEPTsbiniptables -A OUTPUT -d 1302063166 -p udp -m udp --sport 123 -j ACCEPT

Barrera de backup por si cambiamos a modo ACCEPT temporalmente Con esto protegemos los puertos reservados y otros well-knownsbiniptables -A INPUT -p tcp -m tcp --dport 11024 -j DROPsbiniptables -A INPUT -p udp -m udp --dport 11024 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 1723 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 3306 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 5432 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

32 Firewall de una LAN con salida a internetAhora vamos a ver una configuracioacuten de firewall iptables para el tiacutepico caso de red local que necesita salida ainternet

Figura 6 esquema de f irewall tiacutepico entre red local e internet

iquestQueacute es lo que hace falta Obviamente una regla que haga NAT hacia fuera (enmascaramiento en iptables) conlo que se hariacutea dos veces NAT en el firewall y en el router Entre el router y el firewall lo normal es que haya una redprivada (19216811 y 19216812 por ejemplo) aunque dependiendo de las necesidades puede que los dostengan IP puacuteblica El router se supone que hace un NAT completo hacia dentro (quizaacute salvo puerto 23) o sea quedesde el exterior no se llega al router si no que de forma transparente se choca contra el firewall Lo normal eneste tipo de firewalls es poner la poliacutetica por defecto de FORWARD en denegar (DROP) pero eso lo vemos maacutesadelanteVeamos como seriacutea este firewall-gateway

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Pero como somos muy malvados queremos que los empleados solamente puedan navegar por internetdenegando el acceso a Kazaa o edonkey Esta seriacutea una configuracioacuten simple pero efectiva

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con filtro para que solo se pueda navegar

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor decorreo Darle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esospuertos o si no estaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA lared local De todas formas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cadacosa bastante les cuesta a muchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos alpuacuteblico en el propio firewall nos la estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla enla DMZ Supongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil ycon una ip dinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa conuna conexioacuten ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

iexclMaacutes difiacutecil todaviacutea Ahora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IISde un servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para unaempresa externa En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacuteahacer faacutecilmente con un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y alconectarse a eacutel te lleva hasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacerredirecciones con una ventaja no perdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En finveamos la configuracioacuten con las nuevas reglas de DNAT

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables -t nat -A PREROUTING -s 22123124181 -i eth0 -p tcp --dport 3389 -j DNAT --to 19216810123389

Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones ylos servicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de lared local Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red locales evitar escaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buenaconfiguracioacuten con denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de redpor 6euro o dolares y crear una DMZ

33 Firewall de una LAN con salida a internet con DMZ

Bueno esto se va complicando Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos lascosas bien y colocamos ese servidor IIS en una DMZ

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 7 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En este tipo de firewall hay que permitir- Acceso de la red local a internet- Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZ- Acceso del servidor de la DMZ a una BBDD de la LAN- Obviamente bloquear el resto de acceso de la DMZ hacia la LANiquestQueacute tipo de reglas son las que hay que usar para filtrar el traacutefico entre la DMZ y la LAN Solo pueden ser lasFORWARD ya que estamos filtrando entre distintas redes no son paquetes destinados al propio firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 19216832443

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 19216832 -d 192168105 -p tcp --dport 5432 -j ACCEPT

iptables -A FORWARD -s 192168105 -d 19216832 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 19216832 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 19216832 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 4: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 3 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos creado con doble f irewall(periacutemetro)

Los firewalls se pueden usar en cualquier red Es habitual tenerlos como proteccioacuten de internet en las empresasaunque ahiacute tambieacuten suelen tener una doble funcioacuten controlar los accesos externos hacia dentro y tambieacuten losinternos hacia el exterior esto uacuteltimo se hace con el firewall o frecuentemente con un proxy (que tambieacuten utilizanreglas aunque de maacutes alto nivel)Tambieacuten en empresas de hosting con muchos servidores alojados lo normal es encontrarnos uno o maacutes firewallsya sea filtrando toda la instalacioacuten o parte de ella

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 4 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

Sea el tipo de firewall que sea generalmente no tendraacute mas que un conjunto de reglas en las que se examina el

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

origen y destino de los paquetes del protocolo tcpip En cuanto a protocolos es probable que sean capaces defiltrar muchos tipos de ellos no solo los tcp tambieacuten los udp los icmp los gre y otros protocolos vinculados a vpnsEste podriacutea ser (en pseudo-lenguaje) un el conjunto de reglas de un firewall del primer graacutefico

Politica por defecto ACEPTARTodo lo que venga de la red local al firewall ACEPTARTodo lo que venga de la ip de mi casa al puerto tcp 22 ACEPTARTodo lo que venga de la ip de casa del jefe al puerto tcp 1723 ACEPTARTodo lo que venga de horaredirises al puerto udo 123 ACEPTARTodo lo que venga de la red local y vaya al exterior ENMASCARARTodo lo que venga del exterior al puerto tcp 1 al 1024 DENEGARTodo lo que venga del exterior al puerto tcp 3389 DENEGARTodo lo que venga del exterior al puerto udp 1 al 1024 DENEGAR

En definitiva lo que se hace es - Habilita el acceso a puertos de administracioacuten a determinadas IPs privilegiadas- Enmascara el trafico de la red local hacia el exterior (NAT una peticioacuten de un pc de la LAN sale al exterior con laip puacuteblica) para poder salir a internet- Deniega el acceso desde el exterior a puertos de administracioacuten y a todo lo que este entre 1 y 1024

Hay dos maneras de implementar un firewall1) Poliacutetica por defecto ACEPTAR en principio todo lo que entra y sale por el firewall se acepta y solo se denegaraacutelo que se diga expliacutecitamente2) Poliacutetica por defecto DENEGAR todo esta denegado y solo se permitiraacute pasar por el firewall aquellos que sepermita expliacutecitamente

Como es obvio imaginar la primera poliacutetica facilita mucho la gestioacuten del firewall ya que simplemente nos tenemosque preocupar de proteger aquellos puertos o direcciones que sabemos que nos interesa el resto no importa tantoy se deja pasar Por ejemplo si queremos proteger una maacutequina linux podemos hacer un netstat -ln (o netstat -ano netstat -puta | grep LISTEN) saber que puertos estaacuten abiertos poner reglas para proteger esos puertos y ya estaacuteiquestPara queacute vamos a proteger un puerto que realmente nunca se va a abrirEl uacutenico problema que podemos tener es que no controlemos que es lo que esta abierto o que en un momentodado se instale un software nuevo que abra un puerto determinado o que no sepamos que determinados paquetes

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

ICMP son peligrosos Si la poliacutetica por defecto es ACEPTAR y no se protege expliacutecitamente nos la estamosjugando un poco

En cambio si la poliacutetica por defecto es DENEGAR a no ser que lo permitamos expliacutecitamente el firewall seconvierte en un auteacutentico MURO infranqueable El problema es que es mucho maacutes difiacutecil preparar un firewall asiacute yhay que tener muy claro como funciona el sistema (sea iptables o el que sea) y que es lo que se tiene que abrir sincaer en la tentacioacuten de empezar a meter reglas super-permisivas Esta configuracioacuten de firewall es la recomendada aunque no es aconsejable usarla si no se domina miacutenimamenteel sistema Uno de los objetos principales de este documento es mostrar la forma de crear este tipo de firewalls

IMPORTANTEEl orden en el que se ponen las reglas de firewall es determinante Normalmente cuando hay que decidir que sehace con un paquete se va comparando con cada regla del firewall hasta que se encuentra una que le afecta(match) y se hace lo que dicte esta regla (aceptar o denegar) despueacutes de eso NO SE MIRARAacuteN MAacuteS REGLASpara ese paquete iquestCuaacutel es el peligro Si ponemos reglas muy permisivas entre las primeras del firewall puedeque las siguientes no se apliquen y no sirvan de nada

2 Queacute es iptables

IPtables es un sistema de firewall vinculado al kernel de linux que se ha extendido enormemente a partir del kernel24 de este sistema operativo Al igual que el anterior sistema ipchains un firewall de iptables no es como unservidor que lo iniciamos o detenemos o que se pueda caer por un error de programacioacuten(esto es una pequentildeamentira ha tenido alguna vulnerabilidad que permite DoS pero nunca tendraacute tanto peligro como las aplicacionesque escuchan en determinado puerto TCP) iptables esta integrado con el kernel es parte del sistema operativoiquestCoacutemo se pone en marcha Realmente lo que se hace es aplicar reglas Para ellos se ejecuta el comandoiptables con el que antildeadimos borramos o creamos reglas Por ello un firewall de iptables no es sino un simplescript de shell en el que se van ejecutando las reglas de firewall

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Notas bueno para los maacutes geeks y tocapelotas Vale se puede implementar un script de inicio en etcrcdINITd(o etcINITd ) con el que hagamos que iptables se inicie o pare como un servidor maacutes Lo podemos hacernosotros o es probable que venga en la distribucioacuten (como en redhat por ejemplo) Tambieacuten se pueden salvar lasreglas aplicadas con el comando iptables-save en un fichero y gestionar ese fichero con una aplicacioacuten o front-enddesde la X o desde webmin

Vale tenemos una maacutequina linux con soporte para iptables tiene reglas aplicadas y empiezan a llegarsalirpasarpaquetes No nos liemos olvidemos cuantas tarjetas de red hay que direcciones ip tiene la maacutequina y olvidemos siel paquete entra o sale Las reglas de firewall estaacuten a nivel de kernel y al kernel lo que le llega es un paquete(digamos un marroacuten ) ) y tiene que decidir que hacer con eacutel El kernel lo que hace es dependiendo si el paquetees para la propia maquina o para otra maquina consultar las reglas de firewall y decidir que hacer con el paqueteseguacuten mande el firewall Este es el camino que seguiriacutea un paquete en el kernel

Figura 5 cuando un paquete u otra comunicacioacuten llega al kernel con iptables se sigue este camino

Como se ve en el graacutefico baacutesicamente se mira si el paquete esta destinado a la propia maquina o si va a otraPara los paquetes (o datagramas seguacuten el protocolo) que van a la propia maquina se aplican las reglas INPUT yOUTPUT y para filtrar paquetes que van a otras redes o maquinas se aplican simplemente reglas FORWARDINPUTOUTPUT y FORWARD son los tres tipos de reglas de filtrado Pero antes de aplicar esas reglas es posible

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

INPUTOUTPUT y FORWARD son los tres tipos de reglas de filtrado Pero antes de aplicar esas reglas es posibleaplicar reglas de NAT estas se usan para hacer redirecciones de puertos o cambios en las IPs de origen ydestino Veremos ejemplos E incluso antes de las reglas de NAT se pueden meter reglas de tipo MANGLE destinadas a modificar lospaquetes son reglas poco conocidas y es probable que no las usenPor tanto tenemos tres tipos de reglas en iptables- MANGLE- NAT reglas PREROUTING POSTROUTING - FILTER reglas INPUT OUTPUT FORWARD

3 Al grano creando un firewall con iptables

En este tutorial se ha intentado dar una breve introduccioacuten sobre lo que es un firewall sus tipologiacuteas baacutesicas y enconcreto se presenta el sistema iptables Pero vamos al grano y empezamos a ver configuraciones de firewall coniptables empezando desde la maacutes baacutesica a las maacutes complejas en las que se establece la denegacioacuten comopoliacutetica por defecto

Nota se recomienda encarecidamente ir practicando estas reglas en alguna maquina linux disponible yespecialmente hacer uso de la herramienta iptraf para depurar y comprobar el funcionamiento de iptables Coniptraf podemos comprobar si las conexiones TCPIP se llegan a establecer o no Una conexioacuten tcpip empieza conel three-way-handshake- La maquina que desea conectarse a otra envia un paquete con flan SYN- Si la otra maquina acepta envia un SYNACK- Entonces la maacutequina establece la conexioacuten

Si el firewall esta denegando la conexioacuten con iptraf veremos que la maquina origen solo manda paquetes con elflan S (de SYN) y que del otro lado no sale nada Saber usar iptraf nos ayudaraacute mucho

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

31 Proteger la propia maacutequinaMuy bien tenemos una maacutequina linux pinchada en internet y queremos protegerla con su propio firewall Lo uacutenicoque tenemos que hacer es crear un script de shell en el que se van aplicando las reglasLos scripts de iptables pueden tener este aspecto

Saludo a la aficioacuten (echo)Borrado de las reglas aplicadas actualmente (flush)Aplicacioacuten de poliacuteticas por defecto para INPUT OUPUT FORWARD Listado de reglas iptables

Ojo con el orden de las reglas

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp -dport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPT

Y el resto lo cerramosiptables -A INPUT -p tcp --dport 2021 -j DROPiptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 22 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Nota para freaks y geeks siiii que ya lo se se puede mejorar este script usando variables se puede poner elcomando con el path completo pero limiacutetense a hacer copy-paste Para el resto de mortales no olvidarse deponerle flags de ejecucioacuten chmod +x firewall1sh o chmod 750 firewall1sh

En fin ya se ve un script de los maacutes simple con unas pocas reglas con las que cerramos puertos al puacuteblico a losque no tienen porque tener acceso salvo el 80 Pero cualquiera con algo de ojo se habraacute dado cuenta de que ni sefiltra el UDP ni el ICMP Apostariacutea cualquier cosa a que el sistema tiene alguacuten puerto udp abierto y ademaacutespeligroso como el SNMP Como he dicho anteriormente en este tipo de firewall es recordable hacer un netstatpara ver que puertos estaacuten en estado de escucha (abiertos) y salve que un rootkit nos haya modificado losbinarios netstat nos daraacute la informacioacuten precisa que necesitamos Hay gente que se decanta por hacerse un nmapasiacute mismos Cuidado dependiendo de coacutemo lo ejecutemos quizaacute no nos muestre todos los puertos ya que suelemirar los bien conocidosImaginemos que hemos dado un repaso a nuestro sistema y ahora si que tenemos mejor identificados los puertostcp y udp abiertos Pero por si acaso nos curamos en salud y al final del script cerraremos el rango de puertos del 1al 1024 los reservados tanto para tcp como udp

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Ejemplo de script para proteger la propia maacutequina Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp -dport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPT

Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 -j DROPiptables -A INPUT -p udp --dport 11024 -j DROP

Cerramos otros puertos que estan abiertosiptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iquestSencillo no Ahora basta con hacer copy-paste de estas reglas y aplicarlas y ajustarlas en su sistema (quizaacutesuses PostgreSQL) Si tiene miedo de perder el control de una maacutequina remota pruebe el script en una maacutequinalocal y aseguacuterese de que aplica lo que usted quiere Funcionar va a funcionar seguro

- Versioacuten con DROP por defecto

Vale queremos que nuestra maquina sea inexcrutable y que solo tenga abierto un puerto imprescindible para dardeterminado servicio Con DROP por defecto se protege la maquina perfectamente aunque hay que antildeadiralgunas reglas para que la propia maacutequina sea capaz de salir a internetiquest Para queacute hombre porque la maquinanecesita actualizaciones consultar DNS por udp sacar correo etc

Veamos un posible script

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar no empezamos a abrir porque ahora esta TODO denegado Debemos decir de manera explicita queacute es lo que queremos abrir

Operar en localhost sin limitacionessbiniptables -A INPUT -i lo -j ACCEPTsbiniptables -A OUTPUT -o lo -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

Este es el servicio que DA la maquina a internet por tanto todo paquete entrante se acepta para ese puerto y los salientes vinculados se aceptansbiniptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPT

Permitimos que la maquina pueda salir a la websbiniptables -A INPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

Ya tambien a webs segurassbiniptables -A INPUT -p tcp -m tcp --sport 443 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

Reglas necesarias para FTP pasivo y activo Se permiten conexiones entrantes YA establecidassbiniptables -A INPUT -p tcp -m tcp --sport 2021 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 2021 -j ACCEPTsbiniptables -A INPUT -p tcp -m tcp --sport 102465535 --dport 102465535 -m state --state ESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 102465535 -m state --state NEWRELATEDESTABLISHED -j ACCEPT

Permitimos la consulta a un primer DNSsbiniptables -A INPUT -s 211956439 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 211956439 -p udp -m udp --dport 53 -j ACCEPT

Permitimos la consulta a un segundo DNSsbiniptables -A INPUT -s 2119579109 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 2119579109 -p udp -m udp --dport 53 -j ACCEPT

Permitimos consultar el reloj de horaredirises (un pentium166) para sincronizarsesbiniptables -A INPUT -s 1302063166 -p udp -m udp --dport 123 -j ACCEPTsbiniptables -A OUTPUT -d 1302063166 -p udp -m udp --sport 123 -j ACCEPT

Barrera de backup por si cambiamos a modo ACCEPT temporalmente Con esto protegemos los puertos reservados y otros well-knownsbiniptables -A INPUT -p tcp -m tcp --dport 11024 -j DROPsbiniptables -A INPUT -p udp -m udp --dport 11024 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 1723 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 3306 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 5432 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

32 Firewall de una LAN con salida a internetAhora vamos a ver una configuracioacuten de firewall iptables para el tiacutepico caso de red local que necesita salida ainternet

Figura 6 esquema de f irewall tiacutepico entre red local e internet

iquestQueacute es lo que hace falta Obviamente una regla que haga NAT hacia fuera (enmascaramiento en iptables) conlo que se hariacutea dos veces NAT en el firewall y en el router Entre el router y el firewall lo normal es que haya una redprivada (19216811 y 19216812 por ejemplo) aunque dependiendo de las necesidades puede que los dostengan IP puacuteblica El router se supone que hace un NAT completo hacia dentro (quizaacute salvo puerto 23) o sea quedesde el exterior no se llega al router si no que de forma transparente se choca contra el firewall Lo normal eneste tipo de firewalls es poner la poliacutetica por defecto de FORWARD en denegar (DROP) pero eso lo vemos maacutesadelanteVeamos como seriacutea este firewall-gateway

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Pero como somos muy malvados queremos que los empleados solamente puedan navegar por internetdenegando el acceso a Kazaa o edonkey Esta seriacutea una configuracioacuten simple pero efectiva

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con filtro para que solo se pueda navegar

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor decorreo Darle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esospuertos o si no estaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA lared local De todas formas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cadacosa bastante les cuesta a muchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos alpuacuteblico en el propio firewall nos la estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla enla DMZ Supongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil ycon una ip dinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa conuna conexioacuten ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

iexclMaacutes difiacutecil todaviacutea Ahora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IISde un servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para unaempresa externa En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacuteahacer faacutecilmente con un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y alconectarse a eacutel te lleva hasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacerredirecciones con una ventaja no perdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En finveamos la configuracioacuten con las nuevas reglas de DNAT

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables -t nat -A PREROUTING -s 22123124181 -i eth0 -p tcp --dport 3389 -j DNAT --to 19216810123389

Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones ylos servicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de lared local Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red locales evitar escaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buenaconfiguracioacuten con denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de redpor 6euro o dolares y crear una DMZ

33 Firewall de una LAN con salida a internet con DMZ

Bueno esto se va complicando Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos lascosas bien y colocamos ese servidor IIS en una DMZ

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 7 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En este tipo de firewall hay que permitir- Acceso de la red local a internet- Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZ- Acceso del servidor de la DMZ a una BBDD de la LAN- Obviamente bloquear el resto de acceso de la DMZ hacia la LANiquestQueacute tipo de reglas son las que hay que usar para filtrar el traacutefico entre la DMZ y la LAN Solo pueden ser lasFORWARD ya que estamos filtrando entre distintas redes no son paquetes destinados al propio firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 19216832443

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 19216832 -d 192168105 -p tcp --dport 5432 -j ACCEPT

iptables -A FORWARD -s 192168105 -d 19216832 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 19216832 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 19216832 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 5: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 4 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

Sea el tipo de firewall que sea generalmente no tendraacute mas que un conjunto de reglas en las que se examina el

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

origen y destino de los paquetes del protocolo tcpip En cuanto a protocolos es probable que sean capaces defiltrar muchos tipos de ellos no solo los tcp tambieacuten los udp los icmp los gre y otros protocolos vinculados a vpnsEste podriacutea ser (en pseudo-lenguaje) un el conjunto de reglas de un firewall del primer graacutefico

Politica por defecto ACEPTARTodo lo que venga de la red local al firewall ACEPTARTodo lo que venga de la ip de mi casa al puerto tcp 22 ACEPTARTodo lo que venga de la ip de casa del jefe al puerto tcp 1723 ACEPTARTodo lo que venga de horaredirises al puerto udo 123 ACEPTARTodo lo que venga de la red local y vaya al exterior ENMASCARARTodo lo que venga del exterior al puerto tcp 1 al 1024 DENEGARTodo lo que venga del exterior al puerto tcp 3389 DENEGARTodo lo que venga del exterior al puerto udp 1 al 1024 DENEGAR

En definitiva lo que se hace es - Habilita el acceso a puertos de administracioacuten a determinadas IPs privilegiadas- Enmascara el trafico de la red local hacia el exterior (NAT una peticioacuten de un pc de la LAN sale al exterior con laip puacuteblica) para poder salir a internet- Deniega el acceso desde el exterior a puertos de administracioacuten y a todo lo que este entre 1 y 1024

Hay dos maneras de implementar un firewall1) Poliacutetica por defecto ACEPTAR en principio todo lo que entra y sale por el firewall se acepta y solo se denegaraacutelo que se diga expliacutecitamente2) Poliacutetica por defecto DENEGAR todo esta denegado y solo se permitiraacute pasar por el firewall aquellos que sepermita expliacutecitamente

Como es obvio imaginar la primera poliacutetica facilita mucho la gestioacuten del firewall ya que simplemente nos tenemosque preocupar de proteger aquellos puertos o direcciones que sabemos que nos interesa el resto no importa tantoy se deja pasar Por ejemplo si queremos proteger una maacutequina linux podemos hacer un netstat -ln (o netstat -ano netstat -puta | grep LISTEN) saber que puertos estaacuten abiertos poner reglas para proteger esos puertos y ya estaacuteiquestPara queacute vamos a proteger un puerto que realmente nunca se va a abrirEl uacutenico problema que podemos tener es que no controlemos que es lo que esta abierto o que en un momentodado se instale un software nuevo que abra un puerto determinado o que no sepamos que determinados paquetes

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

ICMP son peligrosos Si la poliacutetica por defecto es ACEPTAR y no se protege expliacutecitamente nos la estamosjugando un poco

En cambio si la poliacutetica por defecto es DENEGAR a no ser que lo permitamos expliacutecitamente el firewall seconvierte en un auteacutentico MURO infranqueable El problema es que es mucho maacutes difiacutecil preparar un firewall asiacute yhay que tener muy claro como funciona el sistema (sea iptables o el que sea) y que es lo que se tiene que abrir sincaer en la tentacioacuten de empezar a meter reglas super-permisivas Esta configuracioacuten de firewall es la recomendada aunque no es aconsejable usarla si no se domina miacutenimamenteel sistema Uno de los objetos principales de este documento es mostrar la forma de crear este tipo de firewalls

IMPORTANTEEl orden en el que se ponen las reglas de firewall es determinante Normalmente cuando hay que decidir que sehace con un paquete se va comparando con cada regla del firewall hasta que se encuentra una que le afecta(match) y se hace lo que dicte esta regla (aceptar o denegar) despueacutes de eso NO SE MIRARAacuteN MAacuteS REGLASpara ese paquete iquestCuaacutel es el peligro Si ponemos reglas muy permisivas entre las primeras del firewall puedeque las siguientes no se apliquen y no sirvan de nada

2 Queacute es iptables

IPtables es un sistema de firewall vinculado al kernel de linux que se ha extendido enormemente a partir del kernel24 de este sistema operativo Al igual que el anterior sistema ipchains un firewall de iptables no es como unservidor que lo iniciamos o detenemos o que se pueda caer por un error de programacioacuten(esto es una pequentildeamentira ha tenido alguna vulnerabilidad que permite DoS pero nunca tendraacute tanto peligro como las aplicacionesque escuchan en determinado puerto TCP) iptables esta integrado con el kernel es parte del sistema operativoiquestCoacutemo se pone en marcha Realmente lo que se hace es aplicar reglas Para ellos se ejecuta el comandoiptables con el que antildeadimos borramos o creamos reglas Por ello un firewall de iptables no es sino un simplescript de shell en el que se van ejecutando las reglas de firewall

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Notas bueno para los maacutes geeks y tocapelotas Vale se puede implementar un script de inicio en etcrcdINITd(o etcINITd ) con el que hagamos que iptables se inicie o pare como un servidor maacutes Lo podemos hacernosotros o es probable que venga en la distribucioacuten (como en redhat por ejemplo) Tambieacuten se pueden salvar lasreglas aplicadas con el comando iptables-save en un fichero y gestionar ese fichero con una aplicacioacuten o front-enddesde la X o desde webmin

Vale tenemos una maacutequina linux con soporte para iptables tiene reglas aplicadas y empiezan a llegarsalirpasarpaquetes No nos liemos olvidemos cuantas tarjetas de red hay que direcciones ip tiene la maacutequina y olvidemos siel paquete entra o sale Las reglas de firewall estaacuten a nivel de kernel y al kernel lo que le llega es un paquete(digamos un marroacuten ) ) y tiene que decidir que hacer con eacutel El kernel lo que hace es dependiendo si el paquetees para la propia maquina o para otra maquina consultar las reglas de firewall y decidir que hacer con el paqueteseguacuten mande el firewall Este es el camino que seguiriacutea un paquete en el kernel

Figura 5 cuando un paquete u otra comunicacioacuten llega al kernel con iptables se sigue este camino

Como se ve en el graacutefico baacutesicamente se mira si el paquete esta destinado a la propia maquina o si va a otraPara los paquetes (o datagramas seguacuten el protocolo) que van a la propia maquina se aplican las reglas INPUT yOUTPUT y para filtrar paquetes que van a otras redes o maquinas se aplican simplemente reglas FORWARDINPUTOUTPUT y FORWARD son los tres tipos de reglas de filtrado Pero antes de aplicar esas reglas es posible

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

INPUTOUTPUT y FORWARD son los tres tipos de reglas de filtrado Pero antes de aplicar esas reglas es posibleaplicar reglas de NAT estas se usan para hacer redirecciones de puertos o cambios en las IPs de origen ydestino Veremos ejemplos E incluso antes de las reglas de NAT se pueden meter reglas de tipo MANGLE destinadas a modificar lospaquetes son reglas poco conocidas y es probable que no las usenPor tanto tenemos tres tipos de reglas en iptables- MANGLE- NAT reglas PREROUTING POSTROUTING - FILTER reglas INPUT OUTPUT FORWARD

3 Al grano creando un firewall con iptables

En este tutorial se ha intentado dar una breve introduccioacuten sobre lo que es un firewall sus tipologiacuteas baacutesicas y enconcreto se presenta el sistema iptables Pero vamos al grano y empezamos a ver configuraciones de firewall coniptables empezando desde la maacutes baacutesica a las maacutes complejas en las que se establece la denegacioacuten comopoliacutetica por defecto

Nota se recomienda encarecidamente ir practicando estas reglas en alguna maquina linux disponible yespecialmente hacer uso de la herramienta iptraf para depurar y comprobar el funcionamiento de iptables Coniptraf podemos comprobar si las conexiones TCPIP se llegan a establecer o no Una conexioacuten tcpip empieza conel three-way-handshake- La maquina que desea conectarse a otra envia un paquete con flan SYN- Si la otra maquina acepta envia un SYNACK- Entonces la maacutequina establece la conexioacuten

Si el firewall esta denegando la conexioacuten con iptraf veremos que la maquina origen solo manda paquetes con elflan S (de SYN) y que del otro lado no sale nada Saber usar iptraf nos ayudaraacute mucho

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

31 Proteger la propia maacutequinaMuy bien tenemos una maacutequina linux pinchada en internet y queremos protegerla con su propio firewall Lo uacutenicoque tenemos que hacer es crear un script de shell en el que se van aplicando las reglasLos scripts de iptables pueden tener este aspecto

Saludo a la aficioacuten (echo)Borrado de las reglas aplicadas actualmente (flush)Aplicacioacuten de poliacuteticas por defecto para INPUT OUPUT FORWARD Listado de reglas iptables

Ojo con el orden de las reglas

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp -dport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPT

Y el resto lo cerramosiptables -A INPUT -p tcp --dport 2021 -j DROPiptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 22 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Nota para freaks y geeks siiii que ya lo se se puede mejorar este script usando variables se puede poner elcomando con el path completo pero limiacutetense a hacer copy-paste Para el resto de mortales no olvidarse deponerle flags de ejecucioacuten chmod +x firewall1sh o chmod 750 firewall1sh

En fin ya se ve un script de los maacutes simple con unas pocas reglas con las que cerramos puertos al puacuteblico a losque no tienen porque tener acceso salvo el 80 Pero cualquiera con algo de ojo se habraacute dado cuenta de que ni sefiltra el UDP ni el ICMP Apostariacutea cualquier cosa a que el sistema tiene alguacuten puerto udp abierto y ademaacutespeligroso como el SNMP Como he dicho anteriormente en este tipo de firewall es recordable hacer un netstatpara ver que puertos estaacuten en estado de escucha (abiertos) y salve que un rootkit nos haya modificado losbinarios netstat nos daraacute la informacioacuten precisa que necesitamos Hay gente que se decanta por hacerse un nmapasiacute mismos Cuidado dependiendo de coacutemo lo ejecutemos quizaacute no nos muestre todos los puertos ya que suelemirar los bien conocidosImaginemos que hemos dado un repaso a nuestro sistema y ahora si que tenemos mejor identificados los puertostcp y udp abiertos Pero por si acaso nos curamos en salud y al final del script cerraremos el rango de puertos del 1al 1024 los reservados tanto para tcp como udp

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Ejemplo de script para proteger la propia maacutequina Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp -dport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPT

Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 -j DROPiptables -A INPUT -p udp --dport 11024 -j DROP

Cerramos otros puertos que estan abiertosiptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iquestSencillo no Ahora basta con hacer copy-paste de estas reglas y aplicarlas y ajustarlas en su sistema (quizaacutesuses PostgreSQL) Si tiene miedo de perder el control de una maacutequina remota pruebe el script en una maacutequinalocal y aseguacuterese de que aplica lo que usted quiere Funcionar va a funcionar seguro

- Versioacuten con DROP por defecto

Vale queremos que nuestra maquina sea inexcrutable y que solo tenga abierto un puerto imprescindible para dardeterminado servicio Con DROP por defecto se protege la maquina perfectamente aunque hay que antildeadiralgunas reglas para que la propia maacutequina sea capaz de salir a internetiquest Para queacute hombre porque la maquinanecesita actualizaciones consultar DNS por udp sacar correo etc

Veamos un posible script

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar no empezamos a abrir porque ahora esta TODO denegado Debemos decir de manera explicita queacute es lo que queremos abrir

Operar en localhost sin limitacionessbiniptables -A INPUT -i lo -j ACCEPTsbiniptables -A OUTPUT -o lo -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

Este es el servicio que DA la maquina a internet por tanto todo paquete entrante se acepta para ese puerto y los salientes vinculados se aceptansbiniptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPT

Permitimos que la maquina pueda salir a la websbiniptables -A INPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

Ya tambien a webs segurassbiniptables -A INPUT -p tcp -m tcp --sport 443 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

Reglas necesarias para FTP pasivo y activo Se permiten conexiones entrantes YA establecidassbiniptables -A INPUT -p tcp -m tcp --sport 2021 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 2021 -j ACCEPTsbiniptables -A INPUT -p tcp -m tcp --sport 102465535 --dport 102465535 -m state --state ESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 102465535 -m state --state NEWRELATEDESTABLISHED -j ACCEPT

Permitimos la consulta a un primer DNSsbiniptables -A INPUT -s 211956439 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 211956439 -p udp -m udp --dport 53 -j ACCEPT

Permitimos la consulta a un segundo DNSsbiniptables -A INPUT -s 2119579109 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 2119579109 -p udp -m udp --dport 53 -j ACCEPT

Permitimos consultar el reloj de horaredirises (un pentium166) para sincronizarsesbiniptables -A INPUT -s 1302063166 -p udp -m udp --dport 123 -j ACCEPTsbiniptables -A OUTPUT -d 1302063166 -p udp -m udp --sport 123 -j ACCEPT

Barrera de backup por si cambiamos a modo ACCEPT temporalmente Con esto protegemos los puertos reservados y otros well-knownsbiniptables -A INPUT -p tcp -m tcp --dport 11024 -j DROPsbiniptables -A INPUT -p udp -m udp --dport 11024 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 1723 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 3306 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 5432 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

32 Firewall de una LAN con salida a internetAhora vamos a ver una configuracioacuten de firewall iptables para el tiacutepico caso de red local que necesita salida ainternet

Figura 6 esquema de f irewall tiacutepico entre red local e internet

iquestQueacute es lo que hace falta Obviamente una regla que haga NAT hacia fuera (enmascaramiento en iptables) conlo que se hariacutea dos veces NAT en el firewall y en el router Entre el router y el firewall lo normal es que haya una redprivada (19216811 y 19216812 por ejemplo) aunque dependiendo de las necesidades puede que los dostengan IP puacuteblica El router se supone que hace un NAT completo hacia dentro (quizaacute salvo puerto 23) o sea quedesde el exterior no se llega al router si no que de forma transparente se choca contra el firewall Lo normal eneste tipo de firewalls es poner la poliacutetica por defecto de FORWARD en denegar (DROP) pero eso lo vemos maacutesadelanteVeamos como seriacutea este firewall-gateway

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Pero como somos muy malvados queremos que los empleados solamente puedan navegar por internetdenegando el acceso a Kazaa o edonkey Esta seriacutea una configuracioacuten simple pero efectiva

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con filtro para que solo se pueda navegar

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor decorreo Darle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esospuertos o si no estaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA lared local De todas formas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cadacosa bastante les cuesta a muchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos alpuacuteblico en el propio firewall nos la estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla enla DMZ Supongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil ycon una ip dinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa conuna conexioacuten ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

iexclMaacutes difiacutecil todaviacutea Ahora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IISde un servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para unaempresa externa En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacuteahacer faacutecilmente con un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y alconectarse a eacutel te lleva hasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacerredirecciones con una ventaja no perdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En finveamos la configuracioacuten con las nuevas reglas de DNAT

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables -t nat -A PREROUTING -s 22123124181 -i eth0 -p tcp --dport 3389 -j DNAT --to 19216810123389

Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones ylos servicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de lared local Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red locales evitar escaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buenaconfiguracioacuten con denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de redpor 6euro o dolares y crear una DMZ

33 Firewall de una LAN con salida a internet con DMZ

Bueno esto se va complicando Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos lascosas bien y colocamos ese servidor IIS en una DMZ

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 7 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En este tipo de firewall hay que permitir- Acceso de la red local a internet- Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZ- Acceso del servidor de la DMZ a una BBDD de la LAN- Obviamente bloquear el resto de acceso de la DMZ hacia la LANiquestQueacute tipo de reglas son las que hay que usar para filtrar el traacutefico entre la DMZ y la LAN Solo pueden ser lasFORWARD ya que estamos filtrando entre distintas redes no son paquetes destinados al propio firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 19216832443

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 19216832 -d 192168105 -p tcp --dport 5432 -j ACCEPT

iptables -A FORWARD -s 192168105 -d 19216832 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 19216832 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 19216832 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 6: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

origen y destino de los paquetes del protocolo tcpip En cuanto a protocolos es probable que sean capaces defiltrar muchos tipos de ellos no solo los tcp tambieacuten los udp los icmp los gre y otros protocolos vinculados a vpnsEste podriacutea ser (en pseudo-lenguaje) un el conjunto de reglas de un firewall del primer graacutefico

Politica por defecto ACEPTARTodo lo que venga de la red local al firewall ACEPTARTodo lo que venga de la ip de mi casa al puerto tcp 22 ACEPTARTodo lo que venga de la ip de casa del jefe al puerto tcp 1723 ACEPTARTodo lo que venga de horaredirises al puerto udo 123 ACEPTARTodo lo que venga de la red local y vaya al exterior ENMASCARARTodo lo que venga del exterior al puerto tcp 1 al 1024 DENEGARTodo lo que venga del exterior al puerto tcp 3389 DENEGARTodo lo que venga del exterior al puerto udp 1 al 1024 DENEGAR

En definitiva lo que se hace es - Habilita el acceso a puertos de administracioacuten a determinadas IPs privilegiadas- Enmascara el trafico de la red local hacia el exterior (NAT una peticioacuten de un pc de la LAN sale al exterior con laip puacuteblica) para poder salir a internet- Deniega el acceso desde el exterior a puertos de administracioacuten y a todo lo que este entre 1 y 1024

Hay dos maneras de implementar un firewall1) Poliacutetica por defecto ACEPTAR en principio todo lo que entra y sale por el firewall se acepta y solo se denegaraacutelo que se diga expliacutecitamente2) Poliacutetica por defecto DENEGAR todo esta denegado y solo se permitiraacute pasar por el firewall aquellos que sepermita expliacutecitamente

Como es obvio imaginar la primera poliacutetica facilita mucho la gestioacuten del firewall ya que simplemente nos tenemosque preocupar de proteger aquellos puertos o direcciones que sabemos que nos interesa el resto no importa tantoy se deja pasar Por ejemplo si queremos proteger una maacutequina linux podemos hacer un netstat -ln (o netstat -ano netstat -puta | grep LISTEN) saber que puertos estaacuten abiertos poner reglas para proteger esos puertos y ya estaacuteiquestPara queacute vamos a proteger un puerto que realmente nunca se va a abrirEl uacutenico problema que podemos tener es que no controlemos que es lo que esta abierto o que en un momentodado se instale un software nuevo que abra un puerto determinado o que no sepamos que determinados paquetes

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

ICMP son peligrosos Si la poliacutetica por defecto es ACEPTAR y no se protege expliacutecitamente nos la estamosjugando un poco

En cambio si la poliacutetica por defecto es DENEGAR a no ser que lo permitamos expliacutecitamente el firewall seconvierte en un auteacutentico MURO infranqueable El problema es que es mucho maacutes difiacutecil preparar un firewall asiacute yhay que tener muy claro como funciona el sistema (sea iptables o el que sea) y que es lo que se tiene que abrir sincaer en la tentacioacuten de empezar a meter reglas super-permisivas Esta configuracioacuten de firewall es la recomendada aunque no es aconsejable usarla si no se domina miacutenimamenteel sistema Uno de los objetos principales de este documento es mostrar la forma de crear este tipo de firewalls

IMPORTANTEEl orden en el que se ponen las reglas de firewall es determinante Normalmente cuando hay que decidir que sehace con un paquete se va comparando con cada regla del firewall hasta que se encuentra una que le afecta(match) y se hace lo que dicte esta regla (aceptar o denegar) despueacutes de eso NO SE MIRARAacuteN MAacuteS REGLASpara ese paquete iquestCuaacutel es el peligro Si ponemos reglas muy permisivas entre las primeras del firewall puedeque las siguientes no se apliquen y no sirvan de nada

2 Queacute es iptables

IPtables es un sistema de firewall vinculado al kernel de linux que se ha extendido enormemente a partir del kernel24 de este sistema operativo Al igual que el anterior sistema ipchains un firewall de iptables no es como unservidor que lo iniciamos o detenemos o que se pueda caer por un error de programacioacuten(esto es una pequentildeamentira ha tenido alguna vulnerabilidad que permite DoS pero nunca tendraacute tanto peligro como las aplicacionesque escuchan en determinado puerto TCP) iptables esta integrado con el kernel es parte del sistema operativoiquestCoacutemo se pone en marcha Realmente lo que se hace es aplicar reglas Para ellos se ejecuta el comandoiptables con el que antildeadimos borramos o creamos reglas Por ello un firewall de iptables no es sino un simplescript de shell en el que se van ejecutando las reglas de firewall

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Notas bueno para los maacutes geeks y tocapelotas Vale se puede implementar un script de inicio en etcrcdINITd(o etcINITd ) con el que hagamos que iptables se inicie o pare como un servidor maacutes Lo podemos hacernosotros o es probable que venga en la distribucioacuten (como en redhat por ejemplo) Tambieacuten se pueden salvar lasreglas aplicadas con el comando iptables-save en un fichero y gestionar ese fichero con una aplicacioacuten o front-enddesde la X o desde webmin

Vale tenemos una maacutequina linux con soporte para iptables tiene reglas aplicadas y empiezan a llegarsalirpasarpaquetes No nos liemos olvidemos cuantas tarjetas de red hay que direcciones ip tiene la maacutequina y olvidemos siel paquete entra o sale Las reglas de firewall estaacuten a nivel de kernel y al kernel lo que le llega es un paquete(digamos un marroacuten ) ) y tiene que decidir que hacer con eacutel El kernel lo que hace es dependiendo si el paquetees para la propia maquina o para otra maquina consultar las reglas de firewall y decidir que hacer con el paqueteseguacuten mande el firewall Este es el camino que seguiriacutea un paquete en el kernel

Figura 5 cuando un paquete u otra comunicacioacuten llega al kernel con iptables se sigue este camino

Como se ve en el graacutefico baacutesicamente se mira si el paquete esta destinado a la propia maquina o si va a otraPara los paquetes (o datagramas seguacuten el protocolo) que van a la propia maquina se aplican las reglas INPUT yOUTPUT y para filtrar paquetes que van a otras redes o maquinas se aplican simplemente reglas FORWARDINPUTOUTPUT y FORWARD son los tres tipos de reglas de filtrado Pero antes de aplicar esas reglas es posible

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

INPUTOUTPUT y FORWARD son los tres tipos de reglas de filtrado Pero antes de aplicar esas reglas es posibleaplicar reglas de NAT estas se usan para hacer redirecciones de puertos o cambios en las IPs de origen ydestino Veremos ejemplos E incluso antes de las reglas de NAT se pueden meter reglas de tipo MANGLE destinadas a modificar lospaquetes son reglas poco conocidas y es probable que no las usenPor tanto tenemos tres tipos de reglas en iptables- MANGLE- NAT reglas PREROUTING POSTROUTING - FILTER reglas INPUT OUTPUT FORWARD

3 Al grano creando un firewall con iptables

En este tutorial se ha intentado dar una breve introduccioacuten sobre lo que es un firewall sus tipologiacuteas baacutesicas y enconcreto se presenta el sistema iptables Pero vamos al grano y empezamos a ver configuraciones de firewall coniptables empezando desde la maacutes baacutesica a las maacutes complejas en las que se establece la denegacioacuten comopoliacutetica por defecto

Nota se recomienda encarecidamente ir practicando estas reglas en alguna maquina linux disponible yespecialmente hacer uso de la herramienta iptraf para depurar y comprobar el funcionamiento de iptables Coniptraf podemos comprobar si las conexiones TCPIP se llegan a establecer o no Una conexioacuten tcpip empieza conel three-way-handshake- La maquina que desea conectarse a otra envia un paquete con flan SYN- Si la otra maquina acepta envia un SYNACK- Entonces la maacutequina establece la conexioacuten

Si el firewall esta denegando la conexioacuten con iptraf veremos que la maquina origen solo manda paquetes con elflan S (de SYN) y que del otro lado no sale nada Saber usar iptraf nos ayudaraacute mucho

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

31 Proteger la propia maacutequinaMuy bien tenemos una maacutequina linux pinchada en internet y queremos protegerla con su propio firewall Lo uacutenicoque tenemos que hacer es crear un script de shell en el que se van aplicando las reglasLos scripts de iptables pueden tener este aspecto

Saludo a la aficioacuten (echo)Borrado de las reglas aplicadas actualmente (flush)Aplicacioacuten de poliacuteticas por defecto para INPUT OUPUT FORWARD Listado de reglas iptables

Ojo con el orden de las reglas

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp -dport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPT

Y el resto lo cerramosiptables -A INPUT -p tcp --dport 2021 -j DROPiptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 22 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Nota para freaks y geeks siiii que ya lo se se puede mejorar este script usando variables se puede poner elcomando con el path completo pero limiacutetense a hacer copy-paste Para el resto de mortales no olvidarse deponerle flags de ejecucioacuten chmod +x firewall1sh o chmod 750 firewall1sh

En fin ya se ve un script de los maacutes simple con unas pocas reglas con las que cerramos puertos al puacuteblico a losque no tienen porque tener acceso salvo el 80 Pero cualquiera con algo de ojo se habraacute dado cuenta de que ni sefiltra el UDP ni el ICMP Apostariacutea cualquier cosa a que el sistema tiene alguacuten puerto udp abierto y ademaacutespeligroso como el SNMP Como he dicho anteriormente en este tipo de firewall es recordable hacer un netstatpara ver que puertos estaacuten en estado de escucha (abiertos) y salve que un rootkit nos haya modificado losbinarios netstat nos daraacute la informacioacuten precisa que necesitamos Hay gente que se decanta por hacerse un nmapasiacute mismos Cuidado dependiendo de coacutemo lo ejecutemos quizaacute no nos muestre todos los puertos ya que suelemirar los bien conocidosImaginemos que hemos dado un repaso a nuestro sistema y ahora si que tenemos mejor identificados los puertostcp y udp abiertos Pero por si acaso nos curamos en salud y al final del script cerraremos el rango de puertos del 1al 1024 los reservados tanto para tcp como udp

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Ejemplo de script para proteger la propia maacutequina Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp -dport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPT

Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 -j DROPiptables -A INPUT -p udp --dport 11024 -j DROP

Cerramos otros puertos que estan abiertosiptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iquestSencillo no Ahora basta con hacer copy-paste de estas reglas y aplicarlas y ajustarlas en su sistema (quizaacutesuses PostgreSQL) Si tiene miedo de perder el control de una maacutequina remota pruebe el script en una maacutequinalocal y aseguacuterese de que aplica lo que usted quiere Funcionar va a funcionar seguro

- Versioacuten con DROP por defecto

Vale queremos que nuestra maquina sea inexcrutable y que solo tenga abierto un puerto imprescindible para dardeterminado servicio Con DROP por defecto se protege la maquina perfectamente aunque hay que antildeadiralgunas reglas para que la propia maacutequina sea capaz de salir a internetiquest Para queacute hombre porque la maquinanecesita actualizaciones consultar DNS por udp sacar correo etc

Veamos un posible script

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar no empezamos a abrir porque ahora esta TODO denegado Debemos decir de manera explicita queacute es lo que queremos abrir

Operar en localhost sin limitacionessbiniptables -A INPUT -i lo -j ACCEPTsbiniptables -A OUTPUT -o lo -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

Este es el servicio que DA la maquina a internet por tanto todo paquete entrante se acepta para ese puerto y los salientes vinculados se aceptansbiniptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPT

Permitimos que la maquina pueda salir a la websbiniptables -A INPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

Ya tambien a webs segurassbiniptables -A INPUT -p tcp -m tcp --sport 443 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

Reglas necesarias para FTP pasivo y activo Se permiten conexiones entrantes YA establecidassbiniptables -A INPUT -p tcp -m tcp --sport 2021 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 2021 -j ACCEPTsbiniptables -A INPUT -p tcp -m tcp --sport 102465535 --dport 102465535 -m state --state ESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 102465535 -m state --state NEWRELATEDESTABLISHED -j ACCEPT

Permitimos la consulta a un primer DNSsbiniptables -A INPUT -s 211956439 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 211956439 -p udp -m udp --dport 53 -j ACCEPT

Permitimos la consulta a un segundo DNSsbiniptables -A INPUT -s 2119579109 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 2119579109 -p udp -m udp --dport 53 -j ACCEPT

Permitimos consultar el reloj de horaredirises (un pentium166) para sincronizarsesbiniptables -A INPUT -s 1302063166 -p udp -m udp --dport 123 -j ACCEPTsbiniptables -A OUTPUT -d 1302063166 -p udp -m udp --sport 123 -j ACCEPT

Barrera de backup por si cambiamos a modo ACCEPT temporalmente Con esto protegemos los puertos reservados y otros well-knownsbiniptables -A INPUT -p tcp -m tcp --dport 11024 -j DROPsbiniptables -A INPUT -p udp -m udp --dport 11024 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 1723 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 3306 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 5432 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

32 Firewall de una LAN con salida a internetAhora vamos a ver una configuracioacuten de firewall iptables para el tiacutepico caso de red local que necesita salida ainternet

Figura 6 esquema de f irewall tiacutepico entre red local e internet

iquestQueacute es lo que hace falta Obviamente una regla que haga NAT hacia fuera (enmascaramiento en iptables) conlo que se hariacutea dos veces NAT en el firewall y en el router Entre el router y el firewall lo normal es que haya una redprivada (19216811 y 19216812 por ejemplo) aunque dependiendo de las necesidades puede que los dostengan IP puacuteblica El router se supone que hace un NAT completo hacia dentro (quizaacute salvo puerto 23) o sea quedesde el exterior no se llega al router si no que de forma transparente se choca contra el firewall Lo normal eneste tipo de firewalls es poner la poliacutetica por defecto de FORWARD en denegar (DROP) pero eso lo vemos maacutesadelanteVeamos como seriacutea este firewall-gateway

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Pero como somos muy malvados queremos que los empleados solamente puedan navegar por internetdenegando el acceso a Kazaa o edonkey Esta seriacutea una configuracioacuten simple pero efectiva

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con filtro para que solo se pueda navegar

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor decorreo Darle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esospuertos o si no estaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA lared local De todas formas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cadacosa bastante les cuesta a muchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos alpuacuteblico en el propio firewall nos la estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla enla DMZ Supongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil ycon una ip dinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa conuna conexioacuten ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

iexclMaacutes difiacutecil todaviacutea Ahora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IISde un servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para unaempresa externa En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacuteahacer faacutecilmente con un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y alconectarse a eacutel te lleva hasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacerredirecciones con una ventaja no perdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En finveamos la configuracioacuten con las nuevas reglas de DNAT

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables -t nat -A PREROUTING -s 22123124181 -i eth0 -p tcp --dport 3389 -j DNAT --to 19216810123389

Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones ylos servicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de lared local Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red locales evitar escaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buenaconfiguracioacuten con denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de redpor 6euro o dolares y crear una DMZ

33 Firewall de una LAN con salida a internet con DMZ

Bueno esto se va complicando Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos lascosas bien y colocamos ese servidor IIS en una DMZ

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 7 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En este tipo de firewall hay que permitir- Acceso de la red local a internet- Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZ- Acceso del servidor de la DMZ a una BBDD de la LAN- Obviamente bloquear el resto de acceso de la DMZ hacia la LANiquestQueacute tipo de reglas son las que hay que usar para filtrar el traacutefico entre la DMZ y la LAN Solo pueden ser lasFORWARD ya que estamos filtrando entre distintas redes no son paquetes destinados al propio firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 19216832443

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 19216832 -d 192168105 -p tcp --dport 5432 -j ACCEPT

iptables -A FORWARD -s 192168105 -d 19216832 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 19216832 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 19216832 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 7: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

ICMP son peligrosos Si la poliacutetica por defecto es ACEPTAR y no se protege expliacutecitamente nos la estamosjugando un poco

En cambio si la poliacutetica por defecto es DENEGAR a no ser que lo permitamos expliacutecitamente el firewall seconvierte en un auteacutentico MURO infranqueable El problema es que es mucho maacutes difiacutecil preparar un firewall asiacute yhay que tener muy claro como funciona el sistema (sea iptables o el que sea) y que es lo que se tiene que abrir sincaer en la tentacioacuten de empezar a meter reglas super-permisivas Esta configuracioacuten de firewall es la recomendada aunque no es aconsejable usarla si no se domina miacutenimamenteel sistema Uno de los objetos principales de este documento es mostrar la forma de crear este tipo de firewalls

IMPORTANTEEl orden en el que se ponen las reglas de firewall es determinante Normalmente cuando hay que decidir que sehace con un paquete se va comparando con cada regla del firewall hasta que se encuentra una que le afecta(match) y se hace lo que dicte esta regla (aceptar o denegar) despueacutes de eso NO SE MIRARAacuteN MAacuteS REGLASpara ese paquete iquestCuaacutel es el peligro Si ponemos reglas muy permisivas entre las primeras del firewall puedeque las siguientes no se apliquen y no sirvan de nada

2 Queacute es iptables

IPtables es un sistema de firewall vinculado al kernel de linux que se ha extendido enormemente a partir del kernel24 de este sistema operativo Al igual que el anterior sistema ipchains un firewall de iptables no es como unservidor que lo iniciamos o detenemos o que se pueda caer por un error de programacioacuten(esto es una pequentildeamentira ha tenido alguna vulnerabilidad que permite DoS pero nunca tendraacute tanto peligro como las aplicacionesque escuchan en determinado puerto TCP) iptables esta integrado con el kernel es parte del sistema operativoiquestCoacutemo se pone en marcha Realmente lo que se hace es aplicar reglas Para ellos se ejecuta el comandoiptables con el que antildeadimos borramos o creamos reglas Por ello un firewall de iptables no es sino un simplescript de shell en el que se van ejecutando las reglas de firewall

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Notas bueno para los maacutes geeks y tocapelotas Vale se puede implementar un script de inicio en etcrcdINITd(o etcINITd ) con el que hagamos que iptables se inicie o pare como un servidor maacutes Lo podemos hacernosotros o es probable que venga en la distribucioacuten (como en redhat por ejemplo) Tambieacuten se pueden salvar lasreglas aplicadas con el comando iptables-save en un fichero y gestionar ese fichero con una aplicacioacuten o front-enddesde la X o desde webmin

Vale tenemos una maacutequina linux con soporte para iptables tiene reglas aplicadas y empiezan a llegarsalirpasarpaquetes No nos liemos olvidemos cuantas tarjetas de red hay que direcciones ip tiene la maacutequina y olvidemos siel paquete entra o sale Las reglas de firewall estaacuten a nivel de kernel y al kernel lo que le llega es un paquete(digamos un marroacuten ) ) y tiene que decidir que hacer con eacutel El kernel lo que hace es dependiendo si el paquetees para la propia maquina o para otra maquina consultar las reglas de firewall y decidir que hacer con el paqueteseguacuten mande el firewall Este es el camino que seguiriacutea un paquete en el kernel

Figura 5 cuando un paquete u otra comunicacioacuten llega al kernel con iptables se sigue este camino

Como se ve en el graacutefico baacutesicamente se mira si el paquete esta destinado a la propia maquina o si va a otraPara los paquetes (o datagramas seguacuten el protocolo) que van a la propia maquina se aplican las reglas INPUT yOUTPUT y para filtrar paquetes que van a otras redes o maquinas se aplican simplemente reglas FORWARDINPUTOUTPUT y FORWARD son los tres tipos de reglas de filtrado Pero antes de aplicar esas reglas es posible

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

INPUTOUTPUT y FORWARD son los tres tipos de reglas de filtrado Pero antes de aplicar esas reglas es posibleaplicar reglas de NAT estas se usan para hacer redirecciones de puertos o cambios en las IPs de origen ydestino Veremos ejemplos E incluso antes de las reglas de NAT se pueden meter reglas de tipo MANGLE destinadas a modificar lospaquetes son reglas poco conocidas y es probable que no las usenPor tanto tenemos tres tipos de reglas en iptables- MANGLE- NAT reglas PREROUTING POSTROUTING - FILTER reglas INPUT OUTPUT FORWARD

3 Al grano creando un firewall con iptables

En este tutorial se ha intentado dar una breve introduccioacuten sobre lo que es un firewall sus tipologiacuteas baacutesicas y enconcreto se presenta el sistema iptables Pero vamos al grano y empezamos a ver configuraciones de firewall coniptables empezando desde la maacutes baacutesica a las maacutes complejas en las que se establece la denegacioacuten comopoliacutetica por defecto

Nota se recomienda encarecidamente ir practicando estas reglas en alguna maquina linux disponible yespecialmente hacer uso de la herramienta iptraf para depurar y comprobar el funcionamiento de iptables Coniptraf podemos comprobar si las conexiones TCPIP se llegan a establecer o no Una conexioacuten tcpip empieza conel three-way-handshake- La maquina que desea conectarse a otra envia un paquete con flan SYN- Si la otra maquina acepta envia un SYNACK- Entonces la maacutequina establece la conexioacuten

Si el firewall esta denegando la conexioacuten con iptraf veremos que la maquina origen solo manda paquetes con elflan S (de SYN) y que del otro lado no sale nada Saber usar iptraf nos ayudaraacute mucho

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

31 Proteger la propia maacutequinaMuy bien tenemos una maacutequina linux pinchada en internet y queremos protegerla con su propio firewall Lo uacutenicoque tenemos que hacer es crear un script de shell en el que se van aplicando las reglasLos scripts de iptables pueden tener este aspecto

Saludo a la aficioacuten (echo)Borrado de las reglas aplicadas actualmente (flush)Aplicacioacuten de poliacuteticas por defecto para INPUT OUPUT FORWARD Listado de reglas iptables

Ojo con el orden de las reglas

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp -dport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPT

Y el resto lo cerramosiptables -A INPUT -p tcp --dport 2021 -j DROPiptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 22 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Nota para freaks y geeks siiii que ya lo se se puede mejorar este script usando variables se puede poner elcomando con el path completo pero limiacutetense a hacer copy-paste Para el resto de mortales no olvidarse deponerle flags de ejecucioacuten chmod +x firewall1sh o chmod 750 firewall1sh

En fin ya se ve un script de los maacutes simple con unas pocas reglas con las que cerramos puertos al puacuteblico a losque no tienen porque tener acceso salvo el 80 Pero cualquiera con algo de ojo se habraacute dado cuenta de que ni sefiltra el UDP ni el ICMP Apostariacutea cualquier cosa a que el sistema tiene alguacuten puerto udp abierto y ademaacutespeligroso como el SNMP Como he dicho anteriormente en este tipo de firewall es recordable hacer un netstatpara ver que puertos estaacuten en estado de escucha (abiertos) y salve que un rootkit nos haya modificado losbinarios netstat nos daraacute la informacioacuten precisa que necesitamos Hay gente que se decanta por hacerse un nmapasiacute mismos Cuidado dependiendo de coacutemo lo ejecutemos quizaacute no nos muestre todos los puertos ya que suelemirar los bien conocidosImaginemos que hemos dado un repaso a nuestro sistema y ahora si que tenemos mejor identificados los puertostcp y udp abiertos Pero por si acaso nos curamos en salud y al final del script cerraremos el rango de puertos del 1al 1024 los reservados tanto para tcp como udp

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Ejemplo de script para proteger la propia maacutequina Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp -dport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPT

Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 -j DROPiptables -A INPUT -p udp --dport 11024 -j DROP

Cerramos otros puertos que estan abiertosiptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iquestSencillo no Ahora basta con hacer copy-paste de estas reglas y aplicarlas y ajustarlas en su sistema (quizaacutesuses PostgreSQL) Si tiene miedo de perder el control de una maacutequina remota pruebe el script en una maacutequinalocal y aseguacuterese de que aplica lo que usted quiere Funcionar va a funcionar seguro

- Versioacuten con DROP por defecto

Vale queremos que nuestra maquina sea inexcrutable y que solo tenga abierto un puerto imprescindible para dardeterminado servicio Con DROP por defecto se protege la maquina perfectamente aunque hay que antildeadiralgunas reglas para que la propia maacutequina sea capaz de salir a internetiquest Para queacute hombre porque la maquinanecesita actualizaciones consultar DNS por udp sacar correo etc

Veamos un posible script

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar no empezamos a abrir porque ahora esta TODO denegado Debemos decir de manera explicita queacute es lo que queremos abrir

Operar en localhost sin limitacionessbiniptables -A INPUT -i lo -j ACCEPTsbiniptables -A OUTPUT -o lo -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

Este es el servicio que DA la maquina a internet por tanto todo paquete entrante se acepta para ese puerto y los salientes vinculados se aceptansbiniptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPT

Permitimos que la maquina pueda salir a la websbiniptables -A INPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

Ya tambien a webs segurassbiniptables -A INPUT -p tcp -m tcp --sport 443 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

Reglas necesarias para FTP pasivo y activo Se permiten conexiones entrantes YA establecidassbiniptables -A INPUT -p tcp -m tcp --sport 2021 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 2021 -j ACCEPTsbiniptables -A INPUT -p tcp -m tcp --sport 102465535 --dport 102465535 -m state --state ESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 102465535 -m state --state NEWRELATEDESTABLISHED -j ACCEPT

Permitimos la consulta a un primer DNSsbiniptables -A INPUT -s 211956439 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 211956439 -p udp -m udp --dport 53 -j ACCEPT

Permitimos la consulta a un segundo DNSsbiniptables -A INPUT -s 2119579109 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 2119579109 -p udp -m udp --dport 53 -j ACCEPT

Permitimos consultar el reloj de horaredirises (un pentium166) para sincronizarsesbiniptables -A INPUT -s 1302063166 -p udp -m udp --dport 123 -j ACCEPTsbiniptables -A OUTPUT -d 1302063166 -p udp -m udp --sport 123 -j ACCEPT

Barrera de backup por si cambiamos a modo ACCEPT temporalmente Con esto protegemos los puertos reservados y otros well-knownsbiniptables -A INPUT -p tcp -m tcp --dport 11024 -j DROPsbiniptables -A INPUT -p udp -m udp --dport 11024 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 1723 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 3306 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 5432 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

32 Firewall de una LAN con salida a internetAhora vamos a ver una configuracioacuten de firewall iptables para el tiacutepico caso de red local que necesita salida ainternet

Figura 6 esquema de f irewall tiacutepico entre red local e internet

iquestQueacute es lo que hace falta Obviamente una regla que haga NAT hacia fuera (enmascaramiento en iptables) conlo que se hariacutea dos veces NAT en el firewall y en el router Entre el router y el firewall lo normal es que haya una redprivada (19216811 y 19216812 por ejemplo) aunque dependiendo de las necesidades puede que los dostengan IP puacuteblica El router se supone que hace un NAT completo hacia dentro (quizaacute salvo puerto 23) o sea quedesde el exterior no se llega al router si no que de forma transparente se choca contra el firewall Lo normal eneste tipo de firewalls es poner la poliacutetica por defecto de FORWARD en denegar (DROP) pero eso lo vemos maacutesadelanteVeamos como seriacutea este firewall-gateway

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Pero como somos muy malvados queremos que los empleados solamente puedan navegar por internetdenegando el acceso a Kazaa o edonkey Esta seriacutea una configuracioacuten simple pero efectiva

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con filtro para que solo se pueda navegar

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor decorreo Darle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esospuertos o si no estaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA lared local De todas formas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cadacosa bastante les cuesta a muchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos alpuacuteblico en el propio firewall nos la estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla enla DMZ Supongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil ycon una ip dinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa conuna conexioacuten ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

iexclMaacutes difiacutecil todaviacutea Ahora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IISde un servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para unaempresa externa En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacuteahacer faacutecilmente con un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y alconectarse a eacutel te lleva hasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacerredirecciones con una ventaja no perdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En finveamos la configuracioacuten con las nuevas reglas de DNAT

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables -t nat -A PREROUTING -s 22123124181 -i eth0 -p tcp --dport 3389 -j DNAT --to 19216810123389

Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones ylos servicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de lared local Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red locales evitar escaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buenaconfiguracioacuten con denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de redpor 6euro o dolares y crear una DMZ

33 Firewall de una LAN con salida a internet con DMZ

Bueno esto se va complicando Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos lascosas bien y colocamos ese servidor IIS en una DMZ

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 7 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En este tipo de firewall hay que permitir- Acceso de la red local a internet- Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZ- Acceso del servidor de la DMZ a una BBDD de la LAN- Obviamente bloquear el resto de acceso de la DMZ hacia la LANiquestQueacute tipo de reglas son las que hay que usar para filtrar el traacutefico entre la DMZ y la LAN Solo pueden ser lasFORWARD ya que estamos filtrando entre distintas redes no son paquetes destinados al propio firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 19216832443

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 19216832 -d 192168105 -p tcp --dport 5432 -j ACCEPT

iptables -A FORWARD -s 192168105 -d 19216832 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 19216832 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 19216832 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 8: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Notas bueno para los maacutes geeks y tocapelotas Vale se puede implementar un script de inicio en etcrcdINITd(o etcINITd ) con el que hagamos que iptables se inicie o pare como un servidor maacutes Lo podemos hacernosotros o es probable que venga en la distribucioacuten (como en redhat por ejemplo) Tambieacuten se pueden salvar lasreglas aplicadas con el comando iptables-save en un fichero y gestionar ese fichero con una aplicacioacuten o front-enddesde la X o desde webmin

Vale tenemos una maacutequina linux con soporte para iptables tiene reglas aplicadas y empiezan a llegarsalirpasarpaquetes No nos liemos olvidemos cuantas tarjetas de red hay que direcciones ip tiene la maacutequina y olvidemos siel paquete entra o sale Las reglas de firewall estaacuten a nivel de kernel y al kernel lo que le llega es un paquete(digamos un marroacuten ) ) y tiene que decidir que hacer con eacutel El kernel lo que hace es dependiendo si el paquetees para la propia maquina o para otra maquina consultar las reglas de firewall y decidir que hacer con el paqueteseguacuten mande el firewall Este es el camino que seguiriacutea un paquete en el kernel

Figura 5 cuando un paquete u otra comunicacioacuten llega al kernel con iptables se sigue este camino

Como se ve en el graacutefico baacutesicamente se mira si el paquete esta destinado a la propia maquina o si va a otraPara los paquetes (o datagramas seguacuten el protocolo) que van a la propia maquina se aplican las reglas INPUT yOUTPUT y para filtrar paquetes que van a otras redes o maquinas se aplican simplemente reglas FORWARDINPUTOUTPUT y FORWARD son los tres tipos de reglas de filtrado Pero antes de aplicar esas reglas es posible

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

INPUTOUTPUT y FORWARD son los tres tipos de reglas de filtrado Pero antes de aplicar esas reglas es posibleaplicar reglas de NAT estas se usan para hacer redirecciones de puertos o cambios en las IPs de origen ydestino Veremos ejemplos E incluso antes de las reglas de NAT se pueden meter reglas de tipo MANGLE destinadas a modificar lospaquetes son reglas poco conocidas y es probable que no las usenPor tanto tenemos tres tipos de reglas en iptables- MANGLE- NAT reglas PREROUTING POSTROUTING - FILTER reglas INPUT OUTPUT FORWARD

3 Al grano creando un firewall con iptables

En este tutorial se ha intentado dar una breve introduccioacuten sobre lo que es un firewall sus tipologiacuteas baacutesicas y enconcreto se presenta el sistema iptables Pero vamos al grano y empezamos a ver configuraciones de firewall coniptables empezando desde la maacutes baacutesica a las maacutes complejas en las que se establece la denegacioacuten comopoliacutetica por defecto

Nota se recomienda encarecidamente ir practicando estas reglas en alguna maquina linux disponible yespecialmente hacer uso de la herramienta iptraf para depurar y comprobar el funcionamiento de iptables Coniptraf podemos comprobar si las conexiones TCPIP se llegan a establecer o no Una conexioacuten tcpip empieza conel three-way-handshake- La maquina que desea conectarse a otra envia un paquete con flan SYN- Si la otra maquina acepta envia un SYNACK- Entonces la maacutequina establece la conexioacuten

Si el firewall esta denegando la conexioacuten con iptraf veremos que la maquina origen solo manda paquetes con elflan S (de SYN) y que del otro lado no sale nada Saber usar iptraf nos ayudaraacute mucho

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

31 Proteger la propia maacutequinaMuy bien tenemos una maacutequina linux pinchada en internet y queremos protegerla con su propio firewall Lo uacutenicoque tenemos que hacer es crear un script de shell en el que se van aplicando las reglasLos scripts de iptables pueden tener este aspecto

Saludo a la aficioacuten (echo)Borrado de las reglas aplicadas actualmente (flush)Aplicacioacuten de poliacuteticas por defecto para INPUT OUPUT FORWARD Listado de reglas iptables

Ojo con el orden de las reglas

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp -dport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPT

Y el resto lo cerramosiptables -A INPUT -p tcp --dport 2021 -j DROPiptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 22 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Nota para freaks y geeks siiii que ya lo se se puede mejorar este script usando variables se puede poner elcomando con el path completo pero limiacutetense a hacer copy-paste Para el resto de mortales no olvidarse deponerle flags de ejecucioacuten chmod +x firewall1sh o chmod 750 firewall1sh

En fin ya se ve un script de los maacutes simple con unas pocas reglas con las que cerramos puertos al puacuteblico a losque no tienen porque tener acceso salvo el 80 Pero cualquiera con algo de ojo se habraacute dado cuenta de que ni sefiltra el UDP ni el ICMP Apostariacutea cualquier cosa a que el sistema tiene alguacuten puerto udp abierto y ademaacutespeligroso como el SNMP Como he dicho anteriormente en este tipo de firewall es recordable hacer un netstatpara ver que puertos estaacuten en estado de escucha (abiertos) y salve que un rootkit nos haya modificado losbinarios netstat nos daraacute la informacioacuten precisa que necesitamos Hay gente que se decanta por hacerse un nmapasiacute mismos Cuidado dependiendo de coacutemo lo ejecutemos quizaacute no nos muestre todos los puertos ya que suelemirar los bien conocidosImaginemos que hemos dado un repaso a nuestro sistema y ahora si que tenemos mejor identificados los puertostcp y udp abiertos Pero por si acaso nos curamos en salud y al final del script cerraremos el rango de puertos del 1al 1024 los reservados tanto para tcp como udp

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Ejemplo de script para proteger la propia maacutequina Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp -dport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPT

Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 -j DROPiptables -A INPUT -p udp --dport 11024 -j DROP

Cerramos otros puertos que estan abiertosiptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iquestSencillo no Ahora basta con hacer copy-paste de estas reglas y aplicarlas y ajustarlas en su sistema (quizaacutesuses PostgreSQL) Si tiene miedo de perder el control de una maacutequina remota pruebe el script en una maacutequinalocal y aseguacuterese de que aplica lo que usted quiere Funcionar va a funcionar seguro

- Versioacuten con DROP por defecto

Vale queremos que nuestra maquina sea inexcrutable y que solo tenga abierto un puerto imprescindible para dardeterminado servicio Con DROP por defecto se protege la maquina perfectamente aunque hay que antildeadiralgunas reglas para que la propia maacutequina sea capaz de salir a internetiquest Para queacute hombre porque la maquinanecesita actualizaciones consultar DNS por udp sacar correo etc

Veamos un posible script

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar no empezamos a abrir porque ahora esta TODO denegado Debemos decir de manera explicita queacute es lo que queremos abrir

Operar en localhost sin limitacionessbiniptables -A INPUT -i lo -j ACCEPTsbiniptables -A OUTPUT -o lo -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

Este es el servicio que DA la maquina a internet por tanto todo paquete entrante se acepta para ese puerto y los salientes vinculados se aceptansbiniptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPT

Permitimos que la maquina pueda salir a la websbiniptables -A INPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

Ya tambien a webs segurassbiniptables -A INPUT -p tcp -m tcp --sport 443 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

Reglas necesarias para FTP pasivo y activo Se permiten conexiones entrantes YA establecidassbiniptables -A INPUT -p tcp -m tcp --sport 2021 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 2021 -j ACCEPTsbiniptables -A INPUT -p tcp -m tcp --sport 102465535 --dport 102465535 -m state --state ESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 102465535 -m state --state NEWRELATEDESTABLISHED -j ACCEPT

Permitimos la consulta a un primer DNSsbiniptables -A INPUT -s 211956439 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 211956439 -p udp -m udp --dport 53 -j ACCEPT

Permitimos la consulta a un segundo DNSsbiniptables -A INPUT -s 2119579109 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 2119579109 -p udp -m udp --dport 53 -j ACCEPT

Permitimos consultar el reloj de horaredirises (un pentium166) para sincronizarsesbiniptables -A INPUT -s 1302063166 -p udp -m udp --dport 123 -j ACCEPTsbiniptables -A OUTPUT -d 1302063166 -p udp -m udp --sport 123 -j ACCEPT

Barrera de backup por si cambiamos a modo ACCEPT temporalmente Con esto protegemos los puertos reservados y otros well-knownsbiniptables -A INPUT -p tcp -m tcp --dport 11024 -j DROPsbiniptables -A INPUT -p udp -m udp --dport 11024 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 1723 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 3306 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 5432 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

32 Firewall de una LAN con salida a internetAhora vamos a ver una configuracioacuten de firewall iptables para el tiacutepico caso de red local que necesita salida ainternet

Figura 6 esquema de f irewall tiacutepico entre red local e internet

iquestQueacute es lo que hace falta Obviamente una regla que haga NAT hacia fuera (enmascaramiento en iptables) conlo que se hariacutea dos veces NAT en el firewall y en el router Entre el router y el firewall lo normal es que haya una redprivada (19216811 y 19216812 por ejemplo) aunque dependiendo de las necesidades puede que los dostengan IP puacuteblica El router se supone que hace un NAT completo hacia dentro (quizaacute salvo puerto 23) o sea quedesde el exterior no se llega al router si no que de forma transparente se choca contra el firewall Lo normal eneste tipo de firewalls es poner la poliacutetica por defecto de FORWARD en denegar (DROP) pero eso lo vemos maacutesadelanteVeamos como seriacutea este firewall-gateway

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Pero como somos muy malvados queremos que los empleados solamente puedan navegar por internetdenegando el acceso a Kazaa o edonkey Esta seriacutea una configuracioacuten simple pero efectiva

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con filtro para que solo se pueda navegar

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor decorreo Darle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esospuertos o si no estaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA lared local De todas formas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cadacosa bastante les cuesta a muchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos alpuacuteblico en el propio firewall nos la estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla enla DMZ Supongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil ycon una ip dinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa conuna conexioacuten ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

iexclMaacutes difiacutecil todaviacutea Ahora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IISde un servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para unaempresa externa En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacuteahacer faacutecilmente con un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y alconectarse a eacutel te lleva hasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacerredirecciones con una ventaja no perdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En finveamos la configuracioacuten con las nuevas reglas de DNAT

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables -t nat -A PREROUTING -s 22123124181 -i eth0 -p tcp --dport 3389 -j DNAT --to 19216810123389

Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones ylos servicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de lared local Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red locales evitar escaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buenaconfiguracioacuten con denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de redpor 6euro o dolares y crear una DMZ

33 Firewall de una LAN con salida a internet con DMZ

Bueno esto se va complicando Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos lascosas bien y colocamos ese servidor IIS en una DMZ

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 7 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En este tipo de firewall hay que permitir- Acceso de la red local a internet- Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZ- Acceso del servidor de la DMZ a una BBDD de la LAN- Obviamente bloquear el resto de acceso de la DMZ hacia la LANiquestQueacute tipo de reglas son las que hay que usar para filtrar el traacutefico entre la DMZ y la LAN Solo pueden ser lasFORWARD ya que estamos filtrando entre distintas redes no son paquetes destinados al propio firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 19216832443

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 19216832 -d 192168105 -p tcp --dport 5432 -j ACCEPT

iptables -A FORWARD -s 192168105 -d 19216832 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 19216832 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 19216832 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 9: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

INPUTOUTPUT y FORWARD son los tres tipos de reglas de filtrado Pero antes de aplicar esas reglas es posibleaplicar reglas de NAT estas se usan para hacer redirecciones de puertos o cambios en las IPs de origen ydestino Veremos ejemplos E incluso antes de las reglas de NAT se pueden meter reglas de tipo MANGLE destinadas a modificar lospaquetes son reglas poco conocidas y es probable que no las usenPor tanto tenemos tres tipos de reglas en iptables- MANGLE- NAT reglas PREROUTING POSTROUTING - FILTER reglas INPUT OUTPUT FORWARD

3 Al grano creando un firewall con iptables

En este tutorial se ha intentado dar una breve introduccioacuten sobre lo que es un firewall sus tipologiacuteas baacutesicas y enconcreto se presenta el sistema iptables Pero vamos al grano y empezamos a ver configuraciones de firewall coniptables empezando desde la maacutes baacutesica a las maacutes complejas en las que se establece la denegacioacuten comopoliacutetica por defecto

Nota se recomienda encarecidamente ir practicando estas reglas en alguna maquina linux disponible yespecialmente hacer uso de la herramienta iptraf para depurar y comprobar el funcionamiento de iptables Coniptraf podemos comprobar si las conexiones TCPIP se llegan a establecer o no Una conexioacuten tcpip empieza conel three-way-handshake- La maquina que desea conectarse a otra envia un paquete con flan SYN- Si la otra maquina acepta envia un SYNACK- Entonces la maacutequina establece la conexioacuten

Si el firewall esta denegando la conexioacuten con iptraf veremos que la maquina origen solo manda paquetes con elflan S (de SYN) y que del otro lado no sale nada Saber usar iptraf nos ayudaraacute mucho

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

31 Proteger la propia maacutequinaMuy bien tenemos una maacutequina linux pinchada en internet y queremos protegerla con su propio firewall Lo uacutenicoque tenemos que hacer es crear un script de shell en el que se van aplicando las reglasLos scripts de iptables pueden tener este aspecto

Saludo a la aficioacuten (echo)Borrado de las reglas aplicadas actualmente (flush)Aplicacioacuten de poliacuteticas por defecto para INPUT OUPUT FORWARD Listado de reglas iptables

Ojo con el orden de las reglas

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp -dport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPT

Y el resto lo cerramosiptables -A INPUT -p tcp --dport 2021 -j DROPiptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 22 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Nota para freaks y geeks siiii que ya lo se se puede mejorar este script usando variables se puede poner elcomando con el path completo pero limiacutetense a hacer copy-paste Para el resto de mortales no olvidarse deponerle flags de ejecucioacuten chmod +x firewall1sh o chmod 750 firewall1sh

En fin ya se ve un script de los maacutes simple con unas pocas reglas con las que cerramos puertos al puacuteblico a losque no tienen porque tener acceso salvo el 80 Pero cualquiera con algo de ojo se habraacute dado cuenta de que ni sefiltra el UDP ni el ICMP Apostariacutea cualquier cosa a que el sistema tiene alguacuten puerto udp abierto y ademaacutespeligroso como el SNMP Como he dicho anteriormente en este tipo de firewall es recordable hacer un netstatpara ver que puertos estaacuten en estado de escucha (abiertos) y salve que un rootkit nos haya modificado losbinarios netstat nos daraacute la informacioacuten precisa que necesitamos Hay gente que se decanta por hacerse un nmapasiacute mismos Cuidado dependiendo de coacutemo lo ejecutemos quizaacute no nos muestre todos los puertos ya que suelemirar los bien conocidosImaginemos que hemos dado un repaso a nuestro sistema y ahora si que tenemos mejor identificados los puertostcp y udp abiertos Pero por si acaso nos curamos en salud y al final del script cerraremos el rango de puertos del 1al 1024 los reservados tanto para tcp como udp

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Ejemplo de script para proteger la propia maacutequina Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp -dport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPT

Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 -j DROPiptables -A INPUT -p udp --dport 11024 -j DROP

Cerramos otros puertos que estan abiertosiptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iquestSencillo no Ahora basta con hacer copy-paste de estas reglas y aplicarlas y ajustarlas en su sistema (quizaacutesuses PostgreSQL) Si tiene miedo de perder el control de una maacutequina remota pruebe el script en una maacutequinalocal y aseguacuterese de que aplica lo que usted quiere Funcionar va a funcionar seguro

- Versioacuten con DROP por defecto

Vale queremos que nuestra maquina sea inexcrutable y que solo tenga abierto un puerto imprescindible para dardeterminado servicio Con DROP por defecto se protege la maquina perfectamente aunque hay que antildeadiralgunas reglas para que la propia maacutequina sea capaz de salir a internetiquest Para queacute hombre porque la maquinanecesita actualizaciones consultar DNS por udp sacar correo etc

Veamos un posible script

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar no empezamos a abrir porque ahora esta TODO denegado Debemos decir de manera explicita queacute es lo que queremos abrir

Operar en localhost sin limitacionessbiniptables -A INPUT -i lo -j ACCEPTsbiniptables -A OUTPUT -o lo -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

Este es el servicio que DA la maquina a internet por tanto todo paquete entrante se acepta para ese puerto y los salientes vinculados se aceptansbiniptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPT

Permitimos que la maquina pueda salir a la websbiniptables -A INPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

Ya tambien a webs segurassbiniptables -A INPUT -p tcp -m tcp --sport 443 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

Reglas necesarias para FTP pasivo y activo Se permiten conexiones entrantes YA establecidassbiniptables -A INPUT -p tcp -m tcp --sport 2021 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 2021 -j ACCEPTsbiniptables -A INPUT -p tcp -m tcp --sport 102465535 --dport 102465535 -m state --state ESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 102465535 -m state --state NEWRELATEDESTABLISHED -j ACCEPT

Permitimos la consulta a un primer DNSsbiniptables -A INPUT -s 211956439 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 211956439 -p udp -m udp --dport 53 -j ACCEPT

Permitimos la consulta a un segundo DNSsbiniptables -A INPUT -s 2119579109 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 2119579109 -p udp -m udp --dport 53 -j ACCEPT

Permitimos consultar el reloj de horaredirises (un pentium166) para sincronizarsesbiniptables -A INPUT -s 1302063166 -p udp -m udp --dport 123 -j ACCEPTsbiniptables -A OUTPUT -d 1302063166 -p udp -m udp --sport 123 -j ACCEPT

Barrera de backup por si cambiamos a modo ACCEPT temporalmente Con esto protegemos los puertos reservados y otros well-knownsbiniptables -A INPUT -p tcp -m tcp --dport 11024 -j DROPsbiniptables -A INPUT -p udp -m udp --dport 11024 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 1723 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 3306 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 5432 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

32 Firewall de una LAN con salida a internetAhora vamos a ver una configuracioacuten de firewall iptables para el tiacutepico caso de red local que necesita salida ainternet

Figura 6 esquema de f irewall tiacutepico entre red local e internet

iquestQueacute es lo que hace falta Obviamente una regla que haga NAT hacia fuera (enmascaramiento en iptables) conlo que se hariacutea dos veces NAT en el firewall y en el router Entre el router y el firewall lo normal es que haya una redprivada (19216811 y 19216812 por ejemplo) aunque dependiendo de las necesidades puede que los dostengan IP puacuteblica El router se supone que hace un NAT completo hacia dentro (quizaacute salvo puerto 23) o sea quedesde el exterior no se llega al router si no que de forma transparente se choca contra el firewall Lo normal eneste tipo de firewalls es poner la poliacutetica por defecto de FORWARD en denegar (DROP) pero eso lo vemos maacutesadelanteVeamos como seriacutea este firewall-gateway

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Pero como somos muy malvados queremos que los empleados solamente puedan navegar por internetdenegando el acceso a Kazaa o edonkey Esta seriacutea una configuracioacuten simple pero efectiva

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con filtro para que solo se pueda navegar

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor decorreo Darle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esospuertos o si no estaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA lared local De todas formas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cadacosa bastante les cuesta a muchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos alpuacuteblico en el propio firewall nos la estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla enla DMZ Supongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil ycon una ip dinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa conuna conexioacuten ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

iexclMaacutes difiacutecil todaviacutea Ahora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IISde un servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para unaempresa externa En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacuteahacer faacutecilmente con un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y alconectarse a eacutel te lleva hasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacerredirecciones con una ventaja no perdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En finveamos la configuracioacuten con las nuevas reglas de DNAT

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables -t nat -A PREROUTING -s 22123124181 -i eth0 -p tcp --dport 3389 -j DNAT --to 19216810123389

Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones ylos servicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de lared local Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red locales evitar escaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buenaconfiguracioacuten con denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de redpor 6euro o dolares y crear una DMZ

33 Firewall de una LAN con salida a internet con DMZ

Bueno esto se va complicando Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos lascosas bien y colocamos ese servidor IIS en una DMZ

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 7 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En este tipo de firewall hay que permitir- Acceso de la red local a internet- Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZ- Acceso del servidor de la DMZ a una BBDD de la LAN- Obviamente bloquear el resto de acceso de la DMZ hacia la LANiquestQueacute tipo de reglas son las que hay que usar para filtrar el traacutefico entre la DMZ y la LAN Solo pueden ser lasFORWARD ya que estamos filtrando entre distintas redes no son paquetes destinados al propio firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 19216832443

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 19216832 -d 192168105 -p tcp --dport 5432 -j ACCEPT

iptables -A FORWARD -s 192168105 -d 19216832 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 19216832 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 19216832 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 10: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

31 Proteger la propia maacutequinaMuy bien tenemos una maacutequina linux pinchada en internet y queremos protegerla con su propio firewall Lo uacutenicoque tenemos que hacer es crear un script de shell en el que se van aplicando las reglasLos scripts de iptables pueden tener este aspecto

Saludo a la aficioacuten (echo)Borrado de las reglas aplicadas actualmente (flush)Aplicacioacuten de poliacuteticas por defecto para INPUT OUPUT FORWARD Listado de reglas iptables

Ojo con el orden de las reglas

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp -dport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPT

Y el resto lo cerramosiptables -A INPUT -p tcp --dport 2021 -j DROPiptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 22 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Nota para freaks y geeks siiii que ya lo se se puede mejorar este script usando variables se puede poner elcomando con el path completo pero limiacutetense a hacer copy-paste Para el resto de mortales no olvidarse deponerle flags de ejecucioacuten chmod +x firewall1sh o chmod 750 firewall1sh

En fin ya se ve un script de los maacutes simple con unas pocas reglas con las que cerramos puertos al puacuteblico a losque no tienen porque tener acceso salvo el 80 Pero cualquiera con algo de ojo se habraacute dado cuenta de que ni sefiltra el UDP ni el ICMP Apostariacutea cualquier cosa a que el sistema tiene alguacuten puerto udp abierto y ademaacutespeligroso como el SNMP Como he dicho anteriormente en este tipo de firewall es recordable hacer un netstatpara ver que puertos estaacuten en estado de escucha (abiertos) y salve que un rootkit nos haya modificado losbinarios netstat nos daraacute la informacioacuten precisa que necesitamos Hay gente que se decanta por hacerse un nmapasiacute mismos Cuidado dependiendo de coacutemo lo ejecutemos quizaacute no nos muestre todos los puertos ya que suelemirar los bien conocidosImaginemos que hemos dado un repaso a nuestro sistema y ahora si que tenemos mejor identificados los puertostcp y udp abiertos Pero por si acaso nos curamos en salud y al final del script cerraremos el rango de puertos del 1al 1024 los reservados tanto para tcp como udp

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Ejemplo de script para proteger la propia maacutequina Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp -dport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPT

Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 -j DROPiptables -A INPUT -p udp --dport 11024 -j DROP

Cerramos otros puertos que estan abiertosiptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iquestSencillo no Ahora basta con hacer copy-paste de estas reglas y aplicarlas y ajustarlas en su sistema (quizaacutesuses PostgreSQL) Si tiene miedo de perder el control de una maacutequina remota pruebe el script en una maacutequinalocal y aseguacuterese de que aplica lo que usted quiere Funcionar va a funcionar seguro

- Versioacuten con DROP por defecto

Vale queremos que nuestra maquina sea inexcrutable y que solo tenga abierto un puerto imprescindible para dardeterminado servicio Con DROP por defecto se protege la maquina perfectamente aunque hay que antildeadiralgunas reglas para que la propia maacutequina sea capaz de salir a internetiquest Para queacute hombre porque la maquinanecesita actualizaciones consultar DNS por udp sacar correo etc

Veamos un posible script

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar no empezamos a abrir porque ahora esta TODO denegado Debemos decir de manera explicita queacute es lo que queremos abrir

Operar en localhost sin limitacionessbiniptables -A INPUT -i lo -j ACCEPTsbiniptables -A OUTPUT -o lo -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

Este es el servicio que DA la maquina a internet por tanto todo paquete entrante se acepta para ese puerto y los salientes vinculados se aceptansbiniptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPT

Permitimos que la maquina pueda salir a la websbiniptables -A INPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

Ya tambien a webs segurassbiniptables -A INPUT -p tcp -m tcp --sport 443 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

Reglas necesarias para FTP pasivo y activo Se permiten conexiones entrantes YA establecidassbiniptables -A INPUT -p tcp -m tcp --sport 2021 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 2021 -j ACCEPTsbiniptables -A INPUT -p tcp -m tcp --sport 102465535 --dport 102465535 -m state --state ESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 102465535 -m state --state NEWRELATEDESTABLISHED -j ACCEPT

Permitimos la consulta a un primer DNSsbiniptables -A INPUT -s 211956439 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 211956439 -p udp -m udp --dport 53 -j ACCEPT

Permitimos la consulta a un segundo DNSsbiniptables -A INPUT -s 2119579109 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 2119579109 -p udp -m udp --dport 53 -j ACCEPT

Permitimos consultar el reloj de horaredirises (un pentium166) para sincronizarsesbiniptables -A INPUT -s 1302063166 -p udp -m udp --dport 123 -j ACCEPTsbiniptables -A OUTPUT -d 1302063166 -p udp -m udp --sport 123 -j ACCEPT

Barrera de backup por si cambiamos a modo ACCEPT temporalmente Con esto protegemos los puertos reservados y otros well-knownsbiniptables -A INPUT -p tcp -m tcp --dport 11024 -j DROPsbiniptables -A INPUT -p udp -m udp --dport 11024 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 1723 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 3306 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 5432 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

32 Firewall de una LAN con salida a internetAhora vamos a ver una configuracioacuten de firewall iptables para el tiacutepico caso de red local que necesita salida ainternet

Figura 6 esquema de f irewall tiacutepico entre red local e internet

iquestQueacute es lo que hace falta Obviamente una regla que haga NAT hacia fuera (enmascaramiento en iptables) conlo que se hariacutea dos veces NAT en el firewall y en el router Entre el router y el firewall lo normal es que haya una redprivada (19216811 y 19216812 por ejemplo) aunque dependiendo de las necesidades puede que los dostengan IP puacuteblica El router se supone que hace un NAT completo hacia dentro (quizaacute salvo puerto 23) o sea quedesde el exterior no se llega al router si no que de forma transparente se choca contra el firewall Lo normal eneste tipo de firewalls es poner la poliacutetica por defecto de FORWARD en denegar (DROP) pero eso lo vemos maacutesadelanteVeamos como seriacutea este firewall-gateway

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Pero como somos muy malvados queremos que los empleados solamente puedan navegar por internetdenegando el acceso a Kazaa o edonkey Esta seriacutea una configuracioacuten simple pero efectiva

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con filtro para que solo se pueda navegar

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor decorreo Darle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esospuertos o si no estaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA lared local De todas formas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cadacosa bastante les cuesta a muchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos alpuacuteblico en el propio firewall nos la estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla enla DMZ Supongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil ycon una ip dinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa conuna conexioacuten ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

iexclMaacutes difiacutecil todaviacutea Ahora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IISde un servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para unaempresa externa En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacuteahacer faacutecilmente con un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y alconectarse a eacutel te lleva hasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacerredirecciones con una ventaja no perdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En finveamos la configuracioacuten con las nuevas reglas de DNAT

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables -t nat -A PREROUTING -s 22123124181 -i eth0 -p tcp --dport 3389 -j DNAT --to 19216810123389

Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones ylos servicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de lared local Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red locales evitar escaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buenaconfiguracioacuten con denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de redpor 6euro o dolares y crear una DMZ

33 Firewall de una LAN con salida a internet con DMZ

Bueno esto se va complicando Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos lascosas bien y colocamos ese servidor IIS en una DMZ

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 7 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En este tipo de firewall hay que permitir- Acceso de la red local a internet- Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZ- Acceso del servidor de la DMZ a una BBDD de la LAN- Obviamente bloquear el resto de acceso de la DMZ hacia la LANiquestQueacute tipo de reglas son las que hay que usar para filtrar el traacutefico entre la DMZ y la LAN Solo pueden ser lasFORWARD ya que estamos filtrando entre distintas redes no son paquetes destinados al propio firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 19216832443

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 19216832 -d 192168105 -p tcp --dport 5432 -j ACCEPT

iptables -A FORWARD -s 192168105 -d 19216832 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 19216832 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 19216832 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 11: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp -dport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPT

Y el resto lo cerramosiptables -A INPUT -p tcp --dport 2021 -j DROPiptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 22 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Nota para freaks y geeks siiii que ya lo se se puede mejorar este script usando variables se puede poner elcomando con el path completo pero limiacutetense a hacer copy-paste Para el resto de mortales no olvidarse deponerle flags de ejecucioacuten chmod +x firewall1sh o chmod 750 firewall1sh

En fin ya se ve un script de los maacutes simple con unas pocas reglas con las que cerramos puertos al puacuteblico a losque no tienen porque tener acceso salvo el 80 Pero cualquiera con algo de ojo se habraacute dado cuenta de que ni sefiltra el UDP ni el ICMP Apostariacutea cualquier cosa a que el sistema tiene alguacuten puerto udp abierto y ademaacutespeligroso como el SNMP Como he dicho anteriormente en este tipo de firewall es recordable hacer un netstatpara ver que puertos estaacuten en estado de escucha (abiertos) y salve que un rootkit nos haya modificado losbinarios netstat nos daraacute la informacioacuten precisa que necesitamos Hay gente que se decanta por hacerse un nmapasiacute mismos Cuidado dependiendo de coacutemo lo ejecutemos quizaacute no nos muestre todos los puertos ya que suelemirar los bien conocidosImaginemos que hemos dado un repaso a nuestro sistema y ahora si que tenemos mejor identificados los puertostcp y udp abiertos Pero por si acaso nos curamos en salud y al final del script cerraremos el rango de puertos del 1al 1024 los reservados tanto para tcp como udp

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Ejemplo de script para proteger la propia maacutequina Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp -dport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPT

Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 -j DROPiptables -A INPUT -p udp --dport 11024 -j DROP

Cerramos otros puertos que estan abiertosiptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iquestSencillo no Ahora basta con hacer copy-paste de estas reglas y aplicarlas y ajustarlas en su sistema (quizaacutesuses PostgreSQL) Si tiene miedo de perder el control de una maacutequina remota pruebe el script en una maacutequinalocal y aseguacuterese de que aplica lo que usted quiere Funcionar va a funcionar seguro

- Versioacuten con DROP por defecto

Vale queremos que nuestra maquina sea inexcrutable y que solo tenga abierto un puerto imprescindible para dardeterminado servicio Con DROP por defecto se protege la maquina perfectamente aunque hay que antildeadiralgunas reglas para que la propia maacutequina sea capaz de salir a internetiquest Para queacute hombre porque la maquinanecesita actualizaciones consultar DNS por udp sacar correo etc

Veamos un posible script

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar no empezamos a abrir porque ahora esta TODO denegado Debemos decir de manera explicita queacute es lo que queremos abrir

Operar en localhost sin limitacionessbiniptables -A INPUT -i lo -j ACCEPTsbiniptables -A OUTPUT -o lo -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

Este es el servicio que DA la maquina a internet por tanto todo paquete entrante se acepta para ese puerto y los salientes vinculados se aceptansbiniptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPT

Permitimos que la maquina pueda salir a la websbiniptables -A INPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

Ya tambien a webs segurassbiniptables -A INPUT -p tcp -m tcp --sport 443 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

Reglas necesarias para FTP pasivo y activo Se permiten conexiones entrantes YA establecidassbiniptables -A INPUT -p tcp -m tcp --sport 2021 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 2021 -j ACCEPTsbiniptables -A INPUT -p tcp -m tcp --sport 102465535 --dport 102465535 -m state --state ESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 102465535 -m state --state NEWRELATEDESTABLISHED -j ACCEPT

Permitimos la consulta a un primer DNSsbiniptables -A INPUT -s 211956439 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 211956439 -p udp -m udp --dport 53 -j ACCEPT

Permitimos la consulta a un segundo DNSsbiniptables -A INPUT -s 2119579109 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 2119579109 -p udp -m udp --dport 53 -j ACCEPT

Permitimos consultar el reloj de horaredirises (un pentium166) para sincronizarsesbiniptables -A INPUT -s 1302063166 -p udp -m udp --dport 123 -j ACCEPTsbiniptables -A OUTPUT -d 1302063166 -p udp -m udp --sport 123 -j ACCEPT

Barrera de backup por si cambiamos a modo ACCEPT temporalmente Con esto protegemos los puertos reservados y otros well-knownsbiniptables -A INPUT -p tcp -m tcp --dport 11024 -j DROPsbiniptables -A INPUT -p udp -m udp --dport 11024 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 1723 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 3306 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 5432 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

32 Firewall de una LAN con salida a internetAhora vamos a ver una configuracioacuten de firewall iptables para el tiacutepico caso de red local que necesita salida ainternet

Figura 6 esquema de f irewall tiacutepico entre red local e internet

iquestQueacute es lo que hace falta Obviamente una regla que haga NAT hacia fuera (enmascaramiento en iptables) conlo que se hariacutea dos veces NAT en el firewall y en el router Entre el router y el firewall lo normal es que haya una redprivada (19216811 y 19216812 por ejemplo) aunque dependiendo de las necesidades puede que los dostengan IP puacuteblica El router se supone que hace un NAT completo hacia dentro (quizaacute salvo puerto 23) o sea quedesde el exterior no se llega al router si no que de forma transparente se choca contra el firewall Lo normal eneste tipo de firewalls es poner la poliacutetica por defecto de FORWARD en denegar (DROP) pero eso lo vemos maacutesadelanteVeamos como seriacutea este firewall-gateway

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Pero como somos muy malvados queremos que los empleados solamente puedan navegar por internetdenegando el acceso a Kazaa o edonkey Esta seriacutea una configuracioacuten simple pero efectiva

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con filtro para que solo se pueda navegar

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor decorreo Darle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esospuertos o si no estaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA lared local De todas formas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cadacosa bastante les cuesta a muchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos alpuacuteblico en el propio firewall nos la estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla enla DMZ Supongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil ycon una ip dinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa conuna conexioacuten ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

iexclMaacutes difiacutecil todaviacutea Ahora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IISde un servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para unaempresa externa En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacuteahacer faacutecilmente con un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y alconectarse a eacutel te lleva hasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacerredirecciones con una ventaja no perdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En finveamos la configuracioacuten con las nuevas reglas de DNAT

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables -t nat -A PREROUTING -s 22123124181 -i eth0 -p tcp --dport 3389 -j DNAT --to 19216810123389

Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones ylos servicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de lared local Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red locales evitar escaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buenaconfiguracioacuten con denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de redpor 6euro o dolares y crear una DMZ

33 Firewall de una LAN con salida a internet con DMZ

Bueno esto se va complicando Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos lascosas bien y colocamos ese servidor IIS en una DMZ

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 7 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En este tipo de firewall hay que permitir- Acceso de la red local a internet- Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZ- Acceso del servidor de la DMZ a una BBDD de la LAN- Obviamente bloquear el resto de acceso de la DMZ hacia la LANiquestQueacute tipo de reglas son las que hay que usar para filtrar el traacutefico entre la DMZ y la LAN Solo pueden ser lasFORWARD ya que estamos filtrando entre distintas redes no son paquetes destinados al propio firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 19216832443

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 19216832 -d 192168105 -p tcp --dport 5432 -j ACCEPT

iptables -A FORWARD -s 192168105 -d 19216832 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 19216832 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 19216832 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 12: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Ejemplo de script para proteger la propia maacutequina Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp -dport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPT

Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 -j DROPiptables -A INPUT -p udp --dport 11024 -j DROP

Cerramos otros puertos que estan abiertosiptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iquestSencillo no Ahora basta con hacer copy-paste de estas reglas y aplicarlas y ajustarlas en su sistema (quizaacutesuses PostgreSQL) Si tiene miedo de perder el control de una maacutequina remota pruebe el script en una maacutequinalocal y aseguacuterese de que aplica lo que usted quiere Funcionar va a funcionar seguro

- Versioacuten con DROP por defecto

Vale queremos que nuestra maquina sea inexcrutable y que solo tenga abierto un puerto imprescindible para dardeterminado servicio Con DROP por defecto se protege la maquina perfectamente aunque hay que antildeadiralgunas reglas para que la propia maacutequina sea capaz de salir a internetiquest Para queacute hombre porque la maquinanecesita actualizaciones consultar DNS por udp sacar correo etc

Veamos un posible script

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar no empezamos a abrir porque ahora esta TODO denegado Debemos decir de manera explicita queacute es lo que queremos abrir

Operar en localhost sin limitacionessbiniptables -A INPUT -i lo -j ACCEPTsbiniptables -A OUTPUT -o lo -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

Este es el servicio que DA la maquina a internet por tanto todo paquete entrante se acepta para ese puerto y los salientes vinculados se aceptansbiniptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPT

Permitimos que la maquina pueda salir a la websbiniptables -A INPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

Ya tambien a webs segurassbiniptables -A INPUT -p tcp -m tcp --sport 443 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

Reglas necesarias para FTP pasivo y activo Se permiten conexiones entrantes YA establecidassbiniptables -A INPUT -p tcp -m tcp --sport 2021 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 2021 -j ACCEPTsbiniptables -A INPUT -p tcp -m tcp --sport 102465535 --dport 102465535 -m state --state ESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 102465535 -m state --state NEWRELATEDESTABLISHED -j ACCEPT

Permitimos la consulta a un primer DNSsbiniptables -A INPUT -s 211956439 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 211956439 -p udp -m udp --dport 53 -j ACCEPT

Permitimos la consulta a un segundo DNSsbiniptables -A INPUT -s 2119579109 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 2119579109 -p udp -m udp --dport 53 -j ACCEPT

Permitimos consultar el reloj de horaredirises (un pentium166) para sincronizarsesbiniptables -A INPUT -s 1302063166 -p udp -m udp --dport 123 -j ACCEPTsbiniptables -A OUTPUT -d 1302063166 -p udp -m udp --sport 123 -j ACCEPT

Barrera de backup por si cambiamos a modo ACCEPT temporalmente Con esto protegemos los puertos reservados y otros well-knownsbiniptables -A INPUT -p tcp -m tcp --dport 11024 -j DROPsbiniptables -A INPUT -p udp -m udp --dport 11024 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 1723 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 3306 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 5432 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

32 Firewall de una LAN con salida a internetAhora vamos a ver una configuracioacuten de firewall iptables para el tiacutepico caso de red local que necesita salida ainternet

Figura 6 esquema de f irewall tiacutepico entre red local e internet

iquestQueacute es lo que hace falta Obviamente una regla que haga NAT hacia fuera (enmascaramiento en iptables) conlo que se hariacutea dos veces NAT en el firewall y en el router Entre el router y el firewall lo normal es que haya una redprivada (19216811 y 19216812 por ejemplo) aunque dependiendo de las necesidades puede que los dostengan IP puacuteblica El router se supone que hace un NAT completo hacia dentro (quizaacute salvo puerto 23) o sea quedesde el exterior no se llega al router si no que de forma transparente se choca contra el firewall Lo normal eneste tipo de firewalls es poner la poliacutetica por defecto de FORWARD en denegar (DROP) pero eso lo vemos maacutesadelanteVeamos como seriacutea este firewall-gateway

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Pero como somos muy malvados queremos que los empleados solamente puedan navegar por internetdenegando el acceso a Kazaa o edonkey Esta seriacutea una configuracioacuten simple pero efectiva

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con filtro para que solo se pueda navegar

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor decorreo Darle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esospuertos o si no estaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA lared local De todas formas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cadacosa bastante les cuesta a muchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos alpuacuteblico en el propio firewall nos la estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla enla DMZ Supongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil ycon una ip dinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa conuna conexioacuten ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

iexclMaacutes difiacutecil todaviacutea Ahora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IISde un servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para unaempresa externa En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacuteahacer faacutecilmente con un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y alconectarse a eacutel te lleva hasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacerredirecciones con una ventaja no perdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En finveamos la configuracioacuten con las nuevas reglas de DNAT

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables -t nat -A PREROUTING -s 22123124181 -i eth0 -p tcp --dport 3389 -j DNAT --to 19216810123389

Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones ylos servicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de lared local Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red locales evitar escaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buenaconfiguracioacuten con denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de redpor 6euro o dolares y crear una DMZ

33 Firewall de una LAN con salida a internet con DMZ

Bueno esto se va complicando Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos lascosas bien y colocamos ese servidor IIS en una DMZ

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 7 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En este tipo de firewall hay que permitir- Acceso de la red local a internet- Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZ- Acceso del servidor de la DMZ a una BBDD de la LAN- Obviamente bloquear el resto de acceso de la DMZ hacia la LANiquestQueacute tipo de reglas son las que hay que usar para filtrar el traacutefico entre la DMZ y la LAN Solo pueden ser lasFORWARD ya que estamos filtrando entre distintas redes no son paquetes destinados al propio firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 19216832443

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 19216832 -d 192168105 -p tcp --dport 5432 -j ACCEPT

iptables -A FORWARD -s 192168105 -d 19216832 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 19216832 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 19216832 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 13: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iquestSencillo no Ahora basta con hacer copy-paste de estas reglas y aplicarlas y ajustarlas en su sistema (quizaacutesuses PostgreSQL) Si tiene miedo de perder el control de una maacutequina remota pruebe el script en una maacutequinalocal y aseguacuterese de que aplica lo que usted quiere Funcionar va a funcionar seguro

- Versioacuten con DROP por defecto

Vale queremos que nuestra maquina sea inexcrutable y que solo tenga abierto un puerto imprescindible para dardeterminado servicio Con DROP por defecto se protege la maquina perfectamente aunque hay que antildeadiralgunas reglas para que la propia maacutequina sea capaz de salir a internetiquest Para queacute hombre porque la maquinanecesita actualizaciones consultar DNS por udp sacar correo etc

Veamos un posible script

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar no empezamos a abrir porque ahora esta TODO denegado Debemos decir de manera explicita queacute es lo que queremos abrir

Operar en localhost sin limitacionessbiniptables -A INPUT -i lo -j ACCEPTsbiniptables -A OUTPUT -o lo -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

Este es el servicio que DA la maquina a internet por tanto todo paquete entrante se acepta para ese puerto y los salientes vinculados se aceptansbiniptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPT

Permitimos que la maquina pueda salir a la websbiniptables -A INPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

Ya tambien a webs segurassbiniptables -A INPUT -p tcp -m tcp --sport 443 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

Reglas necesarias para FTP pasivo y activo Se permiten conexiones entrantes YA establecidassbiniptables -A INPUT -p tcp -m tcp --sport 2021 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 2021 -j ACCEPTsbiniptables -A INPUT -p tcp -m tcp --sport 102465535 --dport 102465535 -m state --state ESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 102465535 -m state --state NEWRELATEDESTABLISHED -j ACCEPT

Permitimos la consulta a un primer DNSsbiniptables -A INPUT -s 211956439 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 211956439 -p udp -m udp --dport 53 -j ACCEPT

Permitimos la consulta a un segundo DNSsbiniptables -A INPUT -s 2119579109 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 2119579109 -p udp -m udp --dport 53 -j ACCEPT

Permitimos consultar el reloj de horaredirises (un pentium166) para sincronizarsesbiniptables -A INPUT -s 1302063166 -p udp -m udp --dport 123 -j ACCEPTsbiniptables -A OUTPUT -d 1302063166 -p udp -m udp --sport 123 -j ACCEPT

Barrera de backup por si cambiamos a modo ACCEPT temporalmente Con esto protegemos los puertos reservados y otros well-knownsbiniptables -A INPUT -p tcp -m tcp --dport 11024 -j DROPsbiniptables -A INPUT -p udp -m udp --dport 11024 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 1723 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 3306 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 5432 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

32 Firewall de una LAN con salida a internetAhora vamos a ver una configuracioacuten de firewall iptables para el tiacutepico caso de red local que necesita salida ainternet

Figura 6 esquema de f irewall tiacutepico entre red local e internet

iquestQueacute es lo que hace falta Obviamente una regla que haga NAT hacia fuera (enmascaramiento en iptables) conlo que se hariacutea dos veces NAT en el firewall y en el router Entre el router y el firewall lo normal es que haya una redprivada (19216811 y 19216812 por ejemplo) aunque dependiendo de las necesidades puede que los dostengan IP puacuteblica El router se supone que hace un NAT completo hacia dentro (quizaacute salvo puerto 23) o sea quedesde el exterior no se llega al router si no que de forma transparente se choca contra el firewall Lo normal eneste tipo de firewalls es poner la poliacutetica por defecto de FORWARD en denegar (DROP) pero eso lo vemos maacutesadelanteVeamos como seriacutea este firewall-gateway

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Pero como somos muy malvados queremos que los empleados solamente puedan navegar por internetdenegando el acceso a Kazaa o edonkey Esta seriacutea una configuracioacuten simple pero efectiva

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con filtro para que solo se pueda navegar

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor decorreo Darle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esospuertos o si no estaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA lared local De todas formas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cadacosa bastante les cuesta a muchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos alpuacuteblico en el propio firewall nos la estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla enla DMZ Supongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil ycon una ip dinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa conuna conexioacuten ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

iexclMaacutes difiacutecil todaviacutea Ahora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IISde un servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para unaempresa externa En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacuteahacer faacutecilmente con un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y alconectarse a eacutel te lleva hasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacerredirecciones con una ventaja no perdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En finveamos la configuracioacuten con las nuevas reglas de DNAT

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables -t nat -A PREROUTING -s 22123124181 -i eth0 -p tcp --dport 3389 -j DNAT --to 19216810123389

Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones ylos servicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de lared local Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red locales evitar escaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buenaconfiguracioacuten con denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de redpor 6euro o dolares y crear una DMZ

33 Firewall de una LAN con salida a internet con DMZ

Bueno esto se va complicando Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos lascosas bien y colocamos ese servidor IIS en una DMZ

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 7 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En este tipo de firewall hay que permitir- Acceso de la red local a internet- Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZ- Acceso del servidor de la DMZ a una BBDD de la LAN- Obviamente bloquear el resto de acceso de la DMZ hacia la LANiquestQueacute tipo de reglas son las que hay que usar para filtrar el traacutefico entre la DMZ y la LAN Solo pueden ser lasFORWARD ya que estamos filtrando entre distintas redes no son paquetes destinados al propio firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 19216832443

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 19216832 -d 192168105 -p tcp --dport 5432 -j ACCEPT

iptables -A FORWARD -s 192168105 -d 19216832 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 19216832 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 19216832 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 14: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

Este es el servicio que DA la maquina a internet por tanto todo paquete entrante se acepta para ese puerto y los salientes vinculados se aceptansbiniptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPT

Permitimos que la maquina pueda salir a la websbiniptables -A INPUT -p tcp -m tcp --sport 80 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 80 -j ACCEPT

Ya tambien a webs segurassbiniptables -A INPUT -p tcp -m tcp --sport 443 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 443 -j ACCEPT

Reglas necesarias para FTP pasivo y activo Se permiten conexiones entrantes YA establecidassbiniptables -A INPUT -p tcp -m tcp --sport 2021 -m state --state RELATEDESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 2021 -j ACCEPTsbiniptables -A INPUT -p tcp -m tcp --sport 102465535 --dport 102465535 -m state --state ESTABLISHED -j ACCEPTsbiniptables -A OUTPUT -p tcp -m tcp --dport 102465535 -m state --state NEWRELATEDESTABLISHED -j ACCEPT

Permitimos la consulta a un primer DNSsbiniptables -A INPUT -s 211956439 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 211956439 -p udp -m udp --dport 53 -j ACCEPT

Permitimos la consulta a un segundo DNSsbiniptables -A INPUT -s 2119579109 -p udp -m udp --sport 53 -j ACCEPTsbiniptables -A OUTPUT -d 2119579109 -p udp -m udp --dport 53 -j ACCEPT

Permitimos consultar el reloj de horaredirises (un pentium166) para sincronizarsesbiniptables -A INPUT -s 1302063166 -p udp -m udp --dport 123 -j ACCEPTsbiniptables -A OUTPUT -d 1302063166 -p udp -m udp --sport 123 -j ACCEPT

Barrera de backup por si cambiamos a modo ACCEPT temporalmente Con esto protegemos los puertos reservados y otros well-knownsbiniptables -A INPUT -p tcp -m tcp --dport 11024 -j DROPsbiniptables -A INPUT -p udp -m udp --dport 11024 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 1723 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 3306 -j DROPsbiniptables -A INPUT -p tcp -m tcp --dport 5432 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

32 Firewall de una LAN con salida a internetAhora vamos a ver una configuracioacuten de firewall iptables para el tiacutepico caso de red local que necesita salida ainternet

Figura 6 esquema de f irewall tiacutepico entre red local e internet

iquestQueacute es lo que hace falta Obviamente una regla que haga NAT hacia fuera (enmascaramiento en iptables) conlo que se hariacutea dos veces NAT en el firewall y en el router Entre el router y el firewall lo normal es que haya una redprivada (19216811 y 19216812 por ejemplo) aunque dependiendo de las necesidades puede que los dostengan IP puacuteblica El router se supone que hace un NAT completo hacia dentro (quizaacute salvo puerto 23) o sea quedesde el exterior no se llega al router si no que de forma transparente se choca contra el firewall Lo normal eneste tipo de firewalls es poner la poliacutetica por defecto de FORWARD en denegar (DROP) pero eso lo vemos maacutesadelanteVeamos como seriacutea este firewall-gateway

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Pero como somos muy malvados queremos que los empleados solamente puedan navegar por internetdenegando el acceso a Kazaa o edonkey Esta seriacutea una configuracioacuten simple pero efectiva

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con filtro para que solo se pueda navegar

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor decorreo Darle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esospuertos o si no estaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA lared local De todas formas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cadacosa bastante les cuesta a muchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos alpuacuteblico en el propio firewall nos la estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla enla DMZ Supongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil ycon una ip dinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa conuna conexioacuten ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

iexclMaacutes difiacutecil todaviacutea Ahora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IISde un servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para unaempresa externa En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacuteahacer faacutecilmente con un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y alconectarse a eacutel te lleva hasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacerredirecciones con una ventaja no perdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En finveamos la configuracioacuten con las nuevas reglas de DNAT

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables -t nat -A PREROUTING -s 22123124181 -i eth0 -p tcp --dport 3389 -j DNAT --to 19216810123389

Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones ylos servicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de lared local Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red locales evitar escaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buenaconfiguracioacuten con denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de redpor 6euro o dolares y crear una DMZ

33 Firewall de una LAN con salida a internet con DMZ

Bueno esto se va complicando Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos lascosas bien y colocamos ese servidor IIS en una DMZ

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 7 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En este tipo de firewall hay que permitir- Acceso de la red local a internet- Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZ- Acceso del servidor de la DMZ a una BBDD de la LAN- Obviamente bloquear el resto de acceso de la DMZ hacia la LANiquestQueacute tipo de reglas son las que hay que usar para filtrar el traacutefico entre la DMZ y la LAN Solo pueden ser lasFORWARD ya que estamos filtrando entre distintas redes no son paquetes destinados al propio firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 19216832443

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 19216832 -d 192168105 -p tcp --dport 5432 -j ACCEPT

iptables -A FORWARD -s 192168105 -d 19216832 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 19216832 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 19216832 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 15: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

32 Firewall de una LAN con salida a internetAhora vamos a ver una configuracioacuten de firewall iptables para el tiacutepico caso de red local que necesita salida ainternet

Figura 6 esquema de f irewall tiacutepico entre red local e internet

iquestQueacute es lo que hace falta Obviamente una regla que haga NAT hacia fuera (enmascaramiento en iptables) conlo que se hariacutea dos veces NAT en el firewall y en el router Entre el router y el firewall lo normal es que haya una redprivada (19216811 y 19216812 por ejemplo) aunque dependiendo de las necesidades puede que los dostengan IP puacuteblica El router se supone que hace un NAT completo hacia dentro (quizaacute salvo puerto 23) o sea quedesde el exterior no se llega al router si no que de forma transparente se choca contra el firewall Lo normal eneste tipo de firewalls es poner la poliacutetica por defecto de FORWARD en denegar (DROP) pero eso lo vemos maacutesadelanteVeamos como seriacutea este firewall-gateway

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Pero como somos muy malvados queremos que los empleados solamente puedan navegar por internetdenegando el acceso a Kazaa o edonkey Esta seriacutea una configuracioacuten simple pero efectiva

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con filtro para que solo se pueda navegar

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor decorreo Darle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esospuertos o si no estaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA lared local De todas formas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cadacosa bastante les cuesta a muchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos alpuacuteblico en el propio firewall nos la estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla enla DMZ Supongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil ycon una ip dinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa conuna conexioacuten ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

iexclMaacutes difiacutecil todaviacutea Ahora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IISde un servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para unaempresa externa En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacuteahacer faacutecilmente con un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y alconectarse a eacutel te lleva hasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacerredirecciones con una ventaja no perdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En finveamos la configuracioacuten con las nuevas reglas de DNAT

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables -t nat -A PREROUTING -s 22123124181 -i eth0 -p tcp --dport 3389 -j DNAT --to 19216810123389

Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones ylos servicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de lared local Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red locales evitar escaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buenaconfiguracioacuten con denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de redpor 6euro o dolares y crear una DMZ

33 Firewall de una LAN con salida a internet con DMZ

Bueno esto se va complicando Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos lascosas bien y colocamos ese servidor IIS en una DMZ

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 7 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En este tipo de firewall hay que permitir- Acceso de la red local a internet- Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZ- Acceso del servidor de la DMZ a una BBDD de la LAN- Obviamente bloquear el resto de acceso de la DMZ hacia la LANiquestQueacute tipo de reglas son las que hay que usar para filtrar el traacutefico entre la DMZ y la LAN Solo pueden ser lasFORWARD ya que estamos filtrando entre distintas redes no son paquetes destinados al propio firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 19216832443

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 19216832 -d 192168105 -p tcp --dport 5432 -j ACCEPT

iptables -A FORWARD -s 192168105 -d 19216832 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 19216832 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 19216832 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 16: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Pero como somos muy malvados queremos que los empleados solamente puedan navegar por internetdenegando el acceso a Kazaa o edonkey Esta seriacutea una configuracioacuten simple pero efectiva

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con filtro para que solo se pueda navegar

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor decorreo Darle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esospuertos o si no estaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA lared local De todas formas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cadacosa bastante les cuesta a muchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos alpuacuteblico en el propio firewall nos la estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla enla DMZ Supongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil ycon una ip dinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa conuna conexioacuten ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

iexclMaacutes difiacutecil todaviacutea Ahora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IISde un servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para unaempresa externa En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacuteahacer faacutecilmente con un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y alconectarse a eacutel te lleva hasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacerredirecciones con una ventaja no perdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En finveamos la configuracioacuten con las nuevas reglas de DNAT

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables -t nat -A PREROUTING -s 22123124181 -i eth0 -p tcp --dport 3389 -j DNAT --to 19216810123389

Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones ylos servicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de lared local Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red locales evitar escaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buenaconfiguracioacuten con denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de redpor 6euro o dolares y crear una DMZ

33 Firewall de una LAN con salida a internet con DMZ

Bueno esto se va complicando Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos lascosas bien y colocamos ese servidor IIS en una DMZ

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 7 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En este tipo de firewall hay que permitir- Acceso de la red local a internet- Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZ- Acceso del servidor de la DMZ a una BBDD de la LAN- Obviamente bloquear el resto de acceso de la DMZ hacia la LANiquestQueacute tipo de reglas son las que hay que usar para filtrar el traacutefico entre la DMZ y la LAN Solo pueden ser lasFORWARD ya que estamos filtrando entre distintas redes no son paquetes destinados al propio firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 19216832443

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 19216832 -d 192168105 -p tcp --dport 5432 -j ACCEPT

iptables -A FORWARD -s 192168105 -d 19216832 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 19216832 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 19216832 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 17: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor decorreo Darle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esospuertos o si no estaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA lared local De todas formas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cadacosa bastante les cuesta a muchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos alpuacuteblico en el propio firewall nos la estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla enla DMZ Supongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil ycon una ip dinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa conuna conexioacuten ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

iexclMaacutes difiacutecil todaviacutea Ahora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IISde un servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para unaempresa externa En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacuteahacer faacutecilmente con un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y alconectarse a eacutel te lleva hasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacerredirecciones con una ventaja no perdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En finveamos la configuracioacuten con las nuevas reglas de DNAT

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables -t nat -A PREROUTING -s 22123124181 -i eth0 -p tcp --dport 3389 -j DNAT --to 19216810123389

Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones ylos servicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de lared local Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red locales evitar escaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buenaconfiguracioacuten con denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de redpor 6euro o dolares y crear una DMZ

33 Firewall de una LAN con salida a internet con DMZ

Bueno esto se va complicando Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos lascosas bien y colocamos ese servidor IIS en una DMZ

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 7 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En este tipo de firewall hay que permitir- Acceso de la red local a internet- Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZ- Acceso del servidor de la DMZ a una BBDD de la LAN- Obviamente bloquear el resto de acceso de la DMZ hacia la LANiquestQueacute tipo de reglas son las que hay que usar para filtrar el traacutefico entre la DMZ y la LAN Solo pueden ser lasFORWARD ya que estamos filtrando entre distintas redes no son paquetes destinados al propio firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 19216832443

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 19216832 -d 192168105 -p tcp --dport 5432 -j ACCEPT

iptables -A FORWARD -s 192168105 -d 19216832 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 19216832 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 19216832 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 18: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor decorreo Darle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esospuertos o si no estaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA lared local De todas formas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cadacosa bastante les cuesta a muchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos alpuacuteblico en el propio firewall nos la estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla enla DMZ Supongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil ycon una ip dinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa conuna conexioacuten ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

iexclMaacutes difiacutecil todaviacutea Ahora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IISde un servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para unaempresa externa En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacuteahacer faacutecilmente con un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y alconectarse a eacutel te lleva hasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacerredirecciones con una ventaja no perdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En finveamos la configuracioacuten con las nuevas reglas de DNAT

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables -t nat -A PREROUTING -s 22123124181 -i eth0 -p tcp --dport 3389 -j DNAT --to 19216810123389

Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones ylos servicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de lared local Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red locales evitar escaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buenaconfiguracioacuten con denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de redpor 6euro o dolares y crear una DMZ

33 Firewall de una LAN con salida a internet con DMZ

Bueno esto se va complicando Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos lascosas bien y colocamos ese servidor IIS en una DMZ

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 7 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En este tipo de firewall hay que permitir- Acceso de la red local a internet- Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZ- Acceso del servidor de la DMZ a una BBDD de la LAN- Obviamente bloquear el resto de acceso de la DMZ hacia la LANiquestQueacute tipo de reglas son las que hay que usar para filtrar el traacutefico entre la DMZ y la LAN Solo pueden ser lasFORWARD ya que estamos filtrando entre distintas redes no son paquetes destinados al propio firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 19216832443

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 19216832 -d 192168105 -p tcp --dport 5432 -j ACCEPT

iptables -A FORWARD -s 192168105 -d 19216832 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 19216832 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 19216832 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 19: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

iexclMaacutes difiacutecil todaviacutea Ahora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IISde un servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para unaempresa externa En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacuteahacer faacutecilmente con un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y alconectarse a eacutel te lleva hasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacerredirecciones con una ventaja no perdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En finveamos la configuracioacuten con las nuevas reglas de DNAT

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables -t nat -A PREROUTING -s 22123124181 -i eth0 -p tcp --dport 3389 -j DNAT --to 19216810123389

Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones ylos servicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de lared local Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red locales evitar escaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buenaconfiguracioacuten con denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de redpor 6euro o dolares y crear una DMZ

33 Firewall de una LAN con salida a internet con DMZ

Bueno esto se va complicando Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos lascosas bien y colocamos ese servidor IIS en una DMZ

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 7 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En este tipo de firewall hay que permitir- Acceso de la red local a internet- Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZ- Acceso del servidor de la DMZ a una BBDD de la LAN- Obviamente bloquear el resto de acceso de la DMZ hacia la LANiquestQueacute tipo de reglas son las que hay que usar para filtrar el traacutefico entre la DMZ y la LAN Solo pueden ser lasFORWARD ya que estamos filtrando entre distintas redes no son paquetes destinados al propio firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 19216832443

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 19216832 -d 192168105 -p tcp --dport 5432 -j ACCEPT

iptables -A FORWARD -s 192168105 -d 19216832 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 19216832 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 19216832 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 20: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

iexclMaacutes difiacutecil todaviacutea Ahora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IISde un servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para unaempresa externa En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacuteahacer faacutecilmente con un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y alconectarse a eacutel te lleva hasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacerredirecciones con una ventaja no perdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En finveamos la configuracioacuten con las nuevas reglas de DNAT

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con servicios abiertos de puerto 25 110 y 1723 Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables -t nat -A PREROUTING -s 22123124181 -i eth0 -p tcp --dport 3389 -j DNAT --to 19216810123389

Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones ylos servicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de lared local Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red locales evitar escaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buenaconfiguracioacuten con denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de redpor 6euro o dolares y crear una DMZ

33 Firewall de una LAN con salida a internet con DMZ

Bueno esto se va complicando Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos lascosas bien y colocamos ese servidor IIS en una DMZ

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 7 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En este tipo de firewall hay que permitir- Acceso de la red local a internet- Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZ- Acceso del servidor de la DMZ a una BBDD de la LAN- Obviamente bloquear el resto de acceso de la DMZ hacia la LANiquestQueacute tipo de reglas son las que hay que usar para filtrar el traacutefico entre la DMZ y la LAN Solo pueden ser lasFORWARD ya que estamos filtrando entre distintas redes no son paquetes destinados al propio firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 19216832443

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 19216832 -d 192168105 -p tcp --dport 5432 -j ACCEPT

iptables -A FORWARD -s 192168105 -d 19216832 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 19216832 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 19216832 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 21: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables -t nat -A PREROUTING -s 22123124181 -i eth0 -p tcp --dport 3389 -j DNAT --to 19216810123389

Nota eth0 es el interfaz conectado al router y eth1 a la LAN El localhost se deja (por ejemplo conexiones locales a mysql)iptables -A INPUT -i lo -j ACCEPT

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -i eth1 -j ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables -A INPUT -s 00000 -p tcp --dport 25 -j ACCEPT Abrimos el pop3iptables -A INPUT -s 00000 -p tcp --dport 110 -j ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables -A INPUT -s 2114517624 -p tcp --dport 1723 -j ACCEPT

Ahora con regla FORWARD filtramos el acceso de la red local al exterior Como se explica antes a los paquetes que no van dirigidos al propio firewall se les aplican reglas de FORWARD

Aceptamos que vayan a puertos 80iptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 80 -j ACCEPT Aceptamos que vayan a puertos httpsiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 443 -j ACCEPT

Aceptamos que consulten los DNSiptables -A FORWARD -s 19216810024 -i eth1 -p tcp --dport 53 -j ACCEPTiptables -A FORWARD -s 19216810024 -i eth1 -p udp --dport 53 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones ylos servicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de lared local Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red locales evitar escaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buenaconfiguracioacuten con denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de redpor 6euro o dolares y crear una DMZ

33 Firewall de una LAN con salida a internet con DMZ

Bueno esto se va complicando Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos lascosas bien y colocamos ese servidor IIS en una DMZ

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 7 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En este tipo de firewall hay que permitir- Acceso de la red local a internet- Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZ- Acceso del servidor de la DMZ a una BBDD de la LAN- Obviamente bloquear el resto de acceso de la DMZ hacia la LANiquestQueacute tipo de reglas son las que hay que usar para filtrar el traacutefico entre la DMZ y la LAN Solo pueden ser lasFORWARD ya que estamos filtrando entre distintas redes no son paquetes destinados al propio firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 19216832443

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 19216832 -d 192168105 -p tcp --dport 5432 -j ACCEPT

iptables -A FORWARD -s 192168105 -d 19216832 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 19216832 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 19216832 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 22: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y denegamos el resto Si se necesita alguno ya avisaraniptables -A FORWARD -s 19216810024 -i eth1 -j DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -i eth0 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -i eth0 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 10000 -j DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables -A INPUT -s 00000 -i eth0 -p tcp --dport 1723 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones ylos servicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de lared local Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red locales evitar escaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buenaconfiguracioacuten con denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de redpor 6euro o dolares y crear una DMZ

33 Firewall de una LAN con salida a internet con DMZ

Bueno esto se va complicando Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos lascosas bien y colocamos ese servidor IIS en una DMZ

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 7 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En este tipo de firewall hay que permitir- Acceso de la red local a internet- Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZ- Acceso del servidor de la DMZ a una BBDD de la LAN- Obviamente bloquear el resto de acceso de la DMZ hacia la LANiquestQueacute tipo de reglas son las que hay que usar para filtrar el traacutefico entre la DMZ y la LAN Solo pueden ser lasFORWARD ya que estamos filtrando entre distintas redes no son paquetes destinados al propio firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 19216832443

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 19216832 -d 192168105 -p tcp --dport 5432 -j ACCEPT

iptables -A FORWARD -s 192168105 -d 19216832 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 19216832 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 19216832 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 23: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 7 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos

En este tipo de firewall hay que permitir- Acceso de la red local a internet- Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZ- Acceso del servidor de la DMZ a una BBDD de la LAN- Obviamente bloquear el resto de acceso de la DMZ hacia la LANiquestQueacute tipo de reglas son las que hay que usar para filtrar el traacutefico entre la DMZ y la LAN Solo pueden ser lasFORWARD ya que estamos filtrando entre distintas redes no son paquetes destinados al propio firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -F

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 19216832443

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 19216832 -d 192168105 -p tcp --dport 5432 -j ACCEPT

iptables -A FORWARD -s 192168105 -d 19216832 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 19216832 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 19216832 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 24: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 19216832443

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 19216832 -d 192168105 -p tcp --dport 5432 -j ACCEPT

iptables -A FORWARD -s 192168105 -d 19216832 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 19216832 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 19216832 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 25: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Vamos a ver si las maacutequinas de la DMZ tienen una ip puacuteblica hay que tener muchiacutesimo cuidado de no permitir elFORWARD por defecto Si en la DMZ hay ip puacuteblica NO ES NECESARIO HACER REDIRECCIONES de puertosino que basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando porejemplo tenemos dos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto80 No hay manera de saberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPspuacuteblicas o en su defecto usar puertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia elexterior de la DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al routercomo llegar hasta esa ip puacuteblica Asiacute podriacutea ser esta red

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 26: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 8 esquema de f irewall entre red local e internet con zona DMZ para serv idores expuestos usando IPs puacuteblicas

Y este podriacutea ser un firewall adecuadobinsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ pero con IPs puacuteblicas Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 27: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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 19216810024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZiptables -A FORWARD -d 21219489152 -p tcp -dport 80 -j ACCEPTiptables -A FORWARD -d 21219489152 -p tcp -dport 443 -j ACCEPTiptables -A FORWARD -d 2121948915030 -j DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables -A FORWARD -s 21219489152 -d 192168105 -p tcp --dport 5432 -j ACCEPT

en el otro sentido lo mismoiptables -A FORWARD -s 192168105 -d 21219489152 -p tcp --sport 5432 -j ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp --sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 21219489152 -i eth2 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 28: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables -A FORWARD -s 19216810024 -d 21219489152 -p tcp -sport 102465535 --dport 3389 -j ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables -A FORWARD -s 21219489152 -d 19216810024 -p tcp --sport 3389 --dport 102465535 -j ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 21219489152 -d 19216810024 -j DROP

Lo que nos lleva a dos cuestionesiquestPor queacute hay que explicitar la abertura en uno y otro sentido Porque la tercera regla cierra todo lo que va de laDMZ a la red local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegarhasta la DMZ y que a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentidoseraacute el pan de cada diacutea en un iptables con poliacutetica DROP por defecto mejor proteccioacuten pero maacutes trabajo

iquestPor queacute se explicita el puerto de origendestino 102465535 en la primera y segunda regla Imaginemos que unhacker logra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas elhacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo eltcp3389 cosa faacutecil para un hacker que sepa algo de C o que tenga el programa pertinente a mano De todasformas el hacker tendriacutea que saber que existe ese tipo de reglas si es listo probara con puertos de gestioacuten o conpuertos netbios El problema es que se deja un viacutenculo con la LAN bien para administrarlo remotamente o para

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 29: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

establecer relaciones de confianza y ahiacute es donde reside el peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta aotro puerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewallprotegeremos un poco mejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

34 Firewall de una LAN con salida a internet y VPNS

En principio este caso no nos tendriacutea que dar mayor problema aunque la primera vez que lo montemos elenmascaramiento nos jugaraacute una mala pasada Por eso conviene echar un vistazo en este caso

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 30: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 9 esquema de f irewall entre red local e internet con zona DMZ y delegaciones que acceden a DMZ

Supongamos que entre los routers ya se ha establecido un tunel (con Ciscos se haria creando un interfaz Tunnel) yque si el firewall nos deja podriacuteamos llegar de la central a las delegaciones y viceversa usando las IPs privadasVaya que se puede hacer un ping desde la central a 19216830x y nos responde Para ello es imprescindible queel router de la central tenga una ruta metida para llegar a 19216810024 y por supuesto cada una ruta para cadadelegacioacuten Antes de meterse en el firewall hay que asegurar la visibilidad entre los routers y poder llegar a sus IPs

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 31: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

privadas haciendo ping

Supongamos tambieacuten que en la central esta el servidor de correo que loacutegicamente debe tener el puerto 25accesible desde internet y debe ser accesible desde las delegaciones para puerto 25 110 (pop3) o 143(imap) Lasalida a internet (web ftp etc) cada uno la hace por su lado

Veamos una posible configuracioacuten para este caso

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre red-local e internet con DMZ y delegaciones Las delegaciones deben tener acceso al correo de la DMZ Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPTiptables -t nat -P PREROUTING ACCEPTiptables -t nat -P POSTROUTING ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN Todo lo que venga por el exterior y vaya al puerto 25 lo redirigimos a la maquina de la DMZiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j DNAT --to 1921683225

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 32: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 110 -j DNAT --to 19216832110

Todo lo que venga por el interfaz del router(eth0) y vaya al 110 siempre que sea una delegacion se acepta y redirijeiptables -t nat -A PREROUTING -s 19216820024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

iptables -t nat -A PREROUTING -s 19216830024 -i eth0 -p tcp --dport 143 -j DNAT --to 19216832143

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

Al firewall tenemos acceso desde la red localiptables -A INPUT -s 19216810024 -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) Cuidado con este enmascaramientoiptables -t nat -A POSTROUTING -s 19216810024 -o eth0 -j MASQUERADEiptables -t nat -A POSTROUTING -s 1921683024 -o eth0 -j MASQUERADE

Con esto permitimos hacer forward de paquetes en el firewall o sea que otras maacutequinas puedan salir a traves del firewallecho 1 gt procsysnetipv4ip_forward

Para que desde la red local se salga hacia fuera hay que ENMASCARAR pero que pasa con las delegaciones tambien estan fuera Y NO HAY QUE ENMASCARAR debemos meter una regla FORWARD explicita para que no enmascare porque si no una peticioacuten de la LAN a otra delegacion no se meteria en el tuneliptables -A FORWARD -s 19216810024 -d 19216820024 -j ACCEPTiptables -A FORWARD -s 19216820024 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 19216810024 -d 19216830024 -j ACCEPTiptables -A FORWARD -s 19216830024 -d 19216810024 -j ACCEPT

Abrimos el acceso para que se pueda aceder a la DMZ desde la LAN a puertos de correo

En principio lo que va de LAN -gt DMZ se aceptaiptables -A FORWARD -s 19216810024 -d 1921683024 -j ACCEPT

Luedo desde la DMZ a la LAN solo se acepta 25110143

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 33: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 1921683024 -p tcp --sport 25 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

iptables -A FORWARD -s 1921683024 -p tcp --sport 143 -d 19216810024 -j ACCEPT

Cerramos el acceso de la DMZ a la LANiptables -A FORWARD -s 1921683024 -d 19216810024 -j DROP

Cerramos el acceso de la DMZ al propio firewalliptables -A INPUT -s 1921683024 -i eth2 -j DROP

Y ahora cerramos los accesos indeseados del exterior Nota 00000 significa cualquier red

Cerramos el rango de puerto bien conocidoiptables -A INPUT -s 00000 -p tcp -dport 11024 -j DROPiptables -A INPUT -s 00000 -p udp -dport 11024 -j DROP

Cerramos un puerto de gestioacuten webminiptables -A INPUT -s 00000 -p tcp -dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Se han remarcado en negrita las reglas FORWARD entre IPs privadas de delegaciones ya que sin esas reglas ycon el enmascaramiento de por medio no se podriacutea acceder a las delegaciones Cabe resaltar que entredelegaciones no hay visibilidad total solamente la central veriacutea a todas las demaacutes y las delegaciones solamente lacentralLa delegaciones accederiacutean al servidor de correo con una redireccioacuten o sea que ellos se configurariacutean el servidorde correo como 192168101 mientras que desde la LAN se accederiacutea directamente Se puede hacer de distintasmaneras

Lo interesante seriacutea poner ese firewall con DROP por defecto se trataraacute de mostrar esa configuracioacuten al final

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 34: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

35 Firewall puro y duro entre redes

En este caso olvideacutemonos de redes locales y de NAT Aquiacute solo tendremos reglas de filtrado INPUT y FORWARDPongamos que tenemos el siguiente escenario

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 35: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Figura 10 esquema de f irewall entre redes en la que solo se f iltra y no se hace NAT

En el firewall debemos indicar una serie de reglas para proteger los equipos que estaacuten al otro lado de estedispositivo todos ellos de la red 21134149024Cada uno de ellos da un servicio determinado y puede estar gestionado desde distintas IPs lo que significa quehabraacute que dar acceso a determinados puertos de gestioacuten (22 3389 etc)Este podriacutea ser el aspecto del script del firewall

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT ACCEPTiptables -P OUTPUT ACCEPTiptables -P FORWARD ACCEPT

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPT

Para el resto no hay acceso al firewalliptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPT

Acceso a nuestra ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 36: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341492 -j DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341493 -j DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341494 -j DROP

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPT

Acceso a una ip para gestionarlo

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 37: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341496 -j DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341497 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertosprotegeremos de manera eficaz todos lo puertos abiertos de las maacutequinas

36 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pecho iquestQueacute supone el hecho de establecer como poliacutetica por defecto la denegacioacuten Se debe explicitar cada conexioacuten permitida en los dos sentidos Se debe conocer perfectamente queacute debe estar abierto y queacute no Es muchos maacutes difiacutecil de mantener y si se hace conviene hacerlo desde el principio No todo es maacutes trabajo tambieacuten supone un firewall mucho maacutes seguro

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 38: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

En el ejemplo de la DMZ ya se presentaba esta situacioacuten en las reglas forward de una a otra red Para ilustrar elDROP por defecto vamos a mostrar la configuracioacuten del ejemplo anterior de firewall entre redes pero con poliacuteticapor defecto DROP

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para firewall entre redes con DROP por defecto Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defecto DROPiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar Nota eth0 es el interfaz conectado al router y eth1 a la LAN

A nuestro firewall tenemos acceso total desde la nuestra IPiptables -A INPUT -s 2101955515 -j ACCEPTiptables -A OUTPUT -d 2101955515 -j ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables -A INPUT -s 00000 -j DROP

Ahora podemos ir metiendo las reglas para cada servidor Como seraacuten paquetes con destino a otras maacutequinas se aplica FORWARD

Servidor WEB 211341492 Acceso a puerto 80iptables -A FORWARD -d 211341492 -p tcp --dport 80 -j ACCEPTiptables -A FORWARD -s 211341492 -p tcp --sport 80 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341492 -p tcp --dport 22 -j ACCEPT

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 39: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A FORWARD -s 211341492 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables -A FORWARD -d 211341493 -p tcp --dport 25 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 25 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 110 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 110 -j ACCEPT

iptables -A FORWARD -d 211341493 -p tcp --dport 143 -j ACCEPTiptables -A FORWARD -s 211341493 -p tcp --sport 143 -j ACCEPT

Acceso a gestion SNMPiptables -A FORWARD -s 2101955515 -d 211341493 -p udp --dport 169 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p udp --sport 169 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341493 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341493 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables -A FORWARD -d 211341494 -p tcp --dport 66666668 -j ACCEPTiptables -A FORWARD -s 211341494 -p tcp --sport 66666668 -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 2101955515 -d 211341494 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341494 -d 2101955515 -p tcp --sport 22 -j ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables -A FORWARD -d 211341495 -p tcp --dport news -j ACCEPTiptables -A FORWARD -s 211341495 -p tcp --sport news -j ACCEPT

Acceso a nuestra ip para gestionarloiptables -A FORWARD -s 21319468115 -d 211341495 -p tcp --dport 22 -j ACCEPT

iptables -A FORWARD -s 211341495 -d 21319468115 -p tcp --sport 22 -j ACCEPT

El resto cerrariptables -A FORWARD -d 211341495 -j DROP

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 40: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Servidor B2B 211341496 Acceso a puerto 443iptables -A FORWARD -d 211341496 -p tcp --dport 443 -j ACCEPTiptables -A FORWARD -s 211341496 -p tcp --sport 443 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 813412956 -d 211341496 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341496 -d 813412956 -p tcp --sport 3389 -j ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables -A FORWARD -d 211341497 -p tcp --dport 1494 -j ACCEPTiptables -A FORWARD -s 211341497 -p tcp --sport 1494 -j ACCEPT

Acceso a una ip para gestionarloiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 3389 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 3389 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p tcp --dport 1434 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p tcp --sport 1434 -j ACCEPT

acceso a otro puerto quiza de BBDDiptables -A FORWARD -s 195552342 -d 211341497 -p udp --dport 1433 -j ACCEPT

iptables -A FORWARD -s 211341497 -d 195552342 -p udp --sport 1433 -j ACCEPT

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

Ya esta hemos levantado un verdadero muro entre internet y el conjunto de servidores que estaTras el firewall No se puede ni hacer un ping a las maacutequinas salvo que se haya dado acceso total a una ip Siquisieramos dar acceso al ping pondriacuteamos algo asiacute

Es maacutes llevadero aplicar el DROP por defecto cuando el firewall es para la propia maacutequina El primer escenario deesta manual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

binsh SCRIPT de IPTABLES - ejemplo del manual de iptables Ejemplo de script para proteger la propia maacutequina

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 41: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

con poliacutetica por defecto DROP Pello Xabier Altadill Izura wwwpelloinfo - pellopelloinfo

echo -n Aplicando Reglas de Firewall

FLUSH de reglasiptables -Fiptables -Xiptables -Ziptables -t nat -F

Establecemos politica por defectoiptables -P INPUT DROPiptables -P OUTPUT DROPiptables -P FORWARD DROP

Empezamos a filtrar

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

A nuestra IP le dejamos todoiptables -A INPUT -s 1956534234 -j ACCEPTiptables -A OUTPUT -d 1956534234 -j ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables -A INPUT -s 2314513423 -p tcp --dport 3306 -j ACCEPTiptables -A OUTPUT -d 2314513423 -p tcp --sport 3306 -j ACCEPT

A un disentildeador le dejamos usar el FTPiptables -A INPUT -s 803745194 -p tcp --dport 2021 -j ACCEPTiptables -A OUTPUT -d 803745194 -p tcp --sport 2021 -j ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A OUTPUT -p tcp --sport 80 -j ACCEPT

Aquiacute estaacuten las reglas de cerrar Como hemos comentado en la configuracioacuten anterior conviene tener esto escrito por si en alguacuten momento se relaja el firewall y s cambia a de DROP a ACCEPT por defecto Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen accesoiptables -A INPUT -p tcp --dport 11024 iptables -A INPUT -p udp --dport 11024

Cerramos otros puertos que estan abiertos

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 42: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

iptables -A INPUT -p tcp --dport 3306 -j DROPiptables -A INPUT -p tcp --dport 10000 -j DROPiptables -A INPUT -p udp --dport 10000 -j DROP

echo OK Verifique que lo que se aplica con iptables -L -n

Fin del script

4 Coacutemo depurar el funcionamiento del firewall

Programas uacutetilesIPTRAF Sin duda alguna uno de los programas maacutes praacutecticos para depurar el firewall es iptables ya que con elpodemos observar si la conexiones se establecen o no es un programa de consola que es aconsejable controlarya que muestra en tiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino deips y puertos traacutefico total o traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas ynos perdemos existe la posibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consolaraacutepida efectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobarsi realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacutenpueden tener los hackers de nuestro sistema

SHELL En el propio script del firewall podemos antildeadir algunas opciones para descubrir fallos de sintaxis en lasreglas Claro imaginemos que tenemos un firewall de 40 lineas y una de ellas falla cuando ejecutamos el scriptiquestCuaacutel es Es probable que el mensaje de error no aclare lo suficiente por eso se puede antildeadir algo asiacute al final decada regla

iptables -A INPUT -s 195552342 -j ACCEPT ampamp echo regla-21 okiptables -A INPUT -s 2136289145 -j ACCEPT ampamp echo regla-22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de ok

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 43: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Otra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxisincorrecta Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

Enlaces-Paacutegina oficial httpwwwnetfilterorg

-BibliografiacuteaBuilding internet firewalls todo un claacutesico -Otros tutorialesEn la propia web de netfilter-iptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfectoingleacutesEjem iptables en 21 segundos del mismo autor que este

NotasEste manual se ha desarrollado para mostrar el uso de iptables desde configuraciones simples a maacutes complejasSe ha elaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propiaNecesita continua revisioacuten

Autor

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo

Page 44: Firewall Iptables Linux

pdfcrowdcomopen in browser PRO version Are you a developer Try out the HTML to PDF API

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPV-EHU (httpwwwehues)En su diacutea tuvo entre sus manos el marroacuten de la seguridad en IBERCOM (httpwwwibercomcom ) un isp que nosolo sobrevive al temporal sino que se permite el lujo de no parar de crecerSi tienes alguna dudaasa por el foro de iptables URL httpwwwpelloinfoforumiptables

Volver arribacopy Pello Xabier Altadill Izura wwwpelloinfo