RSS
보안

VLAN만으로 망이 격리될까? 라우팅과 방화벽 규칙의 역할

작성자
듀오랩스 대표·6분 읽기

업무용 PC는 VLAN 10, 손님용 Wi-Fi는 VLAN 20으로 나눴다고 해 보겠습니다. 손님 Wi-Fi에 붙은 노트북에서 업무망 프린터 주소로 ping을 보냅니다. 많은 경우 응답이 돌아옵니다.

설정이 틀린 것은 아닙니다. VLAN은 제 일을 했고, 응답을 돌려보낸 것은 VLAN이 아니라 그 위에 있는 라우터입니다. VLAN을 나누면 서로 통신하지 못한다는 이해가 흔한데, 실제로 VLAN이 끊는 것은 생각보다 좁습니다.

VLAN이 실제로 나누는 것은 브로드캐스트 범위

VLAN의 기준은 IEEE 802.1Q입니다. 스위치는 이더넷 프레임에 VLAN 번호(태그)를 붙이고, 같은 번호끼리만 프레임을 넘깁니다. 그래서 VLAN 10의 장비가 보내는 브로드캐스트(ARP 요청 같은 것)는 VLAN 20에 닿지 않습니다. 같은 스위치에 꽂혀 있어도 2계층에서는 서로 다른 스위치에 있는 것처럼 보입니다.

여기까지가 VLAN이 약속하는 전부입니다. 802.1Q는 프레임을 어느 범위까지 넘길지를 정할 뿐, 서로 다른 VLAN 사이의 IP 통신을 막으라고 정하지 않습니다. 그 결정은 다음 계층의 몫입니다.

서로 다른 VLAN을 다시 잇는 기본 게이트웨이

VLAN 10의 PC가 10.0.20.5로 패킷을 보내면, 같은 VLAN에 그 주소가 없으므로 기본 게이트웨이로 넘깁니다. 게이트웨이는 보통 라우터이고, 라우터는 VLAN마다 인터페이스를 하나씩 갖고 있습니다. 목적지가 자기가 가진 다른 인터페이스의 대역이면 라우터는 그쪽으로 넘겨 줍니다. 이것을 VLAN 간 라우팅이라고 부르고, 라우터 입장에서는 가장 기본적인 동작입니다.

그래서 VLAN만 나누고 아무 규칙도 걸지 않으면, 두 망은 2계층에서만 갈라지고 3계층에서는 그대로 이어집니다. 브로드캐스트가 줄어 망이 조용해지는 효과는 있지만, 한쪽에서 다른 쪽의 서버에 접속하는 것은 막지 못합니다.

격리를 만드는 것은 VLAN 사이의 허용 규칙

망을 실제로 떼어 놓는 것은 라우터나 방화벽에 거는 규칙입니다. 손님 VLAN에서 출발한 패킷이 업무 VLAN 대역으로 향하면 버린다는 식의 규칙입니다. 소형 라우터 설정 화면의 「손님 네트워크에서 인트라넷 접근 허용」 같은 스위치가 하는 일이 바로 이것입니다.

규칙은 막을 것을 고르기보다 허용할 것만 적는 쪽이 안전합니다. NIST SP 800-41 Rev. 1은 방화벽 정책에서 명시적으로 허용하지 않은 트래픽은 들어오는 것이든 나가는 것이든 막으라고 권합니다. VLAN 사이도 마찬가지입니다. 「손님망 → 업무망 차단」 한 줄보다, VLAN마다 닿아도 되는 곳을 표로 적고 나머지를 막는 편이 새 VLAN을 더할 때 덜 빠뜨립니다.

출발 VLAN 허용 나머지
업무 인터넷, 서버 VLAN의 업무용 포트 차단
서버 인터넷(업데이트·외부 API), 백업 저장소 차단
손님 인터넷 차단
관리 모든 VLAN의 장비 관리 포트 차단

CISA의 망 분리 안내도 VLAN을 라우터 ACL, 상태 기반 방화벽, DMZ와 함께 쓰는 층 가운데 하나로 둡니다. VLAN 하나로 분리가 끝난다고 보지 않는다는 뜻입니다.

모든 VLAN에서 보이는 라우터 관리 화면

규칙을 걸어도 자주 남는 구멍이 하나 있습니다. 라우터 자신입니다. VLAN마다 게이트웨이 주소가 있고, 그 주소는 라우터의 인터페이스입니다. 라우터의 관리 화면(웹·SSH)이 모든 인터페이스에서 열려 있으면, 손님 VLAN의 노트북도 자기 게이트웨이 주소로 라우터 관리 화면에 닿습니다.

VLAN 사이의 규칙은 라우터를 지나가는 트래픽에 걸리고, 라우터에게 직접 오는 트래픽은 다른 규칙이 맡는 장비가 많습니다. 그래서 「VLAN 간 차단」을 켜도 관리 화면은 그대로 열려 있을 수 있습니다. 관리 화면은 관리 VLAN에서만 열리게 따로 묶어야 합니다.

두 망에 함께 걸친 장비가 만드는 우회로

라우터 규칙을 완벽하게 걸어도, 두 VLAN에 동시에 연결된 장비가 있으면 그 장비가 다리가 됩니다. 랜카드가 두 개인 서버, 유선은 업무망에 무선은 손님망에 붙은 노트북, 가상 머신을 여러 VLAN에 연결해 둔 호스트가 그런 경우입니다. 그 장비가 뚫리면 공격자는 라우터를 거치지 않고 다른 VLAN으로 넘어갑니다.

스위치 설정 실수로 VLAN 경계를 건너뛰는 공격(VLAN hopping)도 알려져 있습니다. 장비 포트를 트렁크로 자동 협상하게 두거나, 트렁크의 기본(native) VLAN을 실제 장비가 쓰는 VLAN과 같게 두면 생깁니다. 쓰지 않는 포트는 끄고, 장비 포트는 액세스 포트로 고정하고, native VLAN은 아무도 쓰지 않는 번호로 바꾸는 것이 일반적인 대책입니다.

나눈 뒤에 해 보는 확인

설정 화면을 다시 읽는 것으로는 부족합니다. 각 VLAN에 장비 하나를 붙이고, 막혀야 하는 곳에 실제로 접속해 봅니다. 다른 VLAN의 서버 포트, 다른 VLAN의 게이트웨이 주소, 자기 게이트웨이의 관리 화면이 대상입니다. 이 셋이 전부 막혀야 분리가 된 것이고, 하나라도 열리면 그 VLAN은 이름만 따로입니다.

저라면 이 확인을 VLAN을 만들 때 한 번 하고 끝내지 않겠습니다. 규칙을 고치거나 장비를 바꿀 때마다 같은 시험을 다시 돌리는 편이 낫습니다. 분리가 깨지는 순간은 대개 처음 만들 때가 아니라 나중에 무언가를 더할 때입니다.

장비마다 다른 기본값

여기서부터는 장비마다 다릅니다. VLAN을 만들면 VLAN 사이를 기본으로 막아 주는 장비가 있고, 기본으로 열어 두고 규칙을 따로 걸게 하는 장비가 있습니다. 같은 제조사라도 모델과 펌웨어에 따라 VLAN 기능 자체가 없거나, 손님 Wi-Fi만 분리하고 유선 포트는 못 나누는 경우도 있습니다. 설정 이름만 보고 판단하지 말고, 위의 확인으로 실제 동작을 보는 것이 가장 확실합니다.

마지막 수정:

공유하실 때는 출처(Duolabs)와 원문 주소를 표시해 주세요.