iptables manual prácticoindex-of.co.uk/infosec/doc-iptables-firewall.pdfiptables manual práctico...

26
IPTABLES Manual práctico 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. Por Pello Xabier Altadill Izura Ingeniero Informático por la UPV-EHU [email protected] (Actualizaciones y ejemplos en http://www.pello.info ) 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 puro y duro entre redes 3.5 Firewall con política por defecto DROP 4. Cómo depurar el funcionamiento del firewall Enlaces, notas, autor 1. Qué es un firewall Un firewall es un dispositivo que filtra el tráfico entre redes, como mínimo dos. El firewall puede ser un dispositivo físico o un software sobre un sistema operativo. En general debemos verlo como una caja con DOS o mas interfaces de red en la que se establecen una reglas de filtrado con las que se decide si una conexión determinada puede establecerse o no. Incluso puede ir más allá y realizar modificaciones sobre las comunicaciones, como el NAT. Esa sería la definición genérica, hoy en dia un firewall es un hardware especifico con un sistema operativo o una IOS que filtra el tráfico TCP/UDP/ICMP/../IP y decide si un paquete pasa, se modifica, se convierte o se descarta. Para que un firewall entre redes funcione como tal debe tener al menos dos tarjetas de red. Esta sería la tipología clásica de un firewall: Figura 1: esquema de firewall típico entre red local e internet Esquema típico de firewall para proteger una red local conectada a internet a través de un router. El firewall debe colocarse entre el router (con un único 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 más firewalls para establecer distintos perímetros de seguridad en torno a un sistema. Es frecuente también que se necesite exponer algún servidor a internet (como es el caso de un servidor web, un servidor de correo, etc..), y en esos casos obviamente en principio se debe aceptar cualquier conexión a ellos. Lo que se recomienda en esa situación es situar ese servidor en lugar aparte de la red, el que IPTABLES manual practico, tutorial de iptables con ejemplos 1

Upload: others

Post on 13-Oct-2020

12 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

IPTABLESManual praacutectico

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

Por Pello Xabier Altadill IzuraIngeniero Informaacutetico por la UPVminusEHUpellopelloinfo

(Actualizaciones y ejemplos en httpwwwpelloinfo )

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 puro y duro entre redes35 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 mas interfaces dered en la que se establecen una reglas de filtrado con las que se decide si una conexioacuten determinada puede establecerse ono Incluso puede ir maacutes allaacute y realizar modificaciones sobre las comunicaciones como el NAT

Esa seriacutea la definicioacuten geneacuterica hoy en dia un firewall es un hardware especifico con un sistema operativo o una IOS quefiltra el traacutefico TCPUDPICMPIP y decide si un paquete pasa se modifica se convierte o se descarta Para que unfirewall entre redes funcione como tal debe tener al menos dos tarjetas de red Esta seriacutea la tipologiacutea claacutesica de unfirewall

Figura 1 esquema de firewall 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 periacutemetros deseguridad en torno a un sistema Es frecuente tambieacuten que se necesite exponer alguacuten servidor a internet (como es el casode un servidor web un servidor de correo etc) y en esos casos obviamente en principio se debe aceptar cualquierconexioacuten a ellos Lo que se recomienda en esa situacioacuten es situar ese servidor en lugar aparte de la red el que

IPTABLES manual practico tutorial de iptables con ejemplos

1

denominamos DMZ o zona desmilitarizada El firewall tiene entonces tres entradas

Figura 2 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos

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

Figura 3 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos creado con doblefirewall(periacutemetro)

Los firewalls se pueden usar en cualquier red Es habitual tenerlos como proteccioacuten de internet en las empresas aunqueahiacute tambieacuten suelen tener una doble funcioacuten controlar los accesos externos hacia dentro y tambieacuten los internos hacia elexterior esto uacuteltimo se hace con el firewall o frecuentemente con un proxy (que tambieacuten utilizan reglas aunque de maacutesalto nivel)Tambieacuten en empresas de hosting con muchos servidores alojados lo normal es encontrarnos uno o maacutes firewalls ya seafiltrando toda la instalacioacuten o parte de ella

IPTABLES manual practico tutorial de iptables con ejemplos

2

Figura 4 esquema de firewall entre redes en la que solo se filtra 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 origen ydestino de los paquetes del protocolo tcpip En cuanto a protocolos es probable que sean capaces de filtrar muchos tiposde ellos no solo los tcp tambieacuten los udp los icmp los gre y otros protocolos vinculados a vpns Este podriacutea ser (enpseudominuslenguaje) 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 esminus Habilita el acceso a puertos de administracioacuten a determinadas IPs privilegiadasminus Enmascara el trafico de la red local hacia el exterior (NAT una peticioacuten de un pc de la LAN sale al exterior con la ippuacuteblica) para poder salir a internetminus 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 denegaraacute lo

IPTABLES manual practico tutorial de iptables con ejemplos

3

que se diga expliacutecitamente2) Poliacutetica por defecto DENEGAR todo esta denegado y solo se permitiraacute pasar por el firewall aquellos que se permitaexpliacutecitamente

Como es obvio imaginar la primera poliacutetica facilita mucho la gestioacuten del firewall ya que simplemente nos tenemos quepreocupar de proteger aquellos puertos o direcciones que sabemos que nos interesa el resto no importa tanto y se dejapasar Por ejemplo si queremos proteger una maacutequina linux podemos hacer un netstat minusln (o netstat minusan o netstat minusputa| grep LISTEN) saber que puertos estaacuten abiertos poner reglas para proteger esos puertos y ya estaacute iquestPara queacute vamos aproteger 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 momento dado seinstale un software nuevo que abra un puerto determinado o que no sepamos que determinados paquetes ICMP sonpeligrosos Si la poliacutetica por defecto es ACEPTAR y no se protege expliacutecitamente nos la estamos jugando un poco

En cambio si la poliacutetica por defecto es DENEGAR a no ser que lo permitamos expliacutecitamente el firewall se convierteen un auteacutentico MURO infranqueable El problema es que es mucho maacutes difiacutecil preparar un firewall asiacute y hay que tenermuy claro como funciona el sistema (sea iptables o el que sea) y que es lo que se tiene que abrir sin caer en la tentacioacutende empezar a meter reglas superminuspermisivasEsta configuracioacuten de firewall es la recomendada aunque no es aconsejable usarla si no se domina miacutenimamente elsistema 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 se hace conun paquete se va comparando con cada regla del firewall hasta que se encuentra una que le afecta (match) y se hace loque dicte esta regla (aceptar o denegar) despueacutes de eso NO SE MIRARAacuteN MAacuteS REGLAS para ese paquete iquestCuaacutel es elpeligro Si ponemos reglas muy permisivas entre las primeras del firewall puede que las siguientes no se apliquen y nosirvan 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 kernel 24 deeste sistema operativo Al igual que el anterior sistema ipchains un firewall de iptables no es como un servidor que loiniciamos o detenemos o que se pueda caer por un error de programacioacuten(esto es una pequentildea mentira ha tenido algunavulnerabilidad que permite DoS pero nunca tendraacute tanto peligro como las aplicaciones que escuchan en determinadopuerto TCP) iptables esta integrado con el kernel es parte del sistema operativo iquestCoacutemo se pone en marcha Realmentelo que se hace es aplicar reglas Para ellos se ejecuta el comando iptables con el que antildeadimos borramos o creamosreglas Por ello un firewall de iptables no es sino un simple script de shell en el que se van ejecutando las reglas defirewall

Notas bueno para los maacutes geeks y tocapelotas Vale se puede implementar un script de inicio en etcrcdINITd (oetcINITd ) con el que hagamos que iptables se inicie o pare como un servidor maacutes Lo podemos hacer nosotros o esprobable que venga en la distribucioacuten (como en redhat por ejemplo) Tambieacuten se pueden salvar las reglas aplicadas conel comando iptablesminussave en un fichero y gestionar ese fichero con una aplicacioacuten o frontminusend desde la X o desdewebmin

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 si elpaquete entra o sale Las reglas de firewall estaacuten a nivel de kernel y al kernel lo que le llega es un paquete (digamos unmarroacuten ) ) y tiene que decidir que hacer con eacutel El kernel lo que hace es dependiendo si el paquete es para la propiamaquina o para otra maquina consultar las reglas de firewall y decidir que hacer con el paquete seguacuten mande el firewallEste es el camino que seguiriacutea un paquete en el kernel

IPTABLES manual practico tutorial de iptables con ejemplos

4

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 otra Para lospaquetes (o datagramas seguacuten el protocolo) que van a la propia maquina se aplican las reglas INPUT y OUTPUT y parafiltrar 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 posibleaplicar reglas de NAT estas se usan para hacer redirecciones de puertos o cambios en las IPs de origen y destinoVeremos ejemplosE incluso antes de las reglas de NAT se pueden meter reglas de tipo MANGLE destinadas a modificar los paquetes sonreglas poco conocidas y es probable que no las usenPor tanto tenemos tres tipos de reglas en iptablesminus MANGLEminus NAT reglas PREROUTING POSTROUTINGminus 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 como poliacutetica pordefecto

Nota se recomienda encarecidamente ir practicando estas reglas en alguna maquina linux disponible y especialmentehacer uso de la herramienta iptraf para depurar y comprobar el funcionamiento de iptables Con iptraf podemoscomprobar si las conexiones TCPIP se llegan a establecer o no Una conexioacuten tcpip empieza con elthreeminuswayminushandshakeminus La maquina que desea conectarse a otra envia un paquete con flan SYNminus Si la otra maquina acepta envia un SYNACKminus Entonces la maacutequina establece la conexioacuten

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

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

IPTABLES manual practico tutorial de iptables con ejemplos

5

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

Ojo con el orden de las reglas

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusdport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPT

Y el resto lo cerramosiptables minusA INPUT minusp tcp minusminusdport 2021 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 22 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

IPTABLES manual practico tutorial de iptables con ejemplos

6

Nota para freaks y geeks siiii que ya lo se se puede mejorar este script usando variables se puede poner el comandocon el path completo pero limiacutetense a hacer copyminuspaste Para el resto de mortales no olvidarse de ponerle flags deejecucioacuten 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 los que notienen porque tener acceso salvo el 80 Pero cualquiera con algo de ojo se habraacute dado cuenta de que ni se filtra el UDP niel ICMP Apostariacutea cualquier cosa a que el sistema tiene alguacuten puerto udp abierto y ademaacutes peligroso como el SNMPComo he dicho anteriormente en este tipo de firewall es recordable hacer un netstat para ver que puertos estaacuten en estadode escucha (abiertos) y salve que un rootkit nos haya modificado los binarios netstat nos daraacute la informacioacuten precisa quenecesitamos Hay gente que se decanta por hacerse un nmap asiacute mismos Cuidado dependiendo de coacutemo lo ejecutemosquizaacute no nos muestre todos los puertos ya que suele mirar los bien conocidosImaginemos que hemos dado un repaso a nuestro sistema y ahora si que tenemos mejor identificados los puertos tcp yudp abiertos Pero por si acaso nos curamos en salud y al final del script cerraremos el rango de puertos del 1 al 1024 losreservados tanto para tcp como udp

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusdport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPT

Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen acceso

IPTABLES manual practico tutorial de iptables con ejemplos

7

iptables minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

iquestSencillo no Ahora basta con hacer copyminuspaste de estas reglas y aplicarlas y ajustarlas en su sistema (quizaacutes usesPostgreSQL) Si tiene miedo de perder el control de una maacutequina remota pruebe el script en una maacutequina local yaseguacuterese de que aplica lo que usted quiere Funcionar va a funcionar seguro

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

Figura 6 esquema de firewall tiacutepico entre red local e internet

iquestQueacute es lo que hace falta Obviamente una regla que haga NAT hacia fuera (enmascaramiento en iptables) con lo quese hariacutea dos veces NAT en el firewall y en el router Entre el router y el firewall lo normal es que haya una red privada(19216811 y 19216812 por ejemplo) aunque dependiendo de las necesidades puede que los dos tengan IP puacuteblica Elrouter se supone que hace un NAT completo hacia dentro (quizaacute salvo puerto 23) o sea que desde el exterior no se llegaal router si no que de forma transparente se choca contra el firewall Lo normal en este tipo de firewalls es poner lapoliacutetica por defecto de FORWARD en denegar (DROP) pero eso lo vemos maacutes adelanteVeamos como seriacutea este firewallminusgateway

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

8

iptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

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

binsh SCRIPT de IPTABLES minus ejemplo del manual de iptables Ejemplo de script para firewall entre redminuslocal e internet con filtro para que solo se pueda navegar Pello Xabier Altadill Izura wwwpelloinfo minus pellopelloinfo

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

9

iptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor de correoDarle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esos puertos o si noestaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA la red local De todasformas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cada cosa bastante les cuesta amuchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos al puacuteblico en el propio firewall nosla estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla en la DMZSupongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil y con una ipdinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa con una conexioacuten

IPTABLES manual practico tutorial de iptables con ejemplos

10

ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables minusA INPUT minuss 00000 minusp tcp minusminusdport 25 minusj ACCEPT Abrimos el pop3iptables minusA INPUT minuss 00000 minusp tcp minusminusdport 110 minusj ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables minusA INPUT minuss 2114517624 minusp tcp minusminusdport 1723 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

11

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

iexclMaacutes difiacutecil todaviacuteaAhora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IIS deun servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para una empresaexterna En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacutea hacer faacutecilmentecon un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y al conectarse a eacutel te llevahasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacer redirecciones con una ventaja noperdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En fin veamos la configuracioacuten con las nuevasreglas de DNAT

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

12

iptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables minust nat minusA PREROUTING minuss 22123124181 minusi eth0 minusp tcp minusminusdport 3389 minusj DNAT minusminusto 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables minusA INPUT minuss 00000 minusp tcp minusminusdport 25 minusj ACCEPT Abrimos el pop3iptables minusA INPUT minuss 00000 minusp tcp minusminusdport 110 minusj ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables minusA INPUT minuss 2114517624 minusp tcp minusminusdport 1723 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADE

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

IPTABLES manual practico tutorial de iptables con ejemplos

13

echo 1 gt procsysnetipv4ip_forward

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones y losservicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de la redlocal Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red local es evitarescaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buena configuracioacutencon denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de red por 6 o dolares y crearuna 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 las cosasbien y colocamos ese servidor IIS en una DMZ

Figura 7 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos

En este tipo de firewall hay que permitirminus Acceso de la red local a internetminus Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZminus Acceso del servidor de la DMZ a una BBDD de la LANminus 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

IPTABLES manual practico tutorial de iptables con ejemplos

14

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 443 minusj DNAT minusminusto 19216832443

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADEiptables minust nat minusA POSTROUTING minuss 1921683024 minuso eth0 minusj 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 minusA FORWARD minuss 19216832 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

iptables minusA FORWARD minuss 192168105 minusd 19216832 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 19216832 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

15

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 19216832 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 1921683024 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 1921683024 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 puerto sinoque basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando por ejemplo tenemosdos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto 80 No hay manera desaberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPs puacuteblicas o en su defecto usarpuertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia el exterior dela DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al router como llegarhasta esa ip puacuteblica Asiacute podriacutea ser esta red

Figura 8 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos usando IPs puacuteblicas

IPTABLES manual practico tutorial de iptables con ejemplos

16

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA FORWARD minusd 21219489152 minusp tcp minusdport 80 minusj ACCEPTiptables minusA FORWARD minusd 21219489152 minusp tcp minusdport 443 minusj ACCEPTiptables minusA FORWARD minusd 2121948915030 minusj DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables minusA FORWARD minuss 21219489152 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

en el otro sentido lo mismoiptables minusA FORWARD minuss 192168105 minusd 21219489152 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

17

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 21219489152 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minussport 102465535 minusminusdport 3389 minusj ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj 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 la DMZ a lared local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegar hasta la DMZ yque a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentido seraacute el pan de cadadiacutea 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 un hackerlogra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas el hacker puede abrirCUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo el tcp3389 cosa faacutecil para unhacker que sepa algo de C o que tenga el programa pertinente a mano De todas formas el hacker tendriacutea que saber queexiste ese tipo de reglas si es listo probara con puertos de gestioacuten o con puertos netbios El problema es que se deja unviacutenculo con la LAN bien para administrarlo remotamente o para establecer relaciones de confianza y ahiacute es donde resideel peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta a otropuerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewall protegeremos un pocomejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

IPTABLES manual practico tutorial de iptables con ejemplos

18

34 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

Figura 9 esquema de firewall entre redes en la que solo se filtra y no se hace NAT

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

IPTABLES manual practico tutorial de iptables con ejemplos

19

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewalliptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341492 minusj DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341493 minusj DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341494 minusj DROP

Servidor NEWS 211341495

IPTABLES manual practico tutorial de iptables con ejemplos

20

Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341496 minusj DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341497 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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

35 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pechoiquestQueacute 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

IPTABLES manual practico tutorial de iptables con ejemplos

21

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defecto DROPiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPTiptables minusA OUTPUT minusd 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA FORWARD minuss 211341492 minusp tcp minusminussport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341492 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 25 minusj ACCEPT

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 110 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

22

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp udp minusminussport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPTiptables minusA FORWARD minuss 211341494 minusp tcp minusminussport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341494 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPTiptables minusA FORWARD minuss 211341495 minusp tcp minusminussport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341495 minusd 21319468115 minusp tcp minusminussport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPTiptables minusA FORWARD minuss 211341496 minusp tcp minusminussport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341496 minusd 813412956 minusp tcp minusminussport 3389 minusj ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPTiptables minusA FORWARD minuss 211341497 minusp tcp minusminussport 1494 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

23

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp udp minusminussport 1433 minusj ACCEPT

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 de estamanual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP FORWARD DROP

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)iptables minusA INPUT minusi lo minusj ACCEPTiptables minusA OUTPUT minuso lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPTiptables minusA OUTPUT minusd 1956534234 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

24

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 2: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

denominamos DMZ o zona desmilitarizada El firewall tiene entonces tres entradas

Figura 2 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos

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

Figura 3 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos creado con doblefirewall(periacutemetro)

Los firewalls se pueden usar en cualquier red Es habitual tenerlos como proteccioacuten de internet en las empresas aunqueahiacute tambieacuten suelen tener una doble funcioacuten controlar los accesos externos hacia dentro y tambieacuten los internos hacia elexterior esto uacuteltimo se hace con el firewall o frecuentemente con un proxy (que tambieacuten utilizan reglas aunque de maacutesalto nivel)Tambieacuten en empresas de hosting con muchos servidores alojados lo normal es encontrarnos uno o maacutes firewalls ya seafiltrando toda la instalacioacuten o parte de ella

IPTABLES manual practico tutorial de iptables con ejemplos

2

