자체 관리 배포서버를 위한 Windows 방화벽 구성 netsh
이 페이지의 내용
Windows Server 시스템에서 netsh
프로그램은 Windows Firewall을 관리하기 위한 메서드를 제공합니다. 이러한 방화벽 규칙을 통해 관리자는 시스템에 연결할 수 있는 호스트를 제어하고 시스템에 연결할 수 있는 호스트를 제한하여 위험 노출을 제한할 수 있습니다.
이 문서 에서는 기본 Windows Firewall 구성을 간략하게 설명합니다. 이러한 접근 방식을 더 큰 규모의 네트워킹 조직 을 위한 점 으로 활용하세요. MongoDB 의 보안 관행 및 위험 관리 에 대한 자세한 개요는 보안을 참조하세요.
개요
Windows Firewall 규칙 유형에 따라 결정된 순서대로 규칙을 처리하고 다음 순서로 구문 분석됩니다.
Windows Service Hardening
Connection security rules
Authenticated Bypass Rules
Block Rules
Allow Rules
Default Rules
기본적으로 Windows Firewall의 정책은 모든 아웃바운드 연결을 허용하고 모든 들어오는 연결을 차단합니다.
모든 MongoDB 프로세스의 기본 포트를 고려할 때, 애플리케이션과 적합한 mongod.exe
및 mongos.exe
인스턴스 간에 필요한 통신만 허용하는 네트워킹 규칙을 구성해야 합니다.
이 문서에 설명된 구성 변경 사항은 명시적으로 허용되지 않는 모든 트래픽을 제거하는 기본 정책을 사용하여 특정 주소 및 특정 포트의 트래픽을 명시적으로 허용하는 규칙을 생성합니다.
netsh
명령줄 도구를 사용하거나 Windows 애플리케이션을 통해 Windows Firewall를 구성할 수 있습니다. Windows Server 2008에서 이 애플리케이션은 Administrative Tools의 Windows Firewall With Advanced Security입니다. 이전 버전의 Windows Server에서는 System and Security 제어판에서 Windows Firewall 애플리케이션에 액세스할 수 있습니다.
이 문서의 절차에서는 netsh
명령줄 도구를 사용합니다.
패턴
이 섹션에는 MongoDB deployment에 사용할 수 있도록 Windows Firewall을 구성하기 위한 여러 가지 패턴과 예시가 포함되어 있습니다. port
구성 설정을 사용하여 다른 포트를 구성한 경우 이에 따라 규칙을 수정해야 합니다.
인스턴스와 mongod.exe
주고받는 트래픽
이 패턴은 독립형 인스턴스 또는 복제본 세트의 일부로 실행되는 모든 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
인스턴스는 샤딩된 클러스터에 대한 쿼리 라우팅을 제공합니다. 클라이언트는 mongos.exe
인스턴스에 연결하며, 이 인스턴스는 클라이언트 관점에서 mongod.exe
인스턴스로 작동합니다. 차례로 mongos.exe
은 샤딩된 클러스터의 구성 요소인 전체 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
MongoDB 구성 서버와의 트래픽
구성 서버는 샤딩된 클러스터의 메타데이터를 저장하는 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 서버를 실행할 수도 있습니다. |
MongoDB 샤드 서버 간 트래픽
샤드 서버의 경우 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]
또한, 샤드는 다음 대상으로 나가는 연결을 만들 수 있어야 합니다.
모든
mongos.exe
인스턴스.구성 서버의 모든
mongod.exe
인스턴스.
다음과 유사한 규칙을 만들고 <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
인스턴스를 포함하여 클러스터의 모든 구성 요소에 도달할 수 있어야 합니다.
Windows 방화벽 구성 관리
이 섹션에는 netsh
을 관리하고 사용하기 위한 여러 가지 기본 연산이 포함되어 있습니다. GUI 프런트엔드를 사용하여 Windows Firewall를 managed할 수 있지만 netsh
에서 모든 핵심 기능에 액세스할 수 있습니다.
기본 MongoDB 포트에 대한 Windows 방화벽 규칙 삭제
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 방화벽 규칙 나열
모든 Windows Firewall 규칙의 목록을 다음과 같이 반환합니다.
netsh advfirewall firewall show rule name=all
Windows 방화벽 재설정
다음과 같이 Windows Firewall 규칙을 재설정합니다.
netsh advfirewall reset
Windows 방화벽 규칙 백업 및 복원
대규모 시스템의 관리를 간소화하기 위해 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 방화벽 규칙이 포함된 파일 경로로 바꿉니다.