
Ubuntu 18.04에서 MongoDB에 대한 원격 액세스 구성 방법
이 강좌의 초기 버전은 Melissa Anderson으로 작성되었다.
MongoDB은 몽고라고도 불리며 현대 웹 응용 프로그램에서 자주 사용하는 소스 문서 데이터베이스이다.기본적으로 설치되어 있는 동일한 서버에서만 연결할 수 있습니다.MongoDB를 원격으로 관리하거나 별도의 응용 프로그램 서버에 연결하려면 기본 설정을 변경해야 합니다.
이 강좌에서는 신뢰할 수 있는 원격 컴퓨터에서 안전하게 액세스할 수 있도록 MongoDB 설치를 구성합니다.이를 위해서는 원격 컴퓨터가 MongoDB가 연결 중인 포트에 액세스하고 IP 바인딩 설정을 변경하기 위해 구성 파일을 업데이트할 수 있도록 방화벽 규칙을 업데이트해야 합니다.그리고 마지막 단계로 원격 컴퓨터가 데이터베이스에 성공적으로 연결될 수 있는지 테스트합니다.
이 강좌를 완성하려면 다음이 필요합니다.은 Ubuntu 18.04를 실행하는 서버입니다.이 서버에는 루트가 아닌 사용자 관리 및 UFW가 구성된 방화벽이 있어야 합니다.우리의 initial server setup guide for Ubuntu 18.04에 따라 설정합니다. 서버에 MongoDB가 설치되어 있습니다.이 강좌는 MongoDB 4.4를 설치하거나 버전을 업데이트했다고 가정합니다.이 버전은 How To Install MongoDB on Ubuntu 18.04의 튜토리얼에 따라 설치할 수 있습니다. 두 번째 컴퓨터로 MongoDB 인스턴스에 액세스할 수 있습니다.간단하게 말하자면, 이 강좌는 이 기계가 다른 Ubuntu 18.04 서버이며, 비root 관리 사용자와 initial server setup guide for Ubuntu 18.04에 따라 설정된 UFW 방화벽이 있다고 가정한다.그러나 1단계와 2단계는 데이터베이스 서버에서 원격 연결을 사용하는 실제 과정을 묘사하고 원격 컴퓨터가 어떤 운영체제를 실행하든지 모두 작용할 것이다. 마지막으로 이 강좌를 완성할 필요는 없지만 데이터베이스에 사용자 계정을 관리하고 인증을 활성화함으로써 MongoDB 설치를 보호하는 것을 강력히 권장합니다.이를 위해, 우리의 강좌 How To Secure MongoDB on Ubuntu 18.04에 따라 조작해 주십시오.
필수 초기 서버 설치 강좌와 enabled a UFW firewall on your server을 따랐다면 MongoDB 설치는 인터넷에서 접근할 수 없습니다.MongoDB를 같은 서버에서 실행되는 응용 프로그램과 함께 로컬에서만 사용하려는 경우 권장되는 보안 설정입니다.그러나 원격 위치에서 MongoDB 서버에 연결하려면 새 UFW 규칙을 추가하여 데이터베이스에서 탐지 중인 포트에 대한 전송 연결을 허용해야 합니다.
우선
다음 명령은
다음 명령을 실행하여
참고: 이전 명령의 출력에 MongoDB 설치가 기본 포트가 아닌 포트를 탐색하는 것으로 표시되면 이 명령에서
그런 다음 원격 시스템에서 액세스할 수 있도록 MongoDB를 서버의 공용 IP 주소로 바인딩합니다.
포트가 열려 있어도 MongoDB는 현재 로컬 루프백 네트워크 인터페이스
원격 연결을 허용하려면 MongoDB 구성 파일
기본 텍스트 편집기에서 MongoDB 구성 파일을 엽니다.다음 예제에서는
/etc/mongod.형태
/etc/mongod.형태
그런 다음 MongoDB를 다시 시작하여 변경 사항을 적용합니다.
이제 MongoDB 설치를 공유 가능한 라우팅 IP 주소에서 유래한 연결을 탐지하도록 구성하고 원격 컴퓨터가 서버 방화벽을 통해 Mongo 기본 포트에 액세스할 수 있는 권한을 부여하여 원격 컴퓨터가 연결할 수 있는지 테스트할 수 있습니다.
참고: 필수 섹션에서 설명하는 바와 같이 이 강좌는 원격 컴퓨터가 Ubuntu 18.04를 실행하는 다른 서버라고 가정합니다.원격 컴퓨터가 어떤 운영체제를 실행하든지 간에 1단계와 2단계에서 개술한 원격 연결 활성화 과정은 모두 유효해야 하지만, 이 단계에서 기술한 테스트 방법은 모든 운영체제에서 통용되지 않는다.
신뢰할 수 있는 원격 서버가 MongoDB에 연결될 수 있는지 테스트하는 방법 중 하나는
먼저 SSH를 사용하여 신뢰할 수 있는 서버에 로그인합니다.
신뢰할 수 있는 원격 서버에서 다음
다음과 같이 connection string URI을 사용하는 접속 방식입니다.
이로써 MongoDB 서버가 신뢰할 수 있는 서버에서 연결할 수 있음을 확인했습니다.
이제 원격 서버에서 MongoDB 설치에 액세스할 수 있습니다.신뢰할 수 있는 서버에서 Mongo 데이터베이스를 원격으로 관리할 수 있습니다.또는 신뢰할 수 있는 서버에서 실행되고 데이터베이스를 원격으로 사용할 수 있도록 프로그램을 설정할 수 있습니다.
관리 사용자를 구성하고 인증을 설정하지 않은 경우 원격 서버에 액세스할 수 있는 모든 사용자가 MongoDB 설치에 액세스할 수 있습니다.만약 당신이 아직 이렇게 하지 않았다면, 우리는 당신이 우리의 지침에 따라 How To Secure MongoDB on Ubuntu 18.04에 관리 사용자를 추가하고 더욱 잠그는 것을 강력히 건의합니다.
소개
MongoDB은 몽고라고도 불리며 현대 웹 응용 프로그램에서 자주 사용하는 소스 문서 데이터베이스이다.기본적으로 설치되어 있는 동일한 서버에서만 연결할 수 있습니다.MongoDB를 원격으로 관리하거나 별도의 응용 프로그램 서버에 연결하려면 기본 설정을 변경해야 합니다.
이 강좌에서는 신뢰할 수 있는 원격 컴퓨터에서 안전하게 액세스할 수 있도록 MongoDB 설치를 구성합니다.이를 위해서는 원격 컴퓨터가 MongoDB가 연결 중인 포트에 액세스하고 IP 바인딩 설정을 변경하기 위해 구성 파일을 업데이트할 수 있도록 방화벽 규칙을 업데이트해야 합니다.그리고 마지막 단계로 원격 컴퓨터가 데이터베이스에 성공적으로 연결될 수 있는지 테스트합니다.
선결 조건
이 강좌를 완성하려면 다음이 필요합니다.
1단계 - 방화벽 조정
필수 초기 서버 설치 강좌와 enabled a UFW firewall on your server을 따랐다면 MongoDB 설치는 인터넷에서 접근할 수 없습니다.MongoDB를 같은 서버에서 실행되는 응용 프로그램과 함께 로컬에서만 사용하려는 경우 권장되는 보안 설정입니다.그러나 원격 위치에서 MongoDB 서버에 연결하려면 새 UFW 규칙을 추가하여 데이터베이스에서 탐지 중인 포트에 대한 전송 연결을 허용해야 합니다.
우선
lsof
명령을 사용하여 MongoDB가 수신 중인 포트를 설치하는지 확인합니다.이 명령은 일반적으로 시스템에서 열린 모든 파일의 목록을 포함하지만, -i
옵션과 결합하여 사용할 때, 네트워크와 관련된 파일이나 데이터 흐름만 표시합니다.다음 명령은
lsof -i
에서 생성된 출력을 grep
명령으로 다시 지정합니다. 이 명령은 mongo
이라는 문자열을 검색합니다.- sudo lsof -i | grep mongo
이 예제 출력은 mongod
프로세스가 기본 포트 27017
에서 연결을 탐지하고 있음을 보여 줍니다.Output. . .
mongod 82221 mongodb 11u IPv4 913411 0t0 TCP localhost:27017 (LISTEN)
. . .
대부분의 경우 신뢰할 수 있는 일부 위치에서만 MongoDB를 액세스할 수 있습니다. 예를 들어 위탁 관리 응용 프로그램의 다른 서버만 액세스할 수 있습니다.이를 구성하는 방법 중 하나는 MongoDB 서버에서 다음 명령을 실행하는 것입니다. 이것은 MongoDB 기본 포트에 대한 접근을 열고 다른 신뢰할 수 있는 서버의 IP 주소만 명확하게 허용합니다.다음 명령을 실행하여
trusted_server_ip
을 MongoDB 인스턴스에 액세스하는 신뢰할 수 있는 원격 컴퓨터의 IP 주소로 변경해야 합니다.참고: 이전 명령의 출력에 MongoDB 설치가 기본 포트가 아닌 포트를 탐색하는 것으로 표시되면 이 명령에서
27017
대신 포트 번호를 사용하십시오.- sudo ufw allow from trusted_server_ip to any port 27017
나중에 다른 시스템에서 MongoDB에 액세스하려면 새 시스템의 IP 주소(trusted_server_ip
)를 사용하여 이 명령을 다시 실행하십시오.ufw
을 사용하여 방화벽 설정의 변경 사항을 확인할 수 있습니다.- sudo ufw status
출력은 현재 원격 서버에서 포트 27017
까지의 통신을 표시합니다.OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
27017 ALLOW trusted_server_ip
OpenSSH (v6) ALLOW Anywhere (v6)
UFW Essentials: Common Firewall Rules and Commands에서 더 많은 접근 제한 서비스의 고급 방화벽 설정을 찾을 수 있습니다.그런 다음 원격 시스템에서 액세스할 수 있도록 MongoDB를 서버의 공용 IP 주소로 바인딩합니다.
2단계 - 공용 bindIP 구성
포트가 열려 있어도 MongoDB는 현재 로컬 루프백 네트워크 인터페이스
127.0.0.1
에 바인딩되어 있습니다.이것은 MongoDB가 설치된 서버에서만 연결할 수 있다는 것을 의미합니다.원격 연결을 허용하려면 MongoDB 구성 파일
/etc/mongod.conf
을 편집하여 MongoDB를 서버에 추가로 연결할 수 있는 공통 라우팅 IP 주소를 지정해야 합니다.이렇게 하면 MongoDB 설치는 원격 기기에서 MongoDB 서버로의 연결을 탐지할 수 있습니다.기본 텍스트 편집기에서 MongoDB 구성 파일을 엽니다.다음 예제에서는
nano
을 사용합니다.- sudo nano /etc/mongod.conf
network interfaces
바이트를 찾은 다음 bindIp
값을 찾습니다./etc/mongod.형태
. . .
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1
. . .
행 뒤에 쉼표를 추가하고 MongoDB 서버의 공용 IP 주소를 따릅니다./etc/mongod.형태
. . .
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1,mongodb_server_ip
. . .
파일을 저장하고 닫습니다.nano
을 사용한다면 CTRL + X
, Y
을 누르고 ENTER
을 누르십시오.그런 다음 MongoDB를 다시 시작하여 변경 사항을 적용합니다.
- sudo systemctl restart mongod
이후 MongoDB 설치는 포트 27017
에 액세스할 수 있는 모든 기기의 원격 연결을 허용합니다.마지막 단계에서는 1단계에서 방화벽을 통해 신뢰할 수 있는 원격 서버가 서버에서 실행되는 MongoDB 인스턴스에 액세스할 수 있는지 테스트할 수 있습니다.3단계 - 원격 접속 테스트
이제 MongoDB 설치를 공유 가능한 라우팅 IP 주소에서 유래한 연결을 탐지하도록 구성하고 원격 컴퓨터가 서버 방화벽을 통해 Mongo 기본 포트에 액세스할 수 있는 권한을 부여하여 원격 컴퓨터가 연결할 수 있는지 테스트할 수 있습니다.
참고: 필수 섹션에서 설명하는 바와 같이 이 강좌는 원격 컴퓨터가 Ubuntu 18.04를 실행하는 다른 서버라고 가정합니다.원격 컴퓨터가 어떤 운영체제를 실행하든지 간에 1단계와 2단계에서 개술한 원격 연결 활성화 과정은 모두 유효해야 하지만, 이 단계에서 기술한 테스트 방법은 모든 운영체제에서 통용되지 않는다.
신뢰할 수 있는 원격 서버가 MongoDB에 연결될 수 있는지 테스트하는 방법 중 하나는
nc
명령을 사용하는 것이다.nc
은 넷캣의 줄임말로 TCP 또는 UDP 네트워크 연결을 위한 유틸리티입니다.이 테스트는 IP 주소와 포트 번호를 지정할 수 있기 때문에 이 테스트에 매우 유용합니다.먼저 SSH를 사용하여 신뢰할 수 있는 서버에 로그인합니다.
- ssh sammy@trusted_server_ip
nc
옵션을 포함하여 다음 -z
명령을 실행합니다.이것은 nc
을 대상 서버의 탐지 수호 프로그램만 스캔하고 데이터를 보내지 않는 것으로 제한합니다.prerequisite installation tutorial을 돌이켜보면 MongoDB는 서비스 수호 프로그램으로 실행되었기 때문에 이 옵션은 연결성을 테스트하는 데 매우 유용하다.이것은 또한 v
옵션을 포함하는데, 이 옵션은 명령의 상세성을 증가시켜서, 넷캣이 원래 돌아오지 않았던 출력을 되돌려줍니다.신뢰할 수 있는 원격 서버에서 다음
nc
명령을 실행하여 mongodb_server_ip
을 MongoDB가 설치된 서버의 IP 주소로 교체해야 합니다.- nc -zv mongodb_server_ip 27017
신뢰할 수 있는 서버가 MongoDB 데몬에 액세스할 수 있는 경우 내보내기가 성공적으로 연결되었음을 나타냅니다.OutputConnection to mongodb_server_ip 27017 port [tcp/*] succeeded!
원격 서버에 호환 버전의 mongo
셸이 설치되어 있다고 가정하면 호스트 서버에 설치된 MongoDB 인스턴스에 직접 연결할 수 있습니다.다음과 같이 connection string URI을 사용하는 접속 방식입니다.
- mongo "mongodb://mongo_server_ip:27017"
주의: 추천된 How To Secure MongoDB on Ubuntu 18.04 강좌를 따르면 인증되지 않은 사용자가 데이터베이스에 접근하는 것을 닫습니다.이 경우 다음과 같이 유효한 사용자 이름을 지정하는 URI를 사용해야 합니다.- mongo "mongodb://username@mongo_server_ip:27017"
셸에서 사용자 암호를 입력하라는 메시지가 자동으로 표시됩니다.이로써 MongoDB 서버가 신뢰할 수 있는 서버에서 연결할 수 있음을 확인했습니다.
결론
이제 원격 서버에서 MongoDB 설치에 액세스할 수 있습니다.신뢰할 수 있는 서버에서 Mongo 데이터베이스를 원격으로 관리할 수 있습니다.또는 신뢰할 수 있는 서버에서 실행되고 데이터베이스를 원격으로 사용할 수 있도록 프로그램을 설정할 수 있습니다.
관리 사용자를 구성하고 인증을 설정하지 않은 경우 원격 서버에 액세스할 수 있는 모든 사용자가 MongoDB 설치에 액세스할 수 있습니다.만약 당신이 아직 이렇게 하지 않았다면, 우리는 당신이 우리의 지침에 따라 How To Secure MongoDB on Ubuntu 18.04에 관리 사용자를 추가하고 더욱 잠그는 것을 강력히 건의합니다.