Figura 4 esquema de firewall entre redes en la que solo se filtra 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 origen ydestino de los paquetes del protocolo tcpip En cuanto a protocolos es probable que sean capaces de filtrar muchos tiposde ellos no solo los tcp tambieacuten los udp los icmp los gre y otros protocolos vinculados a vpns Este podriacutea ser (enpseudominuslenguaje) 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 esminus Habilita el acceso a puertos de administracioacuten a determinadas IPs privilegiadasminus Enmascara el trafico de la red local hacia el exterior (NAT una peticioacuten de un pc de la LAN sale al exterior con la ippuacuteblica) para poder salir a internetminus 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 denegaraacute lo

IPTABLES manual practico tutorial de iptables con ejemplos

3

que se diga expliacutecitamente2) Poliacutetica por defecto DENEGAR todo esta denegado y solo se permitiraacute pasar por el firewall aquellos que se permitaexpliacutecitamente

Como es obvio imaginar la primera poliacutetica facilita mucho la gestioacuten del firewall ya que simplemente nos tenemos quepreocupar de proteger aquellos puertos o direcciones que sabemos que nos interesa el resto no importa tanto y se dejapasar Por ejemplo si queremos proteger una maacutequina linux podemos hacer un netstat minusln (o netstat minusan o netstat minusputa| grep LISTEN) saber que puertos estaacuten abiertos poner reglas para proteger esos puertos y ya estaacute iquestPara queacute vamos aproteger 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 momento dado seinstale un software nuevo que abra un puerto determinado o que no sepamos que determinados paquetes ICMP sonpeligrosos Si la poliacutetica por defecto es ACEPTAR y no se protege expliacutecitamente nos la estamos jugando un poco

En cambio si la poliacutetica por defecto es DENEGAR a no ser que lo permitamos expliacutecitamente el firewall se convierteen un auteacutentico MURO infranqueable El problema es que es mucho maacutes difiacutecil preparar un firewall asiacute y hay que tenermuy claro como funciona el sistema (sea iptables o el que sea) y que es lo que se tiene que abrir sin caer en la tentacioacutende empezar a meter reglas superminuspermisivasEsta configuracioacuten de firewall es la recomendada aunque no es aconsejable usarla si no se domina miacutenimamente elsistema 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 se hace conun paquete se va comparando con cada regla del firewall hasta que se encuentra una que le afecta (match) y se hace loque dicte esta regla (aceptar o denegar) despueacutes de eso NO SE MIRARAacuteN MAacuteS REGLAS para ese paquete iquestCuaacutel es elpeligro Si ponemos reglas muy permisivas entre las primeras del firewall puede que las siguientes no se apliquen y nosirvan 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 kernel 24 deeste sistema operativo Al igual que el anterior sistema ipchains un firewall de iptables no es como un servidor que loiniciamos o detenemos o que se pueda caer por un error de programacioacuten(esto es una pequentildea mentira ha tenido algunavulnerabilidad que permite DoS pero nunca tendraacute tanto peligro como las aplicaciones que escuchan en determinadopuerto TCP) iptables esta integrado con el kernel es parte del sistema operativo iquestCoacutemo se pone en marcha Realmentelo que se hace es aplicar reglas Para ellos se ejecuta el comando iptables con el que antildeadimos borramos o creamosreglas Por ello un firewall de iptables no es sino un simple script de shell en el que se van ejecutando las reglas defirewall

Notas bueno para los maacutes geeks y tocapelotas Vale se puede implementar un script de inicio en etcrcdINITd (oetcINITd ) con el que hagamos que iptables se inicie o pare como un servidor maacutes Lo podemos hacer nosotros o esprobable que venga en la distribucioacuten (como en redhat por ejemplo) Tambieacuten se pueden salvar las reglas aplicadas conel comando iptablesminussave en un fichero y gestionar ese fichero con una aplicacioacuten o frontminusend desde la X o desdewebmin

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 si elpaquete entra o sale Las reglas de firewall estaacuten a nivel de kernel y al kernel lo que le llega es un paquete (digamos unmarroacuten ) ) y tiene que decidir que hacer con eacutel El kernel lo que hace es dependiendo si el paquete es para la propiamaquina o para otra maquina consultar las reglas de firewall y decidir que hacer con el paquete seguacuten mande el firewallEste es el camino que seguiriacutea un paquete en el kernel

IPTABLES manual practico tutorial de iptables con ejemplos

4

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 otra Para lospaquetes (o datagramas seguacuten el protocolo) que van a la propia maquina se aplican las reglas INPUT y OUTPUT y parafiltrar 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 posibleaplicar reglas de NAT estas se usan para hacer redirecciones de puertos o cambios en las IPs de origen y destinoVeremos ejemplosE incluso antes de las reglas de NAT se pueden meter reglas de tipo MANGLE destinadas a modificar los paquetes sonreglas poco conocidas y es probable que no las usenPor tanto tenemos tres tipos de reglas en iptablesminus MANGLEminus NAT reglas PREROUTING POSTROUTINGminus 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 como poliacutetica pordefecto

Nota se recomienda encarecidamente ir practicando estas reglas en alguna maquina linux disponible y especialmentehacer uso de la herramienta iptraf para depurar y comprobar el funcionamiento de iptables Con iptraf podemoscomprobar si las conexiones TCPIP se llegan a establecer o no Una conexioacuten tcpip empieza con elthreeminuswayminushandshakeminus La maquina que desea conectarse a otra envia un paquete con flan SYNminus Si la otra maquina acepta envia un SYNACKminus Entonces la maacutequina establece la conexioacuten

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

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

IPTABLES manual practico tutorial de iptables con ejemplos

5

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

Ojo con el orden de las reglas

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusdport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPT

Y el resto lo cerramosiptables minusA INPUT minusp tcp minusminusdport 2021 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 22 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

IPTABLES manual practico tutorial de iptables con ejemplos

6

Nota para freaks y geeks siiii que ya lo se se puede mejorar este script usando variables se puede poner el comandocon el path completo pero limiacutetense a hacer copyminuspaste Para el resto de mortales no olvidarse de ponerle flags deejecucioacuten 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 los que notienen porque tener acceso salvo el 80 Pero cualquiera con algo de ojo se habraacute dado cuenta de que ni se filtra el UDP niel ICMP Apostariacutea cualquier cosa a que el sistema tiene alguacuten puerto udp abierto y ademaacutes peligroso como el SNMPComo he dicho anteriormente en este tipo de firewall es recordable hacer un netstat para ver que puertos estaacuten en estadode escucha (abiertos) y salve que un rootkit nos haya modificado los binarios netstat nos daraacute la informacioacuten precisa quenecesitamos Hay gente que se decanta por hacerse un nmap asiacute mismos Cuidado dependiendo de coacutemo lo ejecutemosquizaacute no nos muestre todos los puertos ya que suele mirar los bien conocidosImaginemos que hemos dado un repaso a nuestro sistema y ahora si que tenemos mejor identificados los puertos tcp yudp abiertos Pero por si acaso nos curamos en salud y al final del script cerraremos el rango de puertos del 1 al 1024 losreservados tanto para tcp como udp

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusdport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPT

Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen acceso

IPTABLES manual practico tutorial de iptables con ejemplos

7

iptables minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

iquestSencillo no Ahora basta con hacer copyminuspaste de estas reglas y aplicarlas y ajustarlas en su sistema (quizaacutes usesPostgreSQL) Si tiene miedo de perder el control de una maacutequina remota pruebe el script en una maacutequina local yaseguacuterese de que aplica lo que usted quiere Funcionar va a funcionar seguro

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

Figura 6 esquema de firewall tiacutepico entre red local e internet

iquestQueacute es lo que hace falta Obviamente una regla que haga NAT hacia fuera (enmascaramiento en iptables) con lo quese hariacutea dos veces NAT en el firewall y en el router Entre el router y el firewall lo normal es que haya una red privada(19216811 y 19216812 por ejemplo) aunque dependiendo de las necesidades puede que los dos tengan IP puacuteblica Elrouter se supone que hace un NAT completo hacia dentro (quizaacute salvo puerto 23) o sea que desde el exterior no se llegaal router si no que de forma transparente se choca contra el firewall Lo normal en este tipo de firewalls es poner lapoliacutetica por defecto de FORWARD en denegar (DROP) pero eso lo vemos maacutes adelanteVeamos como seriacutea este firewallminusgateway

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

8

iptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

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

binsh SCRIPT de IPTABLES minus ejemplo del manual de iptables Ejemplo de script para firewall entre redminuslocal e internet con filtro para que solo se pueda navegar Pello Xabier Altadill Izura wwwpelloinfo minus pellopelloinfo

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

9

iptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor de correoDarle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esos puertos o si noestaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA la red local De todasformas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cada cosa bastante les cuesta amuchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos al puacuteblico en el propio firewall nosla estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla en la DMZSupongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil y con una ipdinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa con una conexioacuten

IPTABLES manual practico tutorial de iptables con ejemplos

10

ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables minusA INPUT minuss 00000 minusp tcp minusminusdport 25 minusj ACCEPT Abrimos el pop3iptables minusA INPUT minuss 00000 minusp tcp minusminusdport 110 minusj ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables minusA INPUT minuss 2114517624 minusp tcp minusminusdport 1723 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

11

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

iexclMaacutes difiacutecil todaviacuteaAhora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IIS deun servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para una empresaexterna En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacutea hacer faacutecilmentecon un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y al conectarse a eacutel te llevahasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacer redirecciones con una ventaja noperdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En fin veamos la configuracioacuten con las nuevasreglas de DNAT

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

12

iptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables minust nat minusA PREROUTING minuss 22123124181 minusi eth0 minusp tcp minusminusdport 3389 minusj DNAT minusminusto 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables minusA INPUT minuss 00000 minusp tcp minusminusdport 25 minusj ACCEPT Abrimos el pop3iptables minusA INPUT minuss 00000 minusp tcp minusminusdport 110 minusj ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables minusA INPUT minuss 2114517624 minusp tcp minusminusdport 1723 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADE

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

IPTABLES manual practico tutorial de iptables con ejemplos

13

echo 1 gt procsysnetipv4ip_forward

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones y losservicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de la redlocal Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red local es evitarescaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buena configuracioacutencon denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de red por 6 o dolares y crearuna 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 las cosasbien y colocamos ese servidor IIS en una DMZ

Figura 7 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos

En este tipo de firewall hay que permitirminus Acceso de la red local a internetminus Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZminus Acceso del servidor de la DMZ a una BBDD de la LANminus 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

IPTABLES manual practico tutorial de iptables con ejemplos

14

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 443 minusj DNAT minusminusto 19216832443

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADEiptables minust nat minusA POSTROUTING minuss 1921683024 minuso eth0 minusj 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 minusA FORWARD minuss 19216832 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

iptables minusA FORWARD minuss 192168105 minusd 19216832 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 19216832 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

15

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 19216832 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 1921683024 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 1921683024 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 puerto sinoque basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando por ejemplo tenemosdos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto 80 No hay manera desaberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPs puacuteblicas o en su defecto usarpuertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia el exterior dela DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al router como llegarhasta esa ip puacuteblica Asiacute podriacutea ser esta red

Figura 8 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos usando IPs puacuteblicas

IPTABLES manual practico tutorial de iptables con ejemplos

16

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA FORWARD minusd 21219489152 minusp tcp minusdport 80 minusj ACCEPTiptables minusA FORWARD minusd 21219489152 minusp tcp minusdport 443 minusj ACCEPTiptables minusA FORWARD minusd 2121948915030 minusj DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables minusA FORWARD minuss 21219489152 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

en el otro sentido lo mismoiptables minusA FORWARD minuss 192168105 minusd 21219489152 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

17

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 21219489152 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minussport 102465535 minusminusdport 3389 minusj ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj 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 la DMZ a lared local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegar hasta la DMZ yque a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentido seraacute el pan de cadadiacutea 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 un hackerlogra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas el hacker puede abrirCUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo el tcp3389 cosa faacutecil para unhacker que sepa algo de C o que tenga el programa pertinente a mano De todas formas el hacker tendriacutea que saber queexiste ese tipo de reglas si es listo probara con puertos de gestioacuten o con puertos netbios El problema es que se deja unviacutenculo con la LAN bien para administrarlo remotamente o para establecer relaciones de confianza y ahiacute es donde resideel peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta a otropuerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewall protegeremos un pocomejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

IPTABLES manual practico tutorial de iptables con ejemplos

18

34 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

Figura 9 esquema de firewall entre redes en la que solo se filtra y no se hace NAT

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

IPTABLES manual practico tutorial de iptables con ejemplos

19

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewalliptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341492 minusj DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341493 minusj DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341494 minusj DROP

Servidor NEWS 211341495

IPTABLES manual practico tutorial de iptables con ejemplos

20

Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341496 minusj DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341497 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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

35 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pechoiquestQueacute 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

IPTABLES manual practico tutorial de iptables con ejemplos

21

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defecto DROPiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPTiptables minusA OUTPUT minusd 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA FORWARD minuss 211341492 minusp tcp minusminussport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341492 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 25 minusj ACCEPT

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 110 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

22

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp udp minusminussport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPTiptables minusA FORWARD minuss 211341494 minusp tcp minusminussport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341494 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPTiptables minusA FORWARD minuss 211341495 minusp tcp minusminussport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341495 minusd 21319468115 minusp tcp minusminussport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPTiptables minusA FORWARD minuss 211341496 minusp tcp minusminussport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341496 minusd 813412956 minusp tcp minusminussport 3389 minusj ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPTiptables minusA FORWARD minuss 211341497 minusp tcp minusminussport 1494 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

23

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp udp minusminussport 1433 minusj ACCEPT

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 de estamanual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP FORWARD DROP

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)iptables minusA INPUT minusi lo minusj ACCEPTiptables minusA OUTPUT minuso lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPTiptables minusA OUTPUT minusd 1956534234 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

24

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 3: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

Figura 4 esquema de firewall entre redes en la que solo se filtra 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 origen ydestino de los paquetes del protocolo tcpip En cuanto a protocolos es probable que sean capaces de filtrar muchos tiposde ellos no solo los tcp tambieacuten los udp los icmp los gre y otros protocolos vinculados a vpns Este podriacutea ser (enpseudominuslenguaje) 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 esminus Habilita el acceso a puertos de administracioacuten a determinadas IPs privilegiadasminus Enmascara el trafico de la red local hacia el exterior (NAT una peticioacuten de un pc de la LAN sale al exterior con la ippuacuteblica) para poder salir a internetminus 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 denegaraacute lo

IPTABLES manual practico tutorial de iptables con ejemplos

3

que se diga expliacutecitamente2) Poliacutetica por defecto DENEGAR todo esta denegado y solo se permitiraacute pasar por el firewall aquellos que se permitaexpliacutecitamente

Como es obvio imaginar la primera poliacutetica facilita mucho la gestioacuten del firewall ya que simplemente nos tenemos quepreocupar de proteger aquellos puertos o direcciones que sabemos que nos interesa el resto no importa tanto y se dejapasar Por ejemplo si queremos proteger una maacutequina linux podemos hacer un netstat minusln (o netstat minusan o netstat minusputa| grep LISTEN) saber que puertos estaacuten abiertos poner reglas para proteger esos puertos y ya estaacute iquestPara queacute vamos aproteger 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 momento dado seinstale un software nuevo que abra un puerto determinado o que no sepamos que determinados paquetes ICMP sonpeligrosos Si la poliacutetica por defecto es ACEPTAR y no se protege expliacutecitamente nos la estamos jugando un poco

En cambio si la poliacutetica por defecto es DENEGAR a no ser que lo permitamos expliacutecitamente el firewall se convierteen un auteacutentico MURO infranqueable El problema es que es mucho maacutes difiacutecil preparar un firewall asiacute y hay que tenermuy claro como funciona el sistema (sea iptables o el que sea) y que es lo que se tiene que abrir sin caer en la tentacioacutende empezar a meter reglas superminuspermisivasEsta configuracioacuten de firewall es la recomendada aunque no es aconsejable usarla si no se domina miacutenimamente elsistema 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 se hace conun paquete se va comparando con cada regla del firewall hasta que se encuentra una que le afecta (match) y se hace loque dicte esta regla (aceptar o denegar) despueacutes de eso NO SE MIRARAacuteN MAacuteS REGLAS para ese paquete iquestCuaacutel es elpeligro Si ponemos reglas muy permisivas entre las primeras del firewall puede que las siguientes no se apliquen y nosirvan 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 kernel 24 deeste sistema operativo Al igual que el anterior sistema ipchains un firewall de iptables no es como un servidor que loiniciamos o detenemos o que se pueda caer por un error de programacioacuten(esto es una pequentildea mentira ha tenido algunavulnerabilidad que permite DoS pero nunca tendraacute tanto peligro como las aplicaciones que escuchan en determinadopuerto TCP) iptables esta integrado con el kernel es parte del sistema operativo iquestCoacutemo se pone en marcha Realmentelo que se hace es aplicar reglas Para ellos se ejecuta el comando iptables con el que antildeadimos borramos o creamosreglas Por ello un firewall de iptables no es sino un simple script de shell en el que se van ejecutando las reglas defirewall

Notas bueno para los maacutes geeks y tocapelotas Vale se puede implementar un script de inicio en etcrcdINITd (oetcINITd ) con el que hagamos que iptables se inicie o pare como un servidor maacutes Lo podemos hacer nosotros o esprobable que venga en la distribucioacuten (como en redhat por ejemplo) Tambieacuten se pueden salvar las reglas aplicadas conel comando iptablesminussave en un fichero y gestionar ese fichero con una aplicacioacuten o frontminusend desde la X o desdewebmin

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 si elpaquete entra o sale Las reglas de firewall estaacuten a nivel de kernel y al kernel lo que le llega es un paquete (digamos unmarroacuten ) ) y tiene que decidir que hacer con eacutel El kernel lo que hace es dependiendo si el paquete es para la propiamaquina o para otra maquina consultar las reglas de firewall y decidir que hacer con el paquete seguacuten mande el firewallEste es el camino que seguiriacutea un paquete en el kernel

IPTABLES manual practico tutorial de iptables con ejemplos

4

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 otra Para lospaquetes (o datagramas seguacuten el protocolo) que van a la propia maquina se aplican las reglas INPUT y OUTPUT y parafiltrar 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 posibleaplicar reglas de NAT estas se usan para hacer redirecciones de puertos o cambios en las IPs de origen y destinoVeremos ejemplosE incluso antes de las reglas de NAT se pueden meter reglas de tipo MANGLE destinadas a modificar los paquetes sonreglas poco conocidas y es probable que no las usenPor tanto tenemos tres tipos de reglas en iptablesminus MANGLEminus NAT reglas PREROUTING POSTROUTINGminus 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 como poliacutetica pordefecto

Nota se recomienda encarecidamente ir practicando estas reglas en alguna maquina linux disponible y especialmentehacer uso de la herramienta iptraf para depurar y comprobar el funcionamiento de iptables Con iptraf podemoscomprobar si las conexiones TCPIP se llegan a establecer o no Una conexioacuten tcpip empieza con elthreeminuswayminushandshakeminus La maquina que desea conectarse a otra envia un paquete con flan SYNminus Si la otra maquina acepta envia un SYNACKminus Entonces la maacutequina establece la conexioacuten

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

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

