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의 고가용성 디바이스로 포워딩 되어야 합니다.
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;
}
}