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 !" o mas interfaces de red en la que se establecen una reglas de filtrado con las que
se decide si una cone#i$n determinada puede establecerse o no. %ncluso puede ir más allá & reali'ar
modificaciones sobre las comunicaciones, como el ()*.
Esa sería la definici$n genérica, +o& en dia un firewall es un +ardware especifico con un sistema
operativo o una %!" que filtra el tráfico *,-.U-.%,/-....%- & decide si un paquete pasa, se
modifica, se convierte o se descarta. -ara 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 firewall0
1igura 10 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 2con un 3nico cable4 & la red local 2conectado al switc+ o al
+ub de la 5)(4
ependiendo 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
e#poner alg3n servidor a internet 2como es el caso de un servidor web, un servidor de correo, etc..4,
& en esos casos obviamente en principio se debe aceptar cualquier cone#i$n a ellos. 5o que se
recomienda en esa situaci$n es situar ese servidor en lugar aparte de la red, el que denominamos
/6 o 'ona desmilitari'ada. El firewall tiene entonces tres entradas0

1igura 70 esquema de firewall entre red local e internet con 'ona /6 para servidores e#puestos
En la 'ona desmilitari'ada se pueden poner tantos servidores como se necesiten. ,on esta
arquitectura, permitimos que el servidor sea accesible desde internet de tal forma que si es atacado &
se gana acceso a él, la red local sigue protegida por el firewall. Esta estructura de /6 puede
+acerse también con un doble firewall 2aunque como se ve se puede usar un 3nico dispositivo con al
menos tres interfaces de red4. "ería un esquema como este0

1igura 80 esquema de firewall entre red local e internet con 'ona /6 para servidores e#puestos
creado con doble firewall2perímetro4
5os firewalls se pueden usar en cualquier red. Es +abitual tenerlos como protecci$n de internet en
las empresas, aunque a+í también suelen tener una doble funci$n0 controlar los accesos e#ternos
+acia dentro & también los internos +acia el e#terior9 esto 3ltimo se +ace con el firewall o
frecuentemente con un pro#& 2que también utili'an reglas, aunque de más alto nivel4.
*ambién, en empresas de +osting con muc+os servidores alojados lo normal es encontrarnos uno o
más firewalls &a sea filtrando toda la instalaci$n o parte de ella0
1igura :0 esquema de firewall entre redes, en la que solo se filtra & no se +ace ()*
"ea el tipo de firewall que sea, generalmente no tendrá mas que un conjunto de reglas en las que se
e#amina el origen & destino de los paquetes del protocolo tcp.ip. En cuanto a protocolos es probable
que sean capaces de filtrar muc+os tipos de ellos, no solo los tcp, también los udp, los icmp, los gre
& otros protocolos vinculados a vpns. Este podría ser 2en pseudo;lenguaje4 un el conjunto de reglas
de un firewall del primer gráfico0
-olitica por defecto ),E-*)<.
*odo lo que venga de la red local al firewall ),E-*)<
*odo lo que venga de la ip de mi casa al puerto tcp 77 ),E-*)<
*odo lo que venga de la ip de casa del jefe al puerto tcp 1=78 ),E-*)<
*odo lo que venga de +ora.rediris.es al puerto udo 178 ),E-*)<
*odo lo que venga de la red local & va&a al e#terior E(/)",)<)<
*odo lo que venga del e#terior al puerto tcp 1 al 1>7: E(E?)<
*odo lo que venga del e#terior al puerto tcp 88@A E(E?)<
*odo lo que venga del e#terior al puerto udp 1 al 1>7: E(E?)<
En definitiva lo que se +ace es0
; Babilita el acceso a puertos de administraci$n a determinadas %-s privilegiadas
; Enmascara el trafico de la red local +acia el e#terior 2()*, una petici$n de un pc de la 5)( sale al
e#terior con la ip p3blica4, para poder salir a internet
; eniega el acceso desde el e#terior a puertos de administraci$n & a todo lo que este entre 1 &
1>7:.
Ba& dos maneras de implementar un firewall0
14 -olítica por defecto ),E-*)<0 en principio todo lo que entra & sale por el firewall se acepta &
solo se denegará lo que se diga e#plícitamente.
74 -olítica por defecto E(E?)<0 todo esta denegado, & solo se permitirá pasar por el firewall
aquellos que se permita e#plícitamente.
,omo es obvio imaginar, la primera política facilita muc+o la gesti$n del firewall, &a que
simplemente nos tenemos que preocupar de proteger aquellos puertos o direcciones que sabemos
que nos interesa9 el resto no importa tanto & se deja pasar. -or ejemplo, si queremos proteger una
máquina linu#, podemos +acer un netstat ;ln 2o netstat ;an, o netstat ;puta C grep 5%"*E(4, saber
que puertos están abiertos, poner reglas para proteger esos puertos & &a está. D-ara qué vamos a
proteger un puerto que realmente nunca se va a abrirE
El 3nico problema que podemos tener es que no controlemos que es lo que esta abierto, o que en un
momento dado se instale un software nuevo que abra un puerto determinado, o que no sepamos que
determinados paquetes %,/- son peligrosos. "i la política por defecto es ),E-*)< & no se
protege e#plícitamente, nos la estamos jugando un poco.
En cambio, si la política por defecto es E(E?)<, a no ser que lo permitamos e#plícitamente, el
firewall se convierte en un auténtico /U<! infranqueable. El problema es que es muc+o más
difícil preparar un firewall así, & +a& que tener mu& claro como funciona el sistema 2sea iptables o
el que sea4 & que es lo que se tiene que abrir sin caer en la tentaci$n de empe'ar a meter reglas
super;permisivas.
Esta configuraci$n de firewall es la recomendada, aunque no es aconsejable usarla si no se domina
mínimamente el sistema. Uno de los objetos principales de este documento es mostrar la forma de
crear este tipo de firewalls.
IMPORTANTE
El orden en el que se ponen las reglas de firewall es determinante. (ormalmente cuando +a& que
decidir que se +ace con un paquete se va comparando con cada regla del firewall +asta que se
encuentra una que le afecta 2matc+4, & se +ace lo que dicte esta regla 2aceptar o denegar49 después
de eso (! "E /%<)<F( /F" <E?5)" para ese paquete. D,uál es el peligroE "i ponemos reglas
mu& permisivas entre las primeras del firewall, puede que las siguientes no se apliquen & no sirvan
de nada.

7. Qué es iptables
%-tables es un sistema de firewall vinculado al Gernel de linu# que se +a e#tendido enormemente a
partir del Gernel 7.: de este sistema operativo. )l igual que el anterior sistema ipc+ains, un firewall
de iptables no es como un servidor que lo iniciamos o detenemos o que se pueda caer por un error
de programaci$n2esto es una pequeHa mentira, +a tenido alguna vulnerabilidad que permite o",
pero nunca tendrá tanto peligro como las aplicaciones que escuc+an en determinado puerto *,-40
iptables esta integrado con el Gernel, es parte del sistema operativo. D,$mo se pone en marc+aE
<ealmente lo que se +ace es aplicar reglas. -ara ellos se ejecuta el comando iptables, con el que
aHadimos, borramos, o creamos reglas. -or ello un firewall de iptables no es sino un simple script
de s+ell en el que se van ejecutando las reglas de firewall.
(otas0 bueno, para los más geeGs & tocapelotas. Iale, se puede implementar un script de inicio en
.etc.rc.d.%(%*.d 2o .etc.%(%*.d 4 con el que +agamos que iptables se Jinicie o pareJ como un servidor
más. 5o podemos +acer nosotros o es probable que venga en la distribuci$n 2como en red+at por
ejemplo4. *ambién se pueden salvar las reglas aplicadas con el comando iptables;save en un fic+ero
& gestionar ese fic+ero con una aplicaci$n o front;end desde la K o desde webmin.
Iale, tenemos una máquina linu# con soporte para iptables, tiene reglas aplicadas & empie'an a
llegar.salir.pasar paquetes. (o nos liemos0 olvidemos cuantas tarjetas de red +a&, que direcciones ip
tiene la máquina & olvidemos si el paquete entra o sale. 5as reglas de firewall están a nivel de
Gernel, & al Gernel lo que le llega es un paquete 2digamos, un marr$n 94 4 & tiene que decidir que
+acer con él. El Gernel lo que +ace es, dependiendo si el paquete es para la propia maquina o para
otra maquina, consultar las reglas de firewall & decidir que +acer con el paquete seg3n mande el
firewall. Este es el camino que seguiría un paquete en el Gernel0
1igura L0 cuando un paquete u otra comunicaci$n llega al Gernel con iptables se sigue este camino
,omo se ve en el gráfico, básicamente se mira si el paquete esta destinado a la propia maquina o si
va a otra. -ara los paquetes 2o datagramas, seg3n el protocolo4 que van a la propia maquina se
aplican las reglas %(-U* & !U*-U*, & para filtrar paquetes que van a otras redes o maquinas se
aplican simplemente reglas 1!<M)<.
%(-U*,!U*-U* & 1!<M)< son los tres tipos de reglas de filtrado. -ero antes de aplicar esas
reglas es posible aplicar reglas de ()*0 estas se usan para +acer redirecciones de puertos o cambios
en las %-s de origen & destino. Ieremos ejemplos.
E incluso antes de las reglas de ()* se pueden meter reglas de tipo /)(?5E, destinadas a
modificar los paquetes9 son reglas poco conocidas & es probable que no las usen.
-or tanto tenemos tres tipos de reglas en iptables0
; /)(?5E
; ()*0 reglas -<E<!U*%(?, -!"*<!U*%(?
; 1%5*E<0 reglas %(-U*, !U*-U*, 1!<M)<.
8. )l grano0 creando un firewall con iptables
En este tutorial se +a intentado dar una breve introducci$n sobre lo que es un firewall, sus tipologías
básicas & en concreto se presenta el sistema iptables. -ero vamos al grano & empe'amos a ver
configuraciones de firewall con iptables, empe'ando desde la más básica a las más complejas, en
las que se establece la denegaci$n como política por defecto.
(ota0 se recomienda encarecidamente ir practicando estas reglas en alguna maquina linu#
disponible, & especialmente +acer uso de la +erramienta iptraf para depurar & comprobar el
funcionamiento de iptables. ,on iptraf podemos comprobar si las cone#iones *,-.%- se llegan a
establecer o no. Una cone#i$n tcp.ip empie'a con el t+ree;wa&;+ands+aGe0
; 5a maquina que desea conectarse a otra envia un paquete con flan "N(
; "i la otra maquina acepta, envia un "N(.),O
; Entonces la máquina establece la cone#i$n.
"i el firewall esta denegando la cone#i$n, con iptraf veremos que la maquina origen solo manda
paquetes con el flan " 2de "N(4, & que del otro lado no sale nada. "aber usar iptraf nos a&udará
muc+o.

8.1 -roteger la propia máquina
/u& bien, tenemos una máquina linu# pinc+ada en internet & queremos protegerla con su propio
firewall. 5o 3nico que tenemos que +acer es crear un script de s+ell en el que se van aplicando las
reglas.
5os scripts de iptables pueden tener este aspecto0
"aludo a la afici$n 2ec+o4
Porrado de las reglas aplicadas actualmente 2flus+4
)plicaci$n de políticas por defecto para %(-U*, !U-U*, 1!<M)<
5istado de reglas iptables.
!jo con el orden de las reglasQ
RQ.bin.s+
RR ",<%-* de %-*)P5E" ; ejemplo del manual de iptables
RR Ejemplo de script para proteger la propia máquina
ec+o ;n )plicando <eglas de 1irewall...
RR 15U"B de reglas
iptables ;1
iptables ;K
iptables ;6
iptables ;t nat ;1
RR Establecemos politica por defecto
iptables ;- %(-U* ),,E-*
iptables ;- !U*-U* ),,E-*
iptables ;- 1!<M)< ),,E-*
iptables ;t nat ;- -<E<!U*%(? ),,E-*
iptables ;t nat ;- -!"*<!U*%(? ),,E-*
RR Empe'amos a filtrar
R El local+ost se deja 2por ejemplo cone#iones locales a m&sql4
.sbin.iptables ;) %(-U* ;i lo ;j ),,E-*
R ) nuestra %- le dejamos todo
iptables ;) %(-U* ;s 1AL.SL.8:.78: ;j ),,E-*
R ) un colega le dejamos entrar al m&sql para que mantenga la PP
iptables ;) %(-U* ;s 781.:L.18:.78 ;p tcp ;;dport 88>S ;j ),,E-*
R ) un diseHador le dejamos usar el 1*-
iptables ;) %(-U* ;s @>.8=.:L.1A: ;p tcp ;dport 7>071 ;j ),,E-*
R El puerto @> de www debe estar abierto, es un servidor web.
iptables ;) %(-U* ;p tcp ;;dport @> ;j ),,E-*
R N el resto, lo cerramos
iptables ;) %(-U* ;p tcp ;;dport 7>071 ;j <!-
iptables ;) %(-U* ;p tcp ;;dport 88>S ;j <!-
iptables ;) %(-U* ;p tcp ;;dport 77 ;j <!-
iptables ;) %(-U* ;p tcp ;;dport 1>>>> ;j <!-
ec+o J !O . Ierifique que lo que se aplica con0 iptables ;5 ;nJ
R 1in del script
(ota para freaGs & geeGs0 siiii, que &a lo se, se puede mejorar este script usando variables, se puede
poner el comando con el pat+ completo, pero limítense a +acer cop&;paste. -ara el resto de
mortales, no olvidarse de ponerle flags de ejecuci$n0 c+mod T# firewall1.s+ o c+mod =L>
firewall1.s+
En fin, &a se ve, un script de los más simple, con unas pocas reglas con las que cerramos puertos al
p3blico a los que no tienen porque tener acceso, salvo el @>. -ero cualquiera con algo de ojo se
+abrá dado cuenta de que ni se filtra el U- ni el %,/-. )postaría cualquier cosa a que el sistema
tiene alg3n puerto udp abierto, & además peligroso como el "(/-. ,omo +e dic+o anteriormente,
en este tipo de firewall es recordable +acer un netstat para ver que puertos están en estado de
escuc+a 2abiertos4, & salve que un rootGit nos +a&a modificado los binarios, netstat nos dará la
informaci$n precisa que necesitamos. Ba& gente que se decanta por +acerse un nmap así mismos.
,uidado0 dependiendo de c$mo lo ejecutemos qui'á no nos muestre todos los puertos, &a que suele
mirar los bien conocidos.
%maginemos que +emos dado un repaso a nuestro sistema, & a+ora si que tenemos mejor
identificados los puertos tcp & udp abiertos. -ero por si acaso nos curamos en salud & al final del
script cerraremos el rango de puertos del 1 al 1>7:, los reservados tanto para tcp como udp.
RQ.bin.s+
RR ",<%-* de %-*)P5E" ; ejemplo del manual de iptables
RR Ejemplo de script para proteger la propia máquina
ec+o ;n )plicando <eglas de 1irewall...
RR 15U"B de reglas
iptables ;1
iptables ;K
iptables ;6
iptables ;t nat ;1
RR Establecemos politica por defecto
iptables ;- %(-U* ),,E-*
iptables ;- !U*-U* ),,E-*
iptables ;- 1!<M)< ),,E-*
iptables ;t nat ;- -<E<!U*%(? ),,E-*
iptables ;t nat ;- -!"*<!U*%(? ),,E-*
RR Empe'amos a filtrar
R El local+ost se deja 2por ejemplo cone#iones locales a m&sql4
.sbin.iptables ;) %(-U* ;i lo ;j ),,E-*
R ) nuestra %- le dejamos todo
iptables ;) %(-U* ;s 1AL.SL.8:.78: ;j ),,E-*
R ) un colega le dejamos entrar al m&sql para que mantenga la PP
iptables ;) %(-U* ;s 781.:L.18:.78 ;p tcp ;;dport 88>S ;j ),,E-*
R ) un diseHador le dejamos usar el 1*-
iptables ;) %(-U* ;s @>.8=.:L.1A: ;p tcp ;dport 7>071 ;j ),,E-*
R El puerto @> de www debe estar abierto, es un servidor web.
iptables ;) %(-U* ;p tcp ;;dport @> ;j ),,E-*
R ,erramos rango de los puertos privilegiados. ,uidado con este tipo de
R barreras, antes +a& que abrir a los que si tienen acceso.
iptables ;) %(-U* ;p tcp ;;dport 101>7: ;j <!-
iptables ;) %(-U* ;p udp ;;dport 101>7: ;j <!-
R ,erramos otros puertos que estan abiertos
iptables ;) %(-U* ;p tcp ;;dport 88>S ;j <!-
iptables ;) %(-U* ;p tcp ;;dport 1>>>> ;j <!-
iptables ;) %(-U* ;p udp ;;dport 1>>>> ;j <!-
ec+o J !O . Ierifique que lo que se aplica con0 iptables ;5 ;nJ
R 1in del script
D"encillo, noE )+ora basta con +acer cop&;paste de estas reglas & aplicarlas & ajustarlas en su
sistema 2qui'ás uses -ostgre"Q54. "i tiene miedo de perder el control de una máquina remota,
pruebe el script en una máquina local & aseg3rese de que aplica lo que usted quiere. 1uncionar va a
funcionar seguro.
- Versión con DROP por defecto
Iale, queremos que nuestra maquina sea ine#crutable & que solo tenga abierto un puerto
imprescindible para dar determinado servicio. ,on <!- por defecto se protege la maquina
perfectamente, aunque +a& que aHadir algunas reglas para que la propia máquina sea capa' de salir
a internet.D -ara quéE +ombre, porque la maquina necesita actuali'aciones, consultar (" por udp,
sacar correo etc.
Ieamos un posible script0

RQ.bin.s+
RR ",<%-* de %-*)P5E" ; ejemplo del manual de iptables
ec+o ;n )plicando <eglas de 1irewall...
RR 15U"B de reglas
iptables ;1
iptables ;K
iptables ;6
iptables ;t nat ;1
RR Establecemos politica por defecto0 <!-
iptables ;- %(-U* <!-
iptables ;- !U*-U* <!-
iptables ;- 1!<M)< <!-
RR Empe'amos a filtrarE noQ empe'amos a abrirQ porque a+ora esta *!! denegado.
RR ebemos decir de manera e#plicita qué es lo que queremos abrir
R !perar en local+ost sin limitaciones
.sbin.iptables ;) %(-U* ;i lo ;j ),,E-*
.sbin.iptables ;) !U*-U* ;o lo ;j ),,E-*
R ) nuestra %- le dejamos todo
iptables ;) %(-U* ;s 1AL.SL.8:.78: ;j ),,E-*
iptables ;) !U*-U* ;d 1AL.SL.8:.78: ;j ),,E-*
R Este es el servicio que ) la maquina a internet, por tanto todo paquete entrante se acepta para
R ese puerto & los salientes vinculados se aceptan.
.sbin.iptables ;) %(-U* ;p tcp ;m tcp ;;dport @> ;j ),,E-*
.sbin.iptables ;) !U*-U* ;p tcp ;m tcp ;;sport @> ;m state ;;state <E5)*E,E"*)P5%"BE ;j
),,E-*
R -ermitimos que la maquina pueda salir a la web
.sbin.iptables ;) %(-U* ;p tcp ;m tcp ;;sport @> ;m state ;;state <E5)*E,E"*)P5%"BE ;j
),,E-*
.sbin.iptables ;) !U*-U* ;p tcp ;m tcp ;;dport @> ;j ),,E-*
R Na tambien a webs seguras
.sbin.iptables ;) %(-U* ;p tcp ;m tcp ;;sport ::8 ;m state ;;state <E5)*E,E"*)P5%"BE ;j
),,E-*
.sbin.iptables ;) !U*-U* ;p tcp ;m tcp ;;dport ::8 ;j ),,E-*
R <eglas necesarias para 1*- pasivo & activo. "e permiten cone#iones entrantes N) establecidas
.sbin.iptables ;) %(-U* ;p tcp ;m tcp ;;sport 7>071 ;m state ;;state <E5)*E,E"*)P5%"BE ;j
),,E-*
.sbin.iptables ;) !U*-U* ;p tcp ;m tcp ;;dport 7>071 ;j ),,E-*
.sbin.iptables ;) %(-U* ;p tcp ;m tcp ;;sport 1>7:0SLL8L ;;dport 1>7:0SLL8L ;m state ;;state
E"*)P5%"BE ;j ),,E-*
.sbin.iptables ;) !U*-U* ;p tcp ;m tcp ;;dport 1>7:0SLL8L ;m state ;;state
(EM,<E5)*E,E"*)P5%"BE ;j ),,E-*
R -ermitimos la consulta a un primer ("
.sbin.iptables ;) %(-U* ;s 711.AL.S:.8A ;p udp ;m udp ;;sport L8 ;j ),,E-*
.sbin.iptables ;) !U*-U* ;d 711.AL.S:.8A ;p udp ;m udp ;;dport L8 ;j ),,E-*
R -ermitimos la consulta a un segundo ("
.sbin.iptables ;) %(-U* ;s 711.AL.=A.1>A ;p udp ;m udp ;;sport L8 ;j ),,E-*
.sbin.iptables ;) !U*-U* ;d 711.AL.=A.1>A ;p udp ;m udp ;;dport L8 ;j ),,E-*
R -ermitimos consultar el reloj de +ora.rediris.es 2un pentium1SS4 para sincroni'arse
.sbin.iptables ;) %(-U* ;s 18>.7>S.8.1SS ;p udp ;m udp ;;dport 178 ;j ),,E-*
.sbin.iptables ;) !U*-U* ;d 18>.7>S.8.1SS ;p udp ;m udp ;;sport 178 ;j ),,E-*
R Parrera de bacGup por si cambiamos a modo ),,E-* temporalmente
R ,on esto protegemos los puertos reservados & otros well;Gnown
.sbin.iptables ;) %(-U* ;p tcp ;m tcp ;;dport 101>7: ;j <!-
.sbin.iptables ;) %(-U* ;p udp ;m udp ;;dport 101>7: ;j <!-
.sbin.iptables ;) %(-U* ;p tcp ;m tcp ;;dport 1=78 ;j <!-
.sbin.iptables ;) %(-U* ;p tcp ;m tcp ;;dport 88>S ;j <!-
.sbin.iptables ;) %(-U* ;p tcp ;m tcp ;;dport L:87 ;j <!-
ec+o J !O . Ierifique que lo que se aplica con0 iptables ;5 ;nJ
R 1in del script
8.7 1irewall de una 5)( con salida a internet
)+ora vamos a ver una configuraci$n de firewall iptables para el típico caso de red local que
necesita salida a internet.