IPTABLES manual practico tutorial de iptables con ejemplos

5

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

Ojo con el orden de las reglas

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusdport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPT

Y el resto lo cerramosiptables minusA INPUT minusp tcp minusminusdport 2021 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 22 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

IPTABLES manual practico tutorial de iptables con ejemplos

6

Nota para freaks y geeks siiii que ya lo se se puede mejorar este script usando variables se puede poner el comandocon el path completo pero limiacutetense a hacer copyminuspaste Para el resto de mortales no olvidarse de ponerle flags deejecucioacuten 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 los que notienen porque tener acceso salvo el 80 Pero cualquiera con algo de ojo se habraacute dado cuenta de que ni se filtra el UDP niel ICMP Apostariacutea cualquier cosa a que el sistema tiene alguacuten puerto udp abierto y ademaacutes peligroso como el SNMPComo he dicho anteriormente en este tipo de firewall es recordable hacer un netstat para ver que puertos estaacuten en estadode escucha (abiertos) y salve que un rootkit nos haya modificado los binarios netstat nos daraacute la informacioacuten precisa quenecesitamos Hay gente que se decanta por hacerse un nmap asiacute mismos Cuidado dependiendo de coacutemo lo ejecutemosquizaacute no nos muestre todos los puertos ya que suele mirar los bien conocidosImaginemos que hemos dado un repaso a nuestro sistema y ahora si que tenemos mejor identificados los puertos tcp yudp abiertos Pero por si acaso nos curamos en salud y al final del script cerraremos el rango de puertos del 1 al 1024 losreservados tanto para tcp como udp

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusdport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPT

Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen acceso

IPTABLES manual practico tutorial de iptables con ejemplos

7

iptables minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

iquestSencillo no Ahora basta con hacer copyminuspaste de estas reglas y aplicarlas y ajustarlas en su sistema (quizaacutes usesPostgreSQL) Si tiene miedo de perder el control de una maacutequina remota pruebe el script en una maacutequina local yaseguacuterese de que aplica lo que usted quiere Funcionar va a funcionar seguro

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

Figura 6 esquema de firewall tiacutepico entre red local e internet

iquestQueacute es lo que hace falta Obviamente una regla que haga NAT hacia fuera (enmascaramiento en iptables) con lo quese hariacutea dos veces NAT en el firewall y en el router Entre el router y el firewall lo normal es que haya una red privada(19216811 y 19216812 por ejemplo) aunque dependiendo de las necesidades puede que los dos tengan IP puacuteblica Elrouter se supone que hace un NAT completo hacia dentro (quizaacute salvo puerto 23) o sea que desde el exterior no se llegaal router si no que de forma transparente se choca contra el firewall Lo normal en este tipo de firewalls es poner lapoliacutetica por defecto de FORWARD en denegar (DROP) pero eso lo vemos maacutes adelanteVeamos como seriacutea este firewallminusgateway

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

8

iptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

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

binsh SCRIPT de IPTABLES minus ejemplo del manual de iptables Ejemplo de script para firewall entre redminuslocal e internet con filtro para que solo se pueda navegar Pello Xabier Altadill Izura wwwpelloinfo minus pellopelloinfo

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

9

iptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor de correoDarle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esos puertos o si noestaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA la red local De todasformas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cada cosa bastante les cuesta amuchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos al puacuteblico en el propio firewall nosla estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla en la DMZSupongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil y con una ipdinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa con una conexioacuten

IPTABLES manual practico tutorial de iptables con ejemplos

10

ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables minusA INPUT minuss 00000 minusp tcp minusminusdport 25 minusj ACCEPT Abrimos el pop3iptables minusA INPUT minuss 00000 minusp tcp minusminusdport 110 minusj ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables minusA INPUT minuss 2114517624 minusp tcp minusminusdport 1723 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

11

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

iexclMaacutes difiacutecil todaviacuteaAhora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IIS deun servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para una empresaexterna En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacutea hacer faacutecilmentecon un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y al conectarse a eacutel te llevahasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacer redirecciones con una ventaja noperdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En fin veamos la configuracioacuten con las nuevasreglas de DNAT

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

12

iptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables minust nat minusA PREROUTING minuss 22123124181 minusi eth0 minusp tcp minusminusdport 3389 minusj DNAT minusminusto 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables minusA INPUT minuss 00000 minusp tcp minusminusdport 25 minusj ACCEPT Abrimos el pop3iptables minusA INPUT minuss 00000 minusp tcp minusminusdport 110 minusj ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables minusA INPUT minuss 2114517624 minusp tcp minusminusdport 1723 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADE

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

IPTABLES manual practico tutorial de iptables con ejemplos

13

echo 1 gt procsysnetipv4ip_forward

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones y losservicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de la redlocal Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red local es evitarescaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buena configuracioacutencon denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de red por 6 o dolares y crearuna 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 las cosasbien y colocamos ese servidor IIS en una DMZ

Figura 7 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos

En este tipo de firewall hay que permitirminus Acceso de la red local a internetminus Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZminus Acceso del servidor de la DMZ a una BBDD de la LANminus 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

IPTABLES manual practico tutorial de iptables con ejemplos

14

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 443 minusj DNAT minusminusto 19216832443

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADEiptables minust nat minusA POSTROUTING minuss 1921683024 minuso eth0 minusj 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 minusA FORWARD minuss 19216832 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

iptables minusA FORWARD minuss 192168105 minusd 19216832 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 19216832 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

15

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 19216832 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 1921683024 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 1921683024 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 puerto sinoque basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando por ejemplo tenemosdos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto 80 No hay manera desaberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPs puacuteblicas o en su defecto usarpuertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia el exterior dela DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al router como llegarhasta esa ip puacuteblica Asiacute podriacutea ser esta red

Figura 8 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos usando IPs puacuteblicas

IPTABLES manual practico tutorial de iptables con ejemplos

16

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA FORWARD minusd 21219489152 minusp tcp minusdport 80 minusj ACCEPTiptables minusA FORWARD minusd 21219489152 minusp tcp minusdport 443 minusj ACCEPTiptables minusA FORWARD minusd 2121948915030 minusj DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables minusA FORWARD minuss 21219489152 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

en el otro sentido lo mismoiptables minusA FORWARD minuss 192168105 minusd 21219489152 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

17

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 21219489152 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minussport 102465535 minusminusdport 3389 minusj ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj 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 la DMZ a lared local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegar hasta la DMZ yque a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentido seraacute el pan de cadadiacutea 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 un hackerlogra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas el hacker puede abrirCUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo el tcp3389 cosa faacutecil para unhacker que sepa algo de C o que tenga el programa pertinente a mano De todas formas el hacker tendriacutea que saber queexiste ese tipo de reglas si es listo probara con puertos de gestioacuten o con puertos netbios El problema es que se deja unviacutenculo con la LAN bien para administrarlo remotamente o para establecer relaciones de confianza y ahiacute es donde resideel peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta a otropuerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewall protegeremos un pocomejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

IPTABLES manual practico tutorial de iptables con ejemplos

18

34 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

Figura 9 esquema de firewall entre redes en la que solo se filtra y no se hace NAT

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

IPTABLES manual practico tutorial de iptables con ejemplos

19

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewalliptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341492 minusj DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341493 minusj DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341494 minusj DROP

Servidor NEWS 211341495

IPTABLES manual practico tutorial de iptables con ejemplos

20

Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341496 minusj DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341497 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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

35 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pechoiquestQueacute 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

IPTABLES manual practico tutorial de iptables con ejemplos

21

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defecto DROPiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPTiptables minusA OUTPUT minusd 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA FORWARD minuss 211341492 minusp tcp minusminussport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341492 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 25 minusj ACCEPT

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 110 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

22

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp udp minusminussport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPTiptables minusA FORWARD minuss 211341494 minusp tcp minusminussport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341494 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPTiptables minusA FORWARD minuss 211341495 minusp tcp minusminussport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341495 minusd 21319468115 minusp tcp minusminussport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPTiptables minusA FORWARD minuss 211341496 minusp tcp minusminussport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341496 minusd 813412956 minusp tcp minusminussport 3389 minusj ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPTiptables minusA FORWARD minuss 211341497 minusp tcp minusminussport 1494 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

23

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp udp minusminussport 1433 minusj ACCEPT

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 de estamanual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP FORWARD DROP

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)iptables minusA INPUT minusi lo minusj ACCEPTiptables minusA OUTPUT minuso lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPTiptables minusA OUTPUT minusd 1956534234 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

24

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 4: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

que se diga expliacutecitamente2) Poliacutetica por defecto DENEGAR todo esta denegado y solo se permitiraacute pasar por el firewall aquellos que se permitaexpliacutecitamente

Como es obvio imaginar la primera poliacutetica facilita mucho la gestioacuten del firewall ya que simplemente nos tenemos quepreocupar de proteger aquellos puertos o direcciones que sabemos que nos interesa el resto no importa tanto y se dejapasar Por ejemplo si queremos proteger una maacutequina linux podemos hacer un netstat minusln (o netstat minusan o netstat minusputa| grep LISTEN) saber que puertos estaacuten abiertos poner reglas para proteger esos puertos y ya estaacute iquestPara queacute vamos aproteger 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 momento dado seinstale un software nuevo que abra un puerto determinado o que no sepamos que determinados paquetes ICMP sonpeligrosos Si la poliacutetica por defecto es ACEPTAR y no se protege expliacutecitamente nos la estamos jugando un poco

En cambio si la poliacutetica por defecto es DENEGAR a no ser que lo permitamos expliacutecitamente el firewall se convierteen un auteacutentico MURO infranqueable El problema es que es mucho maacutes difiacutecil preparar un firewall asiacute y hay que tenermuy claro como funciona el sistema (sea iptables o el que sea) y que es lo que se tiene que abrir sin caer en la tentacioacutende empezar a meter reglas superminuspermisivasEsta configuracioacuten de firewall es la recomendada aunque no es aconsejable usarla si no se domina miacutenimamente elsistema 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 se hace conun paquete se va comparando con cada regla del firewall hasta que se encuentra una que le afecta (match) y se hace loque dicte esta regla (aceptar o denegar) despueacutes de eso NO SE MIRARAacuteN MAacuteS REGLAS para ese paquete iquestCuaacutel es elpeligro Si ponemos reglas muy permisivas entre las primeras del firewall puede que las siguientes no se apliquen y nosirvan 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 kernel 24 deeste sistema operativo Al igual que el anterior sistema ipchains un firewall de iptables no es como un servidor que loiniciamos o detenemos o que se pueda caer por un error de programacioacuten(esto es una pequentildea mentira ha tenido algunavulnerabilidad que permite DoS pero nunca tendraacute tanto peligro como las aplicaciones que escuchan en determinadopuerto TCP) iptables esta integrado con el kernel es parte del sistema operativo iquestCoacutemo se pone en marcha Realmentelo que se hace es aplicar reglas Para ellos se ejecuta el comando iptables con el que antildeadimos borramos o creamosreglas Por ello un firewall de iptables no es sino un simple script de shell en el que se van ejecutando las reglas defirewall

Notas bueno para los maacutes geeks y tocapelotas Vale se puede implementar un script de inicio en etcrcdINITd (oetcINITd ) con el que hagamos que iptables se inicie o pare como un servidor maacutes Lo podemos hacer nosotros o esprobable que venga en la distribucioacuten (como en redhat por ejemplo) Tambieacuten se pueden salvar las reglas aplicadas conel comando iptablesminussave en un fichero y gestionar ese fichero con una aplicacioacuten o frontminusend desde la X o desdewebmin

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 si elpaquete entra o sale Las reglas de firewall estaacuten a nivel de kernel y al kernel lo que le llega es un paquete (digamos unmarroacuten ) ) y tiene que decidir que hacer con eacutel El kernel lo que hace es dependiendo si el paquete es para la propiamaquina o para otra maquina consultar las reglas de firewall y decidir que hacer con el paquete seguacuten mande el firewallEste es el camino que seguiriacutea un paquete en el kernel

IPTABLES manual practico tutorial de iptables con ejemplos

4

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 otra Para lospaquetes (o datagramas seguacuten el protocolo) que van a la propia maquina se aplican las reglas INPUT y OUTPUT y parafiltrar 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 posibleaplicar reglas de NAT estas se usan para hacer redirecciones de puertos o cambios en las IPs de origen y destinoVeremos ejemplosE incluso antes de las reglas de NAT se pueden meter reglas de tipo MANGLE destinadas a modificar los paquetes sonreglas poco conocidas y es probable que no las usenPor tanto tenemos tres tipos de reglas en iptablesminus MANGLEminus NAT reglas PREROUTING POSTROUTINGminus 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 como poliacutetica pordefecto

Nota se recomienda encarecidamente ir practicando estas reglas en alguna maquina linux disponible y especialmentehacer uso de la herramienta iptraf para depurar y comprobar el funcionamiento de iptables Con iptraf podemoscomprobar si las conexiones TCPIP se llegan a establecer o no Una conexioacuten tcpip empieza con elthreeminuswayminushandshakeminus La maquina que desea conectarse a otra envia un paquete con flan SYNminus Si la otra maquina acepta envia un SYNACKminus Entonces la maacutequina establece la conexioacuten

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

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

IPTABLES manual practico tutorial de iptables con ejemplos

5

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

Ojo con el orden de las reglas

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusdport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPT

Y el resto lo cerramosiptables minusA INPUT minusp tcp minusminusdport 2021 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 22 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

IPTABLES manual practico tutorial de iptables con ejemplos

6

Nota para freaks y geeks siiii que ya lo se se puede mejorar este script usando variables se puede poner el comandocon el path completo pero limiacutetense a hacer copyminuspaste Para el resto de mortales no olvidarse de ponerle flags deejecucioacuten 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 los que notienen porque tener acceso salvo el 80 Pero cualquiera con algo de ojo se habraacute dado cuenta de que ni se filtra el UDP niel ICMP Apostariacutea cualquier cosa a que el sistema tiene alguacuten puerto udp abierto y ademaacutes peligroso como el SNMPComo he dicho anteriormente en este tipo de firewall es recordable hacer un netstat para ver que puertos estaacuten en estadode escucha (abiertos) y salve que un rootkit nos haya modificado los binarios netstat nos daraacute la informacioacuten precisa quenecesitamos Hay gente que se decanta por hacerse un nmap asiacute mismos Cuidado dependiendo de coacutemo lo ejecutemosquizaacute no nos muestre todos los puertos ya que suele mirar los bien conocidosImaginemos que hemos dado un repaso a nuestro sistema y ahora si que tenemos mejor identificados los puertos tcp yudp abiertos Pero por si acaso nos curamos en salud y al final del script cerraremos el rango de puertos del 1 al 1024 losreservados tanto para tcp como udp

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusdport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPT

Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen acceso

IPTABLES manual practico tutorial de iptables con ejemplos

7

iptables minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

iquestSencillo no Ahora basta con hacer copyminuspaste de estas reglas y aplicarlas y ajustarlas en su sistema (quizaacutes usesPostgreSQL) Si tiene miedo de perder el control de una maacutequina remota pruebe el script en una maacutequina local yaseguacuterese de que aplica lo que usted quiere Funcionar va a funcionar seguro

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

Figura 6 esquema de firewall tiacutepico entre red local e internet

iquestQueacute es lo que hace falta Obviamente una regla que haga NAT hacia fuera (enmascaramiento en iptables) con lo quese hariacutea dos veces NAT en el firewall y en el router Entre el router y el firewall lo normal es que haya una red privada(19216811 y 19216812 por ejemplo) aunque dependiendo de las necesidades puede que los dos tengan IP puacuteblica Elrouter se supone que hace un NAT completo hacia dentro (quizaacute salvo puerto 23) o sea que desde el exterior no se llegaal router si no que de forma transparente se choca contra el firewall Lo normal en este tipo de firewalls es poner lapoliacutetica por defecto de FORWARD en denegar (DROP) pero eso lo vemos maacutes adelanteVeamos como seriacutea este firewallminusgateway

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

8

iptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

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

binsh SCRIPT de IPTABLES minus ejemplo del manual de iptables Ejemplo de script para firewall entre redminuslocal e internet con filtro para que solo se pueda navegar Pello Xabier Altadill Izura wwwpelloinfo minus pellopelloinfo

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

9

iptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor de correoDarle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esos puertos o si noestaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA la red local De todasformas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cada cosa bastante les cuesta amuchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos al puacuteblico en el propio firewall nosla estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla en la DMZSupongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil y con una ipdinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa con una conexioacuten

IPTABLES manual practico tutorial de iptables con ejemplos

10

ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables minusA INPUT minuss 00000 minusp tcp minusminusdport 25 minusj ACCEPT Abrimos el pop3iptables minusA INPUT minuss 00000 minusp tcp minusminusdport 110 minusj ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables minusA INPUT minuss 2114517624 minusp tcp minusminusdport 1723 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

11

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

iexclMaacutes difiacutecil todaviacuteaAhora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IIS deun servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para una empresaexterna En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacutea hacer faacutecilmentecon un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y al conectarse a eacutel te llevahasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacer redirecciones con una ventaja noperdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En fin veamos la configuracioacuten con las nuevasreglas de DNAT

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

12

iptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables minust nat minusA PREROUTING minuss 22123124181 minusi eth0 minusp tcp minusminusdport 3389 minusj DNAT minusminusto 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables minusA INPUT minuss 00000 minusp tcp minusminusdport 25 minusj ACCEPT Abrimos el pop3iptables minusA INPUT minuss 00000 minusp tcp minusminusdport 110 minusj ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables minusA INPUT minuss 2114517624 minusp tcp minusminusdport 1723 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADE

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

IPTABLES manual practico tutorial de iptables con ejemplos

13

echo 1 gt procsysnetipv4ip_forward

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones y losservicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de la redlocal Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red local es evitarescaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buena configuracioacutencon denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de red por 6 o dolares y crearuna 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 las cosasbien y colocamos ese servidor IIS en una DMZ

Figura 7 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos

En este tipo de firewall hay que permitirminus Acceso de la red local a internetminus Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZminus Acceso del servidor de la DMZ a una BBDD de la LANminus 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

IPTABLES manual practico tutorial de iptables con ejemplos

14

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 443 minusj DNAT minusminusto 19216832443

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADEiptables minust nat minusA POSTROUTING minuss 1921683024 minuso eth0 minusj 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 minusA FORWARD minuss 19216832 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

iptables minusA FORWARD minuss 192168105 minusd 19216832 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 19216832 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

15

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 19216832 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 1921683024 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 1921683024 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 puerto sinoque basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando por ejemplo tenemosdos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto 80 No hay manera desaberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPs puacuteblicas o en su defecto usarpuertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia el exterior dela DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al router como llegarhasta esa ip puacuteblica Asiacute podriacutea ser esta red

