문서 메뉴

문서 홈애플리케이션 개발MongoDB 매뉴얼

MongoDB용 Windows netsh 방화벽 구성

이 페이지의 내용

  • 개요
  • 패턴
  • Windows 방화벽 구성 관리

Windows Server 시스템에서 netsh 프로그램은 Windows Firewall을 관리하기 위한 메서드를 제공합니다. 이러한 방화벽 규칙을 통해 관리자는 시스템에 연결할 수 있는 호스트를 제어하고 시스템에 연결할 수 있는 호스트를 제한하여 위험 노출을 제한할 수 있습니다.

이 문서에서는 기본 Windows Firewall 구성에 대해 간략하게 설명합니다. 이러한 접근 방식을 더 큰 규모의 네트워킹 조직을 위한 출발점으로 활용하세요. MongoDB의 보안 관행 및 위험 관리에 대한 자세한 개요는 보안을 참조하세요.

다음도 참조하세요.

Windows 방화벽 Microsoft의 설명서.

Windows Firewall 규칙 유형에 따라 결정된 순서대로 규칙을 처리하고 다음 순서로 구문 분석됩니다.

  1. Windows Service Hardening

  2. Connection security rules

  3. Authenticated Bypass Rules

  4. Block Rules

  5. Allow Rules

  6. Default Rules

기본적으로 Windows Firewall의 정책은 모든 아웃바운드 연결을 허용하고 모든 들어오는 연결을 차단합니다.

모든 MongoDB 프로세스의 기본 포트를 고려할 때, 애플리케이션과 적합한 mongod.exemongos.exe 인스턴스 간에 필요한 통신만 허용하는 네트워킹 규칙을 구성해야 합니다.

이 문서에 설명된 구성 변경 사항은 명시적으로 허용되지 않는 모든 트래픽을 차단하는 기본 정책을 사용하여 특정 주소 및 특정 포트의 트래픽을 명시적으로 허용하는 규칙을 생성합니다.

netsh 명령줄 도구를 사용하거나 Windows 애플리케이션을 통해 Windows Firewall를 구성할 수 있습니다. Windows Server 2008에서 이 애플리케이션은 Administrative ToolsWindows Firewall With Advanced Security입니다. 이전 버전의 Windows Server에서는 System and Security 제어판에서 Windows Firewall 애플리케이션에 액세스할 수 있습니다.

이 문서의 절차에서는 netsh 명령줄 도구를 사용합니다.

이 섹션에는 MongoDB deployment에 사용할 수 있도록 Windows Firewall을 구성하기 위한 여러 가지 패턴과 예제가 포함되어 있습니다. port 구성 설정을 사용하여 다른 포트를 구성한 경우 이에 따라 규칙을 수정해야 합니다.

이 패턴은 독립형 인스턴스 또는 복제본 세트의 일부로 실행되는 모든 mongod.exe 인스턴스에 적용할 수 있습니다. 이 패턴의 목표는 애플리케이션 서버에서 mongod.exe 인스턴스로의 트래픽을 명시적으로 허용하는 것입니다.

netsh advfirewall firewall add rule name="Open mongod port 27017" dir=in action=allow protocol=TCP localport=27017

이 규칙은 애플리케이션 서버가 mongod.exe 인스턴스에 연결할 수 있도록 하는 포트 27017에서 에서 들어오는 모든 트래픽을 허용합니다.

Windows Firewall 또한, 다음 예와 같이 특정 포트가 아닌 전체 애플리케이션에 대한 네트워크 액세스를 활성화할 수 있습니다.

netsh advfirewall firewall add rule name="Allowing mongod" dir=in action=allow program=" C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe"

다음 호출을 사용하여 mongos.exe 서버에 대한 모든 액세스를 허용할 수 있습니다.

netsh advfirewall firewall add rule name="Allowing mongos" dir=in action=allow program=" C:\Program Files\MongoDB\Server\3.4\bin\mongos.exe"

mongos.exe 인스턴스는 샤드 클러스터에 대한 쿼리 라우팅을 제공합니다. 클라이언트는 mongos.exe 인스턴스에 연결하며, 이 인스턴스는 클라이언트 관점에서 mongod.exe 인스턴스로 작동합니다. 차례로 mongos.exe은 cluster의 components인 모든 mongod.exe 인스턴스에 연결합니다.

복제본 세트의 구성원인 mongod.exe 인스턴스에서와 마찬가지로 이러한 인스턴스와의 트래픽을 허용하려면 동일한 Windows Firewall 명령을 사용합니다.

netsh advfirewall firewall add rule name="Open mongod shard port 27018" dir=in action=allow protocol=TCP localport=27018

구성 서버는 샤드 클러스터의 메타데이터를 저장하는 config 데이터베이스를 호스팅합니다. 각 프로덕션 cluster에는 mongod --configsvr 옵션을 사용하여 시작된 3개의 구성 서버가 있습니다. [1] 구성 서버가 포트 27019에서 연결을 수신 대기합니다. 결과적으로 다른 구성 서버에 연결하기 위해 포트 27019에서 수신 및 발신 연결을 허용하도록 구성 서버에 다음 Windows Firewall 규칙을 추가합니다.

