unifi gateway (UDM등등)에서의 local network segregation
안녕하세요 마르탱이 입니다.
요즘 unifi 계열 network 장비를 많이 쓰시는데요. cisco 계열이나 pfsense 등등에서 관리 편의로 많이 넘어오시는 것으로 생각됩니다. cisco에서는 inter vlan (network) traffic이 deny가 default인 반면 unifi에서는 inter vlan traffic이 allow로 되어 있습니다. 그래서 여러 vlan을 만들고서도 firewall 설정을 제대로 하지 않으면 network segregation이 안되어 있는 상태로 쓰는 경우가 많습니다. (와이프가 쓰는 vlan에서 우리의 NAS가 있는 vlan에 접근이 가능하다던지...) 그래서 unifi에서 network segregation을 설정 하는 방법을 알아보도록 하겠습니다.
이번 가이드에서는unifi OS 3.2.7, network 8.0.24 기준으로 말씀드리겠습니다. 이 버전이 아니면 ui가 다를 뿐 unifi router/switch 조합을 쓰시면 같은 룰로 적용 하시면 됩니다. 또 모든 local network (vlan)은 layer 2로 설정 되어 있다고 가정하겠습니다.
들어가기전에 LAN in, LAN out, LAN local firewall rule type에 대해 먼저 설명드리겠습니다. 요 개념이 없으면 어떤 타입을 써야 하는지 헷갈릴 수 있기 때문입니다. 일단 같은 네트워크 (vlan과 네트워크를 같은 의미로 쓰겠습니다) 안에서의 traffic은 네트워크 안에서 각 device의 MAC주소를 보고 traffic이 움직입니다. 이경우 서로간의 traffic을 막을수가 없다고 생각 하시면 됩니다. 같은 네트워크가 아닌 다른 네트워크로 정보가 갈때는 무조건 router에 물어보는데요 이때는 ip 주소를 reference 삼아 물어봅니다. 이 때 각 네트워크에서 라우터에게 물어볼 때 쓰는 타입이 LAN in (뭐 정확하진 않지만 우리 취미로 하는 사람들에게는 충분한...)이라고 생각 하시면 됩니다. 거의 모든 traffic regulation이 우리 용도에서는 90% 이상 로컬 네트워크에서 시작해서 라우터에게 물어보는 것이니 LAN in에 룰을 설정 하신다고 보면 됩니다.
LAN out은 teleport라던지 wireguard, openvpn 같은 애들이 들어오면서 라우터를 거칠때 traffic regulate할 때 씁니다. 매우 놀랍게도 vpn으로 접속 했을 시에도 unifi는 inter vlan traffice을 allow를 해 놨습니다. (이 부분 막는 방법은 다음 가이드에) Site magic vpn의 traffic은 LAN in으로 regulate합니다.
LAN local은 각 네트워크에서 router로 가는 traffic에 대한 룰 설정할 때 씁니다. (네트워크에서 router로의 접근제한을 건다던가)
그럼 network segregation에 대한 firewall rule 설정을 해 보겠습니다.
0. IP group 추가
설정의 profiles 메뉴의 IP Group에서 다음의 group을 추가 해 줍니다. Private Local Network 주소로 쓸 수 있는 모든 경우의 수 group입니다. 추가할 firewall rule은 이 주소간의 network traffic을 막는 역할을 합니다.
profile name: Local Network RFC1918
type: ipv4 address/subnet
address
192.168.0.0/16
172.16.0.0/12
10.0.0.0/8
1. Allow Established and Related traffic
이미 연결되어 있거나 관련된 network traffic은 항상 allow 하는 rule 입니다.
type: LAN in
name: Allow Established and Related
action: Accept
protocol: all (check on before predefined)
source type: port/IP group
address group: any
port group: any
MAC address: 빈칸
destination type: port/IP group
address group: any
port group: any
Advanced: manual
Match state: check on established and related
Match IPsec: Do not match
Logging: check
2. drop invalid state
invalid한 network traffic은 drop하는 룰입니다.
type: LAN in
Name: drop invalid state
action: Drop
protocol: all (check on before predefined)
source type: port/IP group
address group: any
port group: any
MAC address: 빈칸
destination type: port/IP group
address group: any
port group: any
Advanced: manual
Match state: check on invalid
Match IPsec: Do not match
Logging: check
3. Block inter vlan traffic
이 부분이 위에 RFC1918 profile을 사용하여 local network 간의 traffic을 block 하는 부분입니다. 비로서 local network segregation이 되는 부분입니다. default allow를 막는 부분이죠.
type: LAN in
Name: block inter vlan traffic
action: Drop
protocol: all (check on before predefined)
source type: port/IP group
address group: Local Network RFC1918
port group: any
MAC address: 빈칸
destination type: port/IP group
address group: Local Network RFC1918
port group: any
Advanced: auto
firewall rule은 순서가 중요하기 때문에 위의 1, 2, 3번 순서에 따라서 정렬 하셔야 합니다. 각 룰 앞에 있는 육점이를 누르시고 드래깅 하시면 순서를 조정 할 수 있습니다.
일단 이렇게 설정이 되면 local network 서로간의 통신이 안되기 시작합니다. 다른 네트워크에 디바이스를 ping해 보시면 됩니다.
이번 가이드에서 unifi에서 network를 나누는 방법을 알아봤습니다.
감사합니다.
RFC1918에 관해서 더 알아보실 분은 아래 링크에서.
https://www.getoutsidedoor.com/2021/03/30/rfc1918-%EC%A0%95%EB%A6%AC-address-allocation-for-private-internets/
이 기능이랑 위 설정이랑 다른건가요?
cmt alert