#!/usr/sbin/nft -f # Laboratorio: completen este firewall con estado para fw. Quiten cada TODO y escriban la regla. # fw separa tres zonas: # eth1 red interna 10.215.1.0/24 # eth2 DMZ 100.64.15.0/26, con el servidor web en 100.64.15.10 # eth3 afuera # Objetivo: de adentro hacia afuera sí; de afuera hacia adentro solo el servidor web de la DMZ, # en los puertos 80 y 443. Prueben cada regla con nc y curl (ver los apuntes). flush ruleset table inet fw { chain input { type filter hook input priority filter; policy drop; # TODO: aceptar lo que ya es parte de una conexión conocida, y descartar lo inválido. iif "lo" accept iifname "eth1" icmp type echo-request accept iifname "eth1" tcp dport 22 accept # TODO: aceptar el UDP del túnel WireGuard (puerto 51820) que llega por eth3. } chain forward { type filter hook forward priority filter; policy drop; # TODO: aceptar lo establecido y descartar lo inválido (como en input). # TODO: de eth1 hacia eth3, y de eth2 hacia eth3: aceptar. # TODO: de eth1 hacia eth2: aceptar. # TODO: de eth3 hacia la DMZ (100.64.15.10), puertos 80 y 443: aceptar. # TODO: de eth3 hacia eth1: rechazar con icmp admin-prohibited. } chain output { type filter hook output priority filter; policy accept; } }