Figura 8 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos usando IPs puacuteblicas

IPTABLES manual practico tutorial de iptables con ejemplos

16

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA FORWARD minusd 21219489152 minusp tcp minusdport 80 minusj ACCEPTiptables minusA FORWARD minusd 21219489152 minusp tcp minusdport 443 minusj ACCEPTiptables minusA FORWARD minusd 2121948915030 minusj DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables minusA FORWARD minuss 21219489152 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

en el otro sentido lo mismoiptables minusA FORWARD minuss 192168105 minusd 21219489152 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

17

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 21219489152 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minussport 102465535 minusminusdport 3389 minusj ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj 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 la DMZ a lared local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegar hasta la DMZ yque a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentido seraacute el pan de cadadiacutea 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 un hackerlogra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas el hacker puede abrirCUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo el tcp3389 cosa faacutecil para unhacker que sepa algo de C o que tenga el programa pertinente a mano De todas formas el hacker tendriacutea que saber queexiste ese tipo de reglas si es listo probara con puertos de gestioacuten o con puertos netbios El problema es que se deja unviacutenculo con la LAN bien para administrarlo remotamente o para establecer relaciones de confianza y ahiacute es donde resideel peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta a otropuerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewall protegeremos un pocomejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

IPTABLES manual practico tutorial de iptables con ejemplos

18

34 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

Figura 9 esquema de firewall entre redes en la que solo se filtra y no se hace NAT

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

IPTABLES manual practico tutorial de iptables con ejemplos

19

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewalliptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341492 minusj DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341493 minusj DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341494 minusj DROP

Servidor NEWS 211341495

IPTABLES manual practico tutorial de iptables con ejemplos

20

Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341496 minusj DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341497 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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

35 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pechoiquestQueacute 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

IPTABLES manual practico tutorial de iptables con ejemplos

21

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defecto DROPiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPTiptables minusA OUTPUT minusd 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA FORWARD minuss 211341492 minusp tcp minusminussport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341492 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 25 minusj ACCEPT

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 110 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

22

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp udp minusminussport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPTiptables minusA FORWARD minuss 211341494 minusp tcp minusminussport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341494 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPTiptables minusA FORWARD minuss 211341495 minusp tcp minusminussport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341495 minusd 21319468115 minusp tcp minusminussport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPTiptables minusA FORWARD minuss 211341496 minusp tcp minusminussport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341496 minusd 813412956 minusp tcp minusminussport 3389 minusj ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPTiptables minusA FORWARD minuss 211341497 minusp tcp minusminussport 1494 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

23

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp udp minusminussport 1433 minusj ACCEPT

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 de estamanual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP FORWARD DROP

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)iptables minusA INPUT minusi lo minusj ACCEPTiptables minusA OUTPUT minuso lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPTiptables minusA OUTPUT minusd 1956534234 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

24

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 5: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

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 otra Para lospaquetes (o datagramas seguacuten el protocolo) que van a la propia maquina se aplican las reglas INPUT y OUTPUT y parafiltrar 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 posibleaplicar reglas de NAT estas se usan para hacer redirecciones de puertos o cambios en las IPs de origen y destinoVeremos ejemplosE incluso antes de las reglas de NAT se pueden meter reglas de tipo MANGLE destinadas a modificar los paquetes sonreglas poco conocidas y es probable que no las usenPor tanto tenemos tres tipos de reglas en iptablesminus MANGLEminus NAT reglas PREROUTING POSTROUTINGminus 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 como poliacutetica pordefecto

Nota se recomienda encarecidamente ir practicando estas reglas en alguna maquina linux disponible y especialmentehacer uso de la herramienta iptraf para depurar y comprobar el funcionamiento de iptables Con iptraf podemoscomprobar si las conexiones TCPIP se llegan a establecer o no Una conexioacuten tcpip empieza con elthreeminuswayminushandshakeminus La maquina que desea conectarse a otra envia un paquete con flan SYNminus Si la otra maquina acepta envia un SYNACKminus Entonces la maacutequina establece la conexioacuten

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

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

IPTABLES manual practico tutorial de iptables con ejemplos

5

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

Ojo con el orden de las reglas

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusdport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPT

Y el resto lo cerramosiptables minusA INPUT minusp tcp minusminusdport 2021 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 22 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

IPTABLES manual practico tutorial de iptables con ejemplos

6

Nota para freaks y geeks siiii que ya lo se se puede mejorar este script usando variables se puede poner el comandocon el path completo pero limiacutetense a hacer copyminuspaste Para el resto de mortales no olvidarse de ponerle flags deejecucioacuten 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 los que notienen porque tener acceso salvo el 80 Pero cualquiera con algo de ojo se habraacute dado cuenta de que ni se filtra el UDP niel ICMP Apostariacutea cualquier cosa a que el sistema tiene alguacuten puerto udp abierto y ademaacutes peligroso como el SNMPComo he dicho anteriormente en este tipo de firewall es recordable hacer un netstat para ver que puertos estaacuten en estadode escucha (abiertos) y salve que un rootkit nos haya modificado los binarios netstat nos daraacute la informacioacuten precisa quenecesitamos Hay gente que se decanta por hacerse un nmap asiacute mismos Cuidado dependiendo de coacutemo lo ejecutemosquizaacute no nos muestre todos los puertos ya que suele mirar los bien conocidosImaginemos que hemos dado un repaso a nuestro sistema y ahora si que tenemos mejor identificados los puertos tcp yudp abiertos Pero por si acaso nos curamos en salud y al final del script cerraremos el rango de puertos del 1 al 1024 losreservados tanto para tcp como udp

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusdport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPT

Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen acceso

IPTABLES manual practico tutorial de iptables con ejemplos

7

iptables minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

iquestSencillo no Ahora basta con hacer copyminuspaste de estas reglas y aplicarlas y ajustarlas en su sistema (quizaacutes usesPostgreSQL) Si tiene miedo de perder el control de una maacutequina remota pruebe el script en una maacutequina local yaseguacuterese de que aplica lo que usted quiere Funcionar va a funcionar seguro

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

Figura 6 esquema de firewall tiacutepico entre red local e internet

iquestQueacute es lo que hace falta Obviamente una regla que haga NAT hacia fuera (enmascaramiento en iptables) con lo quese hariacutea dos veces NAT en el firewall y en el router Entre el router y el firewall lo normal es que haya una red privada(19216811 y 19216812 por ejemplo) aunque dependiendo de las necesidades puede que los dos tengan IP puacuteblica Elrouter se supone que hace un NAT completo hacia dentro (quizaacute salvo puerto 23) o sea que desde el exterior no se llegaal router si no que de forma transparente se choca contra el firewall Lo normal en este tipo de firewalls es poner lapoliacutetica por defecto de FORWARD en denegar (DROP) pero eso lo vemos maacutes adelanteVeamos como seriacutea este firewallminusgateway

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

8

iptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

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

binsh SCRIPT de IPTABLES minus ejemplo del manual de iptables Ejemplo de script para firewall entre redminuslocal e internet con filtro para que solo se pueda navegar Pello Xabier Altadill Izura wwwpelloinfo minus pellopelloinfo

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

9

iptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor de correoDarle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esos puertos o si noestaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA la red local De todasformas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cada cosa bastante les cuesta amuchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos al puacuteblico en el propio firewall nosla estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla en la DMZSupongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil y con una ipdinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa con una conexioacuten

IPTABLES manual practico tutorial de iptables con ejemplos

10

ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables minusA INPUT minuss 00000 minusp tcp minusminusdport 25 minusj ACCEPT Abrimos el pop3iptables minusA INPUT minuss 00000 minusp tcp minusminusdport 110 minusj ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables minusA INPUT minuss 2114517624 minusp tcp minusminusdport 1723 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

11

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

iexclMaacutes difiacutecil todaviacuteaAhora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IIS deun servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para una empresaexterna En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacutea hacer faacutecilmentecon un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y al conectarse a eacutel te llevahasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacer redirecciones con una ventaja noperdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En fin veamos la configuracioacuten con las nuevasreglas de DNAT

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

12

iptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables minust nat minusA PREROUTING minuss 22123124181 minusi eth0 minusp tcp minusminusdport 3389 minusj DNAT minusminusto 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables minusA INPUT minuss 00000 minusp tcp minusminusdport 25 minusj ACCEPT Abrimos el pop3iptables minusA INPUT minuss 00000 minusp tcp minusminusdport 110 minusj ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables minusA INPUT minuss 2114517624 minusp tcp minusminusdport 1723 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADE

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

IPTABLES manual practico tutorial de iptables con ejemplos

13

echo 1 gt procsysnetipv4ip_forward

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones y losservicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de la redlocal Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red local es evitarescaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buena configuracioacutencon denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de red por 6 o dolares y crearuna 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 las cosasbien y colocamos ese servidor IIS en una DMZ

Figura 7 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos

En este tipo de firewall hay que permitirminus Acceso de la red local a internetminus Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZminus Acceso del servidor de la DMZ a una BBDD de la LANminus 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

IPTABLES manual practico tutorial de iptables con ejemplos

14

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 443 minusj DNAT minusminusto 19216832443

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADEiptables minust nat minusA POSTROUTING minuss 1921683024 minuso eth0 minusj 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 minusA FORWARD minuss 19216832 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

iptables minusA FORWARD minuss 192168105 minusd 19216832 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 19216832 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

15

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 19216832 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 1921683024 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 1921683024 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 puerto sinoque basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando por ejemplo tenemosdos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto 80 No hay manera desaberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPs puacuteblicas o en su defecto usarpuertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia el exterior dela DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al router como llegarhasta esa ip puacuteblica Asiacute podriacutea ser esta red

Figura 8 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos usando IPs puacuteblicas

IPTABLES manual practico tutorial de iptables con ejemplos

16

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA FORWARD minusd 21219489152 minusp tcp minusdport 80 minusj ACCEPTiptables minusA FORWARD minusd 21219489152 minusp tcp minusdport 443 minusj ACCEPTiptables minusA FORWARD minusd 2121948915030 minusj DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables minusA FORWARD minuss 21219489152 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

en el otro sentido lo mismoiptables minusA FORWARD minuss 192168105 minusd 21219489152 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

17

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 21219489152 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minussport 102465535 minusminusdport 3389 minusj ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj 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 la DMZ a lared local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegar hasta la DMZ yque a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentido seraacute el pan de cadadiacutea 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 un hackerlogra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas el hacker puede abrirCUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo el tcp3389 cosa faacutecil para unhacker que sepa algo de C o que tenga el programa pertinente a mano De todas formas el hacker tendriacutea que saber queexiste ese tipo de reglas si es listo probara con puertos de gestioacuten o con puertos netbios El problema es que se deja unviacutenculo con la LAN bien para administrarlo remotamente o para establecer relaciones de confianza y ahiacute es donde resideel peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta a otropuerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewall protegeremos un pocomejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

IPTABLES manual practico tutorial de iptables con ejemplos

18

34 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

Figura 9 esquema de firewall entre redes en la que solo se filtra y no se hace NAT

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

IPTABLES manual practico tutorial de iptables con ejemplos

19

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewalliptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341492 minusj DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341493 minusj DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341494 minusj DROP

Servidor NEWS 211341495

IPTABLES manual practico tutorial de iptables con ejemplos

20

Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341496 minusj DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341497 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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

35 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pechoiquestQueacute 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

IPTABLES manual practico tutorial de iptables con ejemplos

21

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defecto DROPiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPTiptables minusA OUTPUT minusd 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA FORWARD minuss 211341492 minusp tcp minusminussport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341492 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 25 minusj ACCEPT

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 110 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

22

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp udp minusminussport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPTiptables minusA FORWARD minuss 211341494 minusp tcp minusminussport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341494 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPTiptables minusA FORWARD minuss 211341495 minusp tcp minusminussport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341495 minusd 21319468115 minusp tcp minusminussport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPTiptables minusA FORWARD minuss 211341496 minusp tcp minusminussport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341496 minusd 813412956 minusp tcp minusminussport 3389 minusj ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPTiptables minusA FORWARD minuss 211341497 minusp tcp minusminussport 1494 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

23

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp udp minusminussport 1433 minusj ACCEPT

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 de estamanual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP FORWARD DROP

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)iptables minusA INPUT minusi lo minusj ACCEPTiptables minusA OUTPUT minuso lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPTiptables minusA OUTPUT minusd 1956534234 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

24

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 6: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

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

Ojo con el orden de las reglas

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusdport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPT

Y el resto lo cerramosiptables minusA INPUT minusp tcp minusminusdport 2021 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 22 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

IPTABLES manual practico tutorial de iptables con ejemplos

6

Nota para freaks y geeks siiii que ya lo se se puede mejorar este script usando variables se puede poner el comandocon el path completo pero limiacutetense a hacer copyminuspaste Para el resto de mortales no olvidarse de ponerle flags deejecucioacuten 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 los que notienen porque tener acceso salvo el 80 Pero cualquiera con algo de ojo se habraacute dado cuenta de que ni se filtra el UDP niel ICMP Apostariacutea cualquier cosa a que el sistema tiene alguacuten puerto udp abierto y ademaacutes peligroso como el SNMPComo he dicho anteriormente en este tipo de firewall es recordable hacer un netstat para ver que puertos estaacuten en estadode escucha (abiertos) y salve que un rootkit nos haya modificado los binarios netstat nos daraacute la informacioacuten precisa quenecesitamos Hay gente que se decanta por hacerse un nmap asiacute mismos Cuidado dependiendo de coacutemo lo ejecutemosquizaacute no nos muestre todos los puertos ya que suele mirar los bien conocidosImaginemos que hemos dado un repaso a nuestro sistema y ahora si que tenemos mejor identificados los puertos tcp yudp abiertos Pero por si acaso nos curamos en salud y al final del script cerraremos el rango de puertos del 1 al 1024 losreservados tanto para tcp como udp

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusdport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPT

Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen acceso

IPTABLES manual practico tutorial de iptables con ejemplos

7

iptables minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

iquestSencillo no Ahora basta con hacer copyminuspaste de estas reglas y aplicarlas y ajustarlas en su sistema (quizaacutes usesPostgreSQL) Si tiene miedo de perder el control de una maacutequina remota pruebe el script en una maacutequina local yaseguacuterese de que aplica lo que usted quiere Funcionar va a funcionar seguro

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

Figura 6 esquema de firewall tiacutepico entre red local e internet

iquestQueacute es lo que hace falta Obviamente una regla que haga NAT hacia fuera (enmascaramiento en iptables) con lo quese hariacutea dos veces NAT en el firewall y en el router Entre el router y el firewall lo normal es que haya una red privada(19216811 y 19216812 por ejemplo) aunque dependiendo de las necesidades puede que los dos tengan IP puacuteblica Elrouter se supone que hace un NAT completo hacia dentro (quizaacute salvo puerto 23) o sea que desde el exterior no se llegaal router si no que de forma transparente se choca contra el firewall Lo normal en este tipo de firewalls es poner lapoliacutetica por defecto de FORWARD en denegar (DROP) pero eso lo vemos maacutes adelanteVeamos como seriacutea este firewallminusgateway

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

8

iptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

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

binsh SCRIPT de IPTABLES minus ejemplo del manual de iptables Ejemplo de script para firewall entre redminuslocal e internet con filtro para que solo se pueda navegar Pello Xabier Altadill Izura wwwpelloinfo minus pellopelloinfo

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

9

iptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor de correoDarle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esos puertos o si noestaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA la red local De todasformas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cada cosa bastante les cuesta amuchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos al puacuteblico en el propio firewall nosla estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla en la DMZSupongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil y con una ipdinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa con una conexioacuten

IPTABLES manual practico tutorial de iptables con ejemplos

10

ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables minusA INPUT minuss 00000 minusp tcp minusminusdport 25 minusj ACCEPT Abrimos el pop3iptables minusA INPUT minuss 00000 minusp tcp minusminusdport 110 minusj ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables minusA INPUT minuss 2114517624 minusp tcp minusminusdport 1723 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

11

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

iexclMaacutes difiacutecil todaviacuteaAhora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IIS deun servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para una empresaexterna En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacutea hacer faacutecilmentecon un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y al conectarse a eacutel te llevahasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacer redirecciones con una ventaja noperdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En fin veamos la configuracioacuten con las nuevasreglas de DNAT

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

12

iptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables minust nat minusA PREROUTING minuss 22123124181 minusi eth0 minusp tcp minusminusdport 3389 minusj DNAT minusminusto 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables minusA INPUT minuss 00000 minusp tcp minusminusdport 25 minusj ACCEPT Abrimos el pop3iptables minusA INPUT minuss 00000 minusp tcp minusminusdport 110 minusj ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables minusA INPUT minuss 2114517624 minusp tcp minusminusdport 1723 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADE

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

IPTABLES manual practico tutorial de iptables con ejemplos

13

echo 1 gt procsysnetipv4ip_forward

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones y losservicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de la redlocal Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red local es evitarescaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buena configuracioacutencon denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de red por 6 o dolares y crearuna 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 las cosasbien y colocamos ese servidor IIS en una DMZ

Figura 7 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos

En este tipo de firewall hay que permitirminus Acceso de la red local a internetminus Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZminus Acceso del servidor de la DMZ a una BBDD de la LANminus 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

IPTABLES manual practico tutorial de iptables con ejemplos

14

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 443 minusj DNAT minusminusto 19216832443

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADEiptables minust nat minusA POSTROUTING minuss 1921683024 minuso eth0 minusj 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 minusA FORWARD minuss 19216832 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

iptables minusA FORWARD minuss 192168105 minusd 19216832 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 19216832 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

15

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 19216832 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 1921683024 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 1921683024 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 puerto sinoque basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando por ejemplo tenemosdos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto 80 No hay manera desaberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPs puacuteblicas o en su defecto usarpuertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia el exterior dela DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al router como llegarhasta esa ip puacuteblica Asiacute podriacutea ser esta red

Figura 8 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos usando IPs puacuteblicas

IPTABLES manual practico tutorial de iptables con ejemplos

16

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA FORWARD minusd 21219489152 minusp tcp minusdport 80 minusj ACCEPTiptables minusA FORWARD minusd 21219489152 minusp tcp minusdport 443 minusj ACCEPTiptables minusA FORWARD minusd 2121948915030 minusj DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables minusA FORWARD minuss 21219489152 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

en el otro sentido lo mismoiptables minusA FORWARD minuss 192168105 minusd 21219489152 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

17

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 21219489152 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minussport 102465535 minusminusdport 3389 minusj ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj 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 la DMZ a lared local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegar hasta la DMZ yque a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentido seraacute el pan de cadadiacutea 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 un hackerlogra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas el hacker puede abrirCUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo el tcp3389 cosa faacutecil para unhacker que sepa algo de C o que tenga el programa pertinente a mano De todas formas el hacker tendriacutea que saber queexiste ese tipo de reglas si es listo probara con puertos de gestioacuten o con puertos netbios El problema es que se deja unviacutenculo con la LAN bien para administrarlo remotamente o para establecer relaciones de confianza y ahiacute es donde resideel peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta a otropuerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewall protegeremos un pocomejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

