نحوه پیکربندی دسترسی از راه دور برای MongoDB در CentOS 8

مقدمه

MongoDB که با نام Mongo نیز شناخته می‌شود، یک پایگاه داده سندگرا و متن‌باز است که در بسیاری از برنامه‌های وب مدرن استفاده می‌شود. به‌صورت پیش‌فرض، این دیتابیس فقط اتصال‌هایی را می‌پذیرد که از همان سروری که روی آن نصب شده‌اند برقرار شوند.

اگر بخواهید MongoDB را از راه دور مدیریت کنید یا آن را به یک سرور برنامه جداگانه متصل کنید، باید چند تغییر در تنظیمات پیش‌فرض آن اعمال کنید.

در این آموزش یاد می‌گیرید چگونه نصب MongoDB را به‌گونه‌ای تنظیم کنید که به‌صورت امن، امکان دسترسی از یک سیستم راه دور مورد اعتماد فراهم شود. برای این کار:

  1. قوانین فایروال را تغییر می‌دهید تا سیستم راه دور به پورتی که MongoDB روی آن گوش می‌دهد دسترسی داشته باشد.
  2. فایل پیکربندی MongoDB را ویرایش می‌کنید تا روی IP عمومی سرور نیز گوش دهد.
  3. در پایان، اتصال از سیستم راه دور را تست می‌کنید.

پیش‌نیازها

برای انجام این آموزش به موارد زیر نیاز دارید:

  • یک سرور CentOS 8 با کاربر غیر root دارای دسترسی sudo و فایروال firewalld
  • نصب بودن MongoDB 4.4 یا جدیدتر
  • یک سیستم دوم که قرار است از طریق آن به MongoDB متصل شوید

همچنین توصیه می‌شود پیش از فعال کردن دسترسی راه دور، نصب MongoDB خود را ایمن کرده باشید؛ یعنی یک کاربر مدیریتی بسازید و احراز هویت را فعال کنید.


مرحله اول — تنظیم فایروال

اگر فایروال firewalld فعال باشد، MongoDB به‌صورت پیش‌فرض از اینترنت در دسترس نخواهد بود.

ابتدا بررسی کنید MongoDB روی چه پورتی گوش می‌دهد:

sudo netstat -plunt | grep mongo

خروجی مشابه زیر خواهد بود:

tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN 15918/mongod

یعنی MongoDB روی پورت پیش‌فرض 27017 و فقط روی localhost فعال است.

برای اینکه یک سرور مشخص اجازه اتصال داشته باشد، دستور زیر را اجرا کنید:

sudo firewall-cmd –permanent –zone=public –add-rich-rule=‘rule family=”ipv4″ source address=”trusted_server_ip” port protocol=”tcp” port=”27017″ accept’

به‌جای trusted_server_ip آی‌پی سرور مجاز را قرار دهید.

اگر دستور موفق باشد:

success

سپس فایروال را بارگذاری مجدد کنید:

sudo firewall-cmd –reload

برای بررسی:

sudo firewall-cmd –list-all

باید قانونی مشابه زیر ببینید:

rule family=“ipv4” source address=“157.230.58.94” port port=“27017” protocol=“tcp” accept

مرحله دوم — تنظیم bindIp عمومی

در این مرحله، با وجود باز بودن پورت، MongoDB هنوز فقط روی localhost در دسترس است.

فایل تنظیمات MongoDB را باز کنید:

sudo nano /etc/mongod.conf

بخش زیر را پیدا کنید:

net:
port: 27017
bindIp: 127.0.0.1

IP عمومی سرور را اضافه کنید:

net:
port: 27017
bindIp: 127.0.0.1,mongodb_server_ip

به‌جای mongodb_server_ip آی‌پی عمومی سرور را وارد کنید.

فایل را ذخیره کرده و سرویس MongoDB را ریستارت کنید:

sudo systemctl restart mongod

اکنون MongoDB می‌تواند از سرورهای مجاز اتصال بپذیرد.


مرحله سوم — تست اتصال از راه دور

به سرور مجاز SSH بزنید:

ssh sammy@trusted_server_ip

ابزار nc را نصب کنید:

sudo dnf install nc

سپس اتصال به MongoDB را تست کنید:

nc -zv mongodb_server_ip 27017

اگر اتصال برقرار باشد:

Ncat: Connected to mongodb_server_ip:27017.

اتصال مستقیم به MongoDB

اگر ابزار mongo shell نصب باشد:

mongo “mongodb://mongo_server_ip:27017”

اگر احراز هویت فعال باشد:

mongo “mongodb://username@mongo_server_ip:27017”

در این صورت از شما رمز عبور خواسته می‌شود.


نتیجه‌گیری

اکنون MongoDB شما از یک سرور راه دور قابل دسترسی است. می‌توانید:

  • دیتابیس را از راه دور مدیریت کنید
  • اپلیکیشن‌های جداگانه را به دیتابیس متصل کنید

اما اگر احراز هویت را فعال نکرده باشید، هر کسی که به سرور راه دور دسترسی داشته باشد می‌تواند به MongoDB نیز متصل شود. بنابراین حتماً احراز هویت MongoDB را فعال کنید تا امنیت سیستم حفظ شود.

از همراهی شما با پارمین کلود سپساگزاریم.

Click to rate this post!
[Total: 0 Average: 0]

نظرات کاربران

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *