SDN-IPS: Uma Ferramenta para Contenção de Ataques Cibernéticos Baseada em SDN
SDN-IPS é uma ferramenta que agrega a visibilidade dos Sistemas de Detecção de Intrusos com a programabilidade do paradigma SDN, a fim de criar uma solução que permita realizar a contenção de ataques cibernéticos através de estratégias de bloqueio, restrição de banda ou isolamento em quarentena, de forma automatizada e colaborativa.
Visão Geral
A Figura apresenta apresenta o diagrama da arquitetura do SDN-IPS.
Os principais módulos da ferramenta são:
- Gestão da topologia (Topology Manager): Este módulo é responsável pelo armazenamento da topologia da rede na forma de um Grafo dirigido. Utilizando a biblioteca Python NetworkX e a aplicação LLDP para descoberta de links, o SDN-IPS consegue mapear toda a topologia da rede, atributos do enlace (e.g. portas de backbone), dentre outros.
- Gestão de Fluxos (Flow Manager): Este módulo é o responsável pelo armazenamento e checagem de consistência dos fluxos que estão instalados em cada switch. O SDN-IPS utiliza a lista de fluxos para modificá-los frente à uma solicitação de contenção na rede.
- Espelhamento de Tráfego (Traffic Mirror): Este módulo permite que o operador de rede faça o espelhamento de tráfego com base nos fluxos de um switch para um equipamento remoto, tipicamente um IDS, para análise de tráfego malicioso.
- Contenção de ataques (IPS): O SDN-IPS implementa diversos mecanismos de proteção, a saber: bloqueio do host atacante (drop); limitação de banda e de requisições do atacante (rate-limit); e redirecionamento de tráfego para VLAN de quarentena;
- Contenção colaborativa: Através do protocolo BGP FlowSpec, o SDN-IPS permite que clientes ou parceiros do AS enviem lista de hosts a serem contidos em situações de ataques cibernéticos, provendo um serviço de bloqueio colaborativo remoto de atividade maliciosa.
- Outras aplicações (BGP e e-Line): O SDN-IPS pode ser integrado com outras aplicações no controlador SDN. Como prova de conceito, o SDN-IPS possui dois módulos pré-integrados: um para roteamento interdomínio através do protocolo BGP e outro para criação de enlaces metroethernet em conformidade com o padrão e-Line do MetroEthernet Fórum
Casos de Uso
- Rede de campus: o SDN-IPS pode ser uma solução efetiva para o cenário de redes de campus, pois o administrador poderá escolher de forma granular quais regras deseja monitorar no IDS e tomar ações de contenção que sejam mais apropriadas para o segmento de rede em questão. Por exemplo, alarmes no IDS relacionados à hosts de laboratórios ou rede sem fio poderão ser isolados em quarentena para posterior tratamento, ao passo que ataques externos contra os servidores da organização devem ser imediatamente bloqueados.
- Rede de backbone: em cenários de rede backbone a aplicação das ações de contenção deve ser validada em relação à origem da solicitação e ocorrer apenas em alguns equipamentos de borda do provedor. Em termos de validação da origem da solicitação, um cliente, por exemplo, pode solicitar contenção apenas de tráfego relacionado com seus prefixos. O padrão BGP FlowSpec possui mecanismos efetivos tanto para prover granularidade aos bloqueios quanto para validar a autoridade na solicitação de bloqueio em questão. Ao estender o controlador SDN para dar suporte à BGP FlowSpec, o SDN-IPS permite tanto que um cliente solicite um serviço completo de detecção e contenção de intrusos, quanto que o próprio cliente faça a detecção e solicite o bloqueio para o provedor, de forma automatizada, via FlowSpec.
- Ensino de Redes e Segurança: diversas das técnicas empregadas no SDN-IPS para viabilizar suas funcionalidades podem servir de base para o ensino dos conceitos de SDN/OpenFlow e Segurança. As manipulações aplicadas na tabela de fluxos pelo SDN-IPS, por exemplo, podem ajudar um aluno a compreender diversas características da arquitetura SDN, do protocolo OpenFlow, de manutenção da tabela de fluxos, dentre outros. Além disso, a vasta documentação acerca das tecnologias envolvidas disponibilizada em conjunto com a ferramenta ajuda o leitor na aquisição de conhecimento, desenvolvendo ou aperfeiçoando de forma gradual os conceitos apresentados no seu processo de aprendizagem.
Código-fonte e Licenciamento
Veja o repositório oficial do projeto (https://nuvem.pop-ba.rnp.br/gitlab/ufba/sdn-ips), onde encontrará distribuição da ferramenta, módulos relacionados e scripts de apoio.
O SDN-IPS é uma ferramenta software livre; você pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral GNU Affero (AGPL), conforme publicada pela Free Software Foundation; tanto a versão 3 da Licença como (a seu critério) qualquer versão posterior.
Instalação e Execução
O procedimento abaixo ilustra os passos para instalação baseado em um sistema com Debian Jessie, semelhante à infraestrutura já disponível no ambiente de experimentação FIBRE para uso imediato.
O SDN-IPS utiliza o controlador Ryu, portanto você deve instalá-lo antes de instalar o SDN-IPS. Disponibilizamos uma documentação sobre a instalação do Ryu aqui.
1. Instalação das bibliotecas e dependências necessárias via pacotes Debian:
su -
apt-get update && apt-get install -y git curl python-networkx python-jsonpickle
2. Download e execução da aplicação:
cd /root
git clone https://nuvem.pop-ba.rnp.br/gitlab/ufba/sdn-ips.git
cd /root/sdn-ips
ryu-manager --observe-links sdn-ips.py
3. Se tudo estiver OK, você poderá visualizar o startup da aplicação, conexão dos switches SDN e descoberta de links:
Tutoriais e Manuais de uso
- Documentação da API REST do SDN-IPS
- Curso de extensão Sistema de Prevenção de Intrusão baseado em SDN
- Tutorial 01: Instalação do SDN-IPS, Visão geral sobre SDN, ambiente de experimentação FIBRE, Configuração de enlaces com e-Line (PDF)
- Tutorial 02: Configuração de BGP no SDN-IPS (PDF)
- Tutorial 03: Configuração e Integração de Sistemas de Detecção de Instrusão (IDS) Suricada ao SDN-IPS (PDF)
- Tutorial 04: Execução de medidas de contenção no SDN-IPS (PDF)
Equipe de desenvolvimento
- Italo Valcy S. Brito
- Adriana Viriato Ribeiro
- Leobino N. Sampaio
Suporte
Encontrou um bug ou quer requisitar uma funcionalidade? Reporte aqui!
Para manter contato com a equipe de desenvolvimento, escreva para curso-sdn-ips [AT] ufba.br.