System/System & Service

OPNsense로 방화벽 구축하기 [2편]

마늘김 2025. 2. 25. 00:09

 앞선 포스팅 OPNsense로 방화벽 구축하기 [1편]에서 이어집니다. 1편을 먼저 읽어보시길 추천드립니다.

 

OPNsense로 방화벽 구축하기 [1편]

구축 배경 홈 랩을 확장하면서 가정용 Wi-Fi 네트워크와 홉 랩 인프라용 네트워크 간의 분리 및 격리, 라우팅 및 접근 제어 그리고 그 외 서비스에 필요한 기능 구현이 필요했습니다. 그래서 네트

tech-recipe.tistory.com


 지난 포스팅에서는 OPNsense를 사용하여 방화벽을 구축해 보았습니다. 이번 포스팅에서는 LAN 인터페이스의 초기 방화벽 규칙의 내용과, 새로운 인터페이스 생성과 방화벽 규칙을 적용하는 방법에 대해서 알아보겠습니다. 

 

LAN 인터페이스 방화벽 규칙 살펴보기

 OPNsense 최초 구축 시 생성되는 기본 LAN 인터페이스에 대해서 알아보겠습니다. 우선 좌측 내비게이션 메뉴에서 Interfaces를 클릭합니다. 그러면 [LAN]이라는 이름의 인터페이스를 볼 수 있습니다. 우선 이 인터페이스 정보를 한번 살펴보도록 하죠.

LAN 인터페이스에 대한 설정 - 1
LAN 인터페이스에 대한 설정 - 2

 우측 상단에 full help 토글을 활성화 하면 각 메뉴의 상세 설명을 확인할 수 있습니다. LAN 인터페이스는 생성될 때 기본적으로 IP주소를 192.168.1.1로 하고 있으며 Prefix는 24입니다. 앞선 포스팅에서 Host 1을 이 IP 대역에 위치시켜(192.168.1.2) 웹 UI를 통해 방화벽에 접속, 관리를 할 수 있는 기본이 되는 인터페이스입니다.

 본격적으로 방화벽 규칙을 살펴보도록 하겠습니다. 역시 왼쪽 내비게이션 메뉴에서 찾을 수 있습니다. Firewall > Rules > LAN으로 이동합니다. 그럼 아래와 같은 화면을 볼 수 있습니다.

LAN 인터페이스에 기본으로 적용된 Firewall Rule

 LAN 인터페이스의 경우에는 기본적으로 IPv4/IPv6 주소의 모든 소스에 대해서 모든 목적지로의 트래픽이 허용되어 있습니다. 이런 이유는 LAN 인터페이스가 기본이 되는 인터페이스인 데다가, Web UI 접속을 위한 인터페이스이기 때문이죠. 어쨌든, 화면에 표시된 IPv4 규칙을 살펴보면, 맨 왼쪽 녹색 삼각형은 현재 규칙이 활성화되어 있다는 뜻이고 왼쪽에서 오른쪽으로 향한 화살표는 방화벽으로 들어오는 방향의 트래픽에 대한 규칙이라는 뜻입니다. 그 외에 Port나 Destination에 '*' 표시는 'Any'의 의미로 모든 것을 의미한다고 이해하면 될 것 같습니다. 방화벽 규칙에 대한 편집은 오른쪽에 위치한 연필모양을 눌러주면 됩니다.

방화벽 규칙 설정 화면 - 1
방화벽 규칙 설정 화면 - 2

 그러면 위의 사진에서 보시는 바와 같이 구체적인 설정을 진행할 수 있는 인터페이스를 확인할 수 있습니다. 이는 대부분의 방화벽 설정과 거의 흡사하다고 보면 될것 같습니다.

 

새로운 인터페이스 할당

