Uma Solução de IPS Baseada na Integração SNORT e IPTables Rivalino Matias Jr. Universidade do Vale do Itajaí Jaime Miranda Junior Grupo Stela/UFSC Porto Alegre - Junho/2004
AGENDA Motivação Conceitos Básicos: IDS & IPS A Solução Proposta Prova de Conceito Prototipação Testes Conclusões e Futuros Trabalhos
Motivação Atualmente ataques eletrônicos (cyberattacks) têm crescido tanto em diversidade quanto em complexidade; O número de vulnerabilidades reportadas (Internet) cresceu 1500% de 1998 até 2002 [CERT 2003]; Aliado a este crescimento, o nível de sofisticação destes ataques tem evoluído de forma que identificálos e contê-los tem se tornado uma tarefa cada vez mais difícil.
Incidentes Reportados ao CERT/CC 140000 120000 100000 80000 60000 40000 20000 0 1999 2000 2001 2002 2003 Fonte: CERT/CC http://www.cert.org
Incidentes Reportados ao NBSO (.BR) 60000 50000 40000 30000 20000 10000 0 1999 2000 2001 2002 2003 Fonte: NIC NBSO.BR http://www.nbso.nic.br
Motivação Atualmente ataques eletrônicos (cyberattacks) têm crescido tanto em diversidade quanto em complexidade; O número de vulnerabilidades reportadas (Internet) cresceu 1500% de 1998 até 2002 [CERT 2003]; Aliado a este crescimento, o nível de sofisticação destes ataques tem evoluído de forma que identificálos e contê-los tem se tornado uma tarefa cada vez mais difícil.
Tecnologias de Segurança Utilizadas 2003 2002 2001 2000 1999 Anti-virus Software Access Control Biometria IDS Firewall 0 20 40 60 80 100 Fonte: CSI/FBI - http://www.gocsi.com % Utilização
Motivação (cont.) A crescente sofisticação dos ataques tornam implementações individuais e isoladas cada vez mais soluções snake-oil; Esta necessidade de integração deu origem a uma nova tecnologia de seguraça chamada de Intrusion Prevention System (IPS); O IPS é uma evolução dos conceitos de IDS (Intrusion Detection System) e Firewall.
Conceitos Básicos: IDS & IPS IDS (Intrusion Detection System): Tem como objetivo coletar, armazenar e analisar o tráfego da rede para fins de: auditoria, análise forense e detecção de anomalias [Denning, 1987]; Sua natureza passiva lhe permite concentrar esforços na análise dos dados registrados; A falta de padrões na área dificulta a interoperabilidade com outras tecnologias; Exemplos: SNORT, Prelude, NFR, Real Secure,...
Conceitos Básicos: IDS & IPS IPS (Intrusion Prevention System): Um IPS é um software/hardware que visa detectar e conter ataques [Gupta 2003]; O IPS detecta intrusões e toma decisões na forma de contramedidas [Bobbi 2003]; Modos de operação: Inline: Incorpora um Firewall; Outline: Integra-se a um Firewall externo; Exemplos: Lak-IPS, Snort-inline, QuickSec, StoneGate,..
Conceitos Básicos: IDS & IPS [Halme 1995] Antecipação Interna Redirecionamento Honeypot Tentativa de Intrusão Preempção Antecipação Externa Persuasão Externa Persuasão Detecção Interna (IDS) Perímetro do Sistema Contramedida
Conceitos Básicos: IDS & IPS Antecipação Interna Honeypot Tentativa de Intrusão Preempção Antecipação Externa Persuasão Externa IPS Contramedida Persuasão Interna Detecção Perímetro do Sistema Redirecionamento
Conceitos Básicos: IDS & IPS Antecipação Interna Honeypot Tentativa de Intrusão Preempção Antecipação Externa Persuasão Externa Persuasão Interna Perímetro do Sistema IPS
Proposta A fim de criar uma solução de IPS baseada em FS/OS, definiu-se os seguintes componentes: Protocolo de comunicação: o seu propósito é suportar as principais mensagens utilizadas para integrar Snort e IPTables para fins de IPS; Plugin: responsável pelas respostas aos eventos de intrusão detectados pelo Snort (Ex. Bloqueio e/ou redirecionamento de portas); Agente: Recebe os comandos enviados pelo Plugin e os implementa on-the-fly no IPTables (fw updates).
Arquitetura
Protocolo FWIDSP Aplicação (L7); Não orientado a conexão com confirmação; Serviço de transporte UDP/IP (porta 999); Especificação: Representação de Dados (PDUs): Definida em ASN.1 [ITU-T ISO/IEC 2002]; Comportamento: Definido através de DTEs (Diagramas de Transição de Estados).
Protocolo FWIDSP Exemplo da PDU fwidsp.request IMPORTS RFC 1155 request_pdu ::= SEQUENCE { OP_ID, PORT, TIMER, INTERFACE, IP_ADDR,FORWARD_IP_ADDR, NAT_IP_ADDR }; OP_ID ::= INTEGER; PORT ::= INTEGER; TIMER ::= UTCTIME; INTERFACE::= OCTET STRING; IP_ADDR ::= IPADDRESS; FORWARD_IP_ADDR::= IPADDRESS; NAT_IP_ADDR::= IPADDRESS;
Protocolo FWIDSP DTE na recepção do fwidsp.request
Prototipação Para validar a arquitetura e protocolo apresentados foi implementado um protótipo com as seguintes características: Linguagem de Programação C; Plataforma GNU/Linux; Mecanismos de IPC: Plugin Snort: Interface Unix Socket disponível pelo Snort - spo_alert_unixsock() ; Agente Plugin: Socket Internet (UDP).
Prototipação (Interface Unix socket do Snort)... switch (pv.alert_mode){... case ALERT_UNSOCK: AddFuncToOutputList(SpoAlertUnixSock, NT_OUTPUT_ALERT,NULL); OpenAlertSock(); break; }... /etc/snort.conf # Output Plugin Configuration... output alert_unixsock
Prototipação (plugin)
Prototipação (Código do plugin)... srv_addr.sun_family=af_unix; strcpy(srv_addr.sun_path,"/dev/snort_alert");... for(;;){ read(snort_sockfd,&alertpkt,sizeof (Alertpkt)); /* Preenche PDU fwidsp_request */... sendto(agent_socket_fd, &fwidsp_req_pdu,...);... recvfrom(agent_socket_fd, &fwidsp_ack_pdu,...);... }
Prototipação (Agente)
Prototipação (Código do Agente)... for(;;){... recvfrom(plugin_socket_fd, &fwidsp_req_pdu,...); switch(r_pdu.op_id){ case BLK_IP : r = cfgfw_blockip(r_pdu.addr_ip); break; case BLK_PRT : r = cfgfw_blockport(r_pdu.port, r_pdu.addr_ip); break;... sendto(plugin_socket_fd, &fwidsp_ack_pdu,..., &fw_address, sizeof(struct sockaddr_in)); }...
Validação do Protótipo Ambiente de Testes: Hosts Invasor: Win98 Sistema Alvo: PWS / Win98 Router/Firewall: Kernel Linux 2.4 + IPTables IDS: RHL 9.0 + Snort Rede Hub Ethernet (IDS+FW+Alvo) Todas conexões em 100BaseT
Validação do Protótipo Ambiente de Teste
Validação do Protótipo Experimentos: Ataques selecionados: Portscan (Brutus - http://www.hoobie.net/brutus/); Ataque de senha (telnet); Buffer overflow (PWS /cmd.exe). Três Replicações totalizando 9 ensaios; Coleta do tempo de detecção e reação da solução de IPS proposta.
Validação do Protótipo Resultados: O tempo total entre a detecção e o bloqueio foi < 1s; Vazamento (leaks): Portscan: Até 3 pacotes (dependente do scan); Demais testes: Apenas o primeiro; Em todos os 9 ensaios o atacante não obteve nenhuma resposta do sistema alvo; As respostas foram enviadas, porém o endereço do destinatário já tinha sido bloqueado pelo IPS.
Conclusões Os testes comprovaram a viabilidade técnica de se integrar Snort e Iptables para a composição de uma solução de IPS; A simplicidade do protocolo refletiu em sua robustez, oferecendo tempos de reação aceitáveis;
Conclusões (limitações) Falta segurança no FWIDSP: Atualmente as PDUs estão em clear text! Sugestões: Criptografia ou VPN; Alarme-falso causa bloqueio de endereços não nocivos; Os testes foram conduzidos com a rede 100% disponível e considerando sistemas dedicados.
Trabalhos Atuais e Futuros Hosting do Projeto no Sourceforge (solicitado); Extensão do Agente para suportar traps SNMPv2 provenientes de IDSes (previsto para Dez/2004); Futuros: Suporte para IDXP/IDMEF; Extensão das funcionalidades do FWIDSP (ex. QoS);...
Perguntas? RIVALINO@SJ.UNIVALI.BR RIVALINO@K4B.COM.BR Apresentação disponível em: http://www.k4b.com.br