اطلاعیه

بستن
No announcement yet.

نحوه نصب FreeIPA (سرویس احراز هویت متمرکز لینوکسی) در CentOS 7

بستن
X
  • فیلتر کردن
  • زمان
  • نمایش
پاک کردن همه
پست های جدید

  • نحوه نصب FreeIPA (سرویس احراز هویت متمرکز لینوکسی) در CentOS 7

    FreeIPA یک راهکار امنیتی opensource برای لینوکس است که شبیه به Active Directory مایکروسافت،‌ مدیریت اکانت ها و احراز هویت متمرکز را فراهم میآورد. FreeIPA در حقیقت بین پروژه های اوپن سورس مشابه شامل 389 Directory Server, MIT Kerberos, و SSSD بهترین است.

    FreeIPA برای CentOS 7, Fedora, Ubuntu 14.04/16.04 کلاینت دارد. این کلاینت ها باعث میشوند اضافه کردن ماشین ها به دامین IPA شما، نسبتا سریع و مستقیم شود. ما بقی سیستم عامل ها را میتوان با استفاده از SSSD یا LDAP در FreeIPA اضافه و شناسایی بشوند.

    در این پست ما میخواهیم FreeIPA را روی CentOS 7 نصب کنیم. سپس شما میتوانید ماشین های کلاینت را کانفیگ کنید و به کاربران FreeIPA امکان login شدن با یوزر و پسورد IPA شان را بدهید.

    بعد از پایان این پست شما میتوانید یک کلاینت FreeIPA را روی Ubuntu 16.04 یا CentOS 7 کانفیگ کنید.


    پیشنیاز ها

    در این پست شما به موارد زیر نیاز خواهید داشت.
    • یک سرور CentOS 7 با حداقل 1 گیگ بایت مموری. به صورت پیش فرض CentOS 7 تنها از یوزر root استفاده میکند. به این دلیل اینکه ما از FreeIPA برای مدیریت کاربران استفاده میکنیم نیازی نیست که به صورت دستی یوزر دیگری اضافه کنیم،‌ شما به آسانی میتوانید تمام مراحل مطرح شده در پست زیر را با یوزر root اجرا کنید.
    • فایروال را روی سیستم تان فعال کنید. این مرحله از آنجایی که FreeIPA احراز هویت حساس کاربر را کنترل میکند شدیدا توصیه میشود.
    • یک دامین کاملا ریجیستر شده برای استفاده در سرور و کلاینت، شما میتوانید یک دامین از هاستینگ منطقه لینوکسی ها خریداری کنید.
    • رکوردهای DNS زیر را نیز برای سرورتان تعریف کنید.
    • یک A رکورد با نام سرورتان (به طور مثال : ipa.linux-zone.org) که به آدرس ip سرور شما اشاره میکند.
    • یک AAAA رکورد با نام سرورتان که به آدرس ip v6 سرورتان اشاره میکند،‌ که البته این مورد در صورتی است که شما بخواهید سرورتان از طریق ip v6 هم در دسترس باشد.
    • به صورت دلخواه یک ادیتور متنی مانند nano یا vi/vim را روی سیستم تان نصب کنید.


    مرحله 1 : آماده سازی سرور IPA

    قبل از نصب هر چیزی نیاز داریم که برای اطمینان از آماده بودن سرور برای اجرا کردن FreeIPA یک سری موارد را انجام دهیم. خصوصا تعریف Hostname سرور،‌ آپدیت سرور، چک کردن رکوردهای DNS و همچنین اطمینان از اینکه فایروال ترافیک به FreeIPA را ممکن میسازد.

    برای شروع،‌ hostname سرورتان باید با FQDN تان match باشد تا FreeIPA به درستی کار کند. ما در این پست برای FQDN از ipa.linux-zone.org استفاده میکنیم.

    شما همچنین میتوانید زمانیکه سرورتان را ایجاد میکنید، hostname خود را نیز تعریف کنید و یا بعد از اینکه سرور را ایجاد کردید با استفاده از دستور hostname زیر آنرا تغییر دهید.
    کد PHP:
    # hostname ipa.example.org 
    اکنون پکیج ها را از ریپازیتوری با استفاده از دستور yum آپدیت میکنیم.
    کد PHP:
    # yum update 
    سپس،‌ پورت های مورد نیاز را برای FreeIPA در فایروال باز میکنیم.
    کد PHP:
    # firewall-cmd --permanent --add-port={80/tcp,443/tcp,389/tcp,636/tcp,88/tcp,464/tcp,53/tcp,88/udp,464/udp,53/udp,123/udp} 
    برای اعمال تغییرات فایروال را reload میکنیم.
    کد PHP:
    # firewall-cmd --reload 
    سرانجام نیاز دارید که بررسی کنید آیا DNS به درستی reslove میشود یا خیر؟ شما میتوانید برای این کار از دستور dig استفاده کنید. برای نصب dig باید پکیج bind-utils را نصب کنید.
    کد PHP:
    # yum install bind-utils 
    سپس با استفاده از دستور dig که در زیر مشاهده میکنید A رکورد را چک کنید.
    کد PHP:
    # dig +short ipa.example.org A 
    دستور بالا باید your_server_ipv4 را نمایش دهد.

    در صورتی که ipv6 تان فعال است شما میتوانید رکورد AAAA را نیز به شیوه یکسان تست کنید.
    کد PHP:
    # dig +short ipa.example.org AAAA 
    دستور بالا باید your_server_ipv6 را نمایش دهد.

    شما همچنین میتوانید reverse lookup را نیز تست کنید. این مورد تست میکند که آیا شما میتوانید hostname را از ip آدرس resolve کنید.
    کد PHP:
    # dig +short -x your_server_ipv4
    # dig +short -x your_server_ipv6 
    دستور بالا باید ipa.linux-zone.org را نمایش دهد.

    FreeIPA استفاده سنگینی از DNS ها میکند در نتیجه در مرحله بعد از اینکه سرورمان DNS را میبیند مطمئن میشویم.



    مرحله 2 : تعریف DNS

    همه ماشین هایی که FreeIPA روی آنها در حال اجراست باید به جای hostname شان FQDN داشته باشند که ما در مرحله قبل توضیح دادیم. علاوه بر این hostname هر سرور باید به ip آن resolve شود نه به ip لوکال هاست.

    نکته : اگر شما FreeIPA را روی یک سرور در شبکه LAN تان راه اندازی میکنید به جای مورد بالا از ip های private شبکه LAN خود استفاده کنید.

    شما میتوانید برای پیدا کردن ip آدرس سرورتان از دستور ip همانند زیر استفاده کنید.
    کد PHP:
    # ip addr show 
    شما خروجی شبیه به زیر مشاهده خواهید کرد.
    کد PHP:
    . . .
    2eth0: <BROADCAST,MULTICAST,UP,LOWER_UPmtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link
    /ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
        inet 111.111.111.111
    /18 brd 111.111.111.255 scope global eth0
           valid_lft forever preferred_lft forever
        inet6 1111
    :1111:1111:1111::1111:1111/64 scope global
           
    valid_lft forever preferred_lft forever
    . . . 
    آدرس ipv4 کاملا بعد از inet نمایش داده میشود و آدرس ipv6 بعد از inet6 نمایش داده میشود. (درصورتی که آنرا فعال کرده باشید) اگر شما شبکه private دارید میتوانید این آدرس ها را صرف نظر کنید.

    اکنون نیاز داریم که فایل host را تغییر دهیم و hostname سرور را به ip آدرس خارجی آن map کنیم. فایل /etc/hosts دامین name ها را به ip آدرس ها به صورت لوکال روی ماشین map میکند. این فایل را با ادیتور متنی خود باز کنید.
    کد PHP:
    nano /etc/hosts 
    خطی که hostname سرورتان بعد از 127.0.0.1 دارد را پیدا کنید.
    کد PHP:
    . . .
    # The following lines are desirable for IPv4 capable hosts
    127.0.0.1 ipa.example.com ipa.linux-zone.or
    127.0.0.1 localhost.localdomain localhost
    127.0.0.1 localhost4
    .localdomain4 localhost4
    . . . 
    127.0.0.1 را به آدرس ipv4 سرورتان تغییر دهید.
    کد PHP:
    . . .
    # The following lines are desirable for IPv4 capable hosts
    your_server_ipv4 ipa.example.com ipa.linux-zone.org
    127.0.0.1 localhost
    .localdomain localhost
    127.0.0.1 localhost4
    .localdomain4 localhost4
    . . . 
    در صورتی که ipv6 دارید شما نیاز خواهید داشت که ipv6 تان (::1) را نیز به hostname تان map کنید.
    کد PHP:
    ...
    # The following lines are desirable for IPv6 capable hosts
    ::1 ipa.example.com ipa.linux-zone.org
    ::1 localhost.localdomain localhost
    ::1 localhost6.localdomain6 localhost6
    ... 
    ::1 را به آدرس ipv6 سرورتان تغییر دهید.
    کد PHP:
    ...
    # The following lines are desirable for IPv6 capable hosts
    your_server_ipv6 ipa.example.com ipa.linux-zone.org
    ::1 localhost.localdomain localhost
    ::1 localhost6.localdomain6 localhost6
    ... 
    فایل را ذخیره و از آن خارج شوید.

    به صورت پیش فرض، هر زمانی که سیستم boot میشود CentOS از تنظیمات در فایل /etc/cloud/templates/hosts.redhat.tmpl برای ایجاد /etc/hosts استفاده میکند. برای اینکه این تغییرات را دائمی کنیم نیاز داریم که تغییرات مشابه این را آن فایل نیز اعمال کنیم.

    فایل را باز کنید.
    کد PHP:
    nano /etc/cloud/templates/hosts.redhat.tmpl 
    خط 127.0.0.1 ${fqdn} ${hostname} را تغییر دهید و ip سرورتان را در آن قرار دهید.
    کد PHP:
    ...
    # The following lines are desirable for IPv4 capable hosts
    your_server_ipv4 ${fqdn} ${hostname}
    127.0.0.1 localhost.localdomain localhost
    127.0.0.1 localhost4
    .localdomain4 localhost4
    ... 
    برای ipv6 مشابها خط ::1 ${fqdn} ${hostname} را تغییر دهید.
    کد PHP:
    ...
    # The following lines are desirable for IPv6 capable hosts
    your_server_ipv6 ${fqdn} ${hostname}
    ::
    1 localhost.localdomain localhost
    ::1 localhost6.localdomain6 localhost6
    ... 
    فایل را ذخیره و از آن خارج شوید.

    سپس ما ایجاد شماره های random را در centos شروع میکنیم. این کار به FreeIPA اجازه اجرا کردن فانکشن های cryptographic که برای احراز هویت نیاز دارد را میدهد.



    مرحله 3 : تنظیمات Random Number Generator

    راه اندازی FreeIPA به دیتای random زیادی به منظور عملیات cryptographic نیاز دارد. به صورت پیش فرض یک ماشین ویرچوال بدون دیتای random اجرا خواهد شد. برای این موضوع ما از rngd استفاده خواهیم کرد. که یک نرم افزار random number generator میباشد. rngd به واسطه دریافت اطلاعات از دیوایس های سخت افزاری متصل به سرور کار میکند و آنها را به random number generator کرنل ارسال میکند.

    ابتدا rngd را نصب کنید.
    کد PHP:
    # yum install rng-tools 
    سپس آنرا فعال کنید.
    کد PHP:
    # systemctl start rngd 
    مطمئن شوید که سرویس به صورت اتوماتیک در boot سیستم start شده باشد.
    کد PHP:
    # systemctl enable rngd 
    در نهایت،‌ بررسی کنید که rngd در حال اجرا باشد.
    کد PHP:
    # systemctl status rngd 
    خروجی باید عبارت active (running) را نمایش داده باشد.

    حالا که همه پیش نیازها را کانفیگ کردیم اکنون میتوانیم به نصب سرور FreeIPA بپردازیم.



    مرحله 4 : نصب سرور FreeIPA

    اکنون ما میتوانیم به نصب FreeIPA که پکیج آن ipa-server میباشد بپردازیم.
    کد PHP:
    # yum install ipa-server 
    سپس دستور نصب FreeIPA را اجرا کنید. دستور زیر اسکریپتی را اجرا خواهد کرد که از شما میخواهد آپشن های کانفیگی و نصب FreeIPA را انتخاب کنید.
    کد PHP:
    # ipa-server-install 
    علاوه بر احراز هویت،‌ FreeIPA توانایی مدیریت رکوردهای DNS برای Host ها را دارد. این ابزار میتواند مدیریت و provisioning هاست ها را ساده تر کند. در این مقاله ما از DNS موجود در FreeIPA استفاده نمیکنیم. این مورد برای نصب اولیه مورد نیاز نیست.
    کد PHP:
    Installation script prompt
    Do you want to configure integrated DNS (BIND)? [no]: no 
    سپس شما نیاز دارید که hostname و domain name سرور و نام Kerberos realm را وارد کنید. Kerberos یک پروتکل احراز هویت است که FreeIPA از آن در پشت صحنه احراز هویت ماشین های هاست استفاده میکند. اکیدا توصیه میشود که domain name تان به عنوان Kerberos realm استفاده کنید. استفاده از یک نام متفاوت باعث بروز مشکل با ارتباط به اکتیو دایرکتوری FreeIPA میشود و ممکن است مشکلات دیگری نیز به بار بیاورد.

    هشدار : دامین root‌ خود (example.com)‌ را به عنوان domain name برای ipa خود استفاده نکنید، که باعث مشکلات DNS میشود.
    کد PHP:
    Installation script prompt
    Server host name 
    [ipa.example.org]: ipa.example.org
    Please confirm the domain name 
    [example.org]: ipa.example.org
    Please provide a realm name 
    [EXAMPLE.ORG]: IPA.EXAMPLE.ORG 
    سپس برای مدیر LDAP directory یک پسورد بسازید. این مورد برای کاربرد LDAP در FreeIPA مورد نیاز است. سپس پسورد ادمین IPA را ایجاد کنید که به هنگام لاگین شدن در FreeIPA مورد استفاده قرار میگیرد. از آنجایی که امنیت کل سیستم به پسورد ها بستگی دارد شدیدا توصیه میشود از پسورد های امنی که به صورت رندوم ایجاد میشوند استفاده کنید.

    تنظیمات را تایید کنید. بعد از آن installer شروع به کار خواهد کرد.
    کد PHP:
    Installation script prompt
    Continue to configure the system with these values? [no]: yes 
    سپس پروسه نصب ممکن است بسته به سرعت سرورتان چندین دقیقه طول بکشد.

    اکنون که نصب در سرورمان به پایان رسیده است باید آنرا تست کنید.



    مرحله 5 : فانکشن های سرور FreeIPA را بررسی کنید.

    ابتدا،‌ بررسی کنید که آیا Kerberos realm به درستی نصب شده باشد. این کار را میتوانید با ایجاد یک token kerberos برای یوزر ادمین انجام دهید.
    کد PHP:
    # kinit admin 
    اگر به درستی کار کرد از شما میخواهد که پسورد ادمین IPA را در طول پروسه نصب وارد کنید. آنرا تایپ کنید و سپس Enter را فشار دهید.

    سپس کارایی درست سرور IPA را بررسی میکنیم.
    کد PHP:
    # ipa user-find admin 
    که باید خروجی زیر را نمایش دهد.
    کد PHP:
    --------------
    1 user matched
    --------------
      
    User loginadmin
      Last name
    Administrator
      Home directory
    : /home/admin
      Login shell
    : /bin/bash
      Principal alias
    admin@IPA.EXAMPLE.COM
      UID
    494800000
      GID
    494800000
      Account disabled
    False
    ----------------------------
    Number of entries returned 1
    ---------------------------- 
    همچنین باید بتوانیم به پنل وب با url زیر دسترسی داشته باشیم.
    کد PHP:
    https://ipa.example.com 
    نکته : certificate TLS نامعتبر خواهد شد. در اینجا ما فقط هشدار را bypass خواهیم کرد. در آینده شما میتوانید از certificate دلخواه خود برای دریافت یک TLS certificate معتبر استفاده کنید. به محض اینکه certificate را به دست اوردید میتوانید آنرا به certificate مربوط به ca (معمولا ca.crt)، همچنین فایل certificate (فایل your_domain.crt)‌ و فایل key (فایل your_domain.key) را به سرور آپلود کنید.

    بعد از اینکه فایل ها را به سرور آپلود کردید CA را با استفاده از پسورد directory manager که قبلا تعریف کردید نصب کنید. شما میتوانید در ابتدای دستور یک فاصله قرار دهید تا از ذخیره شدن آن در history شل جلوگیری کنید.
    کد PHP:
    # ipa-cacert-manage -p your_directory_manager_password -n httpcrt -t C,, install ca.crt 
    سپس certificate و key مربوط به سایت را نصب کنید.
    کد PHP:
    ipa-server-certinstall --d your_domain.key your_domain.crt 
    شما برای اعمال تغییرات نیاز خواهید داشت سرور را restart کنید.

    در اینترفیس وب با یوزر admin لاگین کنید. Username برابر با admin میباشد و Password در حقیقت همان پسوردی است که شما در مراحل قبل برای ادمین IPA تعریف کردید. در بالا صفحه مشاهده خواهید کرد که میگوید Authenticating .... و سپس شما به صفحه اصلی IPA که شبیه به زیر است هدایت خواهید شد.




    در نهایت بیایید یکسری قابلیت های FreeIPA با اضافه کردن یک کاربر جدید بررسی کنیم.



    مرحله 6 : کانفیگ کاربران IPA

    FreeIPA یک مجموعه خیلی گسترده از فیچرهای مدیریتی و پالیسی کاربر را داراست. شبیه به کاربران unix استاندارد، کاربران FreeIPA به گروه ها متعلق هستند. گروه ها و کاربران مجزا را میتوان برای دسترسی به هاست ها (ماشین های کلاینت) یا گروهی از هاست ها (hostgroups) بر اساس پالیسی ها مجاز یا غیرمجاز دانست. FreeIPA همچنین میتواند دسترسی sudo را مدیریت کند،‌ groups یا users میتوانند دسترسی sudo روی هاست ها یا hostgroups دریافت کنند.

    در این مقاله ما تنها اضافه کردن کاربران جدید را بررسی خواهیم کرد.

    برای اضافه کردن یک کاربر روی تب Identity کلیک کنید و سپس روی Users کلیک کنید. در اینجا لیست جدولی از کاربران نمایش داده خواهد شد. روی دکمه +Add در بالا جدول کلیک کنید تا بتوانید کاربر جدید اضافه کنید. فیلدهای ضروری را (مانند first name و last name) در فرومی که باز میشود وارد کنید،‌ سپس روی Add برای اضافه کردن کاربر کلیک کنید یا برای کانفیگ جزئیات پیشرفته روی Add and edit کلیک کنید.

    جزئیات پیشرفته را نیز میتوان با کلیک کردن روی user در تب orginal دسترسی داشته باشید. در زیر شما جزئیاتی را میبینید که یک administrator هنگام مشاهده جزئیات کاربر خواهد دید.
    {"alt":"\u0628\u0631\u0627\u06cc \u062f\u06cc\u062f\u0646 \u0633\u0627\u06cc\u0632 \u0628\u0632\u0631\u06af \u0631\u0648\u06cc \u0639\u06a9\u0633 \u06a9\u0644\u06cc\u06a9 \u06a9\u0646\u06cc\u062f \u0646\u0627\u0645: freeipa-2.png \u0645\u0634\u0627\u0647\u062f\u0647: 0 \u062d\u062c\u0645: 86.5 \u06a9\u06cc\u0644\u0648 \u0628\u0627\u06cc\u062a","data-align":"center","data-attachmentid":"26139","data-size":"full","title":"freeipa-2.png"}



    کاربران خاص همچنین میتوانند در وب IPA لاگین کنند. آنها قادر خواهند بود که سطح دسترسی شان را مشاهده و جزئیات شخصی خود را ویرایش کنند.

    از کاربران جدید خواسته میشود تا پسوردشان را در اولین باری که به ماشین IPA لاگین میکنند تغییر دهند. این مورد علاوه بر وب IPA میتوان از طریق ssh هم انجام داد. یکی از ابزارهای مفید توانایی اضافه کردن SSH Key میباشد. یک کاربر میتواند SSH Key پابلیک خود را آپلود کند و به ماشین IPA انتقال دهد تا login بدون پسورد امکان پذیر شود. کاربر میتواند SSH Key را در هر زمانی بدون هیچ نگرانی حذف کند.



    نتیجه

    اکنون شما یک سرور FreeIPA در حال اجرا دارید،‌ شما نیاز خواهید داشت که کلاینت ها را برای احراز هویت در مقابل این سرور کانفیگ کنید. شما میتوانید یکی از مقالات زیر را برای انجام این کار دنبال کنید.

    نحوه نصب و راه اندازی کلاینت FreeIPA برای Ubuntu 16.04 (به زودی)

    نحوه نصب و راه اندازی کلاینت FreeIPA برای CentOS 7


    علاوه بر این FreeIPA در حقیقت یک سرور LDAP میباشد. هر سرویسی که احراز هویت LDAP را پشتیبانی کند میتواند برای احراز هویت در مقابل سرور FreeIPA شما تنظیم شود.

    شما میتوانید یوزر، گروه و پالیسی های دسترسی را از طریق محیط گرافیکی FreeIPA یا از طریق کنسول آن کانفیگ کنید. rule های sudo میتوانند یک راه نسبتا مستقیم را برای مدیریت دسترسی root فراهم کند. برای محیط های بزرگتر توصیه میشود که چندین سرور FreeIPA راه اندازی شود. در نهایت اگر شما بخواهید که به محیط ویندوز کار کنید شما میتوانید یک سرور Active Directory پیاده سازی کنید.

    FreeIPA یک ابزار احراز هویت به شدت گسترده میباشد، و مراحل بعدی بستگی به بزرگی محیطی دارد که در آن استفاده خواهید کرد. برای کسب اطلاعات بیشتر به وب سایت FreeIPA مراجعه کنید تا لیسی از داکیومنت های جدید را بررسی کنید.
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 06-02-2019, 12:01 PM.
در حال انجام ...
X
کانال تلگرام منطقه لینوکسی ها