Você está na página 1de 9

Configuracin de un cortafuegos usando NETFILTER/IPTABLES

Se proponen una serie de ejercicios para verificar la configuracin y operacin del cortafuegos
incorporado en el kernel de Linux: NETFlLTER/lPTABLES.
El entorno de trabajo constar de un cortafuegos bsico separando una red interna segura de una
red externa no segura. Sobre este cortafuegos se implementarn distintas polticas de filtrado y
traduccin de direcciones.
Desarrollo
Crecin de las redes a utilizar en los ejercicios:
Red interna: l0.0.3.0 ... l0.0.3.255
Red externa: l92.l68.l00.0 ... l92.l68.l00.255
l. El punto de partida sern las mismas imgenes VlRTUALBOX utilizadas en la sesin anterior.
2. En el administrador de medios virtuales, liberad la imagen !"#$%&'()*% si est todava
asignada a la mquina observador de la sesin anterior.
3. Configurad las mquinas virtuales en VlRTUALBOX: interno y externo usarn el disco
inmutable (ponedlo como inmutable si no lo tenis de la sesin anterior) texto.vdi, y firewaII, el
disco grafico.vdi.
4. Asignad las redes y las direcciones MAC como sigue:
interno: red interna vIanl (mac: 080027llllll)
externo: red interna vIan2 (mac: 080027222222)
En el firewall configuramos dos adaptadores de red (uno por pestaa):
firewaII: red interna vIanl (mac: 080027333333)
red interna vIan2 (mac: 080027444444)
5. Arrancad las mquinas virtuales. Entrando como ''root'' (contrasea ''purpIe''), asignad las
direcciones lP y estableced los nombres de las mquinas.
Nota: En caso de duda, para identificar la mquina particular, el comando !"#$%"!& () permite
verificar la direccin MAC asociada a cada interfaz de red.
Red interna: interno (08:00:27:ll:ll:ll), firewaII (08:00:27:33:33:33)
Red externa: externo (08:00:27:22:22:22), firewaII (08:00:27:44:44:44)
interno
MAC
08:00:27:11:11:11
(eth0)
! #$%&'$#( )*+,
-,.,./.0,
! +&1*'23) #'*)4'&
! 4&5*) 266 6)$257*
(8 -,.,./.-
externo
MAC
08:00:27:22:22:22
(eth0)
! #$%&'$#( )*+,
-9:.-;<.-,,.:-:
! +&1*'23) )=*)4'&
firewall
MAC 08:00:27:33:33:33 (eth0)
MAC 08:00:27:44:44:44 (eth1)
! #$%&'$#( )*+, -,.,./.-
! #$%&'$#( )*+- -9:.-;<.-,,.>>
! +&1*'23) $#4)8277
! )%+& - ?
@A4&%@1B1@')*@#AC0@#AD$&48246
En interno (l0.0.3.40) la tabla de enrutado es modificada para establecer una pasarela por
defecto (para direcciones fuera de la red l0.0.3.0) al firewaII (l0.0.3.l).
En firewaII (l0.0.3.l y l92.l68.l00.77) se habilita la redireccin de paquetes, de forma que
pueda actuar como *$+,-* para la red interna.
Notal: La interfaz de red asignada (eth0, ethl, ...) puede variar entre ejecuciones. Para verificar
cul se est utilizando, podis ejecutar el comando: ''ifconfig -a''
Nota2: Estas configuraciones son temporales. Para que se mantengan entre sesiones (slo en el
firewall), debe establecerse una conexin esttica en el fichero /etc/network/interfaces.
Nota3: Para que los cambios en la configuracin del nombre del .$/, sean efectivos, debe
cerrarse la sesin (#exit) y hacer login de nuevo.
7. Comprobad el funcionamiento de la red con un ping (o nmap) desde firewaII a las otras
mquinas.
8. Arrancad los servidores TELNET y APACHE en interno (l0.0.3.40) y externo (l92.l68.l00.2l2)
(el servidor ssh est activo por defecto).
%,-.",'/01 2.-&2%,%-(*2%,.-3-%456%,.-* 5-#"-
.7-.",'/01 2.-&2%,%-(*2%,.-3-%456%,.-* 5-#"-
%,-.",'/01 2.-&2%,%-(*2#8#&9.: 5-#"-
.7-.",'/01 2.-&2%,%-(*2#8#&9.: 5-#"-
Recomendacin: Modificad la pgina por defecto en el Apache de una de las mquinas (interno o
externo: ''/var/www/index.html''), para poder distinguir las mquinas en una conexin web (saber cul
estis viendo).
Carpetas compartidas: (til para transferir los scripts de iptables)
Se puede compartir una carpeta entre el anfitrin y la mquina virtual:
Cread una carpeta /tmp/compartida en el anfitrin (1 ;<*%" 2-;82&';8#"-%*#)
Configurad la carpeta compartida en la mquina firewall. Con la mquina funcionando, id a
0$%"!&+*)#!1% 2 0)*,)"$3-/ 0$45)*,!6$/7 y seleccionad la carpeta compartida en el anfitrin.
Montad la carpeta:
$%".=#4401 ;<*%" 2;,-2&';8#"-%*#
$%".=#4401 ;'3,- 6- )>'75$ &';8#"-%*# 2;,-2&';8#"-%*#
El contenido de la carpeta /tmp/compartida en el anfitrin aparecer en la carpeta
/mnt/compartida en la mquina firewall.
Ejercicio 1
El primer ejercicio consiste en la configuracin de las reglas de filtrado y NAT en NETFlLTER,
usando la herramienta de lnea de comandos lPTABLES.

Manual y opciones detalladas: http://www.frozentux.net/documents/iptables-tutorial/
(Version en espanol en PDF adjunta en la sesion).
La configuracin se lleva a cabo usando /#*!5,/ 89:; que contienen los comandos lPTABLES
necesarios.
Nota: En la carpeta ''/root/iptables/'' se proporciona un script para recuperar la configuracin inicial
de NETFlLTER (borrando las reglas actuales y estableciendo polticas de Aceptar-por-Defecto) en
caso de necesidad:
%8-#>4.56%,%&%#4(59
Este script se puede utilizar como punto de partida para escribir nuestros propios scripts (no olvidis
dar permiso de ejecucin al fichero).
$%".=#44/01 &8 %8-#>4.52%8-#>4.56%,%&%#4(59 ;%?5&"%8-(59
$%".=#44/01 ,#,' ;%?5&"%8-(59 !" $%& '()*+,(-./*01 !" 2( '()*+,(-./*01
$%".=#44/01 &9;'* @7 ;%?5&"%8-(59
$%".=#44/01 (2;%?5&"%8-(59
Restricciones de acceso que queremos implementar en la red:
(l) Enmascaramiento del enrutado interno (l0.0.3.0)
(2) Peticiones web: redirigidas a la mquina l0.0.3.40
(3) Permitir nicamente trfico de salida va web o ssh. El resto del trfico se rechaza.
(4) Registro (log) de los intentos de acceso desde la red externa al firewall, y a las mquinas
internas.
(5) El firewall slo admite conexiones ssh de la red interna.
(6) Limitacin: control de trfico lCMP para evitar ataques DOS.
Pasos a seguir
l. Verificar la configuracin actual de las reglas del firewall (aceptar por defecto):
$%".=#44/01 %8-#>4.5 AB
2. Patrn generaI para los scripts que usaremos
Borrar reglas actuales, y resetear contadores
Establecer polticas por defecto
Reglas de NAT
Reglas de filtrado (red interna, firewall, ...)
Importante: En este ejemplo, utilizaremos polticas de filtrado deny-by-defauIt (DROP). Esto
complica ligeramente la definicin de las reglas:
Es necesario habilitar explcitamente todos los servicios y direcciones permitidos.
Debe hacerse en ambos sentidos: para permitir peticiones y respuestas.
3. Primer script a implementar para probar la herramienta (''iptabIes-drop-l.sh''):
!E@F#'@1+
! G1*2F7)%)4 C24#2F7)1H 4)6 #'*)4'2 B 4)6 )=*)4'2
)=A&4* IJKGLJMNDJGKOPLQR)*+,
)=A&4* GSKGLJMNDJGKOPLQR)*+-
! T2%#24 B 4)#'#%#24 *2F721
#A*2F7)1 UV
#A*2F7)1 US
#A*2F7)1 UW
#A*2F7)1 U* '2* UV
! G1*2F7)%)4 A&7X*#%21 A&4 6)$)%*& Y6)')(24 A&4 6)$)%*&H ZLP[\
#A*2F7)1 U[ IJ[]K ZLP[ ! 6#1%246 $#4)8277 #'A5*1
#A*2F7)1 U[ P]K[]K ZLP[ ! 6#1%246 $#4)8277 &5*A5*1
#A*2F7)1 U[ VPLOMLZ ZLP[ ! 6#1%246 $&48246#'( *42$$#% *+4&5(+ *+) $#4)8277
#A*2F7)1 U* '2* U[ [LGLP]KIJ^ M__G[K
#A*2F7)1 U* '2* U[ [P`KLP]KIJ^ M__G[K
! [)43#*#47) *&6& 27 7&%27+&1* Y$#4)8277\
#A*2F7)1 UM IJ[]K U# 7& Ua M__G[K
#A*2F7)1 UM P]K[]K U& 7& Ua M__G[K
! Aadimos al script las reglas para establecer NAT y permitir redireccionamiento a travs del
firewall:
-,.<= interfaz conectada a la red interna (l0.0.3.0/24)
-,.>= interfaz conectada a la red externa (l92.l68.l00.0/24)
! `JMK Y)'321%2423#)'*& 6) A2b5)*)1 6) 72 4)6 #'*)4'2 Y-,.,./.,@:0\ 2
! 72 4)6 )=*)4'2
#A*2F7)1 U* '2* UM [P`KLP]KIJ^ U1 -,.,./.,@:0 U& cGSKGLJMNDJGKOPLQ Ua
dM`e]GLMZG
! ZJMK Y1)4C#%#& fKK[ gA5)4*& <,h 4)6#4)%%#&'26& 2 72 4)6 #'*)4'2\
#A*2F7)1 U* '2* UM [LGLP]KIJ^ U# cGSKGLJMNDJGKOPLQ UA *%A UU6A&4* <, Ua ZJMK
UU*&U6)1*#'2*#&' -,.,./.0,H<,
! f2F#7#*24 4)6#4)%%#&'23#)'*& 6) A2b5)*)1
)%+& - ? @A4&%@1B1@')*@#AC0@#AD$&48246
! LG^NM KGd[PLMNH A242 A45)F21 6) JMK
#A*2F7)1 UM VPLOMLZ Ua M__G[K
Verificacin de este primer script
! Ejecutamos el script iptabIes-drop-l.sh
! Verificamos la configuracin actual del firewaII con este script inicial
$%".=#44/01 %8-#>4.5 6B
$%".=#44/01 %8-#>4.5 6- ,#- 6B
! Establecemos una conexin telnet desde interno (l0.0.3.40) a externo (l92.l68.l00.2l2)
%,-.",'/01 -.4,.- CD:(CEF(CGG(:C:
H"I%,! CD:(CEF(CGG(:C: (((
J',,.&-.* -' .7-.",'(
K5&#8. &9#"#&-." %5 LMNL(
B%,37 :(E(CF6E6EFE OCD:(CEF(CGG(:C:P O8-52CFP
.7-.",' 4'!%,/ 353#"%'C
Q#55='"*/ 353#"%'C
En externo (l92.l68.l00.2l2), verificar las conexiones establecidas:
.7-.",'/01 ,.-5-#- A-
! Establecemos una conexin web desde externo (l92.l68.l00.2l2) al firewaII (l92.l68.l00.77)
.7-.",'/01 4I,7 CD:(CEF(CGG(RR
! Conexin web desde interno (l0.0.3.40) a externo (l92.l68.l00.2l2)
! Conexin al firewaII mediante SSH desde externo (l92.l68.l00.2l2) e interno (l0.0.3.40)
%,-.",'/01 559 353#"%'CSCG(G(T(C
(((
.7-.",'/01 559 353#"%'CSCD:(CEF(CGG(RR
...
! Otra posibilidad (ms rpida): escaneo de puertos con NMAP (puerto 22).
%,-.",'/01 ,;#8 CG(G(T(C 68 ::
U
.7-.",'/01 ,;#8 CD:(CEF(CGG(RR 68 ::
.
4. Una vez probado el script anterior, implementamos el script final (''iptabIes-drop2.sh'') con la
poltica deseada, tomando como base el script anterior:

Eliminamos la regla temporal (#A*2F7)1 UM VPLOMLZ Ua M__G[K)
Aadimos las siguientes reglas para fiItrado deI trfico:
! N#3#*24 *4i$#%& I_d[ YA)43#*#4 %&3& 3i=#3& j A)*#%#&')1@1)%&'6\
#A*2F7)1 UM IJ[]K UA #%3A U3 7#3#* UU7#3#* j@1)%&'6 Ua M__G[K
#A*2F7)1 UM P]K[]K UA #%3A U3 7#3#* UU7#3#* j@1)%&'6 Ua M__G[K
#A*2F7)1 UM VPLOMLZ UA #%3A U3 7#3#* UU7#3#* j@1)%&'6 Ua M__G[K
! VINKLP ZG GJKLMZM [MLM NM LGZ IJKGLJM
! U A)43#*#4 4)6#4)%%#&'23#)'*& 6) 1)4C#%#&1 YA)*#%#&')1 k 151 4)1A5)1*21\
! g')%)124#& A&4b5) 5123&1 ZLP[ A&4 6)$)%*&h
#A*2F7)1 UM VPLOMLZ U# cGSKGLJMNDJGKOPLQ U6 -,.,./.0, UA *%A UU6A&4* <, Ua
M__G[K
#A*2F7)1 UM VPLOMLZ U# cIJKGLJMNDJGKOPLQ U1 -,.,./.0, UA *%A UU1A&4* <, U3
1*2*) UU1*2*) G`KMlNI`fGZmLGNMKGZ Ua M__G[K
! U 4)(#1*424 Y7&(\ 7&1 &*4&1 2%%)1&1 2 72 4)6 #'*)4'2 Y6)')(26&1 A&4 6)$)%*&\
#A*2F7)1 UM VPLOMLZ U# cGSKGLJMNDJGKOPLQ U6 -,.,./.,@:0 Ua NP^ UU7&(UA4)$#=
nM%%)1& 2 72 4)6 #'*)4'2Hn
! ! VINKLP ZG `MNIZM [MLM NM LGZ IJKGLJM
! U A)43#*#4 %&')=#&')1 fKK[ 127#)'*)1 k 151 4)1A5)1*21
#A*2F7)1 UM VPLOMLZ U# cIJKGLJMNDJGKOPLQ U1 -,.,./.,@:0 UA *%A UU6A&4* <, Ua
M__G[K
#A*2F7)1 UM VPLOMLZ U& cIJKGLJMNDJGKOPLQ U6 -,.,./.,@:0 UA *%A UU1A&4* <, U3
1*2*) UU1*2*) G`KMlNI`fGZmLGNMKGZ Ua M__G[K
! U A)43#*#4 A)*#%#&')1 ZJ` 127#)'*)1 k 151 4)1A5)1*21
#A*2F7)1 UM VPLOMLZ U# cIJKGLJMNDJGKOPLQ U1 -,.,./.,@:0 UA *%A UU6A&4* j/ Ua
M__G[K
#A*2F7)1 UM VPLOMLZ U& cIJKGLJMNDJGKOPLQ U6 -,.,./.,@:0 UA *%A UU1A&4* j/ U3
1*2*) UU1*2*) G`KMlNI`fGZmLGNMKGZ Ua M__G[K
#A*2F7)1 UM VPLOMLZ U# cIJKGLJMNDJGKOPLQ U1 -,.,./.,@:0 UA 56A UU6A&4* j/ Ua
M__G[K
#A*2F7)1 UM VPLOMLZ U& cIJKGLJMNDJGKOPLQ U6 -,.,./.,@:0 UA 56A UU1A&4* j/ U3
1*2*) UU1*2*) G`KMlNI`fGZmLGNMKGZ Ua M__G[K
! U 4)%+2o24 %527b5#)4 &*4& #'*)'*& 6) 127#62 YZLP[ A&4 6)$)%*&\
#A*2F7)1 UM VPLOMLZ U# cIJKGLJMNDJGKOPLQ U1 -,.,./.,@:0 Ua LGpG_K UU4)a)%*U8#*+
#%3AUA&4*U5'4)2%+2F7)
! VINKLMZP ZG _PJGSIPJG` fM_IM GN VILGOMNN
! U A)43#*#4 *4i$#%& ``f 6) )'*4262 B 127#62 6)16) 72 4)6 #'*)4'2m
! )7 4)1*&m F7&b5)26& A&4 72 A&7X*#%2 A&4 6)$)%*&
#A*2F7)1 UM IJ[]K U# cIJKGLJMNDJGKOPLQ U1 -,.,./@:0 UA *%A UU6A&4* :: Ua M__G[K
#A*2F7)1 UM P]K[]K U& cIJKGLJMNDJGKOPLQ U6 -,.,./@:0 UA *%A UU1A&4* :: Ua
M__G[K
! U 4)(#1*424 Y7&(\ 7&1 #'*)'*&1 6) 2%%)1& 27 $#4)8277 6)16) 72 4)6 )=*)4'2
! Y1)4i' 6)')(26&1\
#A*2F7)1 UM IJ[]K U# cGSKGLJMNDJGKOPLQ Ua NP^ UU7&(UA4)$#= nM%%)1& 27
$#4)8277Hn
Verificacin deI script finaI:
! Verificar la configuracin actual del firewaII
$%".=#44/01 %8-#>4.5 6B
$%".=#44/01 %8-#>4.5 6- ,#- AB
! Conectarse al firewaII mediante SSH desde externo (l92.l68.l00.2l2) e interno (l0.0.3.40)
%,-.",'/01 559 353#"%'CSCG(G(T(C
(((
.7-.",'/01 559 353#"%'CSCD:(CEF(CGG(RR
(((
! Conexin TELNET desde interno (l0.0.3.40) a externo (l92.l68.l00.2l2).
%,-.",'/01 -.4,.- CD:(CEF(CGG(:C:
(((
! Conexin web desde interno (l0.0.3.40) a externo (l92.l68.l00.2l2) y desde externo al
firewaII.
%,-.",'/01 4I,7 CD:(CEF(CGG(:C:
(((
! Verificacin del registro de accesos (/var/log/syslog) en firewaII
$%".=#44/01 4.55 2)#"24'!25I54'!
(((
Ejercicio 2: opcional
El uso de lPTABLES en lnea de comandos ofrece gran flexibilidad para la definicin de reglas, pero
existen tambin interfaces grficas que simplifican la tarea de diseo del cortafuegos, generando los
comandos lPTABLES requeridos.
En la mquina que acta como firewall tenis una aplicacin llamada !"#$%&'#&$#
(http://www.fs-security.com).
l. Arrancad la interfaz grfica
$%".=#44/01 5-#"-7
2. En el entorno grfico:
VW,%&%'N 6X Y.""#;%.,-#5 *.4 5%5-.;# 6X Z%".5-#"-."
3. La primera vez que se lanza la aplicacin, un asistente nos ayuda a establecer
& La interfaz conectada a internet (red externa): en nuestro caso ethl
& La interfaz conectada a la red local (red interna): en nuestro caso eth0
& Si se usa o no NAT para la red interna: en nuestro caso, deberamos seleccionar ''Activar la
compartici!n de la conexin a internet''
4. Uso de firestarter
PESTAA "ESTADO"
Situacin actual del firewall, conexiones activas, etc.
PESTAA "EVENTOS"
Lista de intentos de acceso bloqueados.

PESTAA "NORMATIVA"
Configuracin de las reglas de filtrado.
NORMATIVA PARA TRAFICO ENTRANTE
& Acceso al firewall desde lPs redes particulares
& lndica qu servicios son accesibles dentro del firewall
& Redireccionamiento a puertos en las mquinas internas (si se usa NAT)

NORMATIVA PARA TRAFICO SALIENTE
& Poltica por defecto (permisiva [ACCEPT] o restrictiva [DROP])
& Dependiendo de la poltica:
" aceptar/denegar salida hacia una lP red particular
" aceptar/denegar salidas desde mquinas de la red interna
" aceptar/denegar salida de servicios particulares hacia el firewall o hacia la red
interna
& Haciendo click sobre cada lista seleccionamos el tipo de normativa a modificar
& Usaramos los botones [Add rules], [Edit rules], [Delete rules]
& Aplicaramos las reglas creadas (pasndoselas a NETFlLTER) con [Aplicar normativa]
3. Verificacin
! La lista de reglas introducida se puede comprobar en lnea de comandos: [lnicio] -> Accesorios
-> LXTerminal
$%".=#44/01 %8-#>4.5 6B
$%".=#44/01 %8-#>4.5 6- ,#- AB
! Los scripts lPTABLES utilizados/configurados por firestarter estn en la carpeta
''/etc/firestarter''.
! Desde externo [l92.l68.l00.2l2] comenzamos un escaneo de puertos NMAP sobre el firewall y
observamos los intentos detectados por firestarter.
& En externo: ejecutamos 1 ,;#8 CD:(CEF(CGG(RR
& En firewall: abrimos la pestaa Eventos en firestarter para ver los intentos de
conexin producidos durante la operacin de escaneo.
Documentacin
El informe final de la sesin incluir los resultados obtenidos en los distintos apartados, as como las
conclusiones que se derivan de dichos apartados.

Descripcin de las acciones realizadas y resultados obtenidos con cada script.
Explicacin de las reglas lPTABLES en el script final, relacionndolas con las restricciones
de acceso establecidas para el firewall.
Conclusiones finales.

Você também pode gostar