IPTABLES manual practico tutorial de iptables con ejemplos

18

34 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

Figura 9 esquema de firewall entre redes en la que solo se filtra y no se hace NAT

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

IPTABLES manual practico tutorial de iptables con ejemplos

19

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewalliptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341492 minusj DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341493 minusj DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341494 minusj DROP

Servidor NEWS 211341495

IPTABLES manual practico tutorial de iptables con ejemplos

20

Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341496 minusj DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341497 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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

35 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pechoiquestQueacute 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

IPTABLES manual practico tutorial de iptables con ejemplos

21

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defecto DROPiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPTiptables minusA OUTPUT minusd 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA FORWARD minuss 211341492 minusp tcp minusminussport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341492 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 25 minusj ACCEPT

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 110 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

22

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp udp minusminussport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPTiptables minusA FORWARD minuss 211341494 minusp tcp minusminussport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341494 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPTiptables minusA FORWARD minuss 211341495 minusp tcp minusminussport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341495 minusd 21319468115 minusp tcp minusminussport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPTiptables minusA FORWARD minuss 211341496 minusp tcp minusminussport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341496 minusd 813412956 minusp tcp minusminussport 3389 minusj ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPTiptables minusA FORWARD minuss 211341497 minusp tcp minusminussport 1494 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

23

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp udp minusminussport 1433 minusj ACCEPT

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 de estamanual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP FORWARD DROP

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)iptables minusA INPUT minusi lo minusj ACCEPTiptables minusA OUTPUT minuso lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPTiptables minusA OUTPUT minusd 1956534234 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

24

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 7: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

Nota para freaks y geeks siiii que ya lo se se puede mejorar este script usando variables se puede poner el comandocon el path completo pero limiacutetense a hacer copyminuspaste Para el resto de mortales no olvidarse de ponerle flags deejecucioacuten 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 los que notienen porque tener acceso salvo el 80 Pero cualquiera con algo de ojo se habraacute dado cuenta de que ni se filtra el UDP niel ICMP Apostariacutea cualquier cosa a que el sistema tiene alguacuten puerto udp abierto y ademaacutes peligroso como el SNMPComo he dicho anteriormente en este tipo de firewall es recordable hacer un netstat para ver que puertos estaacuten en estadode escucha (abiertos) y salve que un rootkit nos haya modificado los binarios netstat nos daraacute la informacioacuten precisa quenecesitamos Hay gente que se decanta por hacerse un nmap asiacute mismos Cuidado dependiendo de coacutemo lo ejecutemosquizaacute no nos muestre todos los puertos ya que suele mirar los bien conocidosImaginemos que hemos dado un repaso a nuestro sistema y ahora si que tenemos mejor identificados los puertos tcp yudp abiertos Pero por si acaso nos curamos en salud y al final del script cerraremos el rango de puertos del 1 al 1024 losreservados tanto para tcp como udp

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPT

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusdport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPT

Cerramos rango de los puertos privilegiados Cuidado con este tipo de barreras antes hay que abrir a los que si tienen acceso

IPTABLES manual practico tutorial de iptables con ejemplos

7

iptables minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

iquestSencillo no Ahora basta con hacer copyminuspaste de estas reglas y aplicarlas y ajustarlas en su sistema (quizaacutes usesPostgreSQL) Si tiene miedo de perder el control de una maacutequina remota pruebe el script en una maacutequina local yaseguacuterese de que aplica lo que usted quiere Funcionar va a funcionar seguro

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

Figura 6 esquema de firewall tiacutepico entre red local e internet

iquestQueacute es lo que hace falta Obviamente una regla que haga NAT hacia fuera (enmascaramiento en iptables) con lo quese hariacutea dos veces NAT en el firewall y en el router Entre el router y el firewall lo normal es que haya una red privada(19216811 y 19216812 por ejemplo) aunque dependiendo de las necesidades puede que los dos tengan IP puacuteblica Elrouter se supone que hace un NAT completo hacia dentro (quizaacute salvo puerto 23) o sea que desde el exterior no se llegaal router si no que de forma transparente se choca contra el firewall Lo normal en este tipo de firewalls es poner lapoliacutetica por defecto de FORWARD en denegar (DROP) pero eso lo vemos maacutes adelanteVeamos como seriacutea este firewallminusgateway

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

8

iptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

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

binsh SCRIPT de IPTABLES minus ejemplo del manual de iptables Ejemplo de script para firewall entre redminuslocal e internet con filtro para que solo se pueda navegar Pello Xabier Altadill Izura wwwpelloinfo minus pellopelloinfo

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

9

iptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor de correoDarle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esos puertos o si noestaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA la red local De todasformas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cada cosa bastante les cuesta amuchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos al puacuteblico en el propio firewall nosla estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla en la DMZSupongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil y con una ipdinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa con una conexioacuten

IPTABLES manual practico tutorial de iptables con ejemplos

10

ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables minusA INPUT minuss 00000 minusp tcp minusminusdport 25 minusj ACCEPT Abrimos el pop3iptables minusA INPUT minuss 00000 minusp tcp minusminusdport 110 minusj ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables minusA INPUT minuss 2114517624 minusp tcp minusminusdport 1723 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

11

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

iexclMaacutes difiacutecil todaviacuteaAhora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IIS deun servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para una empresaexterna En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacutea hacer faacutecilmentecon un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y al conectarse a eacutel te llevahasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacer redirecciones con una ventaja noperdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En fin veamos la configuracioacuten con las nuevasreglas de DNAT

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

12

iptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables minust nat minusA PREROUTING minuss 22123124181 minusi eth0 minusp tcp minusminusdport 3389 minusj DNAT minusminusto 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables minusA INPUT minuss 00000 minusp tcp minusminusdport 25 minusj ACCEPT Abrimos el pop3iptables minusA INPUT minuss 00000 minusp tcp minusminusdport 110 minusj ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables minusA INPUT minuss 2114517624 minusp tcp minusminusdport 1723 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADE

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

IPTABLES manual practico tutorial de iptables con ejemplos

13

echo 1 gt procsysnetipv4ip_forward

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones y losservicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de la redlocal Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red local es evitarescaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buena configuracioacutencon denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de red por 6 o dolares y crearuna 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 las cosasbien y colocamos ese servidor IIS en una DMZ

Figura 7 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos

En este tipo de firewall hay que permitirminus Acceso de la red local a internetminus Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZminus Acceso del servidor de la DMZ a una BBDD de la LANminus 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

IPTABLES manual practico tutorial de iptables con ejemplos

14

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 443 minusj DNAT minusminusto 19216832443

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADEiptables minust nat minusA POSTROUTING minuss 1921683024 minuso eth0 minusj 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 minusA FORWARD minuss 19216832 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

iptables minusA FORWARD minuss 192168105 minusd 19216832 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 19216832 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

15

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 19216832 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 1921683024 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 1921683024 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 puerto sinoque basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando por ejemplo tenemosdos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto 80 No hay manera desaberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPs puacuteblicas o en su defecto usarpuertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia el exterior dela DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al router como llegarhasta esa ip puacuteblica Asiacute podriacutea ser esta red

Figura 8 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos usando IPs puacuteblicas

IPTABLES manual practico tutorial de iptables con ejemplos

16

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA FORWARD minusd 21219489152 minusp tcp minusdport 80 minusj ACCEPTiptables minusA FORWARD minusd 21219489152 minusp tcp minusdport 443 minusj ACCEPTiptables minusA FORWARD minusd 2121948915030 minusj DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables minusA FORWARD minuss 21219489152 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

en el otro sentido lo mismoiptables minusA FORWARD minuss 192168105 minusd 21219489152 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

17

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 21219489152 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minussport 102465535 minusminusdport 3389 minusj ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj 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 la DMZ a lared local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegar hasta la DMZ yque a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentido seraacute el pan de cadadiacutea 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 un hackerlogra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas el hacker puede abrirCUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo el tcp3389 cosa faacutecil para unhacker que sepa algo de C o que tenga el programa pertinente a mano De todas formas el hacker tendriacutea que saber queexiste ese tipo de reglas si es listo probara con puertos de gestioacuten o con puertos netbios El problema es que se deja unviacutenculo con la LAN bien para administrarlo remotamente o para establecer relaciones de confianza y ahiacute es donde resideel peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta a otropuerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewall protegeremos un pocomejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

IPTABLES manual practico tutorial de iptables con ejemplos

18

34 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

Figura 9 esquema de firewall entre redes en la que solo se filtra y no se hace NAT

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

IPTABLES manual practico tutorial de iptables con ejemplos

19

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewalliptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341492 minusj DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341493 minusj DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341494 minusj DROP

Servidor NEWS 211341495

IPTABLES manual practico tutorial de iptables con ejemplos

20

Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341496 minusj DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341497 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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

35 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pechoiquestQueacute 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

IPTABLES manual practico tutorial de iptables con ejemplos

21

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defecto DROPiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPTiptables minusA OUTPUT minusd 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA FORWARD minuss 211341492 minusp tcp minusminussport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341492 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 25 minusj ACCEPT

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 110 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

22

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp udp minusminussport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPTiptables minusA FORWARD minuss 211341494 minusp tcp minusminussport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341494 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPTiptables minusA FORWARD minuss 211341495 minusp tcp minusminussport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341495 minusd 21319468115 minusp tcp minusminussport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPTiptables minusA FORWARD minuss 211341496 minusp tcp minusminussport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341496 minusd 813412956 minusp tcp minusminussport 3389 minusj ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPTiptables minusA FORWARD minuss 211341497 minusp tcp minusminussport 1494 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

23

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp udp minusminussport 1433 minusj ACCEPT

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 de estamanual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP FORWARD DROP

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)iptables minusA INPUT minusi lo minusj ACCEPTiptables minusA OUTPUT minuso lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPTiptables minusA OUTPUT minusd 1956534234 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

24

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 8: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

iptables minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

iquestSencillo no Ahora basta con hacer copyminuspaste de estas reglas y aplicarlas y ajustarlas en su sistema (quizaacutes usesPostgreSQL) Si tiene miedo de perder el control de una maacutequina remota pruebe el script en una maacutequina local yaseguacuterese de que aplica lo que usted quiere Funcionar va a funcionar seguro

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

Figura 6 esquema de firewall tiacutepico entre red local e internet

iquestQueacute es lo que hace falta Obviamente una regla que haga NAT hacia fuera (enmascaramiento en iptables) con lo quese hariacutea dos veces NAT en el firewall y en el router Entre el router y el firewall lo normal es que haya una red privada(19216811 y 19216812 por ejemplo) aunque dependiendo de las necesidades puede que los dos tengan IP puacuteblica Elrouter se supone que hace un NAT completo hacia dentro (quizaacute salvo puerto 23) o sea que desde el exterior no se llegaal router si no que de forma transparente se choca contra el firewall Lo normal en este tipo de firewalls es poner lapoliacutetica por defecto de FORWARD en denegar (DROP) pero eso lo vemos maacutes adelanteVeamos como seriacutea este firewallminusgateway

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

8

iptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

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

binsh SCRIPT de IPTABLES minus ejemplo del manual de iptables Ejemplo de script para firewall entre redminuslocal e internet con filtro para que solo se pueda navegar Pello Xabier Altadill Izura wwwpelloinfo minus pellopelloinfo

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

9

iptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor de correoDarle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esos puertos o si noestaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA la red local De todasformas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cada cosa bastante les cuesta amuchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos al puacuteblico en el propio firewall nosla estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla en la DMZSupongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil y con una ipdinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa con una conexioacuten

IPTABLES manual practico tutorial de iptables con ejemplos

10

ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables minusA INPUT minuss 00000 minusp tcp minusminusdport 25 minusj ACCEPT Abrimos el pop3iptables minusA INPUT minuss 00000 minusp tcp minusminusdport 110 minusj ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables minusA INPUT minuss 2114517624 minusp tcp minusminusdport 1723 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

11

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

iexclMaacutes difiacutecil todaviacuteaAhora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IIS deun servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para una empresaexterna En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacutea hacer faacutecilmentecon un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y al conectarse a eacutel te llevahasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacer redirecciones con una ventaja noperdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En fin veamos la configuracioacuten con las nuevasreglas de DNAT

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

12

iptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables minust nat minusA PREROUTING minuss 22123124181 minusi eth0 minusp tcp minusminusdport 3389 minusj DNAT minusminusto 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables minusA INPUT minuss 00000 minusp tcp minusminusdport 25 minusj ACCEPT Abrimos el pop3iptables minusA INPUT minuss 00000 minusp tcp minusminusdport 110 minusj ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables minusA INPUT minuss 2114517624 minusp tcp minusminusdport 1723 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADE

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

IPTABLES manual practico tutorial de iptables con ejemplos

13

echo 1 gt procsysnetipv4ip_forward

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones y losservicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de la redlocal Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red local es evitarescaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buena configuracioacutencon denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de red por 6 o dolares y crearuna 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 las cosasbien y colocamos ese servidor IIS en una DMZ

Figura 7 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos

En este tipo de firewall hay que permitirminus Acceso de la red local a internetminus Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZminus Acceso del servidor de la DMZ a una BBDD de la LANminus 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

IPTABLES manual practico tutorial de iptables con ejemplos

14

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 443 minusj DNAT minusminusto 19216832443

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADEiptables minust nat minusA POSTROUTING minuss 1921683024 minuso eth0 minusj 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 minusA FORWARD minuss 19216832 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

iptables minusA FORWARD minuss 192168105 minusd 19216832 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 19216832 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

15

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 19216832 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 1921683024 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 1921683024 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 puerto sinoque basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando por ejemplo tenemosdos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto 80 No hay manera desaberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPs puacuteblicas o en su defecto usarpuertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia el exterior dela DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al router como llegarhasta esa ip puacuteblica Asiacute podriacutea ser esta red

Figura 8 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos usando IPs puacuteblicas

IPTABLES manual practico tutorial de iptables con ejemplos

16

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA FORWARD minusd 21219489152 minusp tcp minusdport 80 minusj ACCEPTiptables minusA FORWARD minusd 21219489152 minusp tcp minusdport 443 minusj ACCEPTiptables minusA FORWARD minusd 2121948915030 minusj DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables minusA FORWARD minuss 21219489152 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

en el otro sentido lo mismoiptables minusA FORWARD minuss 192168105 minusd 21219489152 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

17

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 21219489152 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minussport 102465535 minusminusdport 3389 minusj ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj 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 la DMZ a lared local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegar hasta la DMZ yque a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentido seraacute el pan de cadadiacutea 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 un hackerlogra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas el hacker puede abrirCUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo el tcp3389 cosa faacutecil para unhacker que sepa algo de C o que tenga el programa pertinente a mano De todas formas el hacker tendriacutea que saber queexiste ese tipo de reglas si es listo probara con puertos de gestioacuten o con puertos netbios El problema es que se deja unviacutenculo con la LAN bien para administrarlo remotamente o para establecer relaciones de confianza y ahiacute es donde resideel peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta a otropuerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewall protegeremos un pocomejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

IPTABLES manual practico tutorial de iptables con ejemplos

18

34 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

Figura 9 esquema de firewall entre redes en la que solo se filtra y no se hace NAT

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

IPTABLES manual practico tutorial de iptables con ejemplos

19

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewalliptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341492 minusj DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341493 minusj DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341494 minusj DROP

Servidor NEWS 211341495

IPTABLES manual practico tutorial de iptables con ejemplos

20

Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341496 minusj DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341497 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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

35 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pechoiquestQueacute 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

IPTABLES manual practico tutorial de iptables con ejemplos

21

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defecto DROPiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPTiptables minusA OUTPUT minusd 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA FORWARD minuss 211341492 minusp tcp minusminussport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341492 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 25 minusj ACCEPT

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 110 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

22

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp udp minusminussport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPTiptables minusA FORWARD minuss 211341494 minusp tcp minusminussport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341494 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPTiptables minusA FORWARD minuss 211341495 minusp tcp minusminussport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341495 minusd 21319468115 minusp tcp minusminussport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPTiptables minusA FORWARD minuss 211341496 minusp tcp minusminussport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341496 minusd 813412956 minusp tcp minusminussport 3389 minusj ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPTiptables minusA FORWARD minuss 211341497 minusp tcp minusminussport 1494 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

23

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp udp minusminussport 1433 minusj ACCEPT

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 de estamanual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP FORWARD DROP

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)iptables minusA INPUT minusi lo minusj ACCEPTiptables minusA OUTPUT minuso lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPTiptables minusA OUTPUT minusd 1956534234 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

24

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 9: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

iptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

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

binsh SCRIPT de IPTABLES minus ejemplo del manual de iptables Ejemplo de script para firewall entre redminuslocal e internet con filtro para que solo se pueda navegar Pello Xabier Altadill Izura wwwpelloinfo minus pellopelloinfo

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

9

iptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor de correoDarle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esos puertos o si noestaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA la red local De todasformas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cada cosa bastante les cuesta amuchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos al puacuteblico en el propio firewall nosla estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla en la DMZSupongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil y con una ipdinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa con una conexioacuten

IPTABLES manual practico tutorial de iptables con ejemplos

10

ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables minusA INPUT minuss 00000 minusp tcp minusminusdport 25 minusj ACCEPT Abrimos el pop3iptables minusA INPUT minuss 00000 minusp tcp minusminusdport 110 minusj ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables minusA INPUT minuss 2114517624 minusp tcp minusminusdport 1723 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

11

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

iexclMaacutes difiacutecil todaviacuteaAhora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IIS deun servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para una empresaexterna En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacutea hacer faacutecilmentecon un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y al conectarse a eacutel te llevahasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacer redirecciones con una ventaja noperdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En fin veamos la configuracioacuten con las nuevasreglas de DNAT

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

12

iptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables minust nat minusA PREROUTING minuss 22123124181 minusi eth0 minusp tcp minusminusdport 3389 minusj DNAT minusminusto 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables minusA INPUT minuss 00000 minusp tcp minusminusdport 25 minusj ACCEPT Abrimos el pop3iptables minusA INPUT minuss 00000 minusp tcp minusminusdport 110 minusj ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables minusA INPUT minuss 2114517624 minusp tcp minusminusdport 1723 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADE

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

IPTABLES manual practico tutorial de iptables con ejemplos

13

echo 1 gt procsysnetipv4ip_forward

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones y losservicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de la redlocal Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red local es evitarescaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buena configuracioacutencon denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de red por 6 o dolares y crearuna 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 las cosasbien y colocamos ese servidor IIS en una DMZ

Figura 7 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos

En este tipo de firewall hay que permitirminus Acceso de la red local a internetminus Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZminus Acceso del servidor de la DMZ a una BBDD de la LANminus 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