네트워크 토폴로지

 다시 한번 우리가 처음에 생각했던 네트워크 토폴로지를 보면 OPNsense 방화벽에 또다른 단말인 Host2가 있습니다. 이 Host2는 완전히 다른 네트워크인 192.168.11.0/24에 위치해 있다고 해 봅시다. 그리고 OPNsense의 인터페이스가 해당 네트워크의 Gateway 역할을 수행하도록 해 봅시다.

 우선 OPNsense의 Web UI에서 해당 인터페이스를 할당하고, 활성화 하는 작업이 필요합니다. 왼쪽 내비게이션 메뉴에서 Interface > Assignments로 이동합니다. 그러면 아래와 같은 화면을 볼 수 있습니다. 현재 이 방화벽의 인터페이스 중 아직 할당되지 않은 유휴 인터페이스가 있다면 아래와 같이 선택하여 할당할 수 있습니다.

유휴 인터페이스를 할당

 앞서 방화벽을 생성할 때 추가로 생성한 네트워크 인터페이스인 vmx2를 방화벽에 할당하겠습니다. Description에 설명을 입력하면 해당 설명으로 Interface 이름을 지정할 수 있습니다. 이 포스팅에서는 Internal로 설정하겠습니다. Add 버튼을 눌러 인터페이스를 할당합니다.

새로 할당된 Internal 인터페이스

 위와 같이 새로 할당된 인터페이스를 확인할 수 있습니다. 추가로 오른쪽에 휴지통을 누르면 해당 인터페이스의 할당을 해제할 수 있습니다. Save 버튼을 눌러 인터페이스 할당을 저장해 줍니다. 그러면 오른쪽 네비게이션의 Interface 메뉴에 [Internal] 인터페이스가 생성된 것을 볼 수 있습니다. 이를 클릭하여 인터페이스 설정을 해 봅시다.

새로 할당된 Internal 인터페이스 설정 화면

 먼저 최상단의 Enable 체크박스를 클릭하여 활성화 시켜주면 해당 인터페이스가 활성화됩니다. 마치 Cisco 스위치에서 Port를 Up 하는 것과 같은 거라 보시면 되겠습니다. 이 인터페이스를 실수로 삭제하는 것을 막고 싶다면 아래 Lock 체크박스를 활성화해 줍니다. 그러면 앞서 보았던 Assiginments 화면의 인터페이스 목록 오른쪽에 보였던 휴지통 모양이 나타나지 않으면서 인터페이스를 삭제할 수 없게 됩니다.

인터페이스의 IP를 설정

 화면을 아래로 드래그하면 해당 인터페이스에 설정을 할 수 있습니다. 우선 상단의 Block private Networks는 말그대로 사설 네트워크 대역에 대한 접근을 막는 옵션으로, 현재 우리는 이 인터페이스를 사설 네트워크로 사용할 것이기 때문에 체크할 필요는 없습니다. 참고로 WAN 인터페이스의 경우 보안상의 이유로 사설 네트워크에서 접근하는 것을 막아두고 있습니다.

 아래에 보면 해당 인터페이스의 IP 주소 타입을 선택할 수 있는데 우리는 IPv4의 Static 형식을 사용하도록 하겠습니다. 그 아래에는 MAC 주소 설정이나 MTU 설정등이 있는데 이는 따로 특별한 값을 입력하지 않고 그냥 넘어가도록 하겠습니다. 더 아래쪽으로 화면을 드래그하면 수동으로 해당 인터페이스의 IP 주소를 설정할 수 있는 화면이 나옵니다.

Internal 인터페이스의 주소를 설정

 앞서 이야기한 것 처럼 192.168.11.0/24 대역의 네트워크를 사용할 것이며, 이 인터페이스의 주소는 해당 네트워크의 게이트웨이 주소가 될 것입니다. 우리는 앞선 LAN의 인터페이스 규칙과 동일하게 '1'번을 IP 주소로 사용하겠습니다. 192.168.11.1을 입력해 주고, Prefix를 24로 설정합니다. 그리고 Save를 클릭하여 설정을 저장해 줍니다. 그리고 우측 상단에 나타나는 Apply changes 버튼을 눌러서 저장한 설정을 적용해 줍니다.

설정한 저장을 적용하여 인터페이스를 활성화
Internal 인터페이스로 Ping 테스트

 이제 Host1(192.168.1.2)에서 Internal 인터페이스로 Ping 테스트를 해 봅시다. 해당 인터페이스가 잘 응답하는 것을 통해, 인터페이스 할당이 잘 이루어 진것을 확인할 수 있습니다.

 

Host2를 위한 방화벽 규칙 설정하기

 우선 Host2의 IP 주소를 192.168.11.2로, Gateway를 192.168.11.1로 설정합니다. 그리고 터미널을 실행해서 192.168.11.1로 Ping 테스트를 해 보겠습니다.

Ping 테스트 실패

 그런데 이상합니다. 분명 같은 네트워크에 놓여있는 단말인데 자신의 Gateway 주소로 Ping 테스트가 실패합니다. 사실 그 이유는 새로 할당한 Internal 인터페이스의 방화벽 규칙 설정에 있습니다. 다시 Host1로 돌아와서 OPNsense의 Web UI로 접속합니다. Firewall > Rules > Internal로 이동합니다.

아무런 규칙이 설정되어 있지 않은 Internal 인터페이스

 화면에서 볼 수 있듯, 사용자가 Pass 규칙을 따로 설정하지 않으면 해당 인터페이스로의 모든 트래픽에 대해서 차단을 수행합니다. 이는 방화벽의 기본적인 작동 방식으로 특별한 규칙을 설정하지 않으면 기본적으로 All deny로 설정되어 있으며 그래서 앞서 Host2에서의 Ping 테스트가 실패한 것입니다. 그럼 먼저 모든 트래픽을 통과하는 규칙을 만들어 봅시다. 오른쪽의 빨간색 '+'을 클릭합니다. 그러면 기본적으로 모든 출발지에 대해서 모든 목적지를 가진 방화벽으로 향하는 트래픽(in 트래픽)에 대해서 허용하는 규칙을 확인할 수 있습니다.

Allowed any source any destination 규칙

 

새로운 규칙이 적용이 된 모습

 우선 이 규칙을 적용하기 위해 아래로 드래그하여 Save 버튼을 클릭한 후 Apply changes 버튼을 통해 규칙을 적용합니다. 이제 다시 Host2로 돌아가 Ping 테스트를 수행해 봅시다. 자신의 게이트웨이인 192.168.11.1로 Ping을 날려봅니다. 또한 google.com으로 Ping 테스트를 수행해 봅시다.

내부 및 외부 Ping 테스트

 둘다 아주 잘 작동하는 것을 확인할 수 있습니다. 게이트웨이 인터페이스인 Internal 인터페이스의 방화벽 규칙은, 인터페이스가 처음 생성되면 아무것도 적용되어 있지 않아 모든 트래픽을 거부하는 상태입니다. 방금과 같은 모든 트래픽을 허용하는 규칙을 적용하게 되면 Gateway 뿐만 아니라 외부와의 통신도 잘 되는 것을 확인할 수 있습니다.


 그러나, 이렇게 방화벽 규칙을 사용하면 사실상 방화벽을 사용하는 의미가 전혀 없게 됩니다. 모든 트래픽을 아무런 조건 없이 허용하기 때문입니다. 따라서 다음 포스팅에는 조금 더 복잡한, 혹은 고급의 방화벽 규칙 설정에 대해서 포스팅 해 보도록 하겠습니다.

▼OPNsense로 방화벽 구축하기 [2편]
 

OPNsense로 방화벽 구축하기 [3편]

지난 포스팅 OPNsense로 방화벽 구축하기 [2편]에서 이어집니다. 2편을 먼저 읽어보시길 추천드립니다. OPNsense로 방화벽 구축하기 [2편]앞선 포스팅 OPNsense로 방화벽 구축하기 [1편]에서 이어집니다.

tech-recipe.tistory.com