نحوه نصب و ایمن‌سازی LDAP در لینوکس

1 1,421
Telegram_GEEKBOY

در شبکه‌های رایانه‌ای، «دایرکتوری سرویس» زیرساخت به اشتراک‌گذاری منابع را مهیا نموده و به شما اجازه می‌دهد به صورت متمرکز منابع و المان‌های شبکه خود را مدیریت نمایید.


«دایرکتوری سرویس» اطلاعات مهمی را طبق استاندارد X.500 در خود نگهداری می‌کند. این اطلاعات می‌تواند شامل اطلاعات مربوط به کاربران و رمز عبور آن‌ها باشد. همچنین اطلاعات پرسنلی افراد سازمان، می‌تواند قسمت دیگری از این نوع اطلاعات باشد که حفظ محرمانگی و امنیت آن‌ها ضروری است. LDAP یا Lightweight Directory Access Protocol پروتکلی است که می‌توان با آن با دایرکتوری سرور ارتباط برقرار کرد و آن را مدیریت نمود. یکی از جنبه‌های مهم برقراری امنیت در دایرکتوری سرویس، برقراری یک ارتباط امن بین کلاینت و سرور دایرکتوری سرویس (LDAP Server) است. پروتکل LDAP به طور پیش فرض اطلاعات را بر روی بستر شبکه به صورت Clear Text ارسال می‌کند که ارسال اطلاعات به این روش دارای مزایایی از جمله موارد ذیل است:

  • پیکربندی و مدیریت آسان
  • سرعت بالاتر در سرویس دهی

اما این مزایا باعث می‌شود تا شما امنیت سیستم خود را از دست بدهید. بنابراین در بستر شبکه به‌ ویژه شبکه‌های بزرگ، نیاز است اطلاعات، رمزنگاری شود.

OpenLDAP یک نرم افزار متن باز است که سیستم «دایرکتوری سرویس» و پروتکل LDAP را به صورت مستقل از بستر پیاده سازی می‌کند و اکثر نسخه‌های لینوکس از آن پشتیبانی می‌نماید. OpenLDAP به دو روش، ترافیک ارسالی در شبکه را رمزنگاری می‌نماید.

در اولین روش OpenLDAP بر روی یک پورت خاص (پورت 636، LDAPS) به طور پیش‌فرض سرویس می‌دهد و اطلاعات ارسالی بر روی این پورت به صورت خودکار رمزنگاری می‌شوند. این روش به عنوان یک قابلیت جدید در نسخه دوم LDAP ارایه شد، اما امروزه چندان رایج نیست.

در روش دوم که در نسخه سوم LDAP ارایه شد، به کلاینت‌ها اجازه داده می‌شود که بر روی پورت استاندارد سرور (پورت 389) ارتباط برقرار کنند و نیز به آن‌ها اجازه داده می‌شود که ارتباط‌شان با سرور از حالت Clear Text به حالت رمزنگاری شده تبدیل شود.

رمزنگاری از طریق LDAPS:

در بستر شبکه، کلاینت و سرور LDAP می‌توانند با کمک SSL/TLS اطلاعات ارسالی و دریافتی را رمزنگاری کنند. به این صورت که سرور،
Certificate خود را به کلاینت ارسال می‌کند. ضمن آنکه یک سری اطلاعات از جمله Public Key در آن قرار گرفته است. Public Key پیام را رمزنگاری می‌کند اما رمزگشایی نمی‌کند و کلید دوم که Private Key نام دارد، جهت رمزگشایی استفاده می‌شود. مجوز خواندن Private Key تنها برای سرور تعریف شده است و تحت هر شرایطی آن را تنها نزد خود حفظ می‌کند. کلاینت، پیام رمزنگاری شده به کمک سرور را برای آن ارسال و سرور جهت پاسخ‌گویی به درخواست، پیام رمزنگاری شده را رمزگشایی می‌کند.

رمزنگاری از طریق StartTLS:

در حالت پشتیبانی LDAP Server از StartTLS، اگر کلاینت در برقراری ارتباط با سرور، دستور StartTLS را اجرا کند، آنگاه سرور شروع به رمزنگاری اطلاعات با TLS نموده و تمامی اطلاعات ارسالی و دریافتی میان سرور و کلاینت رمزنگاری شده و به طور امن انتقال داده می‌شوند.

