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