ATIVAÇÃO DO MININET-SEC

Se você encontrar a mensagem de erro “No module called Mininet” durante o processo de instalação, mesmo com o Mininet já instalado em seu sistema, execute os seguintes comandos para resolver o problema:

sudo -i
            cd ~
            git clone https://github.com/mininet/mininet.git
            export PYTHONPATH=$PYTHONPATH:$HOME/mininet

O Kytos-ng é o controlador SDN que será usado junto com o mnsec para criar e gerenciar conexões entre componentes de rede, além de realizar outras funções. Ele pode ser ativado de diferentes formas. Cada um dos processos descritos abaixo deve ser executado em terminais separados.

⚠️ Os passos 1 e 3 não são necessários se o usuário utilizar a topologia definida no arquivo firewall.py. Eles são necessários para ativar o Kytos-ng e permitir seu uso como controlador remoto e estabelecer conexões entre componentes de rede (ativação do NOS) no caso de usar uma topologia personalizada.

1. Ativar o Kytos;

source test_env/bin/activate
            cd teste
            cd kytos
            sudo ./docker/scripts/add-etc-hosts.sh
            export MONGO_USERNAME=mymongouser
            export MONGO_PASSWORD=mymongopass
            docker compose up -d
            docker ps
            kytosd -f --database mongodb

2. Iniciar o mnsec;

É importante usar o modo root ao executar esses comandos. O mnsec pode ser usado com topologias predefinidas, por exemplo:

cd mininet-sec
            cd examples
            python3 firewall.py

Nesta topologia, temos 3 hosts internos (h1, h2, h3), 1 servidor externo (o1), 2 servidores (srv1, srv2), 3 switches (s1, s2, nettap1) e um firewall (fw0).

Esta é a rede estabelecida:

fw0 fw0-eth0:s1-eth4 fw0-eth1:s2-eth3 fw0-eth2:nettap1-eth1
            h1 h1-eth0:s1-eth1
            h2 h2-eth0:s1-eth2
            h3 h3-eth0:s1-eth3
            o1 o1-eth0:nettap1-eth2
            srv1 srv1-eth0:s2-eth1
            srv2 srv2-eth0:s2-eth2

O Nettap1 é um switch que promove a conexão entre os componentes internos da rede e a internet através da interface fw0-eth2 do firewall. Ele também usa a interface nettap1-eth2 para conectar-se ao host o1. Além disso, existem interfaces que promovem a conexão do firewall com a internet:

mnsec --topo linear,3 --apps h3:ssh:port=22,h3:http:port=80,h3:ldap,h3:smtp,h3:imap,h3:pop3 --controller=remote,ip=127.0.0.1

Neste caso, estamos criando uma topologia linear com 3 hosts (h1, h2, h3), e o h3 tem algumas portas importantes definidas como abertas para testar ataques.

3. Ativação do NOS;

for sw in $(curl -s http://127.0.0.1:8181/api/kytos/topology/v3/switches | jq -r '.switches[].id'); do curl -H 'Content-type: application/json' -X POST http://127.0.0.1:8181/api/kytos/topology/v3/switches/$sw/enable; curl -H 'Content-type: application/json' -X POST http://127.0.0.1:8181/api/kytos/topology/v3/interfaces/switch/$sw/enable; done
        
            for l in $(curl -s http://127.0.0.1:8181/api/kytos/topology/v3/links | jq -r '.links[].id'); do curl -H 'Content-type: application/json' -X POST http://127.0.0.1:8181/api/kytos/topology/v3/links/$l/enable; done
        
            curl -H 'Content-type: application/json' -X POST http://127.0.0.1:8181/api/kytos/mef_eline/v2/evc/ -d '{"name": "my evc1", "dynamic_backup_path":'