IPTABLES manual practico tutorial de iptables con ejemplos

14

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 443 minusj DNAT minusminusto 19216832443

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADEiptables minust nat minusA POSTROUTING minuss 1921683024 minuso eth0 minusj 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 minusA FORWARD minuss 19216832 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

iptables minusA FORWARD minuss 192168105 minusd 19216832 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 19216832 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

15

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 19216832 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 1921683024 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 1921683024 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 puerto sinoque basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando por ejemplo tenemosdos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto 80 No hay manera desaberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPs puacuteblicas o en su defecto usarpuertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia el exterior dela DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al router como llegarhasta esa ip puacuteblica Asiacute podriacutea ser esta red

Figura 8 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos usando IPs puacuteblicas

IPTABLES manual practico tutorial de iptables con ejemplos

16

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA FORWARD minusd 21219489152 minusp tcp minusdport 80 minusj ACCEPTiptables minusA FORWARD minusd 21219489152 minusp tcp minusdport 443 minusj ACCEPTiptables minusA FORWARD minusd 2121948915030 minusj DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables minusA FORWARD minuss 21219489152 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

en el otro sentido lo mismoiptables minusA FORWARD minuss 192168105 minusd 21219489152 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

17

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 21219489152 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minussport 102465535 minusminusdport 3389 minusj ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj 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 la DMZ a lared local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegar hasta la DMZ yque a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentido seraacute el pan de cadadiacutea 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 un hackerlogra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas el hacker puede abrirCUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo el tcp3389 cosa faacutecil para unhacker que sepa algo de C o que tenga el programa pertinente a mano De todas formas el hacker tendriacutea que saber queexiste ese tipo de reglas si es listo probara con puertos de gestioacuten o con puertos netbios El problema es que se deja unviacutenculo con la LAN bien para administrarlo remotamente o para establecer relaciones de confianza y ahiacute es donde resideel peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta a otropuerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewall protegeremos un pocomejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

IPTABLES manual practico tutorial de iptables con ejemplos

18

34 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

Figura 9 esquema de firewall entre redes en la que solo se filtra y no se hace NAT

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

IPTABLES manual practico tutorial de iptables con ejemplos

19

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewalliptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341492 minusj DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341493 minusj DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341494 minusj DROP

Servidor NEWS 211341495

IPTABLES manual practico tutorial de iptables con ejemplos

20

Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341496 minusj DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341497 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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

35 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pechoiquestQueacute 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

IPTABLES manual practico tutorial de iptables con ejemplos

21

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defecto DROPiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPTiptables minusA OUTPUT minusd 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA FORWARD minuss 211341492 minusp tcp minusminussport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341492 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 25 minusj ACCEPT

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 110 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

22

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp udp minusminussport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPTiptables minusA FORWARD minuss 211341494 minusp tcp minusminussport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341494 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPTiptables minusA FORWARD minuss 211341495 minusp tcp minusminussport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341495 minusd 21319468115 minusp tcp minusminussport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPTiptables minusA FORWARD minuss 211341496 minusp tcp minusminussport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341496 minusd 813412956 minusp tcp minusminussport 3389 minusj ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPTiptables minusA FORWARD minuss 211341497 minusp tcp minusminussport 1494 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

23

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp udp minusminussport 1433 minusj ACCEPT

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 de estamanual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP FORWARD DROP

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)iptables minusA INPUT minusi lo minusj ACCEPTiptables minusA OUTPUT minuso lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPTiptables minusA OUTPUT minusd 1956534234 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

24

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 10: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

iptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

Supongamos que este firewall tiene alguna funcioacuten adicional es un servidor proxy y ademaacutes es un servidor de correoDarle funcionalidades de este tipo a un firewall no es recomendable porque si no se protegen bien esos puertos o si noestaacute actualizado el software pueden entrar en el firewall a base de xploits comprometiendo TODA la red local De todasformas muchas empresas no se pueden permitir o no quieren tener una maacutequina para cada cosa bastante les cuesta amuchas poner un firewall Por tanto si se antildeaden servicios que deben estar abiertos al puacuteblico en el propio firewall nosla estamos jugando y se recomienda pasar el servicio a otra maacutequina y ponerla en la DMZSupongamos tambieacuten que la empresa tiene comerciales en ruta y que se conectan a internet desde su portaacutetil y con una ipdinaacutemica Supongamos tambieacuten que el jefe de la empresa quiere acceder a la red local desde casa con una conexioacuten

IPTABLES manual practico tutorial de iptables con ejemplos

10

ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables minusA INPUT minuss 00000 minusp tcp minusminusdport 25 minusj ACCEPT Abrimos el pop3iptables minusA INPUT minuss 00000 minusp tcp minusminusdport 110 minusj ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables minusA INPUT minuss 2114517624 minusp tcp minusminusdport 1723 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

11

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

iexclMaacutes difiacutecil todaviacuteaAhora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IIS deun servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para una empresaexterna En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacutea hacer faacutecilmentecon un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y al conectarse a eacutel te llevahasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacer redirecciones con una ventaja noperdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En fin veamos la configuracioacuten con las nuevasreglas de DNAT

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

12

iptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables minust nat minusA PREROUTING minuss 22123124181 minusi eth0 minusp tcp minusminusdport 3389 minusj DNAT minusminusto 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables minusA INPUT minuss 00000 minusp tcp minusminusdport 25 minusj ACCEPT Abrimos el pop3iptables minusA INPUT minuss 00000 minusp tcp minusminusdport 110 minusj ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables minusA INPUT minuss 2114517624 minusp tcp minusminusdport 1723 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADE

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

IPTABLES manual practico tutorial de iptables con ejemplos

13

echo 1 gt procsysnetipv4ip_forward

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones y losservicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de la redlocal Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red local es evitarescaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buena configuracioacutencon denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de red por 6 o dolares y crearuna 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 las cosasbien y colocamos ese servidor IIS en una DMZ

Figura 7 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos

En este tipo de firewall hay que permitirminus Acceso de la red local a internetminus Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZminus Acceso del servidor de la DMZ a una BBDD de la LANminus 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

IPTABLES manual practico tutorial de iptables con ejemplos

14

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 443 minusj DNAT minusminusto 19216832443

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADEiptables minust nat minusA POSTROUTING minuss 1921683024 minuso eth0 minusj 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 minusA FORWARD minuss 19216832 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

iptables minusA FORWARD minuss 192168105 minusd 19216832 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 19216832 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

15

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 19216832 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 1921683024 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 1921683024 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 puerto sinoque basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando por ejemplo tenemosdos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto 80 No hay manera desaberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPs puacuteblicas o en su defecto usarpuertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia el exterior dela DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al router como llegarhasta esa ip puacuteblica Asiacute podriacutea ser esta red

Figura 8 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos usando IPs puacuteblicas

IPTABLES manual practico tutorial de iptables con ejemplos

16

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA FORWARD minusd 21219489152 minusp tcp minusdport 80 minusj ACCEPTiptables minusA FORWARD minusd 21219489152 minusp tcp minusdport 443 minusj ACCEPTiptables minusA FORWARD minusd 2121948915030 minusj DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables minusA FORWARD minuss 21219489152 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

en el otro sentido lo mismoiptables minusA FORWARD minuss 192168105 minusd 21219489152 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

17

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 21219489152 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minussport 102465535 minusminusdport 3389 minusj ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj 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 la DMZ a lared local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegar hasta la DMZ yque a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentido seraacute el pan de cadadiacutea 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 un hackerlogra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas el hacker puede abrirCUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo el tcp3389 cosa faacutecil para unhacker que sepa algo de C o que tenga el programa pertinente a mano De todas formas el hacker tendriacutea que saber queexiste ese tipo de reglas si es listo probara con puertos de gestioacuten o con puertos netbios El problema es que se deja unviacutenculo con la LAN bien para administrarlo remotamente o para establecer relaciones de confianza y ahiacute es donde resideel peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta a otropuerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewall protegeremos un pocomejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

IPTABLES manual practico tutorial de iptables con ejemplos

18

34 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

Figura 9 esquema de firewall entre redes en la que solo se filtra y no se hace NAT

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

IPTABLES manual practico tutorial de iptables con ejemplos

19

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewalliptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341492 minusj DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341493 minusj DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341494 minusj DROP

Servidor NEWS 211341495

IPTABLES manual practico tutorial de iptables con ejemplos

20

Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341496 minusj DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341497 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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

35 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pechoiquestQueacute 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

IPTABLES manual practico tutorial de iptables con ejemplos

21

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defecto DROPiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPTiptables minusA OUTPUT minusd 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA FORWARD minuss 211341492 minusp tcp minusminussport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341492 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 25 minusj ACCEPT

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 110 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

22

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp udp minusminussport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPTiptables minusA FORWARD minuss 211341494 minusp tcp minusminussport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341494 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPTiptables minusA FORWARD minuss 211341495 minusp tcp minusminussport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341495 minusd 21319468115 minusp tcp minusminussport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPTiptables minusA FORWARD minuss 211341496 minusp tcp minusminussport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341496 minusd 813412956 minusp tcp minusminussport 3389 minusj ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPTiptables minusA FORWARD minuss 211341497 minusp tcp minusminussport 1494 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

23

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp udp minusminussport 1433 minusj ACCEPT

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 de estamanual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP FORWARD DROP

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)iptables minusA INPUT minusi lo minusj ACCEPTiptables minusA OUTPUT minuso lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPTiptables minusA OUTPUT minusd 1956534234 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

24

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 11: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

ADSL Ahora en el firewall debieramos tener instalado un servidor SMTP pop3 y un PPTPD

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables minusA INPUT minuss 00000 minusp tcp minusminusdport 25 minusj ACCEPT Abrimos el pop3iptables minusA INPUT minuss 00000 minusp tcp minusminusdport 110 minusj ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables minusA INPUT minuss 2114517624 minusp tcp minusminusdport 1723 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

11

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

iexclMaacutes difiacutecil todaviacuteaAhora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IIS deun servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para una empresaexterna En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacutea hacer faacutecilmentecon un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y al conectarse a eacutel te llevahasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacer redirecciones con una ventaja noperdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En fin veamos la configuracioacuten con las nuevasreglas de DNAT

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

12

iptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables minust nat minusA PREROUTING minuss 22123124181 minusi eth0 minusp tcp minusminusdport 3389 minusj DNAT minusminusto 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables minusA INPUT minuss 00000 minusp tcp minusminusdport 25 minusj ACCEPT Abrimos el pop3iptables minusA INPUT minuss 00000 minusp tcp minusminusdport 110 minusj ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables minusA INPUT minuss 2114517624 minusp tcp minusminusdport 1723 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADE

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

IPTABLES manual practico tutorial de iptables con ejemplos

13

echo 1 gt procsysnetipv4ip_forward

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones y losservicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de la redlocal Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red local es evitarescaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buena configuracioacutencon denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de red por 6 o dolares y crearuna 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 las cosasbien y colocamos ese servidor IIS en una DMZ

Figura 7 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos

En este tipo de firewall hay que permitirminus Acceso de la red local a internetminus Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZminus Acceso del servidor de la DMZ a una BBDD de la LANminus 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

IPTABLES manual practico tutorial de iptables con ejemplos

14

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 443 minusj DNAT minusminusto 19216832443

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADEiptables minust nat minusA POSTROUTING minuss 1921683024 minuso eth0 minusj 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 minusA FORWARD minuss 19216832 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

iptables minusA FORWARD minuss 192168105 minusd 19216832 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 19216832 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

15

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 19216832 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 1921683024 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 1921683024 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 puerto sinoque basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando por ejemplo tenemosdos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto 80 No hay manera desaberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPs puacuteblicas o en su defecto usarpuertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia el exterior dela DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al router como llegarhasta esa ip puacuteblica Asiacute podriacutea ser esta red

Figura 8 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos usando IPs puacuteblicas

IPTABLES manual practico tutorial de iptables con ejemplos

16

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA FORWARD minusd 21219489152 minusp tcp minusdport 80 minusj ACCEPTiptables minusA FORWARD minusd 21219489152 minusp tcp minusdport 443 minusj ACCEPTiptables minusA FORWARD minusd 2121948915030 minusj DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables minusA FORWARD minuss 21219489152 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

en el otro sentido lo mismoiptables minusA FORWARD minuss 192168105 minusd 21219489152 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

17

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 21219489152 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minussport 102465535 minusminusdport 3389 minusj ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj 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 la DMZ a lared local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegar hasta la DMZ yque a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentido seraacute el pan de cadadiacutea 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 un hackerlogra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas el hacker puede abrirCUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo el tcp3389 cosa faacutecil para unhacker que sepa algo de C o que tenga el programa pertinente a mano De todas formas el hacker tendriacutea que saber queexiste ese tipo de reglas si es listo probara con puertos de gestioacuten o con puertos netbios El problema es que se deja unviacutenculo con la LAN bien para administrarlo remotamente o para establecer relaciones de confianza y ahiacute es donde resideel peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta a otropuerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewall protegeremos un pocomejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

IPTABLES manual practico tutorial de iptables con ejemplos

18

34 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

Figura 9 esquema de firewall entre redes en la que solo se filtra y no se hace NAT

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

IPTABLES manual practico tutorial de iptables con ejemplos

19

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewalliptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341492 minusj DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341493 minusj DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341494 minusj DROP

Servidor NEWS 211341495

IPTABLES manual practico tutorial de iptables con ejemplos

20

Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341496 minusj DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341497 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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

35 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pechoiquestQueacute 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

IPTABLES manual practico tutorial de iptables con ejemplos

21

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defecto DROPiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPTiptables minusA OUTPUT minusd 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA FORWARD minuss 211341492 minusp tcp minusminussport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341492 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 25 minusj ACCEPT

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 110 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

22

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp udp minusminussport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPTiptables minusA FORWARD minuss 211341494 minusp tcp minusminussport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341494 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPTiptables minusA FORWARD minuss 211341495 minusp tcp minusminussport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341495 minusd 21319468115 minusp tcp minusminussport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPTiptables minusA FORWARD minuss 211341496 minusp tcp minusminussport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341496 minusd 813412956 minusp tcp minusminussport 3389 minusj ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPTiptables minusA FORWARD minuss 211341497 minusp tcp minusminussport 1494 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

23

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp udp minusminussport 1433 minusj ACCEPT

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 de estamanual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP FORWARD DROP

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)iptables minusA INPUT minusi lo minusj ACCEPTiptables minusA OUTPUT minuso lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPTiptables minusA OUTPUT minusd 1956534234 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

24

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 12: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

iexclMaacutes difiacutecil todaviacuteaAhora queremos compartir alguacuten servicio pero de un servidor que tenemos dentro de la red local por ejemplo el IIS deun servidor windows2000 y ademaacutes permitir la gestioacuten remota por terminal server para esta maacutequina para una empresaexterna En este caso lo que hay que hacer es un redireccioacuten de puerto Antes de iptables esto se podiacutea hacer faacutecilmentecon un servidor como rinet Rinet lo que hace es simplemente abrir un puerto en el firewall y al conectarse a eacutel te llevahasta el puerto de otra maacutequina como una tuberiacutea Con Iptables podemos hacer redirecciones con una ventaja noperdemos la informacioacuten de IP origen cosa que con rinet siacute ocurriacutea En fin veamos la configuracioacuten con las nuevasreglas de DNAT

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

12

iptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables minust nat minusA PREROUTING minuss 22123124181 minusi eth0 minusp tcp minusminusdport 3389 minusj DNAT minusminusto 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables minusA INPUT minuss 00000 minusp tcp minusminusdport 25 minusj ACCEPT Abrimos el pop3iptables minusA INPUT minuss 00000 minusp tcp minusminusdport 110 minusj ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables minusA INPUT minuss 2114517624 minusp tcp minusminusdport 1723 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADE

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

IPTABLES manual practico tutorial de iptables con ejemplos

13

echo 1 gt procsysnetipv4ip_forward

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones y losservicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de la redlocal Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red local es evitarescaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buena configuracioacutencon denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de red por 6 o dolares y crearuna 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 las cosasbien y colocamos ese servidor IIS en una DMZ

Figura 7 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos

En este tipo de firewall hay que permitirminus Acceso de la red local a internetminus Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZminus Acceso del servidor de la DMZ a una BBDD de la LANminus 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

IPTABLES manual practico tutorial de iptables con ejemplos

14

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 443 minusj DNAT minusminusto 19216832443

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADEiptables minust nat minusA POSTROUTING minuss 1921683024 minuso eth0 minusj 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 minusA FORWARD minuss 19216832 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

iptables minusA FORWARD minuss 192168105 minusd 19216832 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 19216832 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

15

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 19216832 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 1921683024 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 1921683024 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 puerto sinoque basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando por ejemplo tenemosdos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto 80 No hay manera desaberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPs puacuteblicas o en su defecto usarpuertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia el exterior dela DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al router como llegarhasta esa ip puacuteblica Asiacute podriacutea ser esta red

Figura 8 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos usando IPs puacuteblicas

IPTABLES manual practico tutorial de iptables con ejemplos

16

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA FORWARD minusd 21219489152 minusp tcp minusdport 80 minusj ACCEPTiptables minusA FORWARD minusd 21219489152 minusp tcp minusdport 443 minusj ACCEPTiptables minusA FORWARD minusd 2121948915030 minusj DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables minusA FORWARD minuss 21219489152 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

en el otro sentido lo mismoiptables minusA FORWARD minuss 192168105 minusd 21219489152 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

17

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 21219489152 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minussport 102465535 minusminusdport 3389 minusj ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj 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 la DMZ a lared local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegar hasta la DMZ yque a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentido seraacute el pan de cadadiacutea 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 un hackerlogra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas el hacker puede abrirCUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo el tcp3389 cosa faacutecil para unhacker que sepa algo de C o que tenga el programa pertinente a mano De todas formas el hacker tendriacutea que saber queexiste ese tipo de reglas si es listo probara con puertos de gestioacuten o con puertos netbios El problema es que se deja unviacutenculo con la LAN bien para administrarlo remotamente o para establecer relaciones de confianza y ahiacute es donde resideel peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta a otropuerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewall protegeremos un pocomejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

IPTABLES manual practico tutorial de iptables con ejemplos

18

34 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

Figura 9 esquema de firewall entre redes en la que solo se filtra y no se hace NAT

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

IPTABLES manual practico tutorial de iptables con ejemplos

19

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewalliptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341492 minusj DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341493 minusj DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341494 minusj DROP

Servidor NEWS 211341495

IPTABLES manual practico tutorial de iptables con ejemplos

20

Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341496 minusj DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341497 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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

35 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pechoiquestQueacute 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

IPTABLES manual practico tutorial de iptables con ejemplos

21

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defecto DROPiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPTiptables minusA OUTPUT minusd 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA FORWARD minuss 211341492 minusp tcp minusminussport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341492 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 25 minusj ACCEPT

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 110 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

