1 9/20/[email protected] Http.//gomix.fedora-ve.org Proteja su red o servidor de ataques desde la red Guillermo Gómez Savino [email protected] Seguridad en la red
2 9/20/[email protected] Http.//gomix.fedora-ve.org Seguridad en las capas
3 9/20/[email protected] Http.//gomix.fedora-ve.org L1 Capa Física ● Cables ● Acceso físico ● Temperatura ● Energía AC/DC ● Agentes externos
4 9/20/[email protected] Http.//gomix.fedora-ve.org L2 Medium Access Control ● ebtables – Filtrado de paquetes Ethernet ● arptables – Filtrado protocolo ARP
5 9/20/[email protected] Http.//gomix.fedora-ve.org L3 Network ● Netfilter/iptables – Integra con SELinux ● xinetd – Controla los procesos – No requiere compilación ● tcpwrappers – IP based access control – Requiere compilación
6 9/20/[email protected] Http.//gomix.fedora-ve.org L4 Transport ● xinetd – Ej., limites de conexiones por segundo ● Netfilter/iptables – Integra con SELinux ●
7 9/20/[email protected] Http.//gomix.fedora-ve.org ¿L5-L7? S/P Aplicación ● Mecanismos propios del servidor – Ej. archivos Apache http_access ● Mandatory Access Control (MAC) – SELinux : control sobre procesos y usuarios – Integra con iptables ●
8 9/20/[email protected] Http.//gomix.fedora-ve.org iptables Sobrevuelo rápido
9 9/20/[email protected] Http.//gomix.fedora-ve.org Enfoque en las Capas 3 y 4 ● Netfilter iptables – Motor de filtrado de paquetes – Motor de seguimiento de conexiones – Capacidad de modificar los paquetes con distintos propósitos ● NAT, DNAT, SNAT, PAT, MASQUERADE ● TOS, DiffServ, QoS en general – Control de ancho de banda – Control de conexiones y límites
10 9/20/[email protected] Http.//gomix.fedora-ve.org Enfoque en las Capas 3 y 4 ● Netfilter iptables – Integra con iproute2 para enrutamiento avanzado – Genera log útiles para mejorar la seguridad – Ciertas capacidades Capa 2 super-poderosa – Integra con SELinux, combinación super-poderosa
11 9/20/[email protected] Http.//gomix.fedora-ve.org iptables ● Motor para construcción de firewalls implementado en el kernel ● “Statefull”, motor de seguimiento de conexiones con noción de “estados” ● Proteje servidores ● Proteje redes con enrutadores Linux ● Módular en su diseño ● Aceptar conexiones ● Rechazar conexiones ● Limitar conexiones en distintas maneras
12 [email protected] Http.//gomix.fedora-ve.org
13 9/20/[email protected] Http.//gomix.fedora-ve.org Iptables arch ● Tablas – tilter – nat – mangle – raw ● Cadenas predefinidas ● Cadenas del usuario
14 9/20/[email protected] Http.//gomix.fedora-ve.org
15 9/20/[email protected] Http.//gomix.fedora-ve.org Iptables rule Cadena Criterio de coincidencia MATCH Extension Destino TARGET Extensions iptables -t filter -I INPUT -p tcp –dport ssh -j DROP Tabla
16 9/20/[email protected] Http.//gomix.fedora-ve.org Fedora iptables ● yum install iptables – /etc/init.d/iptables – /etc/sysconfig/iptables – /etc/sysconfig/iptables-config – No modprobe modulos kernel – Service iptables start|stop|status|restart ● yum install system-config-firewall
17 9/20/[email protected] Http.//gomix.fedora-ve.org system-config-firewall
18 9/20/[email protected] Http.//gomix.fedora-ve.org Gestores iptables ● firestarter ● fwbuilder ● Webmin ● Shorewall ●...
19 9/20/[email protected] Http.//gomix.fedora-ve.org Network Layer (L3) Ataque y Defensa
20 9/20/[email protected] Http.//gomix.fedora-ve.org Ataque L3 :: Definición “Un ataque a la capa de red (L3) es uno o varios paquetes en secuencia que abusan de los campos de los encabezados de la capa tres (L3) con la finalidad de explotar una vulnerabilidad en la implementación del stack de red de un host, consumir recursos de la capa de red o permitir el despacho de ataques contra capas superiores”
21 9/20/[email protected] Http.//gomix.fedora-ve.org Iptables ip header log caps iptables -t filter -I INPUT -p tcp –dport ssh -j LOG --log-ip-options
22 9/20/[email protected] Http.//gomix.fedora-ve.org Iptables ip header log caps cont. Apr 11 09:48:52 movix kernel: IN=ath0 OUT= MAC=00:1e:4c:59:98:a0:00:90:1a:a0:f4:f2:08:00 SRC=200.70.20.194 DST=200.84.36.227 LEN=48 TOS=0x00 PREC=0x00 TTL=107 ID=4969 DF PROTO=TCP SPT=4048 DPT=135 WINDOW=65535 RES=0x00 SYN URGP=0 OPT (020405B401010402)
23 9/20/[email protected] Http.//gomix.fedora-ve.org Iptables icmp log caps Apr 11 08:57:00 movix kernel: IN=ath0 OUT= MAC=00:1e:4c:59:98:a0:00:90:1a:a0:f4:f2:08:00 SRC=201.208.182.222 DST=200.84.36.227 LEN=84 TOS=0x00 PREC=0x00 TTL=61 ID=0 DF PROTO=ICMP TYPE=8 CODE=0 ID=46400 SEQ=1
24 9/20/[email protected] Http.//gomix.fedora-ve.org Categorías de Ataques L3 ● Abuso de encabezados L3 – ej. spoofed source address ● Network stack exploits – ej. IGMP DoS Linux kernel < 2.6.9 ● Saturación de ancho de banda – ej. ICMP DDoS
25 9/20/[email protected] Http.//gomix.fedora-ve.org Defensa ● La respuesta al abuso en la capa de red debe limitarse a la misma capa ● Filtrado en un firewall para bloquear la dirección IP del atacante ● Reconfiguración del enrutamiento para negar el acceso al atacante al blanco escogido ● Aplicar lógica de acuerdo a la cantidad de tráfico que está permitido
26 9/20/[email protected] Http.//gomix.fedora-ve.org Defensa con iptables iptables -I INPUT 1 -s 144.202.x.x -j DROP iptables -I INPUT 1 -m limit --limit 10/sec -s 144.202.x.x -j ACCEPT iptables -I INPUT 1 -s 144.202.x.x -j DROP ● Filtrado simple con DROP ● ACCEPT con límite de paquetes/sec y luego DROP
27 9/20/[email protected] Http.//gomix.fedora-ve.org Transport Layer (L4) Ataques y Defensa
28 9/20/[email protected] Http.//gomix.fedora-ve.org Ataque L4 :: Definición “Un ataque a la capa de trasnporte (L4) es uno o varios paquetes en secuencia que abusan de los campos de los encabezados de la capa de transporte (L4) con la finalidad de explotar una vulnerabilidad o condición de error en la implementación del stack de transporte de un host”
29 9/20/[email protected] Http.//gomix.fedora-ve.org Iptables tcp header log caps iptables -t filter -I INPUT -p tcp –dport ssh -j LOG --log-tcp-options --log-tcp-sequence
30 9/20/[email protected] Http.//gomix.fedora-ve.org Iptables tcp header log caps Apr 11 11:54:52 movix kernel: IN=ath0 OUT= MAC=00:1e:4c:59:98:a0:00:90:1a:a0:f4:f2:08:00 SRC=201.208.182.222 DST=200.84.36.227 LEN=60 TOS=0x00 PREC=0x00 TTL=61 ID=65312 DF PROTO=TCP SPT=45518 DPT=22 SEQ=1201287573 ACK=0 WINDOW=5840 RES=0x00 SYN URGP=0 OPT (020405B40402080A338CCEB50000000001030306)
31 9/20/[email protected] Http.//gomix.fedora-ve.org Iptables udp header log caps Apr 11 12:03:26 movix kernel: IN=ath0 OUT= MAC=00:1e:4c:59:98:a0:00:90:1a:a0:f4:f2:08:00 SRC=60.15.177.162 DST=200.84.36.227 LEN=622 TOS=0x00 PREC=0x00 TTL=51 ID=0 DF PROTO=UDP SPT=33446 DPT=1026 LEN=602
32 9/20/[email protected] Http.//gomix.fedora-ve.org Categorías de Ataques L4 ● Agotamiento de recursos para conexión – ej. SYN flood DDoS ● Abuso de los encabezados – ej. RST forjado para cerrar conexiones ● Exploits del stack de transporte – ej. netfilter 2004 tcp options processing
33 9/20/[email protected] Http.//gomix.fedora-ve.org ● Filtrado basado en campos L4 ● Respuesta con TCP RST, RST/ACK ● Regulación TCP SYN en el tiempo Defensa iptables -I INPUT 1 -p tcp -–dport ssh -j DROP iptables -I INPUT 1 -p tcp -–dport ssh -j REJECT –reject-with tcp-reset iptables -I INPUT 1 -p tcp --syn -m limit --limit 1/s -j ACCEPT iptables -A INPUT -p tcp --syn -j DROP
34 9/20/[email protected] Http.//gomix.fedora-ve.org Defensa ● UDP -> Respuesta con ICMP ● Filtrado combinado L3 + L4 iptables -I INPUT 1 -p udp -–dport 5001 -j REJECT –reject-with icmp-port-unreachable iptables -I INPUT 1 -s 144.202.100.120 -p tcp –-dport ssh -j DROP
35 9/20/[email protected] Http.//gomix.fedora-ve.org Aplication Layer Ataques y Defensa
36 9/20/[email protected] Http.//gomix.fedora-ve.org Ataque L7 :: Definición “Un ataque a la capa de aplicación (L7) es un esfuerzo por subvertir una aplicación, un usuario de aplicación, o datos gestionados por una aplicación para propósitos no sancionados por el propietario de la aplicación o administrador”
37 9/20/[email protected] Http.//gomix.fedora-ve.org Cada aplicación es especial “Cada aplicación implementa sus propios mecanismos y protocolos y no hay una estandarización en el modelo TCP/IP de encabezados para las capas superiores a los cuales proteger o abusar, en consecuencia pareciera que estamos perdidos, no es cierto” Demos la bienvenida a la extensión “match string” de iptables....
38 9/20/[email protected] Http.//gomix.fedora-ve.org -m string ● Esta extensión de criterio hace “match” utilizando cadenas de caracteres y analizando los datos encapsulados en los paquetes ● Linux kernel >= 2.6.14 iptables -I INPUT 1 -p tcp --dport 22 -m string --string “tester”...
39 9/20/[email protected] Http.//gomix.fedora-ve.org Categorías de Ataques L7 ● Exploits de bugs de programación – ej. Buffer overflows ● Exploits de relaciones de confianza – ej. Phishing ● Agotamiento de recursos – ej. DoS por montañas de datos inmanejables
40 9/20/[email protected] Http.//gomix.fedora-ve.org Defensa ● Técnicamente la respuesta debería estar al mismo nivel, al nivel de la aplicación ● No es un acercamiento práctico en los firewalls ● Match string puede utilizarse para reconocer patrones de paquetes (huellas/firmas Snort)
41 9/20/[email protected] Http.//gomix.fedora-ve.org Defensa L7 ejemplo #1 iptables -I FORWARD 1 -p tcp –dport 80 -m state --state ESTABLISHED -m string --string “/etc/shadow” -j LOG –log-prefix “ETC_SHADOW” ● Detección del string “/etc/shadow” entre un browser y un servidor web (sid:1372)
42 9/20/[email protected] Http.//gomix.fedora-ve.org Defensa L7 ejemplo #2 iptables -I FORWARD 1 -p tcp –dport 1433 -m state --state ESTABLISHED -m string --hex-string “'|00|“ -m string --hex-string “-|00|-|00|” -j LOG –log-prefix “SQL INJ COMM” ● Detección SQL Injection, MS SQL (sid:2000488)
43 9/20/[email protected] Http.//gomix.fedora-ve.org Defensa L7: ¿Snort + iptables? Snort: Intrusion Detection System (+sw libre) HW dedicado para la red completa Gran cantidad de reglas Snort pueden ser traducidas a reglas iptables utilizando la extensión MATCH String (-m string) de iptables Gran oportunidad de detección, prevención y respuesta en dev en línea
44 9/20/[email protected] Http.//gomix.fedora-ve.org II Parte Herramientas Herramientas Fedora GNU/linux para manejar la complejidad
45 9/20/[email protected] Http.//gomix.fedora-ve.org psad Port Scan Attack Detector Herramienta basada en el ánalisis de los logs producidos por iptables # yum install psad
46 9/20/[email protected] Http.//gomix.fedora-ve.org Psad funcionalidades ● Detección de tráfico sospechoso ● Port scans ● Alertas basadas en reglas Snort – Email + Syslog ● Modo forensics ● Pasive OS fingerprinting ● Active Response ● Integración con fwsnort ● Integración con DShield
47 9/20/[email protected] Http.//gomix.fedora-ve.org Psad: ¿tráfico sospechoso? ● TCP connect() Scan, ● TCP SYN o Half-OpenScan, ● TCP FIN, XMAS and NULL Scans ● UDP Scans ● Psad + syslog centralizado, detección en múltiples servidores
48 9/20/[email protected] Http.//gomix.fedora-ve.org Iptables + syslog central + psad
49 9/20/[email protected] Http.//gomix.fedora-ve.org Psad scan detection Apr 11 20:11:55 fatix-iii psad: scan detected: 189.155.255.103 -> 190.203.240.156 tcp: [5900] flags: SYN tcp pkts: 1 DL: 2 Apr 11 21:07:08 fatix-iii psad: scan detected: 125.73.87.130 -> 190.203.240.156 udp: [1434] udp pkts: 1 DL: 2 Apr 11 22:22:47 fatix-iii psad: scan detected: 190.207.99.63 -> 190.203.240.156 tcp: [4899] flags: SYN tcp pkts: 1 DL: 2 Apr 12 01:20:07 fatix-iii psad: scan detected: 218.75.199.50 -> 190.203.240.156 udp: [1434] udp pkts: 1 DL: 2
50 9/20/[email protected] Http.//gomix.fedora-ve.org psad From Signature Matching to OS Fingerprinting Se puede detectar tráfico que coincide con reglas Snort gracias a la capacidad de logging de iptables.
51 9/20/[email protected] Http.//gomix.fedora-ve.org Apr 12 05:18:46 fatix-iii psad: src: 80.12.116.148 signature match: "PSAD-CUSTOM Slammer communication attempt" (sid: 100208) udp port: 1434 Apr 12 09:36:57 fatix-iii psad: src: 200.77.213.91 signature match: "MISC Radmin Default install options attempt" (sid: 100204) tcp port: 4899 Apr 11 07:48:22 fatix-iii psad: src: 121.14.152.130 signature match: "MISC Microsoft SQL Server communication attempt" (sid: 100205) tcp port: 1433 Psad Snort sig matching
52 9/20/[email protected] Http.//gomix.fedora-ve.org psad modo forense ● Opciones para análisis forense – --analyze-msgs : cualquier archivo con logs iptables (ej. /var/log/messages) – --no-daemon -> imprime resultados en STDOUT y termina.
53 9/20/[email protected] Http.//gomix.fedora-ve.org psad Active Response Respuesta Activa Filtrar a los infractores de forma automática
54 9/20/[email protected] Http.//gomix.fedora-ve.org psad respuesta activa ● Reglas temporales, 3600segundos por omisón ● Mecanismos para nunca provocar respuesta activa (whitelistening) ● Mecanismos para apretar al maximo (blacklisting) ● Auto Danger Level por SID matching ● Interfaces para agregar bloqueos manualmente ● Interfaces para gestionar las reglas de psad
55 9/20/[email protected] Http.//gomix.fedora-ve.org psad active response Apr 5 18:24:10 fatix-iii psad: added iptables auto-block against 24.215.96.208 for 7200 seconds Apr 5 18:30:32 fatix-iii psad: added iptables auto-block against 86.31.111.175 for 7200 seconds Seconds Apr 5 15:36:48 fatix-iii psad: removed iptables auto-block against 60.190.219.110 Apr 5 15:37:24 fatix-iii psad: removed iptables auto-block against 189.200.224.91
56 9/20/[email protected] Http.//gomix.fedora-ve.org fwsnort Traducción de reglas automatizada Snort rules -> iptables rules # yum install fwsnort (*) log + drop
57 9/20/[email protected] Http.//gomix.fedora-ve.org [root@movix gomix]# fwsnort =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Snort Rules File Success Fail Ipt_apply Total [+] attack-responses.rules 16 1 16 17 [+] backdoor.rules 65 11 65 76 [+] bad-traffic.rules 9 3 9 12... [+] web-php.rules 115 11 115 126 [+] x11.rules 2 0 2 2 ======================================= 7191 2162 7191 9353 [+] Generated iptables rules for 7191 out of 9353 signatures: 76.88% [+] Found 7191 applicable snort rules to your current iptables policy. [+] Logfile: /var/log/fwsnort.log [+] iptables script: /etc/fwsnort/fwsnort.sh fwsnort Fedora ~80%
58 9/20/[email protected] Http.//gomix.fedora-ve.org /etc/fwsnort/fwsnort.sh [root@movix fwsnort]# /etc/init.d/fwsnort/fwsnort.sh [+] Adding backdoor rules. Rules added: 12 [+] Adding bad-traffic rules. Rules added: 8... [+] Adding policy rules. Rules added: 2 [+] Adding rpc rules. Rules added: 24 [+] Adding scan rules. Rules added: 4 [+] Adding snmp rules. Rules added: 4 [+] Finished.
59 9/20/[email protected] Http.//gomix.fedora-ve.org fwsnort como IDS && IPS Apr 12 14:10:16 movix psad: src: 200.84.12.35 signature match: "ICMP PING" (sid: 384) icmp fwsnort chain: FWSNORT_INPUT rule: 36 ● fwsnort primariamente hace loggin (IDS) ● Opcionalmente puede responder, DROP o REJECT (Inline Intrusion Prevention System) # iptables -L FWSNORT_INPUT -nv | tail -n 2 0 0 LOG icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 8 code 0 STRING match "SolarWinds.Net".. LOG `[116] DRP SID1918 ' 0 0 DROP icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmp type 8 code 0 STRING match "SolarWinds.Net"..
60 9/20/[email protected] Http.//gomix.fedora-ve.org fwsnort WLs && Bls && SIDs ● Whitelists: los chicos buenos (false positives) ● Blacklists: los chicos malos (redes) ● Actualizaciones de huellas Snort SIDs – Soporte comercial para empresas – Soporte comercial para desarrolladores de productos – Soporte comunitario – Desarrollo propio en casa de reglas Snort
61 9/20/[email protected] Http.//gomix.fedora-ve.org psad + fwsnort Sumando fortalezas psad -> “L3/L4 scan/attack detector” fwsnort -> “L7 attack detector”
62 9/20/[email protected] Http.//gomix.fedora-ve.org psad/fwsnort email alerting + DShield Danger level: [4] (out of 5) Scanned TCP ports: [23-65506: 167 packets] TCP flags: [SYN: 167 packets, Nmap: -sT or -sS] iptables chain: INPUT (prefix "DROP"), 167 packets Source: 85.190.0.3 DNS: proxyscan.freenode.net OS guess: Linux:2.6:17:Linux 2.6.17 and newer (?) Destination: 190.77.101.82 DNS: 190-77-101-82.dyn.dsl.cantv.net Overall scan start: Wed Feb 18 19:58:08 2009 Total email alerts: 47 Complete TCP range: [23-65506] Syslog hostname: santangel Global stats: chain: interface: TCP: UDP: ICMP: INPUT etFeb 1 0 0 INPUT ethFeb 2 0 0 INPUT eth1 8459 0 0 [+] Whois Information: % This is the RIPE Whois query server #2....
63 9/20/[email protected] Http.//gomix.fedora-ve.org psad + fwsnort active response ● psad no puede evitar el ataque es una “reacción” ● pwsnort previene el ataque en línea ● Respuesta activa combinada ● Restricción de respuesta activa psad a los ataques detectados por fwsnort +++ – Desactivar respuesta activa psad a los scans o búsquedas de backdoors (spoofing)
64 9/20/[email protected] Http.//gomix.fedora-ve.org Port Knocking & SPA Asegurando los servicios de red
65 9/20/[email protected] Http.//gomix.fedora-ve.org fwknop
66 9/20/[email protected] Http.//gomix.fedora-ve.org Visualizando iptables
67 9/20/[email protected] Http.//gomix.fedora-ve.org Por una red y aplicaciones en red más seguras, los chicos malos llevan la delantera en este momento... # init 0 Por una red y aplicaciones en red más seguras, los chicos malos llevan la delantera en este momento... # init 0 Muchas Gracias Panamá :) [email protected]