7.Pruebas de funcionalidad

Anuncio
Proyecto Fin de Carrera
7.
Departamento de Ingenierı́a Telemática
Pruebas de funcionalidad
En este apartado pretendemos probar el funcionamiento del firewall en varios escenarios
diferentes. Para ello hemos elegido cuatro casos de uso, uno por cada protocolo que deseamos
probar y detectar en el escenario de pruebas. La manera de probar la funcionalidad del firewall
es inyectando tráfico de aplicación en la red y viendo si el firewall responde como esperamos. La
inyección de tráfico se realiza con la herramienta tcpreplay y con ficheros de capturas .pcap de
comunicaciones a nivel de aplicación de los protocolos que van a estar bajo prueba del firewall.
Si se desea conocer cómo se instala la herramienta tcpreplay en CentOS puede consultarse el
anexo 12.17
7.1.
Inyección de tráfico con tcpreplay
Tcpreplay es una suite de herramientas que nos proporciona la capacidad de usar tráfico
anteriormente capturado, en formato libpcap, para probar una máquina de la red [50]. Con
tcpreplay podemos clasificar el tráfico en flujo del cliente y flujo del servidor, reescribir los
niveles 2, 3 y 4 de la pila TCP/IP y reproducir el tráfico para que pase por un elemento de
la red [50], en este caso el firewall. La suite de tcpreplay incluye, entre otras, las siguientes
herramientas: [50]
tcpprep: Procesa los ficheros .pcap y separa el tráfico generado por el cliente del tráfico
generado por el servidor y lo guarda en un fichero caché especial.
tcprewrite: Procesa los ficheros .pcap y reescribe los niveles de la pila TCP/IP que deseemos.
tcpreplay: Reproduce el tráfico, o lo inyecta, en la red a la tasa binaria especificada.
Usando estas tres herramientas vamos a ser capaces de inyectar tráfico de aplicación en la red y
hacerlo pasar a través del firewall. Para ello, vamos a usar el siguiente escenario de pruebas:
En el escenario de pruebas, existe un elemento en la red al que vamos a llamar ”Generador”.
Este elemento se encarga de reescribir y procesar los archivos .pcap para inyectarlos en la red
posteriormente. El generador va a tener interfaces en dos subredes IP diferentes, y va a hacer de
cliente y servidor simultáneamente. Las dos subredes IP a las cuales está conectado el generador
están accesibles a través de un sistema intermedio que es el que implementa el firewall. Cuando
el generador inyecta tráfico por una de sus interfaces la otra interfaz, siempre que el firewall lo
permita, hace de servidor y responde a las peticiones que recibe. En el escenario de la figura,
todo lo que se inyecte por la interfaz eth3 se responde a través de la interfaz eth4 del generador.
Conceptualmente es sencillo entender el escenario de pruebas y también lo es configurarlo en
dos máquinas Linux, lo cual no vamos a hacer aquı́ porque la configuración de red es irrelevante
para esta sección. Lo que si que vamos a hacer es explicar cómo se inyecta tráfico en el esquema
anterior:
1. Buscar o generar un archivo captura .pcap.
2. Dividir el tráfico en tráfico del cliente y tráfico del servidor.
3. Reescribir el nivel 3 para nuestro caso concreto.
4. Reescribir el nivel 2 sabiendo que hay dos subredes.
5. Iniciar la inyección de tráfico
111
Proyecto Fin de Carrera
Departamento de Ingenierı́a Telemática
Figura 45: Escenario de pruebas: Generador y Sistema Bajo Prueba
Vamos a tomar como ejemplo una captura SSH guardada en un fichero .pcap. A continuación
vamos a ir exponiendo la forma de usar la suite tcpreplay para realizar todos y cada uno de los
pasos enumerados. Lo primero que debemos hacer es dividir el tráfico en cliente y servidor. Para
ello utilizamos tcpprep con la opción –port, especificamos el fichero .pcap y le damos nombre al
fichero caché donde va a guardarse la información separada:
t c p p r e p −−p o r t −−pcap=s s h . pcap −− c a c h e f i l e=s s h . c a c h e
Haciendo uso del fichero caché, con tcprewrite, reescribimos el nivel 3 especificando las direcciones IP de origen/destino y el nombre del fichero intermedio en el que se va a guardar la
información (recordemos, separada y reescrita a nivel de red):
t c p r e w r i t e −−e n d p o i n t s = 1 0 . 1 0 . 1 . 1 2 8 : 1 0 . 1 0 . 2 . 1 3 0 −−c a c h e f i l e=s s h . c a c h e
−− i n f i l e =s s h . pcap −− o u t f i l e=s s h 1 . pcap −−s k i p b r o a d c a s t
De nuevo debemos hacer uso del fichero caché para reescribir el nivel 2 de la comunicación separada y reescrita anteriormente a nivel 3. Esto es preciso porque al tratarse de redes IP diferentes,
no solo hay que reemplazar las MAC origen/destino en ambos sentidos de la comunicación sino
que también hay que reescribir los mensajes ARP:
t c p r e w r i t e −−e n e t dmac=MAC FW ETH4,MAC FW ETH3
−−enet −smac=MAC GEN ETH3, MAC GEN ETH4 −−c a c h e f i l e=s s h . c a c h e
−− i n f i l e =s s h 1 . pcap −− o u t f i l e=s s h 2 . pcap
Por último usando tcpreplay, y haciendo uso de nuevo del fichero caché, inyectamos el tráfico
del fichero .pcap reescrito en la red a la velocidad que deseemos:
t c p r e p l a y −−mbps=100.0 −− c a c h e f i l e=s s h . c a c h e −−i n t f 1=e t h 3
−−i n t f 2=e t h 4 s s h 2 . pcap
112
Proyecto Fin de Carrera
7.2.
Departamento de Ingenierı́a Telemática
Casos de uso
Para este apartado vamos a seguir el mismo procedimiento para todos los casos de uso que
se proponen:
1. Mostrar las reglas donde el tráfico hace match.
2. Mostrar el script que reescribe los ficheros de captura e inyecta el tráfico en la red.
3. Mostrar un diagrama de paso de mensajes donde se especifica la lógica de detección.
4. Mostrar una captura de wireshark en la máquina firewall tras la inyección.
La configuración de reglas para el firewall va a ser la siguiente:
#!/ b i n / bash
iptables
iptables
iptables
iptables
iptables
iptables
iptables
iptables
iptables
iptables
iptables
iptables
iptables
iptables
iptables
iptables
iptables
iptables
iptables
iptables
iptables
iptables
iptables
iptables
iptables
iptables
iptables
iptables
−A
−A
−A
−A
−A
−A
−A
−A
−A
−A
−A
−A
−A
−A
−A
−A
−A
−A
−A
−A
−A
−A
−A
−A
−A
−A
−A
−A
FORWARD −m s t a t e −−s t a t e ESTABLISHED,RELATED −j L7
L7 −m l 7 s t a t e −−l 7 s t a t e L7NOINIT −j ACCEPT
L7 −m l 7 s t a t e −−l 7 s t a t e L7ACCEPT −j ACCEPT
FORWARD −m l 7 s t a t e −−l 7 s t a t e L7DROP −j DROP
FORWARD −p t c p −−d p o r t 23 −m s t a t e −−s t a t e NEW −j N1
FORWARD −p t c p −−d p o r t 80 −m s t a t e −−s t a t e NEW −j N2
FORWARD −p t c p −−d p o r t 22 −m s t a t e −−s t a t e NEW −j N3
FORWARD −p t c p −−d p o r t 21 −m s t a t e −−s t a t e NEW −j N4
N1 −m n d p i c o n t r o l −−a c t i o n L7ACCEPT −−l i m i t 10 −j M1
N2 −m n d p i c o n t r o l −−a c t i o n L7ACCEPT −−l i m i t 10 −j M2
N3 −m n d p i c o n t r o l −−a c t i o n L7ACCEPT −−l i m i t 10 −j M3
N4 −m n d p i c o n t r o l −−a c t i o n L7ACCEPT −−l i m i t 10 −j M4
M1 −m ndpi −−t e l n e t
M2 −m ndpi −−h t t p
M3 −m ndpi −−s s h
M4 −m ndpi −−f t p
N1 −m l 7 s t a t e −−l 7 s t a t e L7DROP −j DROP
N1 −m l 7 s t a t e −−l 7 s t a t e L7UNKNOWN,L7ACCEPT −j ACCEPT
N1 −j DROP
N2 −m l 7 s t a t e −−l 7 s t a t e L7DROP −j DROP
N2 −m l 7 s t a t e −−l 7 s t a t e L7UNKNOWN,L7ACCEPT −j ACCEPT
N2 −j DROP
N3 −m l 7 s t a t e −−l 7 s t a t e L7DROP −j DROP
N3 −m l 7 s t a t e −−l 7 s t a t e L7UNKNOWN,L7ACCEPT −j ACCEPT
N3 −j DROP
N4 −m l 7 s t a t e −−l 7 s t a t e L7DROP −j DROP
N4 −m l 7 s t a t e −−l 7 s t a t e L7UNKNOWN,L7ACCEPT −j ACCEPT
N4 −j DROP
113
Proyecto Fin de Carrera
i p t a b l e s −A FORWARD
−−l 7 s t a t e L7UNKNOWN
i p t a b l e s −A FORWARD
−−l 7 s t a t e L7UNKNOWN
i p t a b l e s −A FORWARD
−−l 7 s t a t e L7UNKNOWN
i p t a b l e s −A FORWARD
−−l 7 s t a t e L7UNKNOWN
i p t a b l e s −A FORWARD
−−l 7 s t a t e L7UNKNOWN
i p t a b l e s −A FORWARD
−−l 7 s t a t e L7UNKNOWN
i p t a b l e s −A FORWARD
−−l 7 s t a t e L7UNKNOWN
i p t a b l e s −A FORWARD
−−l 7 s t a t e L7UNKNOWN
Departamento de Ingenierı́a Telemática
−p
−j
−p
−J
−p
−j
−p
−j
−p
−j
−p
−j
−p
−j
−p
−j
tcp
N1
tcp
N1
tcp
N2
tcp
N2
tcp
N3
tcp
N3
tcp
N4
tcp
N4
−−d p o r t 23 −m l 7 s t a t e
−−s p o r t 23 −m l 7 s t a t e
−−d p o r t 80 −m l 7 s t a t e
−−s p o r t 80 −m l 7 s t a t e
−−d p o r t 22 −m l 7 s t a t e
−−s p o r t 22 −m l 7 s t a t e
−−d p o r t 21 −m l 7 s t a t e
−−s p o r t 21 −m l 7 s t a t e
114
Proyecto Fin de Carrera
7.2.1.
Departamento de Ingenierı́a Telemática
HTTP
Las reglas en las que los paquetes de la captura HTTP van a hacer match son:
i p t a b l e s −A FORWARD −m s t a t e −−s t a t e ESTABLISHED,RELATED −j L7
i p t a b l e s −A L7 −m l 7 s t a t e −−l 7 s t a t e L7ACCEPT −j ACCEPT
i p t a b l e s −A FORWARD −p t c p −−d p o r t 80 −m s t a t e −−s t a t e NEW −j N2
i p t a b l e s −A N2 −m n d p i c o n t r o l −−a c t i o n L7ACCEPT −−l i m i t 10 −j M2
i p t a b l e s −A M2 −m ndpi −−h t t p
i p t a b l e s −A N2 −m l 7 s t a t e −−l 7 s t a t e L7UNKNOWN,L7ACCEPT −j ACCEPT
i p t a b l e s −A FORWARD −p t c p −−d p o r t 80 −m l 7 s t a t e
−−l 7 s t a t e L7UNKNOWN −j N2
i p t a b l e s −A FORWARD −p t c p −−s p o r t 80 −m l 7 s t a t e
−−l 7 s t a t e L7UNKNOWN −j N2
La configuración de la suite tcpreplay para inyectar tráfico HTTP es:
#!/ b i n / bash
t c p p r e p −−p o r t −−pcap=h t t p . pcap −− c a c h e f i l e=h t t p . c a c h e
t c p r e w r i t e −−e n d p o i n t s = 1 0 . 1 0 . 1 . 1 2 8 : 1 0 . 1 0 . 2 . 1 3 0 −−c a c h e f i l e=h t t p . c a c h e
−− i n f i l e =h t t p . pcap −− o u t f i l e=h t t p 1 . pcap −−s k i p b r o a d c a s t
t c p r e w r i t e −−enet −dmac=00:0C: 2 9 : 0A: E5 : F0 , 0 0 : 0C: 2 9 : 0A: E5 : E6
−−enet −smac =00:0C : 2 9 :AB: F1 : 4 2 , 0 0 : 0C : 2 9 :AB: F1 : 3 8 −− c a c h e f i l e=h t t p . c a c h e
−− i n f i l e =h t t p 1 . pcap −− o u t f i l e=h t t p 2 . pcap
t c p r e p l a y −−mbps=100.0 −− c a c h e f i l e=h t t p . c a c h e −−i n t f 1=e t h 3
−−i n t f 2=e t h 4 h t t p 2 . pcap
115
Proyecto Fin de Carrera
Departamento de Ingenierı́a Telemática
El diagrama de paso de mensajes:
Figura 46: Diagrama de paso de mensajes: HTTP
Al envı́o del primer paquete, el sistema marca la conexión a nivel de transporte como NEW
y a nivel de aplicación como L7NOINIT. En el mensaje de respuesta, durante el establecimiento
de la conexión TCP, el estado de nivel de transporte pasa a ESTABLISHED mientras que el de
aplicación permanece inalterado. Se cierra la fase de establecimiento con el último asentimiento
de la fase en tres pasos. A continuación se produce el envı́o del primer mensaje de aplicación, en
concreto del GET, y es entonces cuando el módulo nDPI cambia el estado de nivel de aplicación
a L7ACCEPT. El resto de la comunicación harı́a match en las reglas de aceleración de estados
conjunta de nivel 4 y 7.
116
Proyecto Fin de Carrera
Departamento de Ingenierı́a Telemática
Figura 47: Vista de la conexión HTTP por el firewall configurado
117
Proyecto Fin de Carrera
7.2.2.
Departamento de Ingenierı́a Telemática
SSH
Las reglas en las que los paquetes de la captura SSH van a hacer match son:
i p t a b l e s −A FORWARD −m s t a t e −−s t a t e ESTABLISHED,RELATED −j L7
i p t a b l e s −A L7 −m l 7 s t a t e −−l 7 s t a t e L7ACCEPT −j ACCEPT
i p t a b l e s −A FORWARD −p t c p −−d p o r t 22 −m s t a t e −−s t a t e NEW −j N3
i p t a b l e s −A N3 −m n d p i c o n t r o l −−a c t i o n L7ACCEPT −−l i m i t 10 −j M3
i p t a b l e s −A M3 −m ndpi −−s s h
i p t a b l e s −A N3 −m l 7 s t a t e −−l 7 s t a t e L7UNKNOWN,L7ACCEPT −j ACCEPT
i p t a b l e s −A FORWARD −p t c p −−d p o r t 22 −m l 7 s t a t e
−−l 7 s t a t e L7UNKNOWN −j N3
i p t a b l e s −A FORWARD −p t c p −−s p o r t 22 −m l 7 s t a t e
−−l 7 s t a t e L7UNKNOWN −j N3
La configuración de la suite tcpreplay para inyectar tráfico SSH es:
#!/ b i n / bash
t c p p r e p −−p o r t −−pcap=s s h . pcap −− c a c h e f i l e=s s h . c a c h e
t c p r e w r i t e −−e n d p o i n t s = 1 0 . 1 0 . 1 . 1 2 8 : 1 0 . 1 0 . 2 . 1 3 0
−−c a c h e f i l e=s s h . c a c h e −− i n f i l e =s s h . pcap
−− o u t f i l e=s s h 1 . pcap −−s k i p b r o a d c a s t
t c p r e w r i t e −−enet −dmac=00:0C: 2 9 : 0A: E5 : F0 , 0 0 : 0C: 2 9 : 0A: E5 : E6
−−enet −smac =00:0C : 2 9 :AB: F1 : 4 2 , 0 0 : 0C : 2 9 :AB: F1 : 3 8
−−c a c h e f i l e=s s h . c a c h e −− i n f i l e =s s h 1 . pcap −− o u t f i l e=s s h 2 . pcap
t c p r e p l a y −−mbps=100.0 −− c a c h e f i l e=s s h . c a c h e −−i n t f 1=e t h 3
−−i n t f 2=e t h 4 s s h 2 . pcap
118
Proyecto Fin de Carrera
Departamento de Ingenierı́a Telemática
Figura 48: Vista de la conexión SSH por el firewall configurado
119
Proyecto Fin de Carrera
Departamento de Ingenierı́a Telemática
Figura 49: Diagrama de paso de mensajes: SSH
Al envı́o del primer paquete, el sistema marca la conexión a nivel de transporte como NEW
y a nivel de aplicación como L7NOINIT. En el mensaje de respuesta, durante el establecimiento
de la conexión TCP, el estado de nivel de transporte pasa a ESTABLISHED mientras que el de
aplicación permanece inalterado. Se cierra la fase de establecimiento con el último asentimiento
de la fase en tres pasos. A continuación se produce el envı́o del primer mensaje de aplicación, en
concreto la versión del protocolo SSH, y es entonces cuando el módulo nDPI cambia el estado
de nivel de aplicación a L7ACCEPT. El resto de la comunicación harı́a match en las reglas de
aceleración de estados conjunta de nivel 4 y 7.
120
Proyecto Fin de Carrera
7.2.3.
Departamento de Ingenierı́a Telemática
FTP
Las reglas en las que los paquetes de la captura FTP van a hacer match son:
i p t a b l e s −A FORWARD −m s t a t e −−s t a t e ESTABLISHED,RELATED −j L7
i p t a b l e s −A L7 −m l 7 s t a t e −−l 7 s t a t e L7ACCEPT −j ACCEPT
i p t a b l e s −A FORWARD −p t c p −−d p o r t 21 −m s t a t e −−s t a t e NEW −j N4
i p t a b l e s −A N4 −m n d p i c o n t r o l −−a c t i o n L7ACCEPT −−l i m i t 10 −j M4
i p t a b l e s −A M4 −m ndpi −−f t p
i p t a b l e s −A N4 −m l 7 s t a t e −−l 7 s t a t e L7UNKNOWN,L7ACCEPT −j ACCEPT
i p t a b l e s −A FORWARD −p t c p −−d p o r t 21 −m l 7 s t a t e
−−l 7 s t a t e L7UNKNOWN −j N4
i p t a b l e s −A FORWARD −p t c p −−s p o r t 21 −m l 7 s t a t e
−−l 7 s t a t e L7UNKNOWN −j N4
La configuración de la suite tcpreplay para inyectar tráfico FTP es:
#!/ b i n / bash
t c p p r e p −−p o r t −−pcap=f t p . pcap −− c a c h e f i l e=f t p . c a c h e
t c p r e w r i t e −−e n d p o i n t s = 1 0 . 1 0 . 1 . 1 2 8 : 1 0 . 1 0 . 2 . 1 3 0
−−c a c h e f i l e=f t p . c a c h e −− i n f i l e =f t p . pcap
−− o u t f i l e=f t p 1 . pcap −−s k i p b r o a d c a s t
t c p r e w r i t e −−enet −dmac=00:0C: 2 9 : 0A: E5 : F0 , 0 0 : 0C: 2 9 : 0A: E5 : E6
−−enet −smac =00:0C : 2 9 :AB: F1 : 4 2 , 0 0 : 0C : 2 9 :AB: F1 : 3 8
−−c a c h e f i l e=f t p . c a c h e −− i n f i l e =f t p 1 . pcap −− o u t f i l e=f t p 2 . pcap
t c p r e p l a y −−mbps=100.0 −− c a c h e f i l e=f t p . c a c h e −−i n t f 1=e t h 3
−−i n t f 2=e t h 4 f t p 2 . pcap
121
Proyecto Fin de Carrera
Departamento de Ingenierı́a Telemática
Figura 50: Diagrama de paso de mensajes: FTP
Al envı́o del primer paquete, el sistema marca la conexión a nivel de transporte como NEW
y a nivel de aplicación como L7NOINIT. En el mensaje de respuesta, durante el establecimiento
de la conexión TCP, el estado de nivel de transporte pasa a ESTABLISHED mientras que el de
aplicación permanece inalterado. Se cierra la fase de establecimiento con el último asentimiento
de la fase en tres pasos. A continuación se produce el envı́o del primer mensaje de aplicación, en
concreto el FTP REQUEST, y es entonces cuando el módulo nDPI cambia el estado de nivel de
aplicación a L7ACCEPT. El resto de la comunicación harı́a match en las reglas de aceleración
de estados conjunta de nivel 4 y 7.
122
Proyecto Fin de Carrera
Departamento de Ingenierı́a Telemática
Figura 51: Vista de la conexión FTP por el firewall configurado
123
Proyecto Fin de Carrera
7.2.4.
Departamento de Ingenierı́a Telemática
TELNET
Las reglas en las que los paquetes de la captura TELNET van a hacer match son:
i p t a b l e s −A FORWARD −m s t a t e −−s t a t e ESTABLISHED,RELATED −j L7
i p t a b l e s −A L7 −m l 7 s t a t e −−l 7 s t a t e L7ACCEPT −j ACCEPT
i p t a b l e s −A FORWARD −p t c p −−d p o r t 23 −m s t a t e −−s t a t e NEW −j N1
i p t a b l e s −A N1 −m n d p i c o n t r o l −−a c t i o n L7ACCEPT −−l i m i t 10 −j M1
i p t a b l e s −A M1 −m ndpi −−t e l n e t
i p t a b l e s −A N1 −m l 7 s t a t e −−l 7 s t a t e L7UNKNOWN,L7ACCEPT −j ACCEPT
i p t a b l e s −A FORWARD −p t c p −−d p o r t 23 −m l 7 s t a t e
−−l 7 s t a t e L7UNKNOWN −j N1
i p t a b l e s −A FORWARD −p t c p −−s p o r t 23 −m l 7 s t a t e
−−l 7 s t a t e L7UNKNOWN −j N1
La configuración de la suite tcpreplay para inyectar tráfico TELNET es:
#!/ b i n / bash
t c p p r e p −−p o r t −−pcap=t e l n e t −cooked . pcap
−−c a c h e f i l e=t e l n e t −cooked . c a c h e
t c p r e w r i t e −−e n d p o i n t s = 1 0 . 1 0 . 1 . 1 2 8 : 1 0 . 1 0 . 2 . 1 3 0
−−c a c h e f i l e=t e l n e t −cooked . c a c h e −− i n f i l e =t e l n e t −cooked . pcap
−− o u t f i l e=t e l n e t 1 . pcap −−s k i p b r o a d c a s t
t c p r e w r i t e −−enet −dmac=00:0C: 2 9 : 0A: E5 : F0 , 0 0 : 0C: 2 9 : 0A: E5 : E6
−−enet −smac =00:0C : 2 9 :AB: F1 : 4 2 , 0 0 : 0C : 2 9 :AB: F1 : 3 8
−−c a c h e f i l e=t e l n e t −cooked . c a c h e −− i n f i l e =t e l n e t 1 . pcap
−− o u t f i l e=t e l n e t 2 . pcap
t c p r e p l a y −−mbps=100.0 −− c a c h e f i l e=t e l n e t −cooked . c a c h e
−−i n t f 1=e t h 3 −−i n t f 2=e t h 4 t e l n e t 2 . pcap
124
Proyecto Fin de Carrera
Departamento de Ingenierı́a Telemática
Figura 52: Diagrama de paso de mensajes: TELNET
Al envı́o del primer paquete, el sistema marca la conexión a nivel de transporte como NEW
y a nivel de aplicación como L7NOINIT. En el mensaje de respuesta, durante el establecimiento
de la conexión TCP, el estado de nivel de transporte pasa a ESTABLISHED mientras que el de
aplicación permanece inalterado. Se cierra la fase de establecimiento con el último asentimiento
de la fase en tres pasos. A continuación se produce el envı́o del primer mensaje de aplicación, en
concreto el TELNET DATA, y es entonces cuando el módulo nDPI cambia el estado de nivel de
aplicación a L7ACCEPT. El resto de la comunicación harı́a match en las reglas de aceleración
de estados conjunta de nivel 4 y 7.
125
Proyecto Fin de Carrera
Departamento de Ingenierı́a Telemática
Figura 53: Vista de la conexión TELNET por el firewall configurado
126
Descargar