22

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp udp minusminussport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPTiptables minusA FORWARD minuss 211341494 minusp tcp minusminussport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341494 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPTiptables minusA FORWARD minuss 211341495 minusp tcp minusminussport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341495 minusd 21319468115 minusp tcp minusminussport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPTiptables minusA FORWARD minuss 211341496 minusp tcp minusminussport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341496 minusd 813412956 minusp tcp minusminussport 3389 minusj ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPTiptables minusA FORWARD minuss 211341497 minusp tcp minusminussport 1494 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

23

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp udp minusminussport 1433 minusj ACCEPT

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 de estamanual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP FORWARD DROP

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)iptables minusA INPUT minusi lo minusj ACCEPTiptables minusA OUTPUT minuso lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPTiptables minusA OUTPUT minusd 1956534234 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

24

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 13: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

iptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP POSTROUTING ACCEPT

Empezamos a filtrar

REDIRECCIONES

Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos a una maquina internaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 192168101280

Los accesos de un ip determinada a Terminal server se redirigen e esa maquinaiptables minust nat minusA PREROUTING minuss 22123124181 minusi eth0 minusp tcp minusminusdport 3389 minusj DNAT minusminusto 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj ACCEPT

Abrimos el acceso a puertos de correo

Abrimos el puerto 25 hay que configurar bien el relay del servidor SMTPiptables minusA INPUT minuss 00000 minusp tcp minusminusdport 25 minusj ACCEPT Abrimos el pop3iptables minusA INPUT minuss 00000 minusp tcp minusminusdport 110 minusj ACCEPT

Y abrimos el puerto pptpd para la ip del adsl de casa del jefeiptables minusA INPUT minuss 2114517624 minusp tcp minusminusdport 1723 minusj 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 minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 80 minusj ACCEPT Aceptamos que vayan a puertos httpsiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 443 minusj ACCEPT

Aceptamos que consulten los DNSiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp tcp minusminusdport 53 minusj ACCEPTiptables minusA FORWARD minuss 19216810024 minusi eth1 minusp udp minusminusdport 53 minusj ACCEPT

Y denegamos el resto Si se necesita alguno ya avisaraniptables minusA FORWARD minuss 19216810024 minusi eth1 minusj DROP

Ahora hacemos enmascaramiento de la red local y activamos el BIT DE FORWARDING (imprescindible)iptables minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADE

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

IPTABLES manual practico tutorial de iptables con ejemplos

13

echo 1 gt procsysnetipv4ip_forward

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones y losservicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de la redlocal Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red local es evitarescaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buena configuracioacutencon denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de red por 6 o dolares y crearuna 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 las cosasbien y colocamos ese servidor IIS en una DMZ

Figura 7 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos

En este tipo de firewall hay que permitirminus Acceso de la red local a internetminus Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZminus Acceso del servidor de la DMZ a una BBDD de la LANminus 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

IPTABLES manual practico tutorial de iptables con ejemplos

14

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 443 minusj DNAT minusminusto 19216832443

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADEiptables minust nat minusA POSTROUTING minuss 1921683024 minuso eth0 minusj 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 minusA FORWARD minuss 19216832 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

iptables minusA FORWARD minuss 192168105 minusd 19216832 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 19216832 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

15

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 19216832 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 1921683024 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 1921683024 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 puerto sinoque basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando por ejemplo tenemosdos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto 80 No hay manera desaberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPs puacuteblicas o en su defecto usarpuertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia el exterior dela DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al router como llegarhasta esa ip puacuteblica Asiacute podriacutea ser esta red

Figura 8 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos usando IPs puacuteblicas

IPTABLES manual practico tutorial de iptables con ejemplos

16

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA FORWARD minusd 21219489152 minusp tcp minusdport 80 minusj ACCEPTiptables minusA FORWARD minusd 21219489152 minusp tcp minusdport 443 minusj ACCEPTiptables minusA FORWARD minusd 2121948915030 minusj DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables minusA FORWARD minuss 21219489152 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

en el otro sentido lo mismoiptables minusA FORWARD minuss 192168105 minusd 21219489152 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

17

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 21219489152 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minussport 102465535 minusminusdport 3389 minusj ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj 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 la DMZ a lared local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegar hasta la DMZ yque a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentido seraacute el pan de cadadiacutea 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 un hackerlogra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas el hacker puede abrirCUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo el tcp3389 cosa faacutecil para unhacker que sepa algo de C o que tenga el programa pertinente a mano De todas formas el hacker tendriacutea que saber queexiste ese tipo de reglas si es listo probara con puertos de gestioacuten o con puertos netbios El problema es que se deja unviacutenculo con la LAN bien para administrarlo remotamente o para establecer relaciones de confianza y ahiacute es donde resideel peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta a otropuerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewall protegeremos un pocomejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

IPTABLES manual practico tutorial de iptables con ejemplos

18

34 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

Figura 9 esquema de firewall entre redes en la que solo se filtra y no se hace NAT

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

IPTABLES manual practico tutorial de iptables con ejemplos

19

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewalliptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341492 minusj DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341493 minusj DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341494 minusj DROP

Servidor NEWS 211341495

IPTABLES manual practico tutorial de iptables con ejemplos

20

Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341496 minusj DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341497 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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

35 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pechoiquestQueacute 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

IPTABLES manual practico tutorial de iptables con ejemplos

21

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defecto DROPiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPTiptables minusA OUTPUT minusd 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA FORWARD minuss 211341492 minusp tcp minusminussport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341492 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 25 minusj ACCEPT

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 110 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

22

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp udp minusminussport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPTiptables minusA FORWARD minuss 211341494 minusp tcp minusminussport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341494 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPTiptables minusA FORWARD minuss 211341495 minusp tcp minusminussport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341495 minusd 21319468115 minusp tcp minusminussport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPTiptables minusA FORWARD minuss 211341496 minusp tcp minusminussport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341496 minusd 813412956 minusp tcp minusminussport 3389 minusj ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPTiptables minusA FORWARD minuss 211341497 minusp tcp minusminussport 1494 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

23

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp udp minusminussport 1433 minusj ACCEPT

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 de estamanual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP FORWARD DROP

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)iptables minusA INPUT minusi lo minusj ACCEPTiptables minusA OUTPUT minuso lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPTiptables minusA OUTPUT minusd 1956534234 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

24

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 14: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

echo 1 gt procsysnetipv4ip_forward

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusi eth0 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 10000 minusj DROP

Y cerramos el puerto del servicio PPTPD solo abierto para el jefeiptables minusA INPUT minuss 00000 minusi eth0 minusp tcp minusminusdport 1723 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

Bueno ya tenemos montada la red pero conviene insistir en que esta uacuteltima configuracioacuten con las redirecciones y losservicios de correo funcionando en el firewall es bastante insegura iquestQueacute ocurre si hackean el servidor IIS de la redlocal Pues que el firewall no sirve de gran cosa lo poco que podriacutea hacer una vez se ha entrado en la red local es evitarescaneos hacia el exterior desde la maacutequina atacada aunque para ello el firewall debiera tener una buena configuracioacutencon denegacioacuten por defecto Si necesitamos ese servidor IIS basta con comprar una tarjeta de red por 6 o dolares y crearuna 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 las cosasbien y colocamos ese servidor IIS en una DMZ

Figura 7 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos

En este tipo de firewall hay que permitirminus Acceso de la red local a internetminus Acceso puacuteblico al puerto tcp80 y tcp443 del servidor de la DMZminus Acceso del servidor de la DMZ a una BBDD de la LANminus 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

IPTABLES manual practico tutorial de iptables con ejemplos

14

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 443 minusj DNAT minusminusto 19216832443

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADEiptables minust nat minusA POSTROUTING minuss 1921683024 minuso eth0 minusj 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 minusA FORWARD minuss 19216832 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

iptables minusA FORWARD minuss 192168105 minusd 19216832 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 19216832 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

15

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 19216832 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 1921683024 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 1921683024 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 puerto sinoque basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando por ejemplo tenemosdos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto 80 No hay manera desaberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPs puacuteblicas o en su defecto usarpuertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia el exterior dela DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al router como llegarhasta esa ip puacuteblica Asiacute podriacutea ser esta red

Figura 8 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos usando IPs puacuteblicas

IPTABLES manual practico tutorial de iptables con ejemplos

16

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA FORWARD minusd 21219489152 minusp tcp minusdport 80 minusj ACCEPTiptables minusA FORWARD minusd 21219489152 minusp tcp minusdport 443 minusj ACCEPTiptables minusA FORWARD minusd 2121948915030 minusj DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables minusA FORWARD minuss 21219489152 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

en el otro sentido lo mismoiptables minusA FORWARD minuss 192168105 minusd 21219489152 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

17

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 21219489152 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minussport 102465535 minusminusdport 3389 minusj ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj 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 la DMZ a lared local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegar hasta la DMZ yque a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentido seraacute el pan de cadadiacutea 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 un hackerlogra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas el hacker puede abrirCUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo el tcp3389 cosa faacutecil para unhacker que sepa algo de C o que tenga el programa pertinente a mano De todas formas el hacker tendriacutea que saber queexiste ese tipo de reglas si es listo probara con puertos de gestioacuten o con puertos netbios El problema es que se deja unviacutenculo con la LAN bien para administrarlo remotamente o para establecer relaciones de confianza y ahiacute es donde resideel peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta a otropuerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewall protegeremos un pocomejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

IPTABLES manual practico tutorial de iptables con ejemplos

18

34 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

Figura 9 esquema de firewall entre redes en la que solo se filtra y no se hace NAT

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

IPTABLES manual practico tutorial de iptables con ejemplos

19

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewalliptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341492 minusj DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341493 minusj DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341494 minusj DROP

Servidor NEWS 211341495

IPTABLES manual practico tutorial de iptables con ejemplos

20

Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341496 minusj DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341497 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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

35 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pechoiquestQueacute 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

IPTABLES manual practico tutorial de iptables con ejemplos

21

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defecto DROPiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPTiptables minusA OUTPUT minusd 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA FORWARD minuss 211341492 minusp tcp minusminussport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341492 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 25 minusj ACCEPT

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 110 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

22

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp udp minusminussport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPTiptables minusA FORWARD minuss 211341494 minusp tcp minusminussport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341494 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPTiptables minusA FORWARD minuss 211341495 minusp tcp minusminussport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341495 minusd 21319468115 minusp tcp minusminussport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPTiptables minusA FORWARD minuss 211341496 minusp tcp minusminussport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341496 minusd 813412956 minusp tcp minusminussport 3389 minusj ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPTiptables minusA FORWARD minuss 211341497 minusp tcp minusminussport 1494 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

23

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp udp minusminussport 1433 minusj ACCEPT

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 de estamanual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP FORWARD DROP

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)iptables minusA INPUT minusi lo minusj ACCEPTiptables minusA OUTPUT minuso lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPTiptables minusA OUTPUT minusd 1956534234 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

24

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 15: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 80 minusj DNAT minusminusto 1921683280

Los accesos de un ip determinada HTTPS se redirigen e esa maquinaiptables minust nat minusA PREROUTING minusi eth0 minusp tcp minusminusdport 443 minusj DNAT minusminusto 19216832443

El localhost se deja (por ejemplo conexiones locales a mysql)sbiniptables minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj MASQUERADEiptables minust nat minusA POSTROUTING minuss 1921683024 minuso eth0 minusj 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 minusA FORWARD minuss 19216832 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

iptables minusA FORWARD minuss 192168105 minusd 19216832 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 19216832 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

15

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 19216832 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 1921683024 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 1921683024 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 puerto sinoque basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando por ejemplo tenemosdos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto 80 No hay manera desaberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPs puacuteblicas o en su defecto usarpuertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia el exterior dela DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al router como llegarhasta esa ip puacuteblica Asiacute podriacutea ser esta red

Figura 8 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos usando IPs puacuteblicas

IPTABLES manual practico tutorial de iptables con ejemplos

16

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA FORWARD minusd 21219489152 minusp tcp minusdport 80 minusj ACCEPTiptables minusA FORWARD minusd 21219489152 minusp tcp minusdport 443 minusj ACCEPTiptables minusA FORWARD minusd 2121948915030 minusj DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables minusA FORWARD minuss 21219489152 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

en el otro sentido lo mismoiptables minusA FORWARD minuss 192168105 minusd 21219489152 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

17

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 21219489152 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minussport 102465535 minusminusdport 3389 minusj ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj 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 la DMZ a lared local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegar hasta la DMZ yque a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentido seraacute el pan de cadadiacutea 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 un hackerlogra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas el hacker puede abrirCUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo el tcp3389 cosa faacutecil para unhacker que sepa algo de C o que tenga el programa pertinente a mano De todas formas el hacker tendriacutea que saber queexiste ese tipo de reglas si es listo probara con puertos de gestioacuten o con puertos netbios El problema es que se deja unviacutenculo con la LAN bien para administrarlo remotamente o para establecer relaciones de confianza y ahiacute es donde resideel peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta a otropuerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewall protegeremos un pocomejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

IPTABLES manual practico tutorial de iptables con ejemplos

18

34 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

Figura 9 esquema de firewall entre redes en la que solo se filtra y no se hace NAT

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

IPTABLES manual practico tutorial de iptables con ejemplos

19

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewalliptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341492 minusj DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341493 minusj DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341494 minusj DROP

Servidor NEWS 211341495

IPTABLES manual practico tutorial de iptables con ejemplos

20

Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341496 minusj DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341497 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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

35 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pechoiquestQueacute 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

IPTABLES manual practico tutorial de iptables con ejemplos

21

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defecto DROPiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPTiptables minusA OUTPUT minusd 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA FORWARD minuss 211341492 minusp tcp minusminussport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341492 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 25 minusj ACCEPT

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 110 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

22

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp udp minusminussport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPTiptables minusA FORWARD minuss 211341494 minusp tcp minusminussport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341494 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPTiptables minusA FORWARD minuss 211341495 minusp tcp minusminussport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341495 minusd 21319468115 minusp tcp minusminussport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPTiptables minusA FORWARD minuss 211341496 minusp tcp minusminussport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341496 minusd 813412956 minusp tcp minusminussport 3389 minusj ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPTiptables minusA FORWARD minuss 211341497 minusp tcp minusminussport 1494 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

23

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp udp minusminussport 1433 minusj ACCEPT

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 de estamanual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP FORWARD DROP

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)iptables minusA INPUT minusi lo minusj ACCEPTiptables minusA OUTPUT minuso lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPTiptables minusA OUTPUT minusd 1956534234 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

24

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 16: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 19216832 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 1921683024 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 1921683024 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 puerto sinoque basta con rutar los paquetes para llegar hasta la DMZ Este tipo de necesidades surgen cuando por ejemplo tenemosdos maacutequinas con servidor web (un apache y un IIS) iquestA cuaacutel de las dos le redirigimos el puerto 80 No hay manera desaberlo (No con servidores virtuales tampoco pieacutensalo) por eso se deben asignar IPs puacuteblicas o en su defecto usarpuertos distintosPor tanto hay que proteger convenientemente toda la DMZ Tampoco hariacutea falta enmascarar la salida hacia el exterior dela DMZ si tiene una ip puacuteblica ya tiene una pata puesta en internet obviamente hay que decirle al router como llegarhasta esa ip puacuteblica Asiacute podriacutea ser esta red

Figura 8 esquema de firewall entre red local e internet con zona DMZ para servidores expuestos usando IPs puacuteblicas

IPTABLES manual practico tutorial de iptables con ejemplos

16

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA FORWARD minusd 21219489152 minusp tcp minusdport 80 minusj ACCEPTiptables minusA FORWARD minusd 21219489152 minusp tcp minusdport 443 minusj ACCEPTiptables minusA FORWARD minusd 2121948915030 minusj DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables minusA FORWARD minuss 21219489152 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

en el otro sentido lo mismoiptables minusA FORWARD minuss 192168105 minusd 21219489152 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

17

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 21219489152 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minussport 102465535 minusminusdport 3389 minusj ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj 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 la DMZ a lared local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegar hasta la DMZ yque a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentido seraacute el pan de cadadiacutea 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 un hackerlogra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas el hacker puede abrirCUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo el tcp3389 cosa faacutecil para unhacker que sepa algo de C o que tenga el programa pertinente a mano De todas formas el hacker tendriacutea que saber queexiste ese tipo de reglas si es listo probara con puertos de gestioacuten o con puertos netbios El problema es que se deja unviacutenculo con la LAN bien para administrarlo remotamente o para establecer relaciones de confianza y ahiacute es donde resideel peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta a otropuerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewall protegeremos un pocomejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

IPTABLES manual practico tutorial de iptables con ejemplos

18

34 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

Figura 9 esquema de firewall entre redes en la que solo se filtra y no se hace NAT

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

IPTABLES manual practico tutorial de iptables con ejemplos

19

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewalliptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341492 minusj DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341493 minusj DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341494 minusj DROP

Servidor NEWS 211341495

IPTABLES manual practico tutorial de iptables con ejemplos

20

Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341496 minusj DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341497 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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

35 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pechoiquestQueacute 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

IPTABLES manual practico tutorial de iptables con ejemplos

21

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defecto DROPiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPTiptables minusA OUTPUT minusd 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA FORWARD minuss 211341492 minusp tcp minusminussport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341492 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 25 minusj ACCEPT

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 110 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

22

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp udp minusminussport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPTiptables minusA FORWARD minuss 211341494 minusp tcp minusminussport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341494 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPTiptables minusA FORWARD minuss 211341495 minusp tcp minusminussport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341495 minusd 21319468115 minusp tcp minusminussport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPTiptables minusA FORWARD minuss 211341496 minusp tcp minusminussport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341496 minusd 813412956 minusp tcp minusminussport 3389 minusj ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPTiptables minusA FORWARD minuss 211341497 minusp tcp minusminussport 1494 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

23

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp udp minusminussport 1433 minusj ACCEPT

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 de estamanual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP FORWARD DROP

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)iptables minusA INPUT minusi lo minusj ACCEPTiptables minusA OUTPUT minuso lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPTiptables minusA OUTPUT minusd 1956534234 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

24

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 17: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP FORWARD ACCEPTiptables minust nat minusP PREROUTING ACCEPTiptables minust nat minusP 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 minusA INPUT minusi lo minusj ACCEPT

Al firewall tenemos acceso desde la red localiptables minusA INPUT minuss 19216810024 minusi eth1 minusj 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 minust nat minusA POSTROUTING minuss 19216810024 minuso eth0 minusj 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 minusA FORWARD minusd 21219489152 minusp tcp minusdport 80 minusj ACCEPTiptables minusA FORWARD minusd 21219489152 minusp tcp minusdport 443 minusj ACCEPTiptables minusA FORWARD minusd 2121948915030 minusj DROP

Permitimos el paso de la DMZ a una BBDD de la LANiptables minusA FORWARD minuss 21219489152 minusd 192168105 minusp tcp minusminusdport 5432 minusj ACCEPT

