Firewall¶
Note
Nesta demo você irá aprender como utilizar o Iptables:
Requisitos:
Containernet - https://github.com/ramonfontes/containernet
Iptables
A VM disponível em https://github.com/intrig-unicamp/mininet-wifi deverá possuir todos os recursos necessários para reproduzir este documento. Porém, para utilizar o containernet você deverá entrar no diretório ~/containernet e dentro dele executar o comando `sudo make install` Caso alguma dependência esteja faltando ela terá de ser resolvida.
Antes de tudo você precisa identificar a topologia de rede que será gerada através do código abaixo:
#!/usr/bin/python
"""@author: Ramon Fontes
@email: ramon.fontes@imd.ufrn.br"""
from containernet.net import Containernet
from containernet.node import Docker
from containernet.cli import CLI
from mininet.log import info, setLogLevel
def topology():
net = Containernet()
info('*** Adding docker containers\n')
h1 = net.addHost('h1', ip='10.0.0.1', cls=Docker,
dimage="ramonfontes/dos-attack")
h2 = net.addHost('h2', ip='10.0.0.2', cls=Docker,
dimage="ramonfontes/dos-attack")
h3 = net.addHost('h3', ip='10.0.0.254', cls=Docker,
dimage="ramonfontes/dos-attack")
s1 = net.addSwitch('s1', failMode="standalone")
info('*** Configuring WiFi nodes\n')
net.configureWifiNodes()
info("*** Associating Stations\n")
net.addLink(h1, s1)
net.addLink(h2, s1)
net.addLink(h3, s1)
info("*** Starting network\n")
net.build()
s1.start([])
info('*** Running CLI\n')
CLI(net)
info('*** Stopping network\n')
net.stop()
if __name__ == '__main__':
setLogLevel('info')
topology()
Então, após executar o código, uma simples regra com uso do Iptables poderá ser criada através do comando abaixo:
mininet-wifi> h3 iptables -A INPUT -p tcp --destination-port 80 -j DROP