1. IPv4 정책

a) 내부 네트워크 및 DMZ 네트워크에서 외부 네트워크로 향하는 트래픽은 허용되어야 합니다.

b) 내부 네트워크에서 DMZ 네트워크로 향하는 트래픽은 허용되어야 합니다.

c) 외부 네트워크에서 FW 디바이스의 VPN(51820/udp) 서비스에 접근할 수 있도록 합니다.

d) mail 디바이스는 int-srv 디바이스의 LDAP(389/tcp) 서비스에 접근할 수 있도록 합니다.

e) VPN에 연결된 디바이스는 내부 네트워크 및 DMZ 네트워크로 접근할 수 있도록 합니다.

f) 명시된 트래픽 외에 모든 트래픽을 기본적으로 차단합니다.

g) 외부 네트워크로 향하는 모든 트래픽은 모두 Masquerade NAT 처리되어 주소 변환되어야 합니다.

h) 외부 네트워크 인터페이스로 유입되는 HTTP(80/tcp), HTTPS(443/tcp) 및 DNS(53/udp, 53/tcp) 트래픽은 DMZ의 고가용성 디바이스로 포워딩 되어야 합니다.

  1. IPv6 정책

a) 내부 네트워크 및 DMZ 네트워크에서 외부 네트워크로 향하는 트래픽은 허용되어야 합니다.

b) 내부 네트워크에서 DMZ 네트워크로 향하는 트래픽은 허용되어야 합니다.

c) 외부 네트워크에서 DMZ 네트워크의 고가용성 디바이스로 향하는 HTTP(80/tcp), HTTPS(443/tcp) 및 DNS(53/udp, 53/tcp) 트래픽은 허용되어야 합니다.

d) VPN에 연결된 디바이스는 내부 네트워크 및 DMZ 네트워크로 접근할 수 있도록 합니다.

e) 명시된 트래픽 외에 모든 트래픽을 기본적으로 차단합니다.

vi /etc/nftables.conf

### vi ###
table inet filter {
	chain input {
		type filter hook input priority filter; policy drop;
		**ct state established,related accept**
		iifname { "lo", "ens37", "ens38", "wg0" } accept
		iifname "ens33" udp dport 51820 accept
	}
	chain forward {
		type filter hook forward priority filter; policy drop;
		**ct state established,related accept**
		iifname { "ens37", "wg0" } accept
		iifname "ens38" oifname "ens33" accept
		iifname "ens33" oifname "ens38" tcp dport { 53, 80, 443 } accept
		iifname "ens33" oifname "ens38" udp dport 53 accept
		ip saddr 10.1.20.10 ip daddr 10.1.10.10 tcp dport 389 accept
	}
	chain output {
		type filter hook output priority filter; policy accept;
	}
}

table ip nat {
	chain prerouting {
		type nat hook prerouting priority dstnat;
		iifname "ens33" tcp dport { 80, 443, 53 } dnat to 10.1.20.20
		iifname "ens33" udp dport 53 dnat to 10.1.20.20
		iifname { "ens37", "wg0" } tcp dport 80 redirect to 8080
	}
	chain postrouting {
		type nat hook postrouting priority srcnat;
		oifname "ens33" masquerade
	}
}

table ip6 nat {
	chain prerouting {
		type nat hook prerouting priority dstnat;
		iifname { "ens37", "wg0" } tcp dport 80 redirect to 8080
	}
}
### vi ###

systemctl restart nftables.service

솔루션 ver.

table ip nat {
    chain prerouting {
        type nat hook prerouting priority dstnat;
        iif "ens33" tcp dport { 80, 443, 53 } dnat to 10.1.20.20
        iif "ens33" udp dport 53 dnat to 10.1.20.20
        iifname { "ens34", "wg0" } tcp dport 80 redirect to 8080
    }
    chain postrouting {
        type nat hook postrouting priority srcnat;
        oifname "ens33" masquerade
    }
}

table ip6 nat {
    chain prerouting {
        type nat hook prerouting priority dstnat;
        iifname { "ens34", "wg0" } tcp dport 80 redirect to 8080
    }
}

table inet filter {
        chain input {
                type filter hook input priority filter; policy drop;
                ct state established,related accept
                iifname { "lo", "ens34", "ens35", "wg0" } accept
                iifname "ens33" udp dport 51820 accept
        }
        chain forward {
                type filter hook forward priority filter; policy drop;
                ct state established,related accept
                iifname { "ens34", "wg0" } accept
                iifname "ens35" oifname "ens33" accept
                iifname "ens33" oifname "ens35" tcp dport { 53, 80, 443 } accept
                iifname "ens33" oifname "ens35" udp dport 53 accept
                ip saddr 10.1.20.10 ip daddr 10.1.10.10 tcp dport 389 accept
        }
        chain output {
                type filter hook output priority filter; policy accept;
        }
}