en el otro sentido lo mismoiptables minusA FORWARD minuss 192168105 minusd 21219489152 minusp tcp minusminussport 5432 minusj ACCEPT

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minusminussport 102465535 minusminusdport 3389 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

17

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 21219489152 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minussport 102465535 minusminusdport 3389 minusj ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj 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 la DMZ a lared local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegar hasta la DMZ yque a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentido seraacute el pan de cadadiacutea 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 un hackerlogra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas el hacker puede abrirCUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo el tcp3389 cosa faacutecil para unhacker que sepa algo de C o que tenga el programa pertinente a mano De todas formas el hacker tendriacutea que saber queexiste ese tipo de reglas si es listo probara con puertos de gestioacuten o con puertos netbios El problema es que se deja unviacutenculo con la LAN bien para administrarlo remotamente o para establecer relaciones de confianza y ahiacute es donde resideel peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta a otropuerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewall protegeremos un pocomejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

IPTABLES manual practico tutorial de iptables con ejemplos

18

34 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

Figura 9 esquema de firewall entre redes en la que solo se filtra y no se hace NAT

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

IPTABLES manual practico tutorial de iptables con ejemplos

19

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewalliptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341492 minusj DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341493 minusj DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341494 minusj DROP

Servidor NEWS 211341495

IPTABLES manual practico tutorial de iptables con ejemplos

20

Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341496 minusj DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341497 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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

35 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pechoiquestQueacute 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

IPTABLES manual practico tutorial de iptables con ejemplos

21

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defecto DROPiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPTiptables minusA OUTPUT minusd 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA FORWARD minuss 211341492 minusp tcp minusminussport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341492 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 25 minusj ACCEPT

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 110 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

22

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp udp minusminussport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPTiptables minusA FORWARD minuss 211341494 minusp tcp minusminussport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341494 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPTiptables minusA FORWARD minuss 211341495 minusp tcp minusminussport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341495 minusd 21319468115 minusp tcp minusminussport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPTiptables minusA FORWARD minuss 211341496 minusp tcp minusminussport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341496 minusd 813412956 minusp tcp minusminussport 3389 minusj ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPTiptables minusA FORWARD minuss 211341497 minusp tcp minusminussport 1494 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

23

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp udp minusminussport 1433 minusj ACCEPT

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 de estamanual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP FORWARD DROP

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)iptables minusA INPUT minusi lo minusj ACCEPTiptables minusA OUTPUT minuso lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPTiptables minusA OUTPUT minusd 1956534234 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

24

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 18: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj DROP

Cerramos el acceso de la DMZ al propio firewalliptables minusA INPUT minuss 21219489152 minusi eth2 minusj DROP

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

Cerramos el rango de puerto bien conocidoiptables minusA INPUT minuss 00000 minusp tcp minusdport 11024 minusj DROPiptables minusA INPUT minuss 00000 minusp udp minusdport 11024 minusj DROP

Cerramos un puerto de gestioacuten webminiptables minusA INPUT minuss 00000 minusp tcp minusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

Fin del script

ATENCIOacuteNMerece la pena pararse a explicar esta parte del firewall

permitimos abrir el Terminal server de la DMZ desde la LANiptables minusA FORWARD minuss 19216810024 minusd 21219489152 minusp tcp minussport 102465535 minusminusdport 3389 minusj ACCEPT

hellip hay que hacerlo en uno y otro sentido hellipiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusp tcp minusminussport 3389 minusminusdport 102465535 minusj ACCEPT

hellip por que luego Cerramos el acceso de la DMZ a la LANiptables minusA FORWARD minuss 21219489152 minusd 19216810024 minusj 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 la DMZ a lared local Para abrir el puerto 3389 de tcp es imprescindible que un paquete de ida sea capaz de llegar hasta la DMZ yque a su vez pueda volver a la LAN Esto de tener que especificar la abertura en uno y otro sentido seraacute el pan de cadadiacutea 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 un hackerlogra acceso a la maacutequina de la DMZ Si no especificamos el puerto de destino en esas dos reglas el hacker puede abrirCUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo el tcp3389 cosa faacutecil para unhacker que sepa algo de C o que tenga el programa pertinente a mano De todas formas el hacker tendriacutea que saber queexiste ese tipo de reglas si es listo probara con puertos de gestioacuten o con puertos netbios El problema es que se deja unviacutenculo con la LAN bien para administrarlo remotamente o para establecer relaciones de confianza y ahiacute es donde resideel peligro

En las conexiones legales no se usa como puerto origen nada por debajo del 1024 cuando alguien se conecta a otropuerto en su extremo abre un puerto por encima del 1024 Especificaacutendolo en la regla de firewall protegeremos un pocomejor la LAN aunque los puertos por encima de 1024 estaraacuten en peligro

IPTABLES manual practico tutorial de iptables con ejemplos

18

34 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

Figura 9 esquema de firewall entre redes en la que solo se filtra y no se hace NAT

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

IPTABLES manual practico tutorial de iptables con ejemplos

19

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewalliptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341492 minusj DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341493 minusj DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341494 minusj DROP

Servidor NEWS 211341495

IPTABLES manual practico tutorial de iptables con ejemplos

20

Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341496 minusj DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341497 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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

35 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pechoiquestQueacute 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

IPTABLES manual practico tutorial de iptables con ejemplos

21

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defecto DROPiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPTiptables minusA OUTPUT minusd 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA FORWARD minuss 211341492 minusp tcp minusminussport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341492 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 25 minusj ACCEPT

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 110 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

22

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp udp minusminussport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPTiptables minusA FORWARD minuss 211341494 minusp tcp minusminussport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341494 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPTiptables minusA FORWARD minuss 211341495 minusp tcp minusminussport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341495 minusd 21319468115 minusp tcp minusminussport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPTiptables minusA FORWARD minuss 211341496 minusp tcp minusminussport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341496 minusd 813412956 minusp tcp minusminussport 3389 minusj ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPTiptables minusA FORWARD minuss 211341497 minusp tcp minusminussport 1494 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

23

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp udp minusminussport 1433 minusj ACCEPT

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 de estamanual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP FORWARD DROP

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)iptables minusA INPUT minusi lo minusj ACCEPTiptables minusA OUTPUT minuso lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPTiptables minusA OUTPUT minusd 1956534234 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

24

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 19: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

34 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

Figura 9 esquema de firewall entre redes en la que solo se filtra y no se hace NAT

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

IPTABLES manual practico tutorial de iptables con ejemplos

19

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewalliptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341492 minusj DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341493 minusj DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341494 minusj DROP

Servidor NEWS 211341495

IPTABLES manual practico tutorial de iptables con ejemplos

20

Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341496 minusj DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341497 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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

35 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pechoiquestQueacute 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

IPTABLES manual practico tutorial de iptables con ejemplos

21

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defecto DROPiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPTiptables minusA OUTPUT minusd 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA FORWARD minuss 211341492 minusp tcp minusminussport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341492 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 25 minusj ACCEPT

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 110 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

22

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp udp minusminussport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPTiptables minusA FORWARD minuss 211341494 minusp tcp minusminussport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341494 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPTiptables minusA FORWARD minuss 211341495 minusp tcp minusminussport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341495 minusd 21319468115 minusp tcp minusminussport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPTiptables minusA FORWARD minuss 211341496 minusp tcp minusminussport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341496 minusd 813412956 minusp tcp minusminussport 3389 minusj ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPTiptables minusA FORWARD minuss 211341497 minusp tcp minusminussport 1494 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

23

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp udp minusminussport 1433 minusj ACCEPT

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 de estamanual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP FORWARD DROP

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)iptables minusA INPUT minusi lo minusj ACCEPTiptables minusA OUTPUT minuso lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPTiptables minusA OUTPUT minusd 1956534234 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

24

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 20: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

Establecemos politica por defectoiptables minusP INPUT ACCEPTiptables minusP OUTPUT ACCEPTiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewalliptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341492 minusj DROP

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341493 minusj DROP

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341494 minusj DROP

Servidor NEWS 211341495

IPTABLES manual practico tutorial de iptables con ejemplos

20

Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341496 minusj DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341497 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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

35 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pechoiquestQueacute 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

IPTABLES manual practico tutorial de iptables con ejemplos

21

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defecto DROPiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPTiptables minusA OUTPUT minusd 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA FORWARD minuss 211341492 minusp tcp minusminussport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341492 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 25 minusj ACCEPT

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 110 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

22

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp udp minusminussport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPTiptables minusA FORWARD minuss 211341494 minusp tcp minusminussport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341494 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPTiptables minusA FORWARD minuss 211341495 minusp tcp minusminussport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341495 minusd 21319468115 minusp tcp minusminussport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPTiptables minusA FORWARD minuss 211341496 minusp tcp minusminussport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341496 minusd 813412956 minusp tcp minusminussport 3389 minusj ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPTiptables minusA FORWARD minuss 211341497 minusp tcp minusminussport 1494 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

23

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp udp minusminussport 1433 minusj ACCEPT

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 de estamanual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP FORWARD DROP

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)iptables minusA INPUT minusi lo minusj ACCEPTiptables minusA OUTPUT minuso lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPTiptables minusA OUTPUT minusd 1956534234 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

24

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 21: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341496 minusj DROP

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341497 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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

35 Firewall con poliacutetica por defecto DROP

Aquiacute llega la seccioacuten para los auteacutenticos administradores de pelo en pechoiquestQueacute 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

IPTABLES manual practico tutorial de iptables con ejemplos

21

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defecto DROPiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPTiptables minusA OUTPUT minusd 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA FORWARD minuss 211341492 minusp tcp minusminussport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341492 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 25 minusj ACCEPT

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 110 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

22

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp udp minusminussport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPTiptables minusA FORWARD minuss 211341494 minusp tcp minusminussport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341494 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPTiptables minusA FORWARD minuss 211341495 minusp tcp minusminussport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341495 minusd 21319468115 minusp tcp minusminussport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPTiptables minusA FORWARD minuss 211341496 minusp tcp minusminussport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341496 minusd 813412956 minusp tcp minusminussport 3389 minusj ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPTiptables minusA FORWARD minuss 211341497 minusp tcp minusminussport 1494 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

23

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp udp minusminussport 1433 minusj ACCEPT

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 de estamanual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP FORWARD DROP

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)iptables minusA INPUT minusi lo minusj ACCEPTiptables minusA OUTPUT minuso lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPTiptables minusA OUTPUT minusd 1956534234 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

24

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 22: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

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

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defecto DROPiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP 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 minusA INPUT minuss 2101955515 minusj ACCEPTiptables minusA OUTPUT minusd 2101955515 minusj ACCEPT

Para el resto no hay acceso al firewall En principio esta de maacutes pero si rebajamos los permisos temporalmente nos cubre las espaldasiptables minusA INPUT minuss 00000 minusj 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 minusA FORWARD minusd 211341492 minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA FORWARD minuss 211341492 minusp tcp minusminussport 80 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341492 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341492 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor MAIL 211341493 Acceso a puerto 25 110 y 143iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 25 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 25 minusj ACCEPT

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 110 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 110 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

22

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp udp minusminussport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPTiptables minusA FORWARD minuss 211341494 minusp tcp minusminussport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341494 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPTiptables minusA FORWARD minuss 211341495 minusp tcp minusminussport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341495 minusd 21319468115 minusp tcp minusminussport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPTiptables minusA FORWARD minuss 211341496 minusp tcp minusminussport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341496 minusd 813412956 minusp tcp minusminussport 3389 minusj ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPTiptables minusA FORWARD minuss 211341497 minusp tcp minusminussport 1494 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

23

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp udp minusminussport 1433 minusj ACCEPT

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 de estamanual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP FORWARD DROP

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)iptables minusA INPUT minusi lo minusj ACCEPTiptables minusA OUTPUT minuso lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPTiptables minusA OUTPUT minusd 1956534234 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

24

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 23: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

iptables minusA FORWARD minusd 211341493 minusp tcp minusminusdport 143 minusj ACCEPTiptables minusA FORWARD minuss 211341493 minusp tcp minusminussport 143 minusj ACCEPT

Acceso a gestion SNMPiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp udp minusminusdport 169 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp udp minusminussport 169 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341493 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341493 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor IRC 211341494 Acceso a puertos IRCiptables minusA FORWARD minusd 211341494 minusp tcp minusminusdport 66666668 minusj ACCEPTiptables minusA FORWARD minuss 211341494 minusp tcp minusminussport 66666668 minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 2101955515 minusd 211341494 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341494 minusd 2101955515 minusp tcp minusminussport 22 minusj ACCEPT

Servidor NEWS 211341495 Acceso a puerto newsiptables minusA FORWARD minusd 211341495 minusp tcp minusminusdport news minusj ACCEPTiptables minusA FORWARD minuss 211341495 minusp tcp minusminussport news minusj ACCEPT

Acceso a nuestra ip para gestionarloiptables minusA FORWARD minuss 21319468115 minusd 211341495 minusp tcp minusminusdport 22 minusj ACCEPT

iptables minusA FORWARD minuss 211341495 minusd 21319468115 minusp tcp minusminussport 22 minusj ACCEPT

El resto cerrariptables minusA FORWARD minusd 211341495 minusj DROP

Servidor B2B 211341496 Acceso a puerto 443iptables minusA FORWARD minusd 211341496 minusp tcp minusminusdport 443 minusj ACCEPTiptables minusA FORWARD minuss 211341496 minusp tcp minusminussport 443 minusj ACCEPT

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 813412956 minusd 211341496 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341496 minusd 813412956 minusp tcp minusminussport 3389 minusj ACCEPT

Servidor CITRIX 211341497 Acceso a puerto 1494iptables minusA FORWARD minusd 211341497 minusp tcp minusminusdport 1494 minusj ACCEPTiptables minusA FORWARD minuss 211341497 minusp tcp minusminussport 1494 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

23

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp udp minusminussport 1433 minusj ACCEPT

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 de estamanual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP FORWARD DROP

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)iptables minusA INPUT minusi lo minusj ACCEPTiptables minusA OUTPUT minuso lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPTiptables minusA OUTPUT minusd 1956534234 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

24

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 24: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

Acceso a una ip para gestionarloiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 3389 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 3389 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp tcp minusminusdport 1434 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp tcp minusminussport 1434 minusj ACCEPT

acceso a otro puerto quiza de BBDDiptables minusA FORWARD minuss 195552342 minusd 211341497 minusp udp minusminusdport 1433 minusj ACCEPT

iptables minusA FORWARD minuss 211341497 minusd 195552342 minusp udp minusminussport 1433 minusj ACCEPT

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 de estamanual trataba sobre este caso ahora lo revisamos con la poliacutetica por defecto drop

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

echo minusn Aplicando Reglas de Firewall

FLUSH de reglasiptables minusFiptables minusXiptables minusZiptables minust nat minusF

Establecemos politica por defectoiptables minusP INPUT DROPiptables minusP OUTPUT DROPiptables minusP FORWARD DROP

Empezamos a filtrar

El localhost se deja (por ejemplo conexiones locales a mysql)iptables minusA INPUT minusi lo minusj ACCEPTiptables minusA OUTPUT minuso lo minusj ACCEPT

A nuestra IP le dejamos todoiptables minusA INPUT minuss 1956534234 minusj ACCEPTiptables minusA OUTPUT minusd 1956534234 minusj ACCEPT

IPTABLES manual practico tutorial de iptables con ejemplos

24

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 25: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

A un colega le dejamos entrar al mysql para que mantenga la BBDDiptables minusA INPUT minuss 2314513423 minusp tcp minusminusdport 3306 minusj ACCEPTiptables minusA OUTPUT minusd 2314513423 minusp tcp minusminussport 3306 minusj ACCEPT

A un disentildeador le dejamos usar el FTPiptables minusA INPUT minuss 803745194 minusp tcp minusminusdport 2021 minusj ACCEPTiptables minusA OUTPUT minusd 803745194 minusp tcp minusminussport 2021 minusj ACCEPT

El puerto 80 de www debe estar abierto es un servidor webiptables minusA INPUT minusp tcp minusminusdport 80 minusj ACCEPTiptables minusA OUTPUT minusp tcp minusminussport 80 minusj 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 minusA INPUT minusp tcp minusminusdport 11024iptables minusA INPUT minusp udp minusminusdport 11024

Cerramos otros puertos que estan abiertosiptables minusA INPUT minusp tcp minusminusdport 3306 minusj DROPiptables minusA INPUT minusp tcp minusminusdport 10000 minusj DROPiptables minusA INPUT minusp udp minusminusdport 10000 minusj DROP

echo OK Verifique que lo que se aplica con iptables minusL minusn

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 el podemosobservar si la conexiones se establecen o no es un programa de consola que es aconsejable controlar ya que muestra entiempo real el traacutefico que atraviesa nuestra maacutequina con todo lujo de detalles origendestino de ips y puertos traacutefico totalo traacutefico total seguacuten el interfaz de red etchellip Si vemos muchas conexiones simultaneas y nos perdemos existe laposibilidad de aplicar filtros para captar solo aquello que nos interesa

NMAP La herramienta para escanear puertos por excelencia rechace imitaciones Es una herramienta de consola raacutepidaefectiva y con multitud de opciones Podemos usarla desde maacutequinas ajenas a nuestra red para comprobar si realmente elfirewall esta filtrando correctamente y en cierta manera para hacernos una idea de que visioacuten pueden tener los hackersde nuestro sistema

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

iptables minusA INPUT minuss 195552342 minusj ACCEPT ampamp echo reglaminus21 okiptables minusA INPUT minuss 2136289145 minusj ACCEPT ampamp echo reglaminus22 ok

Si la regla se ejecuta bien mostraraacute el mensajito de okOtra opcioacuten algo mas cutre seriacutea ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta

IPTABLES manual practico tutorial de iptables con ejemplos

25

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26

Page 26: IPTABLES Manual prácticoindex-of.co.uk/INFOSEC/doc-iptables-firewall.pdfIPTABLES Manual práctico En este manual se muestran las habituales arquitecturas de redes con firewall y la

Cabe resentildear que puede fallar una regla pero a partir de ella el resto se ejecutan con normalidad

EnlacesminusPaacutegina oficial httpwwwnetfilterorg

minusBibliografiacuteaBuilding internet firewalls todo un claacutesicominusOtros tutorialesEn la propia web de netfilterminusiptables tenemos el enlace a otros tutoriales aunque todos ellos estaacuten en perfecto ingleacutesEjem 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 complejas Se haelaborado con el conocimiento adquirido a base de tortas por tanto se basa en la experiencia propia

Autor

Pello Xabier Altadill IzuraIngeniero en Informaacutetica por la UPVminusEHU (httpwwwehues)Actualmente tiene 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 crecerURL httpwwwpelloinfoEmails pellopelloinfo pelloaltadillterracom

Volver arriba

copy Pello Xabier Altadill Izura wwwpelloinfo

IPTABLES manual practico tutorial de iptables con ejemplos

26