1igura S0 esquema de firewall típico entre red local e internet
DQué es lo que +ace faltaE !bviamente, una regla que +aga ()* +acia fuera 2enmascaramiento en
iptables4, con lo que se +aría dos veces ()* en el firewall & en el router. Entre el router & el firewall
lo normal es que +a&a una red privada 21A7.1S@.1.1 & 1A7.1S@.1.7 por ejemplo4, aunque
dependiendo de las necesidades puede que los dos tengan %- p3blica. El router se supone que +ace
un ()* completo +acia dentro 2qui'á salvo puerto 784, o sea que desde el e#terior no se llega al
router si no que de forma transparente se Jc+ocaJ contra el firewall. 5o normal en este tipo de
firewalls es poner la política por defecto de 1!<M)< en denegar 2<!-4, pero eso lo vemos
más adelante.
Ieamos como sería este firewall;gatewa&0
RQ.bin.s+
RR ",<%-* de %-*)P5E" ; ejemplo del manual de iptables
RR Ejemplo de script para firewall entre red;local e internet
ec+o ;n )plicando <eglas de 1irewall...
RR 15U"B de reglas
iptables ;1
iptables ;K
iptables ;6
iptables ;t nat ;1
RR Establecemos politica por defecto
iptables ;- %(-U* ),,E-*
iptables ;- !U*-U* ),,E-*
iptables ;- 1!<M)< ),,E-*
iptables ;t nat ;- -<E<!U*%(? ),,E-*
iptables ;t nat ;- -!"*<!U*%(? ),,E-*
RR Empe'amos a filtrar
RR (ota0 et+> es el interfa' conectado al router & et+1 a la 5)(
R El local+ost se deja 2por ejemplo cone#iones locales a m&sql4
.sbin.iptables ;) %(-U* ;i lo ;j ),,E-*
R )l firewall tenemos acceso desde la red local
iptables ;) %(-U* ;s 1A7.1S@.1>.>.7: ;i et+1 ;j ),,E-*
R )+ora +acemos enmascaramiento de la red local
R & activamos el P%* E 1!<M)<%(? 2imprescindibleQQQQQ4
iptables ;t nat ;) -!"*<!U*%(? ;s 1A7.1S@.1>.>.7: ;o et+> ;j /)"QUE<)E
R ,on esto permitimos +acer forward de paquetes en el firewall, o sea
R que otras máquinas puedan salir a traves del firewall.
ec+o 1 U .proc.s&s.net.ipv:.ipVforward
RR N a+ora cerramos los accesos indeseados del e#terior0
R (ota0 >.>.>.>.> significa0 cualquier red
R ,erramos el rango de puerto bien conocido
iptables ;) %(-U* ;s >.>.>.>.> ;p tcp ;dport 101>7: ;j <!-
iptables ;) %(-U* ;s >.>.>.>.> ;p udp ;dport 101>7: ;j <!-
R ,erramos un puerto de gesti$n0 webmin
iptables ;) %(-U* ;s >.>.>.>.> ;p tcp ;dport 1>>>> ;j <!-
ec+o J !O . Ierifique que lo que se aplica con0 iptables ;5 ;nJ
R 1in del script
-ero como somos mu& malvados queremos que los empleados solamente puedan navegar por
internet, denegando el acceso a Oa'aa o edonGe&. Esta sería una configuraci$n simple pero efectiva.
RQ.bin.s+
RR ",<%-* de %-*)P5E" ; ejemplo del manual de iptables
RR Ejemplo de script para firewall entre red;local e internet
RR con filtro para que solo se pueda navegar.
ec+o ;n )plicando <eglas de 1irewall...
RR 15U"B de reglas
iptables ;1
iptables ;K
iptables ;6
iptables ;t nat ;1
RR Establecemos politica por defecto
iptables ;- %(-U* ),,E-*
iptables ;- !U*-U* ),,E-*
iptables ;- 1!<M)< ),,E-*
iptables ;t nat ;- -<E<!U*%(? ),,E-*
iptables ;t nat ;- -!"*<!U*%(? ),,E-*
RR Empe'amos a filtrar
RR (ota0 et+> es el interfa' conectado al router & et+1 a la 5)(
R El local+ost se deja 2por ejemplo cone#iones locales a m&sql4
.sbin.iptables ;) %(-U* ;i lo ;j ),,E-*
R )l firewall tenemos acceso desde la red local
iptables ;) %(-U* ;s 1A7.1S@.1>.>.7: ;i et+1 ;j ),,E-*
RR )+ora con regla 1!<M)< filtramos el acceso de la red local
RR al e#terior. ,omo se e#plica antes, a los paquetes que no van dirigidos al
RR propio firewall se les aplican reglas de 1!<M)<
R )ceptamos que va&an a puertos @>
iptables ;) 1!<M)< ;s 1A7.1S@.1>.>.7: ;i et+1 ;p tcp ;;dport @> ;j ),,E-*
R )ceptamos que va&an a puertos +ttps
iptables ;) 1!<M)< ;s 1A7.1S@.1>.>.7: ;i et+1 ;p tcp ;;dport ::8 ;j ),,E-*
R )ceptamos que consulten los ("
iptables ;) 1!<M)< ;s 1A7.1S@.1>.>.7: ;i et+1 ;p tcp ;;dport L8 ;j ),,E-*
iptables ;) 1!<M)< ;s 1A7.1S@.1>.>.7: ;i et+1 ;p udp ;;dport L8 ;j ),,E-*
R N denegamos el resto. "i se necesita alguno, &a avisaran
iptables ;) 1!<M)< ;s 1A7.1S@.1>.>.7: ;i et+1 ;j <!-
R )+ora +acemos enmascaramiento de la red local
R & activamos el P%* E 1!<M)<%(? 2imprescindibleQQQQQ4
iptables ;t nat ;) -!"*<!U*%(? ;s 1A7.1S@.1>.>.7: ;o et+> ;j /)"QUE<)E
R ,on esto permitimos +acer forward de paquetes en el firewall, o sea
R que otras máquinas puedan salir a traves del firewall.
ec+o 1 U .proc.s&s.net.ipv:.ipVforward
RR N a+ora cerramos los accesos indeseados del e#terior0
R (ota0 >.>.>.>.> significa0 cualquier red
R ,erramos el rango de puerto bien conocido
iptables ;) %(-U* ;s >.>.>.>.> ;p tcp ;dport 101>7: ;j <!-
iptables ;) %(-U* ;s >.>.>.>.> ;p udp ;dport 101>7: ;j <!-
R ,erramos un puerto de gesti$n0 webmin
iptables ;) %(-U* ;s >.>.>.>.> ;p tcp ;dport 1>>>> ;j <!-
ec+o J !O . Ierifique que lo que se aplica con0 iptables ;5 ;nJ
R 1in del script
"upongamos que este firewall tiene alguna funci$n adicional0 es un servidor pro#& & además es un
servidor de correo. arle funcionalidades de este tipo a un firewall no es recomendable, porque si
no se protegen bien esos puertos o si no está actuali'ado el software pueden entrar en el firewall a
base de #ploits comprometiendo *!) la red local. e todas formas muc+as empresas no se
pueden permitir o no quieren tener una máquina para cada cosa, bastante les cuesta a muc+as poner
un firewall. -or tanto0 si se aHaden servicios que deben estar abiertos al p3blico en el propio
firewall, nos la estamos jugando, & se recomienda pasar el servicio a otra máquina & ponerla en la
/6.
"upongamos también que la empresa tiene comerciales en ruta & que se conectan a internet desde su
portátil & con una ip dinámica. "upongamos también que el jefe de la empresa quiere acceder a la
red local desde casa con una cone#i$n )"5. )+ora en el firewall debieramos tener instalado un
servidor "/*-, pop8, & un --*-.
RQ.bin.s+
RR ",<%-* de %-*)P5E" ; ejemplo del manual de iptables
RR Ejemplo de script para firewall entre red;local e internet
RR con servicios abiertos de puerto 7L, 11>, & 1=78
ec+o ;n )plicando <eglas de 1irewall...
RR 15U"B de reglas
iptables ;1
iptables ;K
iptables ;6
iptables ;t nat ;1
RR Establecemos politica por defecto
iptables ;- %(-U* ),,E-*
iptables ;- !U*-U* ),,E-*
iptables ;- 1!<M)< ),,E-*
iptables ;t nat ;- -<E<!U*%(? ),,E-*
iptables ;t nat ;- -!"*<!U*%(? ),,E-*
RR Empe'amos a filtrar
RR (ota0 et+> es el interfa' conectado al router & et+1 a la 5)(
R El local+ost se deja 2por ejemplo cone#iones locales a m&sql4
iptables ;) %(-U* ;i lo ;j ),,E-*
R )l firewall tenemos acceso desde la red local
iptables ;) %(-U* ;s 1A7.1S@.1>.>.7: ;i et+1 ;j ),,E-*
RR )brimos el acceso a puertos de correo
R )brimos el puerto 7L, +a& que configurar bien el rela& del servidor "/*-
iptables ;) %(-U* ;s >.>.>.>.> ;p tcp ;;dport 7L ;j ),,E-*
R )brimos el pop8
iptables ;) %(-U* ;s >.>.>.>.> ;p tcp ;;dport 11> ;j ),,E-*
R N abrimos el puerto pptpd para la ip del adsl de casa del jefe
iptables ;) %(-U* ;s 711.:L.1=S.7: ;p tcp ;;dport 1=78 ;j ),,E-*
RR )+ora con regla 1!<M)< filtramos el acceso de la red local
RR al e#terior. ,omo se e#plica antes, a los paquetes que no van dirigidos al
RR propio firewall se les aplican reglas de 1!<M)<
R )ceptamos que va&an a puertos @>
iptables ;) 1!<M)< ;s 1A7.1S@.1>.>.7: ;i et+1 ;p tcp ;;dport @> ;j ),,E-*
R )ceptamos que va&an a puertos +ttps
iptables ;) 1!<M)< ;s 1A7.1S@.1>.>.7: ;i et+1 ;p tcp ;;dport ::8 ;j ),,E-*
R )ceptamos que consulten los ("
iptables ;) 1!<M)< ;s 1A7.1S@.1>.>.7: ;i et+1 ;p tcp ;;dport L8 ;j ),,E-*
iptables ;) 1!<M)< ;s 1A7.1S@.1>.>.7: ;i et+1 ;p udp ;;dport L8 ;j ),,E-*
R N denegamos el resto. "i se necesita alguno, &a avisaran
iptables ;) 1!<M)< ;s 1A7.1S@.1>.>.7: ;i et+1 ;j <!-
R )+ora +acemos enmascaramiento de la red local
R & activamos el P%* E 1!<M)<%(? 2imprescindibleQQQQQ4
iptables ;t nat ;) -!"*<!U*%(? ;s 1A7.1S@.1>.>.7: ;o et+> ;j /)"QUE<)E
R ,on esto permitimos +acer forward de paquetes en el firewall, o sea
R que otras máquinas puedan salir a traves del firewall.
ec+o 1 U .proc.s&s.net.ipv:.ipVforward
RR N a+ora cerramos los accesos indeseados del e#terior0
R (ota0 >.>.>.>.> significa0 cualquier red
R ,erramos el rango de puerto bien conocido
iptables ;) %(-U* ;s >.>.>.>.> ;i et+> ;p tcp ;dport 101>7: ;j <!-
iptables ;) %(-U* ;s >.>.>.>.> ;i et+> ;p udp ;dport 101>7: ;j <!-
R ,erramos un puerto de gesti$n0 webmin
iptables ;) %(-U* ;s >.>.>.>.> ;i et+> ;p tcp ;;dport 1>>>> ;j <!-
R N cerramos el puerto del servicio --*-, solo abierto para el jefe.
iptables ;) %(-U* ;s >.>.>.>.> ;i et+> ;p tcp ;;dport 1=78 ;j <!-
ec+o J !O . Ierifique que lo que se aplica con0 iptables ;5 ;nJ
R 1in del script
W/ás difícil todavíaQ
)+ora queremos compartir alg3n servicio pero de un servidor que tenemos dentro de la red local,
por ejemplo el %%" de un servidor windows7>>>, & además permitir la gesti$n remota por terminal
server para esta máquina para una empresa e#terna. En este caso lo que +a& que +acer es un
redirecci$n de puerto. )ntes de iptables esto se podía +acer fácilmente con un servidor como rinet.
<inet lo que +ace es simplemente abrir un puerto en el firewall & al conectarse a él te lleva +asta el
puerto de otra máquina, como una tubería. ,on %ptables podemos +acer redirecciones con una
ventaja0 no perdemos la informaci$n de %- origen, cosa que con rinet sí ocurría. En fin, veamos la
configuraci$n, con las nuevas reglas de ()*0
RQ.bin.s+
RR ",<%-* de %-*)P5E" ; ejemplo del manual de iptables
RR Ejemplo de script para firewall entre red;local e internet
RR con servicios abiertos de puerto 7L, 11>, & 1=78
ec+o ;n )plicando <eglas de 1irewall...
RR 15U"B de reglas
iptables ;1
iptables ;K
iptables ;6
iptables ;t nat ;1
RR Establecemos politica por defecto
iptables ;- %(-U* ),,E-*
iptables ;- !U*-U* ),,E-*
iptables ;- 1!<M)< ),,E-*
iptables ;t nat ;- -<E<!U*%(? ),,E-*
iptables ;t nat ;- -!"*<!U*%(? ),,E-*
RR Empe'amos a filtrar
RR <E%<E,,%!(E"
R *odo lo que venga por el e#terior & va&a al puerto @> lo redirigimos
R a una maquina interna
iptables ;t nat ;) -<E<!U*%(? ;i et+> ;p tcp ;;dport @> ;j ()* ;;to 1A7.1S@.1>.170@>
R 5os accesos de un ip determinada a *erminal server se redirigen e esa
R maquina
iptables ;t nat ;) -<E<!U*%(? ;s 771.78.17:.1@1 ;i et+> ;p tcp ;;dport 88@A ;j ()* ;;to
1A7.1S@.1>.17088@A
RR (ota0 et+> es el interfa' conectado al router & et+1 a la 5)(
R El local+ost se deja 2por ejemplo cone#iones locales a m&sql4
iptables ;) %(-U* ;i lo ;j ),,E-*
R )l firewall tenemos acceso desde la red local
iptables ;) %(-U* ;s 1A7.1S@.1>.>.7: ;i et+1 ;j ),,E-*
RR )brimos el acceso a puertos de correo
R )brimos el puerto 7L, +a& que configurar bien el rela& del servidor "/*-
iptables ;) %(-U* ;s >.>.>.>.> ;p tcp ;;dport 7L ;j ),,E-*
R )brimos el pop8
iptables ;) %(-U* ;s >.>.>.>.> ;p tcp ;;dport 11> ;j ),,E-*
R N abrimos el puerto pptpd para la ip del adsl de casa del jefe
iptables ;) %(-U* ;s 711.:L.1=S.7: ;p tcp ;;dport 1=78 ;j ),,E-*
RR )+ora con regla 1!<M)< filtramos el acceso de la red local
RR al e#terior. ,omo se e#plica antes, a los paquetes que no van dirigidos al
RR propio firewall se les aplican reglas de 1!<M)<
R )ceptamos que va&an a puertos @>
iptables ;) 1!<M)< ;s 1A7.1S@.1>.>.7: ;i et+1 ;p tcp ;;dport @> ;j ),,E-*
R )ceptamos que va&an a puertos +ttps
iptables ;) 1!<M)< ;s 1A7.1S@.1>.>.7: ;i et+1 ;p tcp ;;dport ::8 ;j ),,E-*
R )ceptamos que consulten los ("
iptables ;) 1!<M)< ;s 1A7.1S@.1>.>.7: ;i et+1 ;p tcp ;;dport L8 ;j ),,E-*
iptables ;) 1!<M)< ;s 1A7.1S@.1>.>.7: ;i et+1 ;p udp ;;dport L8 ;j ),,E-*
R N denegamos el resto. "i se necesita alguno, &a avisaran
iptables ;) 1!<M)< ;s 1A7.1S@.1>.>.7: ;i et+1 ;j <!-
R )+ora +acemos enmascaramiento de la red local
R & activamos el P%* E 1!<M)<%(? 2imprescindibleQQQQQ4
iptables ;t nat ;) -!"*<!U*%(? ;s 1A7.1S@.1>.>.7: ;o et+> ;j /)"QUE<)E
R ,on esto permitimos +acer forward de paquetes en el firewall, o sea
R que otras máquinas puedan salir a traves del firewall.
ec+o 1 U .proc.s&s.net.ipv:.ipVforward
RR N a+ora cerramos los accesos indeseados del e#terior0
R (ota0 >.>.>.>.> significa0 cualquier red
R ,erramos el rango de puerto bien conocido
iptables ;) %(-U* ;s >.>.>.>.> ;i et+> ;p tcp ;dport 101>7: ;j <!-
iptables ;) %(-U* ;s >.>.>.>.> ;i et+> ;p udp ;dport 101>7: ;j <!-
R ,erramos un puerto de gesti$n0 webmin
iptables ;) %(-U* ;s >.>.>.>.> ;i et+> ;p tcp ;;dport 1>>>> ;j <!-
R N cerramos el puerto del servicio --*-, solo abierto para el jefe.
iptables ;) %(-U* ;s >.>.>.>.> ;i et+> ;p tcp ;;dport 1=78 ;j <!-
ec+o J !O . Ierifique que lo que se aplica con0 iptables ;5 ;nJ
R 1in del script
Pueno &a tenemos montada la red, pero conviene insistir en que esta 3ltima configuraci$n, con las
redirecciones & los servicios de correo funcionando en el firewall es bastante insegura. DQué ocurre
si +acGean el servidor %%" de la red localE -ues que el firewall no sirve de gran cosa, lo poco que
podría +acer una ve' se +a entrado en la red local es evitar escaneos +acia el e#terior desde la
máquina atacada, aunque para ello el firewall debiera tener una buena configuraci$n con
denegaci$n por defecto. "i necesitamos ese servidor %%", basta con comprar una tarjeta de red por SX
o dolares & crear una /6.
8.8 1irewall de una 5)( con salida a internet con /6
Pueno, esto se va complicando. %maginemos que tenemos una red parecida a la anterior pero a+ora
+acemos las cosas bien & colocamos ese servidor %%" en una /60

1igura =0 esquema de firewall entre red local e internet con 'ona /6 para servidores e#puestos
En este tipo de firewall +a& que permitir0
; )cceso de la red local a internet.
; )cceso p3blico al puerto tcp.@> & tcp.::8 del servidor de la /6
; )cceso del servidor de la /6 a una PP de la 5)(
; !bviamente bloquear el resto de acceso de la /6 +acia la 5)(.
DQué tipo de reglas son las que +a& que usar para filtrar el tráfico entre la /6 & la 5)(E "olo
pueden ser las 1!<M)<, &a que estamos filtrando entre distintas redes, no son paquetes
destinados al propio firewall.
RQ.bin.s+
RR ",<%-* de %-*)P5E" ; ejemplo del manual de iptables
RR Ejemplo de script para firewall entre red;local e internet con /6
ec+o ;n )plicando <eglas de 1irewall...
RR 15U"B de reglas
iptables ;1
iptables ;K
iptables ;6
iptables ;t nat ;1
RR Establecemos politica por defecto
iptables ;- %(-U* ),,E-*
iptables ;- !U*-U* ),,E-*
iptables ;- 1!<M)< ),,E-*
iptables ;t nat ;- -<E<!U*%(? ),,E-*
iptables ;t nat ;- -!"*<!U*%(? ),,E-*
RR Empe'amos a filtrar
RR (ota0 et+> es el interfa' conectado al router & et+1 a la 5)(
R *odo lo que venga por el e#terior & va&a al puerto @> lo redirigimos
R a una maquina interna
iptables ;t nat ;) -<E<!U*%(? ;i et+> ;p tcp ;;dport @> ;j ()* ;;to 1A7.1S@.8.70@>
R 5os accesos de un ip determinada B**-" se redirigen e esa
R maquina
iptables ;t nat ;) -<E<!U*%(? ;i et+> ;p tcp ;;dport ::8 ;j ()* ;;to 1A7.1S@.8.70::8
R El local+ost se deja 2por ejemplo cone#iones locales a m&sql4
.sbin.iptables ;) %(-U* ;i lo ;j ),,E-*
R )l firewall tenemos acceso desde la red local
iptables ;) %(-U* ;s 1A7.1S@.1>.>.7: ;i et+1 ;j ),,E-*
R )+ora +acemos enmascaramiento de la red local & de la /6
R para que puedan salir +aca fuera
R & activamos el P%* E 1!<M)<%(? 2imprescindibleQQQQQ4
iptables ;t nat ;) -!"*<!U*%(? ;s 1A7.1S@.1>.>.7: ;o et+> ;j /)"QUE<)E
iptables ;t nat ;) -!"*<!U*%(? ;s 1A7.1S@.8.>.7: ;o et+> ;j /)"QUE<)E
R ,on esto permitimos +acer forward de paquetes en el firewall, o sea
R que otras máquinas puedan salir a traves del firewall.
ec+o 1 U .proc.s&s.net.ipv:.ipVforward
RR -ermitimos el paso de la /6 a una PP de la 5)(0
iptables ;) 1!<M)< ;s 1A7.1S@.8.7 ;d 1A7.1S@.1>.L ;p tcp ;;dport L:87 ;j ),,E-*
iptables ;) 1!<M)< ;s 1A7.1S@.1>.L ;d 1A7.1S@.8.7 ;p tcp ;;sport L:87 ;j ),,E-*
RR permitimos abrir el *erminal server de la /6 desde la 5)(
iptables ;) 1!<M)< ;s 1A7.1S@.1>.>.7: ;d 1A7.1S@.8.7 ;p tcp ;;sport 1>7:0SLL8L ;;dport 88@A ;j
),,E-*
R Y +a& que +acerlo en uno & otro sentido Y
iptables ;) 1!<M)< ;s 1A7.1S@.8.7 ;d 1A7.1S@.1>.>.7: ;p tcp ;;sport 88@A ;;dport 1>7:0SLL8L ;j
),,E-*
R Y por que luego0
R ,erramos el acceso de la /6 a la 5)(
iptables ;) 1!<M)< ;s 1A7.1S@.8.>.7: ;d 1A7.1S@.1>.>.7: ;j <!-
RR ,erramos el acceso de la /6 al propio firewall
iptables ;) %(-U* ;s 1A7.1S@.8.>.7: ;i et+7 ;j <!-
RR N a+ora cerramos los accesos indeseados del e#terior0
R (ota0 >.>.>.>.> significa0 cualquier red
R ,erramos el rango de puerto bien conocido
iptables ;) %(-U* ;s >.>.>.>.> ;p tcp ;dport 101>7: ;j <!-
iptables ;) %(-U* ;s >.>.>.>.> ;p udp ;dport 101>7: ;j <!-
R ,erramos un puerto de gesti$n0 webmin
iptables ;) %(-U* ;s >.>.>.>.> ;p tcp ;dport 1>>>> ;j <!-
ec+o J !O . Ierifique que lo que se aplica con0 iptables ;5 ;nJ
R 1in del script
Iamos a ver0 si las máquinas de la /6 tienen una ip p3blica +a& que tener muc+ísimo cuidado de
no permitir el 1!<M)< por defecto. "i en la /6 +a& ip p3blica (! E" (E,E")<%! B),E<
<E%<E,,%!(E" de puerto, sino que basta con rutar los paquetes para llegar +asta la /6. Este
tipo de necesidades surgen cuando por ejemplo tenemos dos máquinas con servidor web 2un apac+e
& un %%"49 D) cuál de las dos le redirigimos el puerto @>E (o +a& manera de saberlo 2(o, con
servidores virtuales tampoco, piénsalo4, por eso se deben asignar %-s p3blicas o en su defecto usar
puertos distintos.
-or tanto +a& que proteger convenientemente toda la /6. *ampoco +aría falta enmascarar la
salida +acia el e#terior de la /6, si tiene una ip p3blica &a tiene una pata puesta en internet9
obviamente +a& que decirle al router como llegar +asta esa ip p3blica. )sí podría ser esta red0

1igura @0 esquema de firewall entre red local e internet con 'ona /6 para servidores e#puestos
usando %-s p3blicas

N este podría ser un firewall adecuado0
RQ.bin.s+
RR ",<%-* de %-*)P5E" ; ejemplo del manual de iptables
RR Ejemplo de script para firewall entre red;local e internet con /6
RR pero con %-s p3blicas.
ec+o ;n )plicando <eglas de 1irewall...
RR 15U"B de reglas
iptables ;1
iptables ;K
iptables ;6
iptables ;t nat ;1
RR Establecemos politica por defecto
iptables ;- %(-U* ),,E-*
iptables ;- !U*-U* ),,E-*
iptables ;- 1!<M)< ),,E-*
iptables ;t nat ;- -<E<!U*%(? ),,E-*
iptables ;t nat ;- -!"*<!U*%(? ),,E-*
RR Empe'amos a filtrar
RR (ota0 et+> es el interfa' conectado al router & et+1 a la 5)(
R El local+ost se deja 2por ejemplo cone#iones locales a m&sql4
.sbin.iptables ;) %(-U* ;i lo ;j ),,E-*
R )l firewall tenemos acceso desde la red local
iptables ;) %(-U* ;s 1A7.1S@.1>.>.7: ;i et+1 ;j ),,E-*
R )+ora +acemos enmascaramiento de la red local & de la /6
R para que puedan salir +aca fuera
R & activamos el P%* E 1!<M)<%(? 2imprescindibleQQQQQ4
iptables ;t nat ;) -!"*<!U*%(? ;s 1A7.1S@.1>.>.7: ;o et+> ;j /)"QUE<)E
R ,on esto permitimos +acer forward de paquetes en el firewall, o sea
R que otras máquinas puedan salir a traves del firewall.
ec+o 1 U .proc.s&s.net.ipv:.ipVforward
RR -ermitimos el acceso desde el e#terior a los puertos @> & ::8 de /6
iptables ;) 1!<M)< ;d 717.1A:.@A.1L7 ;p tcp ;dport @> ;j ),,E-*
iptables ;) 1!<M)< ;d 717.1A:.@A.1L7 ;p tcp ;dport ::8 ;j ),,E-*
iptables ;) 1!<M)< ;d 717.1A:.@A.1L>.8> ;j <!-
RR -ermitimos el paso de la /6 a una PP de la 5)(0
iptables ;) 1!<M)< ;s 717.1A:.@A.1L7 ;d 1A7.1S@.1>.L ;p tcp ;;dport L:87 ;j ),,E-*
R en el otro sentido lo mismo
iptables ;) 1!<M)< ;s 1A7.1S@.1>.L ;d 717.1A:.@A.1L7 ;p tcp ;;sport L:87 ;j ),,E-*
RR permitimos abrir el *erminal server de la /6 desde la 5)(
iptables ;) 1!<M)< ;s 1A7.1S@.1>.>.7: ;d 717.1A:.@A.1L7 ;p tcp ;;sport 1>7:0SLL8L ;;dport
88@A ;j ),,E-*
R Y +a& que +acerlo en uno & otro sentido Y
iptables ;) 1!<M)< ;s 717.1A:.@A.1L7 ;d 1A7.1S@.1>.>.7: ;p tcp ;;sport 88@A ;;dport
1>7:0SLL8L ;j ),,E-*
R Y por que luego0
R ,erramos el acceso de la /6 a la 5)(
iptables ;) 1!<M)< ;s 717.1A:.@A.1L7 ;d 1A7.1S@.1>.>.7: ;j <!-
RR ,erramos el acceso de la /6 al propio firewall
iptables ;) %(-U* ;s 717.1A:.@A.1L7 ;i et+7 ;j <!-
RR N a+ora cerramos los accesos indeseados del e#terior0
R (ota0 >.>.>.>.> significa0 cualquier red
R ,erramos el rango de puerto bien conocido
iptables ;) %(-U* ;s >.>.>.>.> ;p tcp ;dport 101>7: ;j <!-
iptables ;) %(-U* ;s >.>.>.>.> ;p udp ;dport 101>7: ;j <!-
R ,erramos un puerto de gesti$n0 webmin
iptables ;) %(-U* ;s >.>.>.>.> ;p tcp ;dport 1>>>> ;j <!-
ec+o J !O . Ierifique que lo que se aplica con0 iptables ;5 ;nJ
R 1in del script
)*E(,%Z(
/erece la pena pararse a e#plicar esta parte del firewall0
RR permitimos abrir el *erminal server de la /6 desde la 5)(
iptables ;) 1!<M)< ;s 1A7.1S@.1>.>.7: ;d 717.1A:.@A.1L7 ;p tcp ;sport 1>7:0SLL8L ;;dport
88@A ;j ),,E-*
R Y +a& que +acerlo en uno & otro sentido Y
iptables ;) 1!<M)< ;s 717.1A:.@A.1L7 ;d 1A7.1S@.1>.>.7: ;p tcp ;;sport 88@A ;;dport
1>7:0SLL8L ;j ),,E-*
R Y por que luego0
R ,erramos el acceso de la /6 a la 5)(
iptables ;) 1!<M)< ;s 717.1A:.@A.1L7 ;d 1A7.1S@.1>.>.7: ;j <!-
5o que nos lleva a dos cuestiones0
D-or qué +a& que e#plicitar la abertura en uno & otro sentidoE -orque la tercera regla cierra todo lo
que va de la /6 a la red local. -ara abrir el puerto 88@A de tcp es imprescindible que un paquete
de ida sea capa' de llegar +asta la /6 & que a su ve' pueda volver a la 5)(. Esto de tener que
especificar la abertura en uno & otro sentido será el pan de cada día en un iptables con política
<!- por defecto0 mejor protecci$n pero más trabajo.
D-or qué se e#plicita el puerto de origen.destino 1>7:0SLL8L en la primera & segunda reglaE
%maginemos que un +acGer logra acceso a la máquina de la /6. "i no especificamos el puerto de
destino en esas dos reglas, el +acGer puede abrir ,U)5QU%E< puerto de la 5)( siempre que
pueda establecer como puerto origen su&o el tcp.88@A, cosa fácil para un +acGer que sepa algo de ,
o que tenga el programa pertinente a mano. e todas formas el +acGer tendría que saber que e#iste
ese tipo de reglas, si es listo probara con puertos de gesti$n o con puertos netbios. El problema es
que se deja un vínculo con la 5)( bien para administrarlo remotamente o para establecer
relaciones de confian'a & a+í es donde reside el peligro.
En las cone#iones JlegalesJ no se usa como puerto origen nada por debajo del 1>7:9 cuando alguien
se conecta a otro puerto en su e#tremo abre un puerto por encima del 1>7:. Especificándolo en la
regla de firewall protegeremos un poco mejor la 5)(, aunque los puertos por encima de 1>7:
estarán en peligro.
8.: 1irewall de una 5)( con salida a internet & I-("
En principio este caso no nos tendría que dar ma&or problema, aunque la primera ve' que lo
montemos, el enmascaramiento nos jugará una mala pasada. -or eso conviene ec+ar un vista'o en
este caso.

1igura A0 esquema de firewall entre red local e internet con 'ona /6 & delegaciones que acceden
a /6
"upongamos que entre los routers &a se +a establecido un tunel 2con ,iscos se +aria creando un
interfa' *unnel4, & que si el firewall nos deja podríamos llegar de la central a las delegaciones &
viceversa usando las %-s privadas. Ia&a que se puede +acer un ping desde la central a 1A7.1S@.8>.#
& nos responde. -ara ello es imprescindible que el router de la central tenga una ruta metida para
llegar a 1A7.1S@.1>.>.7: & por supuesto cada una ruta para cada delegaci$n. )ntes de meterse en el
firewall +a& que asegurar la visibilidad entre los routers & poder llegar a sus %-s privadas +aciendo
ping.
"upongamos también que en la central esta el servidor de correo que l$gicamente debe tener el
puerto 7L accesible desde internet, & debe ser accesible desde las delegaciones para puerto 7L, 11>
2pop84 o 1:82imap4. 5a salida a internet 2web, ftp, etc..4 cada uno la +ace por su lado.
Ieamos una posible configuraci$n para este caso.
RQ.bin.s+
RR ",<%-* de %-*)P5E" ; ejemplo del manual de iptables
RR Ejemplo de script para firewall entre red;local e internet con /6
RR & delegaciones. 5as delegaciones deben tener acceso al correo de la /6
ec+o ;n )plicando <eglas de 1irewall...
RR 15U"B de reglas
iptables ;1
iptables ;K
iptables ;6
iptables ;t nat ;1
RR Establecemos politica por defecto
iptables ;- %(-U* ),,E-*
iptables ;- !U*-U* ),,E-*
iptables ;- 1!<M)< ),,E-*
iptables ;t nat ;- -<E<!U*%(? ),,E-*
iptables ;t nat ;- -!"*<!U*%(? ),,E-*
RR Empe'amos a filtrar
RR (ota0 et+> es el interfa' conectado al router & et+1 a la 5)(
R *odo lo que venga por el e#terior & va&a al puerto 7L lo redirigimos
R a la maquina de la /6
iptables ;t nat ;) -<E<!U*%(? ;i et+> [
;p tcp ;;dport 7L ;j ()* ;;to 1A7.1S@.8.707L
R *odo lo que venga por el interfa' del router2et+>4 & va&a al 11>
R siempre que sea una delegacion se acepta & redirije
iptables ;t nat ;) -<E<!U*%(? ;s 1A7.1S@.7>.>.7: ;i et+> [
;p tcp ;;dport 11> ;j ()* ;;to 1A7.1S@.8.7011>
iptables ;t nat ;) -<E<!U*%(? ;s 1A7.1S@.8>.>.7: ;i et+> [
;p tcp ;;dport 11> ;j ()* ;;to 1A7.1S@.8.7011>
R *odo lo que venga por el interfa' del router2et+>4 & va&a al 11>
R siempre que sea una delegacion se acepta & redirije
iptables ;t nat ;) -<E<!U*%(? ;s 1A7.1S@.7>.>.7: ;i et+> [
;p tcp ;;dport 1:8 ;j ()* ;;to 1A7.1S@.8.701:8
iptables ;t nat ;) -<E<!U*%(? ;s 1A7.1S@.8>.>.7: ;i et+> [
;p tcp ;;dport 1:8 ;j ()* ;;to 1A7.1S@.8.701:8
R El local+ost se deja 2por ejemplo cone#iones locales a m&sql4
iptables ;) %(-U* ;i lo ;j ),,E-*
R )l firewall tenemos acceso desde la red local
iptables ;) %(-U* ;s 1A7.1S@.1>.>.7: ;i et+1 ;j ),,E-*
R )+ora +acemos enmascaramiento de la red local & de la /6
R para que puedan salir +aca fuera
R & activamos el P%* E 1!<M)<%(? 2imprescindibleQQQQQ4
R ,uidado con este enmascaramiento.
iptables ;t nat ;) -!"*<!U*%(? ;s 1A7.1S@.1>.>.7: ;o et+> ;j /)"QUE<)E
iptables ;t nat ;) -!"*<!U*%(? ;s 1A7.1S@.8.>.7: ;o et+> ;j /)"QUE<)E
R ,on esto permitimos +acer forward de paquetes en el firewall, o sea
R que otras máquinas puedan salir a traves del firewall.
ec+o 1 U .proc.s&s.net.ipv:.ipVforward
R -ara que desde la red local se salga +acia fuera +a& que E(/)",)<)<
R pero que pasa con las delegaciones tambien estan fuera N (! B)N QUE
R E(/)",)<)<, debemos meter una regla 1!<M)< e#plicita para que no enmascare
R porque si no una petici$n de la 5)( a otra delegacion no se meteria
R en el tunel.
iptables ;) 1!<M)< ;s 1A7.1S@.1>.>.7: ;d 1A7.1S@.7>.>.7: ;j ),,E-*
iptables ;) 1!<M)< ;s 1A7.1S@.7>.>.7: ;d 1A7.1S@.1>.>.7: ;j ),,E-*
iptables ;) 1!<M)< ;s 1A7.1S@.1>.>.7: ;d 1A7.1S@.8>.>.7: ;j ),,E-*
iptables ;) 1!<M)< ;s 1A7.1S@.8>.>.7: ;d 1A7.1S@.1>.>.7: ;j ),,E-*
R )brimos el acceso para que se pueda aceder a la /6 desde la 5)(
R a puertos de correo
R En principio lo que va de 5)( ;U /6 se acepta
iptables ;) 1!<M)< ;s 1A7.1S@.1>.>.7: ;d 1A7.1S@.8.>.7: ;j ),,E-*
R 5uedo desde la /6 a la 5)( solo se acepta 7L,11>,1:8
iptables ;) 1!<M)< ;s 1A7.1S@.8.>.7: ;p tcp ;;sport 7L [
;d 1A7.1S@.1>.>.7: ;j ),,E-*
iptables ;) 1!<M)< ;s 1A7.1S@.8.>.7: ;p tcp ;;sport 1:8 [
;d 1A7.1S@.1>.>.7: ;j ),,E-*
iptables ;) 1!<M)< ;s 1A7.1S@.8.>.7: ;p tcp ;;sport 1:8 [
;d 1A7.1S@.1>.>.7: ;j ),,E-*
R ,erramos el acceso de la /6 a la 5)(
iptables ;) 1!<M)< ;s 1A7.1S@.8.>.7: ;d 1A7.1S@.1>.>.7: ;j <!-
RR ,erramos el acceso de la /6 al propio firewall
iptables ;) %(-U* ;s 1A7.1S@.8.>.7: ;i et+7 ;j <!-
RR N a+ora cerramos los accesos indeseados del e#terior0
R (ota0 >.>.>.>.> significa0 cualquier red
R ,erramos el rango de puerto bien conocido
iptables ;) %(-U* ;s >.>.>.>.> ;p tcp ;dport 101>7: ;j <!-
iptables ;) %(-U* ;s >.>.>.>.> ;p udp ;dport 101>7: ;j <!-
R ,erramos un puerto de gesti$n0 webmin
iptables ;) %(-U* ;s >.>.>.>.> ;p tcp ;dport 1>>>> ;j <!-
ec+o J !O . Ierifique que lo que se aplica con0 iptables ;5 ;nJ
R 1in del script
"e +an remarcado en negrita las reglas 1!<M)< entre %-s privadas de delegaciones, &a que sin
esas reglas & con el enmascaramiento de por medio no se podría acceder a las delegaciones. ,abe
resaltar que entre delegaciones no +a& visibilidad total, solamente la central vería a todas las demás,
& las delegaciones solamente la central.
5a delegaciones accederían al servidor de correo con una redirecci$n, o sea que ellos se
configurarían el servidor de correo como 1A7.1S@.1>.1, mientras que desde la 5)( se accedería
directamente. "e puede +acer de distintas maneras.
5o interesante sería poner ese firewall con <!- por defecto, se tratará de mostrar esa
configuraci$n al final.

8.L 1irewall puro & duro entre redes
En este caso olvidémonos de redes locales & de ()*. )quí solo tendremos reglas de filtrado %(-U*
& 1!<M)<. -ongamos que tenemos el siguiente escenario0

1igura 1>0 esquema de firewall entre redes, en la que solo se filtra & no se +ace ()*
En el firewall debemos indicar una serie de reglas para proteger los equipos que están al otro lado
de este dispositivo, todos ellos de la red 711.8:.1:A.>.7:
,ada uno de ellos da un servicio determinado, & puede estar gestionado desde distintas %-s, lo que
significa que +abrá que dar acceso a determinados puertos de gesti$n 277, 88@A, etc..4.
Este podría ser el aspecto del script del firewall0
RQ.bin.s+
RR ",<%-* de %-*)P5E" ; ejemplo del manual de iptables
RR Ejemplo de script para firewall entre redes.
ec+o ;n )plicando <eglas de 1irewall...
RR 15U"B de reglas
iptables ;1
iptables ;K
iptables ;6
iptables ;t nat ;1
RR Establecemos politica por defecto
iptables ;- %(-U* ),,E-*
iptables ;- !U*-U* ),,E-*
iptables ;- 1!<M)< ),,E-*
RR Empe'amos a filtrar
RR (ota0 et+> es el interfa' conectado al router & et+1 a la 5)(
R ) nuestro firewall tenemos acceso total desde la nuestra %-
iptables ;) %(-U* ;s 71>.1AL.LL.1L ;j ),,E-*
R -ara el resto no +a& acceso al firewall
iptables ;) %(-U* ;s >.>.>.>.> ;j <!-
RR )+ora podemos ir metiendo las reglas para cada servidor
RR ,omo serán paquetes con destino a otras máquinas se aplica 1!<M)<
RR "ervidor MEP 711.8:.1:A.7
R )cceso a puerto @>
iptables ;) 1!<M)< ;d 711.8:.1:A.7 ;p tcp ;;dport @> ;j ),,E-*
R )cceso a nuestra ip para gestionarlo
iptables ;) 1!<M)< ;s 71>.1AL.LL.1L ;d 711.8:.1:A.7 ;p tcp ;;dport 77 ;j ),,E-*
R El resto, cerrar
iptables ;) 1!<M)< ;d 711.8:.1:A.7 ;j <!-
RR "ervidor /)%5 711.8:.1:A.8
R )cceso a puerto 7L, 11> & 1:8
iptables ;) 1!<M)< ;d 711.8:.1:A.8 ;p tcp ;;dport 7L ;j ),,E-*
iptables ;) 1!<M)< ;d 711.8:.1:A.8 ;p tcp ;;dport 11> ;j ),,E-*
iptables ;) 1!<M)< ;d 711.8:.1:A.8 ;p tcp ;;dport 1:8 ;j ),,E-*
R )cceso a gestion "(/-
iptables ;) 1!<M)< ;s 71>.1AL.LL.1L ;d 711.8:.1:A.8 ;p udp ;;dport 1SA ;j ),,E-*
R )cceso a nuestra ip para gestionarlo
iptables ;) 1!<M)< ;s 71>.1AL.LL.1L ;d 711.8:.1:A.8 ;p tcp ;;dport 77 ;j ),,E-*
R El resto, cerrar
iptables ;) 1!<M)< ;d 711.8:.1:A.8 ;j <!-
RR "ervidor %<, 711.8:.1:A.:
R )cceso a puertos %<,
iptables ;) 1!<M)< ;d 711.8:.1:A.: ;p tcp ;;dport SSSS0SSS@ ;j ),,E-*
R )cceso a nuestra ip para gestionarlo
iptables ;) 1!<M)< ;s 71>.1AL.LL.1L ;d 711.8:.1:A.: ;p tcp ;;dport 77 ;j ),,E-*
R El resto, cerrar
iptables ;) 1!<M)< ;d 711.8:.1:A.: ;j <!-
RR "ervidor (EM" 711.8:.1:A.L
R )cceso a puerto news
iptables ;) 1!<M)< ;d 711.8:.1:A.L ;p tcp ;;dport news ;j ),,E-*
R )cceso a nuestra ip para gestionarlo
iptables ;) 1!<M)< ;s 718.1A:.S@.11L ;d 711.8:.1:A.L ;p tcp ;;dport 77 ;j ),,E-*
R El resto, cerrar
iptables ;) 1!<M)< ;d 711.8:.1:A.L ;j <!-
RR "ervidor P7P 711.8:.1:A.S
R )cceso a puerto ::8
iptables ;) 1!<M)< ;d 711.8:.1:A.S ;p tcp ;;dport ::8 ;j ),,E-*
R )cceso a una ip para gestionarlo
iptables ;) 1!<M)< ;s @1.8:.17A.LS ;d 711.8:.1:A.S ;p tcp ;;dport 88@A ;j ),,E-*
R El resto, cerrar
iptables ;) 1!<M)< ;d 711.8:.1:A.S ;j <!-
RR "ervidor ,%*<%K 711.8:.1:A.=
R )cceso a puerto 1:A:
iptables ;) 1!<M)< ;d 711.8:.1:A.= ;p tcp ;;dport 1:A: ;j ),,E-*
R )cceso a una ip para gestionarlo
iptables ;) 1!<M)< ;s 1AL.LL.78:.7 ;d 711.8:.1:A.= ;p tcp ;;dport 88@A ;j ),,E-*
R acceso a otro puerto qui'a de PP
iptables ;) 1!<M)< ;s 1AL.LL.78:.7 ;d 711.8:.1:A.= ;p tcp ;;dport 1:8: ;j ),,E-*
R acceso a otro puerto qui'a de PP
iptables ;) 1!<M)< ;s 1AL.LL.78:.7 ;d 711.8:.1:A.= ;p udp ;;dport 1:88 ;j ),,E-*
R El resto, cerrar
iptables ;) 1!<M)< ;d 711.8:.1:A.= ;j <!-
ec+o J !O . Ierifique que lo que se aplica con0 iptables ;5 ;nJ
R 1in del script
,on esta firewall & sobretodo gracias a las reglas de <!- que metemos tras especificar lo que
dejamos abiertos, protegeremos de manera efica' todos lo puertos abiertos de las máquinas.
8.S 1irewall con política por defecto <!-
)quí llega la secci$n para los auténticos administradores de pelo en pec+o.
DQué supone el +ec+o de establecer como política por defecto la denegaci$nE
J "e debe e#plicitar cada cone#i$n permitida en los dos sentidos.
J "e debe conocer perfectamente qué debe estar abierto & qué no.
J Es muc+os más difícil de mantener & si se +ace conviene +acerlo desde el principio.
J (o todo es más trabajo0 también supone un firewall muc+o más seguro.
En el ejemplo de la /6 &a se presentaba esta situaci$n en las reglas forward de una a otra red.
-ara ilustrar el <!- por defecto, vamos a mostrar la configuraci$n del ejemplo anterior de
firewall entre redes pero con política por defecto <!-.
RQ.bin.s+
RR ",<%-* de %-*)P5E" ; ejemplo del manual de iptables
RR Ejemplo de script para firewall entre redes con <!- por defecto
ec+o ;n )plicando <eglas de 1irewall...
RR 15U"B de reglas
iptables ;1
iptables ;K
iptables ;6
iptables ;t nat ;1
RR Establecemos politica por defecto0 <!-QQQ
iptables ;- %(-U* <!-
iptables ;- !U*-U* <!-
iptables ;- 1!<M)< <!-
RR Empe'amos a filtrar
RR (ota0 et+> es el interfa' conectado al router & et+1 a la 5)(
R ) nuestro firewall tenemos acceso total desde la nuestra %-
iptables ;) %(-U* ;s 71>.1AL.LL.1L ;j ),,E-*
iptables ;) !U*-U* ;d 71>.1AL.LL.1L ;j ),,E-*
R -ara el resto no +a& acceso al firewall
R En principio esta de más, pero si rebajamos los permisos temporalmente
R nos cubre las espaldas
iptables ;) %(-U* ;s >.>.>.>.> ;j <!-
RR )+ora podemos ir metiendo las reglas para cada servidor
RR ,omo serán paquetes con destino a otras máquinas se aplica 1!<M)<
RR "ervidor MEP 711.8:.1:A.7
R )cceso a puerto @>
iptables ;) 1!<M)< ;d 711.8:.1:A.7 ;p tcp ;;dport @> ;j ),,E-*
iptables ;) 1!<M)< ;s 711.8:.1:A.7 ;p tcp ;;sport @> ;j ),,E-*
R )cceso a nuestra ip para gestionarlo
iptables ;) 1!<M)< ;s 71>.1AL.LL.1L ;d 711.8:.1:A.7 ;p tcp ;;dport 77 ;j ),,E-*
iptables ;) 1!<M)< ;s 711.8:.1:A.7 ;d 71>.1AL.LL.1L ;p tcp ;;sport 77 ;j ),,E-*
RR "ervidor /)%5 711.8:.1:A.8
R )cceso a puerto 7L, 11> & 1:8
iptables ;) 1!<M)< ;d 711.8:.1:A.8 ;p tcp ;;dport 7L ;j ),,E-*
iptables ;) 1!<M)< ;s 711.8:.1:A.8 ;p tcp ;;sport 7L ;j ),,E-*
iptables ;) 1!<M)< ;d 711.8:.1:A.8 ;p tcp ;;dport 11> ;j ),,E-*
iptables ;) 1!<M)< ;s 711.8:.1:A.8 ;p tcp ;;sport 11> ;j ),,E-*
iptables ;) 1!<M)< ;d 711.8:.1:A.8 ;p tcp ;;dport 1:8 ;j ),,E-*
iptables ;) 1!<M)< ;s 711.8:.1:A.8 ;p tcp ;;sport 1:8 ;j ),,E-*
R )cceso a gestion "(/-
iptables ;) 1!<M)< ;s 71>.1AL.LL.1L ;d 711.8:.1:A.8 ;p udp ;;dport 1SA ;j ),,E-*
iptables ;) 1!<M)< ;s 711.8:.1:A.8 ;d 71>.1AL.LL.1L ;p udp ;;sport 1SA ;j ),,E-*
R )cceso a nuestra ip para gestionarlo
iptables ;) 1!<M)< ;s 71>.1AL.LL.1L ;d 711.8:.1:A.8 ;p tcp ;;dport 77 ;j ),,E-*
iptables ;) 1!<M)< ;s 711.8:.1:A.8 ;d 71>.1AL.LL.1L ;p tcp ;;sport 77 ;j ),,E-*
RR "ervidor %<, 711.8:.1:A.:
R )cceso a puertos %<,
iptables ;) 1!<M)< ;d 711.8:.1:A.: ;p tcp ;;dport SSSS0SSS@ ;j ),,E-*
iptables ;) 1!<M)< ;s 711.8:.1:A.: ;p tcp ;;sport SSSS0SSS@ ;j ),,E-*
R )cceso a nuestra ip para gestionarlo
iptables ;) 1!<M)< ;s 71>.1AL.LL.1L ;d 711.8:.1:A.: ;p tcp ;;dport 77 ;j ),,E-*
iptables ;) 1!<M)< ;s 711.8:.1:A.: ;d 71>.1AL.LL.1L ;p tcp ;;sport 77 ;j ),,E-*
RR "ervidor (EM" 711.8:.1:A.L
R )cceso a puerto news
iptables ;) 1!<M)< ;d 711.8:.1:A.L ;p tcp ;;dport news ;j ),,E-*
iptables ;) 1!<M)< ;s 711.8:.1:A.L ;p tcp ;;sport news ;j ),,E-*
R )cceso a nuestra ip para gestionarlo
iptables ;) 1!<M)< ;s 718.1A:.S@.11L ;d 711.8:.1:A.L ;p tcp ;;dport 77 ;j ),,E-*
iptables ;) 1!<M)< ;s 711.8:.1:A.L ;d 718.1A:.S@.11L ;p tcp ;;sport 77 ;j ),,E-*
R El resto, cerrar
iptables ;) 1!<M)< ;d 711.8:.1:A.L ;j <!-
RR "ervidor P7P 711.8:.1:A.S
R )cceso a puerto ::8
iptables ;) 1!<M)< ;d 711.8:.1:A.S ;p tcp ;;dport ::8 ;j ),,E-*
iptables ;) 1!<M)< ;s 711.8:.1:A.S ;p tcp ;;sport ::8 ;j ),,E-*
R )cceso a una ip para gestionarlo
iptables ;) 1!<M)< ;s @1.8:.17A.LS ;d 711.8:.1:A.S ;p tcp ;;dport 88@A ;j ),,E-*
iptables ;) 1!<M)< ;s 711.8:.1:A.S ;d @1.8:.17A.LS ;p tcp ;;sport 88@A ;j ),,E-*
RR "ervidor ,%*<%K 711.8:.1:A.=
R )cceso a puerto 1:A:
iptables ;) 1!<M)< ;d 711.8:.1:A.= ;p tcp ;;dport 1:A: ;j ),,E-*
iptables ;) 1!<M)< ;s 711.8:.1:A.= ;p tcp ;;sport 1:A: ;j ),,E-*
R )cceso a una ip para gestionarlo
iptables ;) 1!<M)< ;s 1AL.LL.78:.7 ;d 711.8:.1:A.= ;p tcp ;;dport 88@A ;j ),,E-*
iptables ;) 1!<M)< ;s 711.8:.1:A.= ;d 1AL.LL.78:.7 ;p tcp ;;sport 88@A ;j ),,E-*
R acceso a otro puerto qui'a de PP
iptables ;) 1!<M)< ;s 1AL.LL.78:.7 ;d 711.8:.1:A.= ;p tcp ;;dport 1:8: ;j ),,E-*
iptables ;) 1!<M)< ;s 711.8:.1:A.= ;d 1AL.LL.78:.7 ;p tcp ;;sport 1:8: ;j ),,E-*
R acceso a otro puerto qui'a de PP
iptables ;) 1!<M)< ;s 1AL.LL.78:.7 ;d 711.8:.1:A.= ;p udp ;;dport 1:88 ;j ),,E-*
iptables ;) 1!<M)< ;s 711.8:.1:A.= ;d 1AL.LL.78:.7 ;p udp ;;sport 1:88 ;j ),,E-*
ec+o J !O . Ierifique que lo que se aplica con0 iptables ;5 ;nJ
R 1in del script
Na esta, +emos levantado un verdadero muro entre internet & el conjunto de servidores que esta
*ras el firewall. (o se puede ni +acer un ping a las máquinas, salvo que se +a&a dado acceso total a
una ip. "i quisieramos dar acceso al ping, pondríamos algo así0
Es más llevadero aplicar el <!- por defecto cuando el firewall es para la propia máquina. El
primer escenario de esta manual trataba sobre este caso, a+ora lo revisamos con la política por
defecto drop.
RQ.bin.s+
RR ",<%-* de %-*)P5E" ; ejemplo del manual de iptables
RR Ejemplo de script para proteger la propia máquina
RR con política por defecto <!-
ec+o ;n )plicando <eglas de 1irewall...
RR 15U"B de reglas
iptables ;1
iptables ;K
iptables ;6
iptables ;t nat ;1
RR Establecemos politica por defecto
iptables ;- %(-U* <!-
iptables ;- !U*-U* <!-
iptables ;- 1!<M)< <!-
RR Empe'amos a filtrar
R El local+ost se deja 2por ejemplo cone#iones locales a m&sql4
iptables ;) %(-U* ;i lo ;j ),,E-*
iptables ;) !U*-U* ;o lo ;j ),,E-*
R ) nuestra %- le dejamos todo
iptables ;) %(-U* ;s 1AL.SL.8:.78: ;j ),,E-*
iptables ;) !U*-U* ;d 1AL.SL.8:.78: ;j ),,E-*
R ) un colega le dejamos entrar al m&sql para que mantenga la PP
iptables ;) %(-U* ;s 781.:L.18:.78 ;p tcp ;;dport 88>S ;j ),,E-*
iptables ;) !U*-U* ;d 781.:L.18:.78 ;p tcp ;;sport 88>S ;j ),,E-*
R ) un diseHador le dejamos usar el 1*-
iptables ;) %(-U* ;s @>.8=.:L.1A: ;p tcp ;;dport 7>071 ;j ),,E-*
iptables ;) !U*-U* ;d @>.8=.:L.1A: ;p tcp ;;sport 7>071 ;j ),,E-*
R El puerto @> de www debe estar abierto, es un servidor web.
iptables ;) %(-U* ;p tcp ;;dport @> ;j ),,E-*
iptables ;) !U*-U* ;p tcp ;;sport @> ;j ),,E-*
R )quí están las reglas de cerrar. ,omo +emos comentado en la configuraci$n
R anterior conviene tener esto escrito por si en alg3n momento se relaja el
R firewall & s cambia a de <!- a ),,E-* por defecto
R ,erramos rango de los puertos privilegiados. ,uidado con este tipo de
R barreras, antes +a& que abrir a los que si tienen acceso.
iptables ;) %(-U* ;p tcp ;;dport 101>7:
iptables ;) %(-U* ;p udp ;;dport 101>7:
R ,erramos otros puertos que estan abiertos
iptables ;) %(-U* ;p tcp ;;dport 88>S ;j <!-
iptables ;) %(-U* ;p tcp ;;dport 1>>>> ;j <!-
iptables ;) %(-U* ;p udp ;;dport 1>>>> ;j <!-
ec+o J !O . Ierifique que lo que se aplica con0 iptables ;5 ;nJ
R 1in del script
:. ,$mo depurar el funcionamiento del firewall
-rogramas 3tiles
%-*<)1. "in duda alguna uno de los programas más prácticos para depurar el firewall es iptables,
&a que con el podemos observar si la cone#iones se establecen o no9 es un programa de consola que
es aconsejable controlar &a que muestra en tiempo real el tráfico que atraviesa nuestra máquina con
todo lujo de detalles0 origen.destino de ips & puertos, tráfico total o tráfico total seg3n el interfa' de
red, etcY "i vemos muc+as cone#iones simultaneas & nos perdemos, e#iste la posibilidad de aplicar
filtros para captar solo aquello que nos interesa.
(/)-. 5a +erramienta para escanear puertos por e#celencia, rec+ace imitaciones. Es una
+erramienta de consola rápida, efectiva & con multitud de opciones. -odemos usarla desde
máquinas ajenas a nuestra red para comprobar si realmente el firewall esta filtrando correctamente &
en cierta manera para +acernos una idea de que Jvisi$nJ pueden tener los +acGers de nuestro
sistema.
"BE55. En el propio script del firewall podemos aHadir algunas opciones para descubrir fallos de
sinta#is en las reglas. ,laro, imaginemos que tenemos un firewall de :> lineas & una de ellas falla
cuando ejecutamos el script. D,uál esE Es probable que el mensaje de error no aclare lo suficiente,
por eso se puede aHadir algo así al final de cada regla0
...
iptables ;) %(-U* ;s 1AL.LL.78:.7 ;j ),,E-* \\ ec+o J regla;71 oGJ
iptables ;) %(-U* ;s 718.S7.@A.1:L ;j ),,E-* \\ ec+o J regla;77 oGJ
...
"i la regla se ejecuta bien mostrará el mensajito de oG.
!tra opci$n algo mas cutre sería ir eliminando o comentando reglas +asta dar con la regla que tiene
la sinta#is incorrecta. ,abe reseHar que puede fallar una regla, pero a partir de ella el resto se
ejecutan con normalidad.