Mongodb

پیاده سازی الزامات امنیتی دیتابیس MongoDB – گام سوم

مطالبی که در پیش رو داریم لیستی از چک لیست امنیتی و اقدامات امنیتی است که باید برای حفاظت از نصب MongoDB خود انجام داده و همواره به یاد داشته باشید.

این مطالب در چند گام مختلف ارائه خواهد شد

انتشار محتوای سایت ایران سایبر فقط با ذکر منبع رسمی مجاز است 

گام سوم :

مکانیزم تأیید اعتبار سازمانی  (Enterprise)

علاوه بر مکانیزم های تأیید اعتبار گفته شده ، MongoDB Enterprise می تواند کار ادغام با مکانیزم های احراز هویت زیر را فراهم کند .

تأیید اعتبار Kerberos

MongoDB Enterprise می تواند فرآیند احراز هویت با استفاده از یک سرویس Kerberos را پشتیبانی می کند .  Kerberos یک پروتکل احراز هویت استاندارد برای سیستم های گسترده در سطح مشتری / سرور است.

برای استفاده از MongoDB با Kerberos، باید Kerberos به درستی پیکربندی شده باشد و کلاینت های Kerberos را برای MongoDB پیکربندی کنید و مدیر کاربر Kerberos را به MongoDB اضافه کنید.

Kerberos Authentication

اجزای Kerberos و MongoDB

در یک سیستم مبتنی بر Kerberos ، هر شرکت کننده در ارتباطاتی احراز هویت شده باشد می تواند به عنوان یک اصل مهم ” principal ” شناخته شود، و هر مدیر باید یک نام منحصر به فرد داشته باشد.

در این پروسه مدیران متعلق به واحدهای administrative به نام realm ها هستند. برای هر realm ، مرکز توزیع کلید (Kerberos Key Distribution Center (KDC این وظیفه را دارد که پایگاه داده ای را در اختیار مدیر اصلی و کلید های مخفی مرتبط با مدیران را در اختیار آنان قرار دهد.

برای احراز هویت سرویس دهنده یا سرور ، مشتری از KDC یک “ticket” برای دسترسی به دارایی های خاص را درخواست می کند . KDC با استفاده از client’s secret و server’s secret برای ساخت ticket اقدا می کند که مشتری و سرور را به طور متقابل یکپارچه احراز هویت کند . این پروسه کاملا به صورت secret صورت می گیرد .

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

  • user principals

  • service principals

مدیران کاربر – user principals

برای تأیید اعتبار با استفاده از Kerberos ، باید مدیران کاربری Kerberos را در MongoDB به پایگاه داده  $external اضافه کنید.

اسامی مدیران کاربر مطابق کامند زیر فرم دارند :

<username>@<KERBEROS REALM>

برای هر کاربری که می خواهید با Kerberos تأیید کنید، باید یک کاربر مربوطه را در MongoDB در پایگاه داده $external ایجاد کنید.

جهت اضافه کردن یک کاربر به MongoDB و همچنین تأیید اعتبار آن کاربر ، در Configure MongoDB با اعتبار Kerberos در لینوکس و پیکربندی MongoDB با اعتبار Kerberos در ویندوز توضیحاتی ارائه خواهیم کرد .

مدیر خدمات – service principal

هر نمونه ای از MongodDB mongod و mongos (یا mongod.exe یا mongos.exe در ویندوز) باید یک مدیر خدمات مربوطه داشته باشد. نام اصلی خدمات عبارتند از:

<service>/<fully qualified domain name>@<KERBEROS REALM>

<service>  در mongodb پیش فرض است .

 به عنوان مثال :

 اگر فرض کنیم m1.example.com سرور MongoDB باشد ، و example.com حوزه

Kerberos EXAMPLE.COM را حفظ می کند

پس m1 باید نام اصلی خدمات mongodb / [email protected] را داشته باشد.

برای مشخص کردن یک مقدار دیگر برای  <service>، در هنگام راه اندازی mongod یا mongos (یا mongod.exe یا mongos.exe) از serviceName استفاده کنید.

نام اصلی سرویس باید در شبکه با استفاده از نام دامنه کاملا مشخص (FQDN) قابل دسترس باشد

به طور پیش فرض ، Kerberos تلاش می کند با استفاده از فایل etc/krb5.conf/ قبل از استفاده از DNS برای  resolve شدن , هاست ها را شناسایی کند  .

در ویندوز، اگر MongoDB به عنوان یک سرویس در حال اجرا باشد، به عنوان سرویس اصلی MongoDB به عبارتی خدمات Windows MongoDB می باشد

فایلهای Keytab لینوکس

سیستم های لینوکس می توانند کلید های تأیید اعتبار Kerberos را برای یک مدیر سرویس در فایل های keytab ذخیره کنند. هر پرونده mongod و mongos Kerberized که در حال اجرا بر روی لینوکس است باید یک فایل keytab حاوی کلیدهای اصلی برای سرویس خود داشته باشد.

برای حفظ فایل های keytab ، استفاده از مجوزهای فایل و دسترسی آن باید به کاربری که فرایند mongod یا mongos را اجرا می کند کاملا محدود شود .

تیکت ها -Tickets

در لینوکس ، مشتریان MongoDB می توانند از برنامه kinit Kerberos برای ایجاد یک حافظه معتبر جهت تأیید اعتبار کاربر به سرور استفاده کنند.

اکتیو دایرکتوری ویندوز

بر خلاف سیستم های لینوکس ، نمونه های mongod و mongos در حال اجرا بر روی ویندوز نیازی به دسترسی به فایل های keytab ندارند. در عوض موارد Mongod و Mongos اعتبار سرور خود را از یک فروشگاه معتبر خاص به سیستم عامل فرآخوانی میکنند .

با این حال در اکتیو دایرکتوری ویندوز ، می توانید یک فایل keytab برای استفاده در سیستم های لینوکس صادر کنید .

کنسول HTTP

رابط MongoDB HTTP Console از تایید هویت Kerberos پشتیبانی نمی کند.

DNS

هر هاستی که نمونه ای از mongod یا mongos را اجرا می کند باید سوابق DNS A و PTR را برای ارائه جستجوی پیش فرض و معکوس داشته باشد.

بدون پرونده های A و PTR DNS میزبان نمی تواند اجزای دامنه Kerberos یا مرکز توزیع کلید (KDC) را تصمیم گیری کند .

هماهنگ سازی سیستم زمانی

برای تأیید اعتبار موفقیت آمیز ، زمان سیستم برای هر نمونه mongod و mongos باید اختلافی کمتر از ۵ دقیقه از زمان سیستم میزبانهای دیگر در زیرساخت Kerberos باشد.

استفاده از مکانیسم تأیید اعتبار جانبی در MongoDB

اگر چه MongoDB از استفاده از احراز هویت Kerberos می تواند سایر مکانیزم های تأیید اعتبار را پشتیبانی کند لذا باید در نظر داشت که مکانیسم های دیگر را تنها در صورت لزوم اضافه می کند .

در قسمت تنظیمات MongoDB با استفاده از Kerberos Authentication در لینوکس و قسمت تنظیمات MongoDB با استفاده از Kerberos Authentication در ویندوز این عملیات ها صورت میگیرد  که در مطالب بعدی توضیح خواهیم داد .

پیکر بندی MongoDB همراه با احراز هویت Kerberos در لینوکس

پیش نیازها

راه اندازی ، پیکربندی و استقرار Kerberos فراتر از محدوده این سند است. از آنجایی که هدف آموزشی ما صرفا در حوزه امنیت می باشد ، در این آموزش فرض می کنیم که یک سرویس Kerberos را برای هر نمونه Mongod و Mongos در deployment MongoDB خود پیکربندی کرده اید و یک فایل keytab معتبر برای هر نمونه Mongod و Mongos دارید.

برای replica sets و sharded clusters ، اطمینان حاصل کنید که پیکربندی شما با استفاده از نام کامل دامنه (FQDN) به جای آدرس های IP یا نام های میزبان نامحدود مورد استفاده قرار می گیرد.

برای بررسی MongoDB Enterprise binaries ، از خط فرمان زیر استفاده کنید

mongod --version

روش ها

روش زیر مراحلی را برای اضافه کردن یک کاربر مدیر Kerberos به MongoDB ، پیکربندی یک نمونه مستقل mongod برای پشتیبانی Kerberos  و اتصال با استفاده از mongo shell و تأیید  اعتبار کاربر را شرح می دهد.

شروع mongod بدون Kerberos

برای اضافه کردن اولیه کاربران Kerberos ، mongod را بدون پشتیبانی Kerberos آغاز کنید.

اگر یک کاربر Kerberos در حال حاضر در MongoDB است و دارای امتیاز مورد نیاز برای ایجاد یک کاربر می باشد ، شما می توانید mongod با پشتیبانی Kerberos شروع کنید.

به mongodb وصل شوید

از طریق mongo shell به نمونه Mongod متصل شوید. اگر mongod دارای  auth – – فعال است، اطمینان حاصل کنید که با امتیازات لازم برای ایجاد یک کاربر ارتباط برقرار می شود .

افزودن (Kerberos Principal (s به MongoDB

اضافه کردن یک مدیر Kerberos

 <username>@<KERBEROS REALM>

 یا <username>/<instance>@<KERBEROS REALM> ، به MongoDB در پایگاه داده external$ .

 محدوده و قلمرو Kerberos را در تمام حروف بزرگ باید مشخص کنید. پایگاه داده external$ اجازه می دهد تا mongod برای تأیید اعتبار با یک منبع خارجی (به عنوان مثال Kerberos) مشورت کند و برای مشخص کردن امتیازات کاربر، نقش را به کاربر اختصاص می دهد.

مثال زیر application/[email protected] اصلی Kerberos را با دسترسی فقط خواندن به پایگاه داده اضافه می کند :

use $external
db.createUser(
  {
    user: "application/[email protected]",
    roles: [ { role: "read", db: "records" } ]
  }
)

دستورالعمل های اضافی را در صورت نیاز اضافه کنید برای هر کاربر که میخواهید با استفاده از Kerberos تأیید کنید، باید یک کاربر مربوطه را در MongoDB بسازید.

شروع mongod با پشتیبانی Kerberos

برای شروع mongod با پشتیبانی Kerberos ، متغیر محیطی KRB5_KTNAME را به مسیر فایل keytab و پارامتر mongod authenticationMechanisms برای GSSAPI در فرم زیر تنظیم کنید:

env KRB5_KTNAME=<path to keytab file> \
mongod \
--setParameter authenticationMechanisms=GSSAPI \
<additional mongod options>

اگر مایل باشید که مشتریان از راه دور برای پیاده سازی متصل شوند یا اعضای مستقر شده در میزبان های مختلفی اجرا شوند ، باید bind_ip —  را مشخص کنید

به عنوان مثال، در زیر یک نمونه مستقل با پشتیبانی Kerberos شروع به کار می کند :

env KRB5_KTNAME=/opt/mongodb/mongod.keytab \
/opt/mongodb/bin/mongod --auth \
--setParameter authenticationMechanisms=GSSAPI \
--dbpath /opt/mongodb/data --bind_ip localhost,<hostname(s)|ip address(es)>

مسیر mongod شما و همچنین فایل keytab شما ممکن است متفاوت باشد . فایل keytab باید فقط برای مالک روند mongod قابل دسترسی باشد .

با بسته های رسمی deb. یا rpm. می توانید KRB5_KTNAME را در یک فایل پیکربندی محیط تنظیم کنید.

اتصال mongo shell به mongod و احراز هویت

  mongo shell client را به عنوان برنامه application / [email protected] اصلی Kerberos در نظر بگیرید . قبل از اتصال ، باید از برنامه kinit Kerberos جهت استفاده از credentials برای application / report.example.NET استفاده کنید. همچنین می توانید از خط فرمان متصل شده و تأیید هویت کنید.

mongo --host hostname.example.net --authenticationMechanism=GSSAPI --authenticationDatabase='$external' --username application/[email protected]

اگر به یک سیستم که نام میزبان یا هاست آن با نام Kerberos مطابقت داشته باشد ، اتصال پیدا می کنید ، اطمینان حاصل کنید که نام دامنه کاملا مشخص (FQDN) را برای گزینه — host مشخص کرده اید نه یک آدرس IP یا نام میزبان فاقد صلاحیت .

اگر به یک سیستم متصل می شوید که نام میزبان آن با نام Kerberos مطابقت نداشته باشد ، از نام

 “gssapiHostName — ” برای مشخص کردن FQDN Kerberos که به آن پاسخ می دهد استفاده کنید. همچنین می توانید ابتدا Mongo را به Mongod متصل کنید و سپس از mongo shell از روش ()db.auth برای تایید هویت در پایگاه داده خارجی خارجی استفاده کنید.

use $external
db.auth( { mechanism: "GSSAPI", user: "application/[email protected]" } )

KRB5_KTNAME

اگر MongoDB Enterprise را با استفاده از یکی از بسته های رسمی .deb یا .rpm نصب کردید و از اسکریپت

init / upstart  برای کنترل نمونه mongod استفاده می کنید. می توانید متغیر KR5_KTNAME را در تنظیمات پیش فرض به جای تنظیم هر متغیر در هر زمان پیکربندی کنید.

برای بسته های rpm.  فایل تنظیمات پیش فرض محتوا ،  etc / sysconfig / mongod/ است.

برای بسته های deb/ ، فایل etc / default / mongodb/ است.

مقدار KRB5_KTNAME را در یک لاین که شبیه به موارد زیر است تنظیم کنید :

export KRB5_KTNAME="<path to keytab>"

پیکربندی mongos برای Kerberos

برای شروع mongos با پشتیبانی Kerberos، متغیر محیطی KRB5_KTNAME را به مسیر فایل keytab خود و پارامتر authenticationMonuments در mongos را به GSSAPI مطابق فرم زیر تنظیم کنید :

env KRB5_KTNAME=<path to keytab file> \
mongos \
--setParameter authenticationMechanisms=GSSAPI \
<additional mongos options>

اگر مایل باشید که مشتریان از راه دور برای پیاده سازی متصل شوند یا اعضای مستقر شده در میزبان های مختلفی اجرا شوند ، باید bind_ip — را مشخص کنید

به عنوان مثال ، در فرم زیر یک mongos با پشتیبانی Kerberos را استارت میزنیم :

env KRB5_KTNAME=/opt/mongodb/mongos.keytab \
mongos \
--setParameter authenticationMechanisms=GSSAPI \
--configdb shard0.example.net, shard1.example.net,shard2.example.net \
--keyFile /opt/mongodb/mongos.keyfile \
--bind_ip localhost,<hostname(s)|ip address(es)>

مسیر Mongos خود و همچنین فایل Keytab شما ممکن است متفاوت باشد. فایل keytab باید فقط برای مالک mongos قابل دسترسی باشد.

اصلاح کردن گزینه های اضافی mongos برای تنظیمات مورد نیاز خود

به جای استفاده از keyfile برای احراز هویت داخلی کاربران sharded cluste ، می توانید به جای آن از احراز هویت عضو x.509 استفاده کنید.

از یک فایل پیکربندی استفاده کنید

برای پیکربندی mongod یا mongos برای پشتیبانی Kerberos با استفاده از یک فایل پیکربندی، تنظیمات authenticationMechanisms را در فایل پیکربندی مشخص کنید.

استفاده از فرمت فایل پیکربندی YAML :

setParameter:
authenticationMechanisms: GSSAPI

اگر مایل باشید که مشتریان از راه دور برای پیاده سازی متصل شوند یا اعضای مستقر شده در میزبان های مختلف اجرا شوند ، از تنظیمات net.bindIp استفاده کنید

به عنوان مثال، اگر opt/mongodb/mongod.conf/ شامل تنظیمات پیکربندی زیر برای mongod مستقل است :

security:
  authorization: enabled
setParameter:
  authenticationMechanisms: GSSAPI
storage:
  dbPath: /opt/mongodb/data
net:
  bindIp: localhost,<hostname(s)|ip address(es)>

برای شروع mongod با پشتیبانی از Kerberos ، از فرم زیر استفاده کنید:

env KRB5_KTNAME=/opt/mongodb/mongod.keytab \
/opt/mongodb/bin/mongod --config /opt/mongodb/mongod.conf

مسیر فایل mongod، keytab و فایل پیکربندی شما ممکن است متفاوت باشد. فایل keytab باید فقط برای مالک mongod قابل دسترسی باشد.

عیب یابی راه اندازی Kerberos برای MongoDB

اگر هنگام راه اندازی mongod یا mongos با تایید هویت Kerberos با مشکلی مواجه شدید، در مطالب بعدی با موضوع Troubleshoot Kerberos Authentication که گفته می شود مراجعه کنید .

مکانیسم های مختلف تأیید اعتبار

تأیید اعتبار ((Kerberos (GSSAPI (Kerberos می تواند در کنار هم کار کند:

  • مکانیسم اعتبار سنجی SCRAM MongoDB:

SCRAM-SHA-1

SCRAM-SHA-256 (اضافه شده در MongoDB 4.0)

  • سازگاری احراز هویت MongoDB برای LDAP:

(PLAIN (LDAP SASL

  • مکانیزم تأیید اعتبار MongoDB برای X.509 :

 (MONGODB-X509)

پیکر بندی MongoDB همراه با احراز هویت Kerberos در ویندوز

Kerberos یک پروتکل احراز هویت استاندارد برای سیستم های مشتری / سرور در سطح گسترده است. Kerberos به MongoDB و برنامه ها اجازه می دهد تا از زیرساخت ها و پروسه های تأیید هویت موجود خود استفاده کنند.

راه اندازی ، پیکربندی و استقرار Kerberos فراتر از محدوده این سند است. از آنجایی که هدف آموزشی ما صرفا در حوزه امنیت می باشد ، در این آموزش فرض می کنیم که یک سرویس Kerberos را برای هر نمونه Mongod و Mongos در deployment MongoDB خود پیکربندی کرده اید.

برای replica sets و sharded clusters ، اطمینان حاصل کنید که پیکربندی شما با استفاده از نام کامل دامنه (FQDN) به جای آدرس های IP یا نام های میزبان نامحدود مورد استفاده قرار می گیرد.

اجرای mongod.exe بدون Kerberos

برای اضافه کردن اولیه کاربران Kerberos ، ابتدا mongod.exe را بدون پشتیبانی Kerberos آغاز کنید.

اگر در حال حاضر یک کاربر Kerberos در MongoDB وجود دارد و دارای امتیاز مورد نیاز برای ایجاد یک حساب کاربری است ، می توانید mongod.exe را با پشتیبانی Kerberos شروع کنید.

ابتدا به mongodb وصل شوید

از طریق shell mongod.exe به نمونه mongod.exe متصل شوید . اگر mongod.exe فعال باشد بدین معنا است که  — auth فعال شده است ،  بنابراین باید اطمینان حاصل شود که شما برای ایجاد یک کاربر با امتیازات مورد نیاز ارتباط برقرار می کنید .

افزودن (Kerberos Principal (s به MongoDB

اضافه کردن یک Kerberos principal

(<username>@<KERBEROS REALM>) به MongoDB در پایگاه داده external$ و محدوده Kerberos را در ALL UPPERCASE مشخص کنید.

پایگاه داده external$ به mongod.exe اجازه می دهد تا با یک منبع خارجی یا external source (به عنوان مثال Kerberos) برای تأیید اعتبار مشورت کند . برای مشخص کردن امتیازات کاربر ، نقش ها را به کاربر اختصاص می دهد.

مثال زیر [email protected] اصلی Kerberos را با دسترسی فقط خواندنی به پایگاه داده اضافه می کند :

use $external
db.createUser(
  {
    user: "[email protected]",
    roles: [ { role: "read", db: "records" } ]
  }
)

دستورالعمل های اضافی را در صورت نیاز می توانید اضافه کنید و هر کاربری را که میخواهید با استفاده از Kerberos تأیید کنید ، باید آن کاربر مربوطه را در MongoDB بسازید . برای کسب اطلاعات بیشتر در مورد ایجاد و مدیریت کاربران ،  می توانیدبه دستورالعمل های مدیریت کاربر در MongoDB مراجعه کنید.

شروع mongod.exe با پشتیبانی Kerberos

در اینجا ابتدا باید mongod.exe را به عنوان حساب اصلی سرویس شروع کنید . برای شروع mongod.exe با پشتیبانی Kerberos ، پارامترهای authenticationMongod.exe را در GSSAPI پیکربندی کنید :

mongod.exe --setParameter authenticationMechanisms=GSSAPI <additional mongod.exe options>

اگر مایل باشید که مشتریان از راه دور برای پیاده سازی متصل شوند یا اعضای مستقر شده در میزبان های مختلفی اجرا شوند ، باید  bind_ip – – را مشخص کنید

در مثال مستقل زیر از mongod.exe با پشتیبانی Kerberos استفاده می شود و استارت می خورد :

mongod.exe --auth --setParameter authenticationMechanisms=GSSAPI --bind_ip localhost,<hostname(s)|ip address(es)>

اتصال mongo.exe shell به mongod.exe و تأیید هویت

ارتباط mongo.exe shell client به عنوان Kerberos اصلی در [email protected]

می توانید از کامند لاین ارتباط برقرار کرده و تأیید هویت کنید.

با استفاده از cmd.exe :

mongo.exe --host hostname.example.net --authenticationMechanism=GSSAPI --authenticationDatabase=$external --username [email protected]

با استفاده از Windows PowerShell :

mongo.exe --host hostname.example.net --authenticationMechanism=GSSAPI --authenticationDatabase='$external' --username [email protected]

اگر به یک سیستم که نام میزبان یا هاست آن با نام Kerberos مطابقت داشته باشد ، اتصال پیدا می کنید ، اطمینان حاصل کنید که نام دامنه کاملا مشخص (FQDN) را برای گزینه  host – – انتخاب کرده اید نه یک آدرس IP یا نام میزبان فاقد صلاحیت .

اگر به یک سیستم متصل می شوید که نام میزبان آن با نام Kerberos مطابقت نداشته باشد ، از نام

 ” gssapiHostName – – ” برای مشخص کردن FQDN Kerberos که به آن پاسخ می دهد استفاده کنید.

برای اولین بار ، ابتدا می توانید mongo.exe را به mongod.exe وصل کنید و سپس از shell mongo.exe از روش

()db.auth برای تایید هویت در پایگاه داده external$ استفاده کنید.

use $external
db.auth( { mechanism: "GSSAPI", user: "[email protected]" } )

ملاحظات اضافی و فرعی

پیکربندی mongos.exe برای Kerberos

برای شروع mongos.exe با پشتیبانی Kerberos، پارامتر mongos.exe authenticationMechanisms را در GSSAPI تنظیم کنید برای همین  باید mongos.exe را به عنوان حساب اصلی سرویس شروع کنید :

mongos.exe --setParameter authenticationMechanisms=GSSAPI <additional mongos options>

همانطور که مشاهده می کنید شامل گزینه های اضافی مورد نیاز برای تنظیمات نیز می باشد به عنوان مثال، اگر میخواهید مشتریان از راه دور برای پیاده سازی خود ارتباط برقرار کنند یا کاربران مستقرشده در میزبان های مختلف اجرا شوند ، باید  bind_ip – – را مشخص کنید

در مثال زیر یک mongos با پشتیبانی Kerberos آغاز می شود :

mongos.exe --setParameter authenticationMechanisms=GSSAPI --configdb shard0.example.net, shard1.example.net,shard2.example.net --keyFile C:\<path>\mongos.keyfile --bind_ip localhost,<hostname(s)|ip address(es)>

در تغییرات دیگر ، به جای استفاده از keyfile برای احراز هویت داخلی کاربران sharded cluste ، می توانید به جای آن از احراز هویت عضو x.509 استفاده کنید.

نام سرویس اصلی (Principal) را به سرویس Windows MongoDB اختصاص دهید

از setupn.exe برای اختصاص دادن نام اصلی خدمات (SPN) در حساب کاربری که در حال اجرای mongod.exe و سرویس mongos.exe است ، استفاده کنید.

setspn.exe -S <service>/<fully qualified domain name> <service account name>

مثال

اگر mongod.exe به عنوان یک سرویس با نام mongodb در testserver.mongodb.com با نام حساب mongodtest اجرا شود ، SPN را می توانید به صورت زیر تعیین کنید :

setspn.exe -S mongodb/testserver.mongodb.com mongodtest

 

عیب یابی Kerberos Authentication

راهبردهای اشکال زدایی پیکربندی Kerberos

اگر با Kerberos در  Mongod یا Mongos مشکل شروع و یا تأیید اعتبار دارید

ابتدا باید اطمینان حاصل کنید که MongoDB Enterprise را اجرا می کنید ، نه MongoDB  Community Edition . احراز هویت Kerberos یک ویژگی سازمانی MongoDB است و با نسخه های مجازی MongoDB Community Edition کار نخواهد کرد .

برای بررسی فایلهای MongoDB Enterprise binaries ، از گزینه خط فرمان version – – در mongod یا mongos استفاده کنید :

mongod --version

در خروجی از این دستور، ماژول های رشته (string) را جستجو می کنیم :

 اشتراک یا ماژول ها : گزینه Enterprise برای تایید سیستم شما یعنی MongoDB Enterprise بسیار گزینه مناسبی است .  باید اطمینان حاصل کنید که نام میزبان سیستم در مثال mongod یا mongos یک نام دامنه واجد شرایط و کامل است.

در لینوکس می توانید نام میزبان سیستم را با نام میزبان  f – در دستور سیستم تایید کنید.

در لینوکس اطمینان حاصل کنید که مولفه اصلی  و اسم اصلی خدمات SPN) SPN mongodb) است . اگر مولفه اصلی SPN نباشد ، باید مولفه اصلی را با استفاده از  setParameter   saslServiceName – – مشخص کنید.

در لینوکس اطمینان حاصل کنید که اجزای نمونه نام اصلی سرویس (SPN) در فایل keytab با نام میزبان سیستم instance از مثال mongod یا mongos مطابقت دارد. اگر نام میزبان سیستم instance مثال mongod یا mongos در فایل keytab نیست، احراز هویت با یک خطای GSSAPI در هنگام دریافت مدارک مواجه خواهد شد. error message

اگر نام میزبان instance از mongod یا mongos شما توسط نام میزبان  f –  به طور کامل واجد شرایط نباشد ، از setParameter   saslServiceName – – برای تنظیم نام کامل دامنه اصلی (instance) در هنگام شروع mongod یا mongos خود استفاده کنید .

اطمینان حاصل کنید هر میزبانی که یک نمونه اصلی (instance) در Mongod یا Mongos را اجرا می کند دارای سوابق DNS A و PTR برای ارائه جستجوی پیش فرض و معکوس DNS باشد . رکورد A باید به FQDN Mongod یا Mongos مراجعه کند.

اطمینان حاصل کنید که ساعت ها در سرور هایی که نمونه های MongoDB شما و زیرساخت Kerberos را میزبانی می کنند ، حداکثر زمان تقریبی را می گذرانند که به طور پیش فرض ۵ دقیقه است . تفاوت های زمانی بزرگتر از حداکثر مشکلات زمانی می تواند از تأیید هویت موفقیت آمیز جلوگیری کند.

ردیابی Kerberos در Login به لینوکس

MIT Kerberos متغیر محیطی KRB5_TRACE را برای ردیابی ورودی فراهم می کند.

اگر مشکلات مکرر با MIT Kerberos در لینوکس دارید ، می توانید Mongod، Mongo را مجددا راه اندازی کنید یا mongo instances را در حالت  verbose logging تنظیم کنید .

Logging Verbose یک حالت ورود به کامپیوتر است که اطلاعات بیشتری را نسبت به حالت معمول ورود به سیستم ثبت می کند .

(Verbose به معنای “استفاده از کلمات بیشتر نسبت به کلمات ضروری” است.) گزینه های ورود معمولا به عمد و به طور خاص برای عیب یابی فعال می شوند ، زیرا آنها فایل های بزرگ را ایجاد می کنند و می توانند عملکرد را کاهش دهند.

به عنوان مثال ، دستور زیر یک mongod مستقل را اجرا می کند که فایل keytab آن در مسیر پیش فرض etc/krb5.keytab/ است و KRB5_TRACE را برای نوشتن در

logs/mongodb-kerberos.log/ تنظیم می کند :

env KRB5_KTNAME=/etc/krb5.keytab \
   KRB5_TRACE=/logs/mongodb-kerberos.log \
   mongod --dbpath /data/db --logpath /data/db/mongodb.log \
   --auth --setParameter authenticationMechanisms=GSSAPI \
   --bind_ip localhost,<hostname(s)|ip address(es)> --fork

پیام های خطای رایج

در برخی مواقع ، در صورت وجود مشکل MongoDB پیام های خطا از رابط GSSAPI را در سرویس Kerberos ارائه می دهد . برخی از پیام های خطای رایج عبارتند از :

GSSAPI error in client while negotiating security context

این خطا بر روی مشتری رخ می دهد و نشان دهنده اعتبار ناکافی یا تلاش مخرب برای تأیید اعتبار است.

اگر این خطا را دریافت می کنید ، اطمینان حاصل کنید هنگام اتصال به میزبان از اعتبار صحیح و نام دامنه کامل و صحیح استفاده شده است .

GSSAPI error acquiring credentials

این خطا در هنگام شروع mongod یا mongos رخ می دهد و نشان دهنده پیکربندی نامناسب از نام میزبان سیستم یا یک فایل keytab غلط یا نادرست در پیکربندی نا صحیح بوده است .

 

پایان گام سوم
ادامه دارد …

 

سرفصل گام چهارم : پیکر بندی MongoDB بوسیله Kerberos Authentication و Active Directory Authorization

گردآورنده : سید محمد اسماعیلی

 

نوشته های مرتبط

مدیریت دستگاه های IOT

۰۵

آبان
همه موضوعات

مدیریت از راه دور دستگاه های IOT با استفاده از ابزار Upswift

انتشار محتوای سایت ایران سایبر فقط با ذکر منبع رسمی مجاز است اگر فقط از یک دستگاه IoT استفاده می کنید و درحال توسعه پروژه های خود هستید، به روزرسانی و مدیریت آن سریع و آسان است. اما اگر ۱۰ ، ۵۰ یا ۱۰۰ دستگاه داشته باشید چه می کنید؟ مدیریت همه آنها ناگهان به یک دردسر […]

رکوردهای DNS

۱۹

مهر
همه موضوعات

مدیریت رکوردهای DNS با DNStable

یافتن اطلاعات در مورد سوابق DNS فرآیندی است که متخصصان امنیتی با عملیات های خاصی انجام می دهند. این اطلاعات از چند طریق قابل دستیابی است که در این مقاله به آنها خواهیم پرداخت. مشکل این است که بیشتر ابزارها برای یافتن سوابق DNS به روز شده و استفاده از آنها دشوار است. بیشتر متخصصان با تجربه[…]