Firewall con Ryu

Se utiliza la aplicacion de Ryu “rest_firewall.py” y el programa postman para manejar comandos rest.

Se crea una topologia de un switch y tres host.

“sudo mn –topo single,3 –controller remote –mac”

Luego se configura la versión de openflow que se va a utilizar.

“ovs-vsctl set Bridge s1 protocols=OpenFlow13”

Al comenzar el firewall bloquea toda comunicación y desactiva el switch.

Podemos activar el switch mediante:

“http://localhost:8080/firewall/module/enable/0000000000000001”

El estado se puede ver:

“http://localhost:8080/firewall/module/status”

Luego se añaden las reglas para permitir la conexión entre host haciendo un post:

“http://localhost:8080/firewall/rules/0000000000000001”

Pasandole por parámetros en la casilla “body” el parámetro de origen, destino y protocolo:

{“nw_src”: “10.0.0.1/32”, “nw_dst”: “10.0.0.2/32”, “nw_proto”: “ICMP”}

La regla debe ser bidireccional, se debe crear hacia ambas direcciones.

{“nw_src”: “10.0.0.1/32”, “nw_dst”: “10.0.0.2/32”, “nw_proto”: “ICMP”}

Con esto previo, se crearon dos reglas, uno para permitir ICMP de 10.0.0.1 a 10.0.0.2 y de 10.0.0.2 a 10.0.0.1.

Luego podemos probar que esto funciona, viendo no bloqueamos la comunicación entre el host 1 y el 2 pero no existe ninguna regla con el host 3 entonces no puede llegar hacia el.

Para eliminar una regla se puede hacer un delete:

“http://localhost:8080/firewall/rules/0000000000000001”

Agregándole en body, el ID de la regla:

{“rule_id”: “1”}

{“rule_id”: “2”}