یکی از مزیت‌های آشکار StartTLS این است که سرور برای LDAP تنها بر روی یک پورت سرویس می‌دهد. این امر به کلاینت‌ها و سرور اجازه می‌دهد تا اطلاعاتی را که از اهمیت کم‌تری برخوردارند، به صورت Clear Text ارسال نماید و در مقابل اطلاعات با اهمیت بالاتر را با کمک TLS رمزنگاری کند. با این روش اطلاعات غیرضروری رمزنگاری نشده و منابع سیستم بی‌مورد جهت رمزنگاری، استفاده نمی‌شود. در نتیجه کارایی سیستم افزایش پیدا خواهد کرد.

در ادامه مراحل نصب و ایمن سازی LDAP از طریق SSL/TLS بر روی یک بستره مبتنی بر Redhat آورده شده است.

گام اول: نصب سرور و کلاینت Openldap

# yum install openldap-servers openldap-clients
# cd /etc/openldap/
# cp DB_CONFIG.example /var/lib/ldap/DB_CONFIG

گام دوم: پیکربندی سرور ldap server) SLAP)

# vim slapd.conf
suffix "dc=lpi,dc=org"
rootdn "cn=Manager,dc=lpi,dc=org"
rootpw secret

گام سوم: ایجاد مجوز SSL سرور

# cd /etc/pki/tls/certs
# make server.key
umask 77 ; \
/usr/bin/openssl genrsa -des3 1024 > server.key

Generating RSA private key, 1024 bit long modulus
......................................................++++++
.............++++++
e is 61251 (0x10001)
Enter pass phrase: # set passphrase
Verifying - Enter pass phrase: # verify

گام چهارم: حذف گذرواژه (passphrase) از کلید اختصاصی

# openssl rsa -in server.key -out server.key

گام پنجم: ایجاد درخواست ثبت پروانه

# make server.csr

گام ششم: ثبت درخواست مجوز ثبت شده

# openssl x509 -in server.csr -out server.crt
-req -signkey server.key -days 3650

گام هفتم: محدود نمودن دسترسی به فایل‌ها

# chmod 400 server.*

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

# cp /etc/pki/tls/certs/server.* /etc/openldap/cacerts/
# chown ldap. /etc/openldap/cacerts/*
# vi /etc/openldap/slapd.conf

دو خط زیر را در فایل، ذخیره کنید:

TLSCertificateFile /etc/openldap/cacerts/server.crt
TLSCertificateKeyFile /etc/openldap/cacerts/server.key

گام نهم: برای اعمال تغییرات سرور LDAP را راه‌اندازی مجدد کنید

# /etc/rc.d/init.d/ldap restart

گام دهم: برای دسترسی به دامنه در سرور محلی، در فایل etc/hosts/، خط زیر را اضافه کنید

127.0.0.1 ldap.lpi.org

گام یازدهم: پیکربندی فایل کلاینت (etc/openldap/ldap.conf/)

Base dc=lpi, dc=org
URI ldap://ldap.lpi.org
TLS_CACERT /etc/openldap/cacerts/server.crt

گام دوازدهم: اکنون زمان آزمون فرایند طی شده از طریق STARTTLS است

# ldapsearch -x -D "cn=Manager,dc=lpi,dc=org" -W -ZZ

گام سیزدهم: آزمون فرایند طی شده از طریق LDAPS ( پورت 636)

# ldapsearch -x -D "cn=Manager,dc=lpi,dc=org" -W -H ldaps://ldap.lpi.org

گام چهاردهم: پایش فعالیت‌ها و پورت‌های فعال

# netstat –antp | grep slapd

گام پانزدهم: بررسی ترافیک معمولی شبکه و نمایش رمزهای کاربران

# tcpdump port ldap -i lo -X -s 1024

و اگر ارتباط، رمزشده باشد، دیگر رمزی نمایش داده نمی‌شود.

# tcpdump port ldap -i lo -X -s 1024

منبع: salam-donya

1 نظر
  1. mbm می گوید

    سلام
    من دستوراتی که شما نوشته بودید و اجرا کردم ولی تو دستور سوم گیر کردم و فایل در مسیر مورد نظر وجود نداره که کپی کنم در مسیر مورد نظر
    باید چکار کنم ؟؟؟

ارسال یک نظر

آدرس ایمیل شما منتشر نخواهد شد.

این سایت از اکیسمت برای کاهش هرزنامه استفاده می کند. بیاموزید که چگونه اطلاعات دیدگاه های شما پردازش می‌شوند.