نحوه ایمن‌سازی MongoDB در Ubuntu 20.04

مقدمه

MongoDB یکی از محبوب‌ترین پایگاه‌های داده NoSQL و سندمحور (Document-Oriented) است که به دلیل سرعت، انعطاف‌پذیری و مقیاس‌پذیری بالا در بسیاری از پروژه‌های وب و سازمانی استفاده می‌شود. با این حال، نصب پیش‌فرض MongoDB برای استفاده در محیط‌های عملیاتی (Production) به اندازه کافی ایمن نیست و در صورت پیکربندی نادرست، می‌تواند در معرض دسترسی‌های غیرمجاز قرار گیرد.

در این آموزش یاد می‌گیرید چگونه یک سرور MongoDB را در Ubuntu 20.04 ایمن‌سازی کنید. در پایان این راهنما، احراز هویت کاربران را فعال کرده، دسترسی‌های مدیریتی را محدود می‌کنید و تنظیمات امنیتی لازم را برای محافظت از پایگاه داده خود اعمال خواهید کرد.


پیش‌نیازها

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

  • یک سرور Ubuntu 20.04
  • نصب و راه‌اندازی MongoDB
  • دسترسی به یک کاربر دارای دسترسی sudo
  • آشنایی مقدماتی با خط فرمان لینوکس

گام اول — ایجاد کاربر مدیریتی

در ابتدای کار، به پوسته MongoDB متصل شوید:

mongo

اگر از نسخه‌های جدید MongoDB استفاده می‌کنید:

mongosh

به پایگاه داده admin بروید:

use admin

یک کاربر مدیریتی ایجاد کنید:

db.createUser({
  user: "admin",
  pwd: "رمزعبور_قوی",
  roles: [
    { role: "userAdminAnyDatabase", db: "admin" },
    { role: "readWriteAnyDatabase", db: "admin" },
    { role: "dbAdminAnyDatabase", db: "admin" }
  ]
})

در صورت موفقیت، پیغام زیر نمایش داده می‌شود:

Successfully added user

از محیط MongoDB خارج شوید:

exit

گام دوم — فعال کردن احراز هویت (Authentication)

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

sudo nano /etc/mongod.conf

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

#security:

آن را به شکل زیر تغییر دهید:

security:
  authorization: enabled

فایل را ذخیره کرده و خارج شوید.

اکنون سرویس MongoDB را ریستارت کنید:

sudo systemctl restart mongod

بررسی کنید سرویس بدون خطا اجرا شده باشد:

sudo systemctl status mongod

گام سوم — ورود با کاربر مدیریتی

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

برای ورود از دستور زیر استفاده کنید:

mongo -u admin -p --authenticationDatabase admin

یا در نسخه‌های جدید:

mongosh -u admin -p --authenticationDatabase admin

پس از وارد کردن رمز عبور، وارد محیط MongoDB خواهید شد.


گام چهارم — ایجاد کاربران مخصوص پایگاه داده

بهتر است برنامه‌ها با حساب مدیر به دیتابیس متصل نشوند.

ابتدا وارد پایگاه داده موردنظر شوید:

use mydatabase

سپس کاربر مخصوص برنامه را ایجاد کنید:

db.createUser({
  user: "appuser",
  pwd: "StrongPassword",
  roles: [
    {
      role: "readWrite",
      db: "mydatabase"
    }
  ]
})

این کار باعث می‌شود برنامه تنها به همان دیتابیس دسترسی داشته باشد.


گام پنجم — محدود کردن دسترسی شبکه

اگر نیازی به اتصال از راه دور ندارید، MongoDB را فقط روی localhost اجرا کنید.

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

sudo nano /etc/mongod.conf

مقدار bindIp را بررسی کنید:

net:
  bindIp: 127.0.0.1

در صورتی که مقدار زیر وجود داشته باشد:

bindIp: 0.0.0.0

تمام کاربران شبکه قادر به اتصال خواهند بود که از نظر امنیتی توصیه نمی‌شود.


گام ششم — محافظت با فایروال

در صورت نیاز به اتصال از راه دور، فقط IPهای مجاز را در فایروال اجازه دهید.

نمونه:

sudo ufw allow from YOUR_IP_ADDRESS to any port 27017

سپس وضعیت قوانین را بررسی کنید:

sudo ufw status

گام هفتم — فعال کردن TLS/SSL

برای جلوگیری از شنود اطلاعات بین کلاینت و سرور، ارتباطات را رمزنگاری کنید.

ابتدا گواهینامه SSL تهیه کرده و سپس در فایل تنظیمات MongoDB بخش زیر را اضافه کنید:

net:
  tls:
    mode: requireTLS
    certificateKeyFile: /etc/ssl/mongodb.pem

پس از ذخیره فایل:

sudo systemctl restart mongod

گام هشتم — غیرفعال کردن دسترسی‌های غیرضروری

در محیط‌های Production توصیه می‌شود:

  • فقط کاربران موردنیاز ایجاد شوند.
  • از نقش‌های آماده MongoDB استفاده کنید.
  • به کاربران مجوزهای حداقلی (Least Privilege) بدهید.
  • کاربران قدیمی یا بدون استفاده را حذف کنید.

مشاهده کاربران:

show users

حذف کاربر:

db.dropUser("username")

گام نهم — بررسی وضعیت امنیتی

اطمینان حاصل کنید که احراز هویت فعال است:

db.runCommand({ connectionStatus: 1 })

همچنین وضعیت سرویس را بررسی کنید:

sudo systemctl status mongod

و لاگ‌ها را مشاهده کنید:

sudo journalctl -u mongod

جمع‌بندی

در این آموزش نحوه ایمن‌سازی MongoDB در Ubuntu 20.04 را فرا گرفتید. ابتدا یک کاربر مدیریتی ایجاد کردید، سپس احراز هویت را فعال نمودید و کاربران اختصاصی برای برنامه‌ها ساختید. همچنین با محدود کردن دسترسی شبکه، تنظیم فایروال و استفاده از TLS، امنیت ارتباطات را افزایش دادید. رعایت این موارد باعث می‌شود سرور MongoDB شما در برابر بسیاری از حملات رایج مقاوم‌تر باشد.

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

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

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

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

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