netsh advfirewall firewall add rule name="Open mongod config svr port 27019" dir=in action=allow protocol=TCP localport=27019

또한, config 서버는 클러스터의 모든 mongos.exe 인스턴스 클러스터의 모든 mongod.exe 인스턴스에서 들어오는 연결을 허용해야 합니다. 다음과 유사한 규칙을 추가합니다:

netsh advfirewall firewall add rule name="Open mongod config svr inbound" dir=in action=allow protocol=TCP remoteip=<ip-address> localport=27019

<ip-address>mongos.exe 인스턴스 및 샤드 mongod.exe 인스턴스의 주소로 대체합니다.

[1] 또한 구성 파일에서 clusterRole 설정에 configsvr 값을 사용하여 config 서버를 실행할 수도 있습니다.

샤드 서버의 경우 mongod --shardsvr로 실행 [2] clusterRole 설정에 대한 shardsvr 값으로 실행할 때 기본 포트 번호가 27018이므로 각 샤드 간의 트래픽을 허용하도록 다음 Windows Firewall 규칙을 구성해야 합니다.

netsh advfirewall firewall add rule name="Open mongod shardsvr inbound" dir=in action=allow protocol=TCP remoteip=<ip-address> localport=27018
netsh advfirewall firewall add rule name="Open mongod shardsvr outbound" dir=out action=allow protocol=TCP remoteip=<ip-address> localport=27018

<ip-address> 사양을 모든 mongod.exe 인스턴스의 IP 주소로 대체합니다. 이를 통해 다음에 대한 구성 복제본 세트 멤버를 포함한 모든 샤드 간에 들어오고 나가는 트래픽을 허용합니다.

  • 샤드의 복제본 세트에 있는 모든 mongod.exe 인스턴스.

  • 다른 샤드의 모든 mongod.exe 인스턴스. [3]

또한, 샤드는 다음 대상으로 나가는 연결을 만들 수 있어야 합니다.

다음과 유사한 규칙을 만들고 <ip-address> 을 config 서버 및 mongos.exe 인스턴스의 주소로 바꿉니다.

netsh advfirewall firewall add rule name="Open mongod config svr outbound" dir=out action=allow protocol=TCP remoteip=<ip-address> localport=27018
[2] 구성 파일에서 clusterRole 설정에 shardsvr 값을 사용하여 샤드 서버 옵션을 지정할 수도 있습니다. 샤드 멤버는 기본 포트를 사용하는 기존 복제본 세트인 경우도 많습니다.
[3] cluster의 모든 샤드는 청크 및 밸런싱 연산을 원활하게 수행하기 위해 다른 모든 샤드와 통신할 수 있어야 합니다.

mongostat 진단 도구는 --discover 와 함께 실행할 때 config 서버, 샤드 서버 및 mongos.exe 인스턴스를 포함하여 클러스터의 모든 구성 요소에 연결할 수 있어야 합니다.

버전 3.6에서 변경됨: MongoDB 3.6은 더 이상 사용되지 않는 HTTP 인터페이스와 REST API를 MongoDB에서 제거합니다.

이 섹션에는 netsh을 관리하고 사용하기 위한 여러 가지 기본 연산이 포함되어 있습니다. GUI 프런트엔드를 사용하여 Windows Firewall를 managed할 수 있지만 netsh에서 모든 핵심 기능에 액세스할 수 있습니다.

mongod.exe 트래픽을 허용하는 방화벽 규칙을 삭제하는 방법은 다음과 같습니다.

netsh advfirewall firewall delete rule name="Open mongod port 27017" protocol=tcp localport=27017
netsh advfirewall firewall delete rule name="Open mongod shard port 27018" protocol=tcp localport=27018

모든 Windows Firewall 규칙의 목록을 다음과 같이 반환합니다.

netsh advfirewall firewall show rule name=all

다음과 같이 Windows Firewall 규칙을 재설정합니다.

netsh advfirewall reset

대규모 시스템의 관리를 간소화하기 위해 Windows 방화벽 규칙을 내보내거나 가져올 수 있습니다.

  • 모든 Windows 방화벽 규칙을 내보내려면 다음 명령을 실행합니다.

    netsh advfirewall export "C:\temp\MongoDBfw.wfw"

    "C:\temp\MongoDBfw.wfw"를 원하는 경로로 바꿉니다.

  • Windows 방화벽 규칙을 가져오려면 다음 명령을 실행합니다.

    netsh advfirewall import "C:\temp\MongoDBfw.wfw"

    "C:\temp\MongoDBfw.wfw"를 Windows 방화벽 규칙이 포함된 파일 경로로 바꿉니다.

← Linux iptables 방화벽을 MongoDB에 구성