ShirazOnline
نمایش نتایج: از شماره 1 تا 1 , از مجموع 1

موضوع: احراز هویت کاربران اکتیودایرکتوری در پراکسی سرور اسکویید ‏

  1. #1
    کاربر عادی omid_mohajerani آواتار ها
    تاریخ عضویت
    Apr 2007
    محل سکونت
    Shiraz
    نوشته ها
    37
    تشکرها / پسندها

    پیش فرض احراز هویت کاربران اکتیودایرکتوری در پراکسی سرور اسکویید ‏

    احراز هویت کاربران در پراکسی سرور یکی از روش هایی است که اغلب در ایران از آن برای مدیریت ‏دسترسی کاربران شبکه محلی به اینترنت استفاده می شود .معمولا در شبکه های ویندوزی از ‏پراکسی سرور ‏ISA ‎‏ برای این منظور استفاده می گردد . اما اگر به هر دلیلی تصمیم گرفته اید تا از ‏پراکسی ‏Squid ‎‏ برای این منظور بهره بگیرید از چه راهکاری استفاده می کنید ؟ آیا تمامی کاربران را در ‏سرویس های معادل ‏ActiveDirectory ‎‏ در لینوکس دوباره تعریف می کنید ؟ اگر تعداد کاربران تعریف ‏شده کم است همین کار را توصیه می کنم ولی اگر تعریف دوباره کاربران در سرویس هایی مانند ‏Samba ‎‏ یا ‏LDAP ‎‏ برای شما امکان پذیر نیست یا اعمال سیاست های اعمالی به کاربران و گروههای ‏مختلف در اکتیو دایرکتوری در سرویس های مبتنی بر لینوکس غیر ممکن یا مشکل ساز باشد چه می ‏کنید؟
    در این مقاله به نحوه احراز هویت کاربران اکتیودایرکتوری در اسکویید می پردازم .‏

    Squid‏ از سه روش برای بدست آوردن اطلاعات مورد نیاز برای احراز هویت کاربران بهره می گیرد . که ‏عبارتند از : ‏
    ‏1 - ‏‎ Basic ‎
    ‏2- ‏Digest
    ‏3 – ‏NTLM

    از لحاظ امنیتی روش ‏Basic ‎‏ بسیار ضعیف است و روش های ‏Digest ‎‏ و ‏NTLM ‎‏ از امنیت بالاتری ‏برخوردار هستند.‏
    Squid‏ برای اعمال این روش ها نیاز به برنامه های ( اسکریپت ها ) کمکی دارد که به ‏authentication ‎helpers ‎‏ مشهورند . ‏‎ ‎برای مشاهده لیستی از این برنامه های کمکی می توانید محتوای دایرکتوری ‏‎/usr/bin/squid‏ را مشاهده کنید .‏


    اگر اسکویید را از طریق ‏source code ‎‏ کامپایل و نصب می نمایید در هنگام کامپایل باید از گزینه ‏مناسب برای استفاده از برنامه کمکی بهره بگیرید . ‏
    مثال :‏
    ./configure -- enable_basic_auth_helpers = LDAP , NCSA

    درخواست های احراز هویت که از کلاینت ها به سوی سرور پراکسی اسکویید ارسال می شود در یک ‏صف قرار می گیرند . و اسکویید به ترتیب به آنها ترتیب اثر خواهد داد .‏
    اسکویید این قابلیت را دارد تا نتایج احراز هویت را کش کند و به این ترتیب از بار پردازش ها بر خود ‏بکاهد . اگر بار این پردازش ها بر اسکویید از حدی بیشتر شود اسکویید با ارسال یک پیام ‏fatal error‏ ‏متوقف می شود .‏

    برای احراز هویت کاربران اکتیودایرکتوری در اسکویید به دو روش ‏Basic ‎‏ و ‏NTLM ‎‏ نیاز است و در نتیجه ‏در این مقاله فقط به بررسی این دورش و تگ های مربوط به آنها می پردازیم . ( اگر چه اکثر تگ های ‏موجود در روش ‏Digest ‎‏ نیز مشابهند .)‏

    ‏1 – ‏Basic Authentication‏ :‏
    ساده ترین و نا امن ترین روش احراز هویت از طریق پروتوکل ‏http ‎‏ روش ‏Basic‏ است . در این روش تبادل ‏اطلاعات از جمله نام کاربری و کلمه عبور به صورت فایل ها (رشته های ) متنی ساده است . اگر چه ‏این رشته های به کاراکتر های خاصی کد می شوند ولی دیکد کردن آنها به سادگی امکان پذیر است .‏
    به عنوان مثال فرض کنید شما از نام کاربری ‏Fannie‏ و کلمه عبور ‏FuRpAnTsClUb ‎‏ برای احراز هویت ‏خود جهت دسترسی به اینترنت از طریق پراکسی اسکویید استفاده می کنید .‏
    در روش ‏Basic ‎‏ ابتدا نام کاربری و کلمه عبور با استفاده از یک کالن از یکدیگر جدا می شوند :‏

    Fannie:FuRpAnTsClUb

    سپس رشته بدست آمده توسط کد گذاری ‏Base64‎‏ که در ‏RFC‏ شماره ‏‎2045‎‏ به آن پرداخته شده است ‏کد گذاری می شود . این رشته کد گذاری شده در سرآیند ‏http‏ به صورت زیر نمایش داده می شود :‏

    Authorization: Basic RmFubmllOkZ1UnBBblRzQ2xVYgo=‎

    بدین ترتیب هر کسی با ‏Sniff ‎‏ کردن ترافیک شبکه شما و استفاده از اسکریپت ‏base64.py ‎‏ که به طور ‏پیش فرض در هنگام نصب ‏pythone‏ در سیستم شما کپی می شود قادر خواهد بود به نام کاربری و ‏پسوورد شما دست یابد .‏

    echo RmFubmllOkZ1UnBBblRzQ2xVYgo= | /usr/local/lib/python.5/base64.py –d



    در روش ‏Basic ‎‏ از پارامترهای زیر می توان برای تنظیم خصوصیات مختلف استفاده کرد :‏

    ‎1 - auth_param basic programcommand
    ‎2 - auth_param basic childrennumber
    ‎3 - auth_param basic realm String
    ‎4 - auth_param basic credentialsttltime-specification
    ‏1 – پارامتر ‏program‏ : دستور مورد نیاز برای اجرای برنامه کمکی و آرگومان های مورد نیاز ( در صورت ‏وجود ) را مشخص می کند .در بیشتر مواقع این پارامتر مشخص کننده مسیر به یکی از ‏authentication helpers ‎‏ است ، که بطور پیش فرض در مسیر ‏‎/usr/local/squid ‎‏ واقع اند .‏
    ‏2 – پارامتر ‏children‏ : مشخص می کند که اسکویید مجاز است تا چه تعداد پردازش برای عمل احراز ‏هویت اختصاص دهد . مقدار پیش فرض 5 است .‏
    ‏3 – پارامتر ‏realm ‎‏ : در اینجا ‏realm‏ را میتوان نام دامنه اکتیو دایرکتوری که کاربران باید از آن خوانده ‏شود در نظر گرفت . ( توجه شود با حروف بزرگ نوشته می شود . ) ‏‎ ‎
    ‏4 – پارامتر ‏credentials ttl‏ : زمان پیش فرضی را مشخص می کند که اسکویید نتایج عمل احراز هویت ‏کاربران را در خود ذخیره ( کش ) می کند . واضح است که هر چه این مقدار بیشتر باشد بار پردازش ‏های احراز هویت بر اسکویید کمتر خواهد بود . ‏
    این نکته حائز اهمیت است که عمل کش شدن نتایج فقط برای نتایج مثبت انجام می گیرد و نه منفی . ‏
    همچنین مقدار زیاد این پارامتر باعث به خطر افتادن امنیت و مشکلات جدی خواهد شد .‏

    مثال : تنظیم پارامتر های مورد نیاز اسکویید برای بهره گرفتن از احراز هویت از طریق ‏pam

    auth_param basic program /usr/local/squid/libexec/pam_auth
    auth_param basic children 10‎
    auth_param basic realm My Awesome Squid Cache
    auth_param basic credentialsttl 1 hour


    البته در ادامه نیاز است تا با تعریف ‏ACL ‎‏ زیر و دسترسی به آن احراز هویت فقط برای کاربران مجاز ‏انجام گیرد:‏


    acl KnownUsers *****_auth REQUIRED

    http_access allow KnownUsers

    ‏( توجه کنید که در این مثال فقط تنظیمات ‏squid‏ بیان شده است و برای احراز هویت با استفاده از ‏pam ‎‏ به تنظیمات لازم برای ‏pam ‎‏ نیاز است که خارج از حیطه این مقاله است . )‏

    از دیگر برنامه های کمکی برای احراز هویت در این روش می توان به ‏NCSA‏ ( ‏ncsa_auth‏ )‏‎ ‎‏ ، ‏LDAP ‎‏ ( ‏squid_ldap_auth‏ ) و ‏SMB‏ ( ‏smb_auth ‎‏ ) نام برد .‏

    ‏2 – ‏Microsoft NTLM Authentication ‎

    NTLM ‎‏ که مخفف واژه های ‏NT Lan Manager ‎‏ است پروتوکلی است که توسط ‏Microsoft ‎‏ ایجاد و ‏توسعه داده شد و گروه های مختلفی از جمله گروه ‏squid ‎‏ از اطلاعات محدود موجود و آنالیز ترافیک ‏شبکه آنرا مهندسی معکوس کرده اند .‏
    NTLM‏ از مکانیزم دستدهی سه طرفه ‏‎)‎‏ ‏‎3 – way handshake‎‏ ) برای احراز هویت یک اتصال بهره می ‏برد . در این روش وقتی یک اتصال در احراز هویت جواب مثبت دریافت کرد هر درخواستی در این اتصال ‏دیگر نیازی به احراز هویت نخواهد داشت . ‏

    NTLM ‎‏ از توابع رمزنگاری و مقادیر کد گذاری شده در تبادلات داده استفاده می کند . ‏
    اگر چه ‏NTLM‏ امنیت بسیار بالاتری نسبت به روش ‏Basic ‎‏ فراهم می آورد ولی متخصصان عقیده دارند ‏که این روش نسبت به روش احراز هویت از طریق ‏Digest ‎‏ از امنیت ضعیف تری برخوردار است .‏


    در روش ‏NTLM ‎‏ از پارامترهای زیر می توان برای تنظیم خصوصیات مختلف استفاده کرد :‏

    ‎1 - auth_param ntlm program command
    ‎2 - auth_param ntlm children number
    ‎3 - auth_param ntlm max_challenge_reuses number
    ‎4 - auth_param ntlm max_challenge_lifetime time-specification

    موارد 1 و 2 همانند روش ‏Basic ‎‏ عمل می کنند و دو پارامتر بعدی خصوصیات احراز هویت اتصال بین ‏کلاینت و سرور را مشخص می کنند .‏
    ‏( در ‏‎3 – way handshake‎‏ ، ابتدا کلاینت درخواست اتصال را با ارائه اطلاعاتی به سرور ارسال می کند ‏، سپس سرور پیامی به نام ‏challenge ‎‏ به کلاینت ارسال می کند و در آخر کلاینت درخواست خود را ‏دوباره با جوابی مثبت به ‏challenge‏ به سرور ارسال می کند . )‏
    ‏3 – پارامتر ‏max_challenge_reuse‏ : مشخص می کند که پیام ‏challenge ‎‏ چند بار می تواند مورد ‏استفاده قرار گیرد . مقدار پیش فرض ‏‎0 ‎‏ است و مشخص می کند که هیچ گاه از یک پیام ‏challenge ‎
    دوبار استفاده نخواهد شد .‏
    بالابردن این مقدار بار انجام عمل احراز هویت توسط اسکویید را کم می کند و متعاقبا از امنیت می ‏کاهد .‏
    ‏4 – پارامتر ‏max_challenge_lifetime ‎‏ : میزان زمانی که پیام ‏challenge ‎‏ معتبر است را مشخص می ‏کند . مقدار پیش فرض 60 ثانیه است .‏

    مثال :‏

    auth_param basic program /usr/local/squid/libexec/pam_auth
    auth_param basic children 10‎
    auth_param basic realm My Awesome Squid Cache
    auth_param basic credentialsttl 1 hour‎
    و ‏ACl‏ و ‏http_access ‎‏ مورد نیاز :‏

    acl KnownUsers *****_auth REQUIRED‎

    http_access allow KnownUsers
    خوب بعد از همه این تفاسیر می رسیم به مبحث اصلی یعنی ‏Squid ***** Authentication Against ‎ActiveDirectory
    برای این کار شما ابتدا باید لینوکس را به اکتیو دایرکتوری ‏join ‎‏ کنید . ( [فقط اعضا می توانند لینک ها را مشاهده کنند برای ثبت نام اینجا را کلیک کنید]) ‏
    و سپس فایل اسکویید ‏‎)‎‏ ‏‎/etc/squid.conf ‎‏ ) را با استفاده از پارامتر های زیر ویرایش کنید :‏

    auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-‎ntlmssp
    auth_param ntlm children 5‎
    auth_param ntlm max_challenge_reuses 0‎
    auth_param ntlm max_challenge_lifetime 2 minutes
    auth_param ntlm use_ntlm_negotiate off

    ‎# (in the ntlm basic area)‎

    auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-‎basic
    auth_param basic children 5‎
    auth_param basic realm LINUX-NOTES.IR
    auth_param basic credentialsttl 2 hours
    و حالا تنظیمات مربوط به ‏ACL ‎‏ :‏

    acl ntlm *****_auth REQUIRED
    و بالاخره :‏
    http_access allow ntlm
    ‏( توجه کنید که ‏
    ‏1 - اگر از کانفیگ اسکوییدی استفاده می کنید که به رنجه خاصی از شبکه دسترسی کامل داده ‏شده است به عنوان مثال :‏http_access allow LAN1 ‎‏ و اکنون می خواهید ‏authentication ‎‏ ‏برای آنها انجام گیرد باید این خطوط را حذف کنید . ‏
    ‏2 – اگر در حال حاضر از اسکویید در حالت شفاف ( ‏transparent‏ ) استفاده می کنید آنرا از حالت ‏شفاف خارج سازید .‏
    ‏3 – بعد از اعمال تغییرات سرویس اسکویید را ریستارت کنید . )‏

    اکنون اگر تنظیمات مربوط به آی پی و پورت سرور پراکسی را مرورگر کلاینت ها را انجام دهید هنگام در ‏خواست کاربران برای مرور اینترنت به کادری که نام کاربری و کلمه عبور را می خواهد مواجه خواهند ‏شد .‏

    امید مهاجرانی
    Omid dot mohajerani at gmail dot com
    [فقط اعضا می توانند لینک ها را مشاهده کنند برای ثبت نام اینجا را کلیک کنید]

  2. # ADS
    Circuit advertisement
    تاریخ عضویت
    Always
    محل سکونت
    Advertising world
    نوشته ها
    Many
     

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

علاقه مندی ها (Bookmarks)

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •