راهنمای پیکربندی سرویسدهنده Squid (2673 مجموع کلمات موجود در متن) (8800 بار مطالعه شده است)  تنظیم
لینوکس و Squid جهت
یک پراکسی وب
:: مقدمه
یک
پراکسی سرور یک سرویس کارآمد جهت شبکه
شما یا شبکه شما و اینترنت است که امنیت
بالاتری را جهت کاربران اینترنت فراهم
می کند و هم چنین می تواند بعنوان یک کش
سرور هم استفاده شود که باعث بالا رفتن
بازدهی سرور شما و سرعت آن در دسترسی به
اینترنت می شود.
Squid خود
یک پراکسی سرور ایمن با توانایی بسیار
بالا است که قابلیت استفاده بعنوان کش
سرور را نیز داراست و یکی از کاربردی ترین
کش سرورها در شبکه اینترنت است .
اطلاعاتی
بیشتر در مورد این کش سرور ازطریق سایت
http://www.squid-cache.org
قابل دریافت
است .
:: نصب
لینوکس
قبل
از نصب Squid نیاز
دارید تا سیستم عامل لینوکس را بر روی
سیستم در نظر گرفته شده برای آن نصب نمایید.
بهترین راه
جهت نصب لینوکس استفاده از نمونه های
مختلف در دسترس است که ردهت
و دبیان از مشهورترین
آنهاست که براحتی از طریق اینترنت قابل
دریافت هستند.
:: نصب
Squid
- نصب
از طریق بستههای نرمافزاری
توجه
داشته باشید که معمولا بیشتر نسخه های
لینوکس دارای یک بسته Squid
به صورت
آماده و قابل نصب هستند که ممکن است در
موقعی که نسخه لینوکس شما نصب می شود نصب
نگردد . بعنوان
مثال بعد از نصب ردهت 7.1
شما متوجه
می شوید که Squid نصب
نگردیده است . خود
Squid در
CD #2 در
فولدر RedHat/RPMS قرار
گرفته است . جهت
نصب ان ابتدا اطمینان حاصل نمایید که شما
بعنوان کاربر ریشه وارد شده اید سپس از
فرمان rpm به
صورت زیر استفاده کنید:
|
mount
/mnt/cdrom rpm -Uhv /mnt/cdrom/RedHat/RPMS/squid-*.rpm umount
/mnt/cdrom
|
شما
در هنگام نصب تعداد زیادی از هش (#)
را مشاهده
می کنید که نشان از نصب Squid
دارد .
در لینوکس
دبیان شما می توانید از برنامه apt-get
جهت دان
لود و نصب Squid از
اینترنت اقدام نمایید:
- نصب
از طریق کد منبع
اگر
شما مایل به نصب Squid
از طریق
فایل های کد منبع آن هستید، میتوانید
این کار را در تمامی نسخه های لینوکس انجام
دهید. یادآور
میشوم که شما نیاز دارید تا جدیدترین
نسخه پایدار Squid
را از وب
سایت آن دریافت نمایید.
سورس Squid
به صورت
فایل فشرده شده tar است
که شما احتیاج دارید ابتدا آن را غیر فشرده
نمایید :
|
Tar -zxf
squid-2.3.STABLE4-src.tar.gz
|
هنگامی
که شما فایل فشرده tar
را غیر
فشرده نمودید شما از این طریق احتیاج به
تنظیم، کامپایل و نصب Squid
دارید:
|
cd
squid-2.3.STABLE4 ./configure make all make install
|
جهت
اطلاعات بیشتر جهت نصب آن فایل INSTALL
را که در
کد منبع Squid موجود
است را مطالعه نمایید.
البته به
یاد داشته باشید که همیشه آسانترین راه
برای نصب Squid استفاده
از بستههای نرمافزاری آماده آن است.
:: تنظیم
Squid
همه
تنظیمات این پراکسی سرور در فایل پیکربندی
آن است ( squid.conf ) که
بستگی به نسخه لینوکس شما ممکن است در
پوشهetc/squid.conf/ یا
etc/squid/squid.conf/ باشد
. قبل
از انجام هرکاری شما باید مسیر این فایل
را در سیستم تان پیدا کنید:
روش
های متعددی جهت تنظیم Squid
از طریق
وب یا GUI ( اینترفیس
کاربری گرافیکی ) وجود
دارد . این
GUI ها
توانایی خواندن و تشخیص و نوشتن فایل
پیکربندی در محل مربوطه را دارا هستند .
خوب
ما در اینجا تنظیم نمودن Squid
را به صورت
دستی شرح می دهیم . جهت
این کار شما یک ویرایش گر متن مانند emacs
یا دیگر
نرم افزار ها احتیاج دارید و اینکه فراموش
نکنید جهت انجام فرامین مربوطه شما باید
ابصورت کاربر ریشه وارد سیستم شوید تا
دسترسی به نوشتن در فایل پیکربندی را
داشته باشید.
فایل
پیکربندی Squid خود
دارای پارامترهای تنظیماتی بسیاری است
که ما در اینجا همه آن ها را پوشش نخواهیم
داد و به اصلی ترین آن ها اشاره خواهیم
نمود.
:: تنظیمات
پیش فرض
به
صورت پیش فرض Squid همراه
با یک فایل پیکربندی است که تقریبا جهت
بیشتر سرورها صحیح و قابل استفاده است.
جهت استفاده
از Squid در
شبکه بعنوان یک پراکسی باید برخی از
تنظیمات پیشگزیده را تغییر داد.
:: شروع
تنظیمات مقدماتی
هنگام
تنظیم Squid در
فایل پیکربندی آن (
squid.conf ) تعداد
زیادی توضیح وجود دارد که قابل استفاده
هستند.در
این حالت حجم فایل در حدود 76
کیلو بایت
است که در صورت حذف این توضیحات حجم آن به
600 بایت
کاهش می یابد! که
در این صورت ویرایش آن از طریق ویرایش گر
ها آسان تر خواهد شد.
البته وجود
این توضیحات میتواند کمک بزرگی برای
تنظیم کننده باشد.
جهت
تنظیمات مقدماتی در فایل پیکربندی این
پارامترها را اضافه می کنیم :
|
acl
privatenet src 192.168.0.0/255.255.0.0 http_access allow
privatenet
cache_effective_user squid cache_effective_group
squid
|
نکته
های قابل ذکر در این پارامترها:
:: نمونه
های تنظیمات فایل پیکربندی
دقت
داشته باشید که تنظیمات اشاره شده در
اینجا تنها بخش کوچکی از آن چه که شما می
خواهید با پراکسی سرور Squid
انجام دهید
را شامل می شود .
-
ثبت
وقایع (logging)
به
طور پیش فرض Squid فعالیت
های انجام شده را در چندین Log
فایل ذخیره
می کند :
|
cache_access_log
/var/log/squid/access.log cache_log
/var/log/squid/cache.log cache_store_log none
|
با
اضافه نمودن این پارامترها Squid
پیغام های
خطا را در مسیر var/log/squid/cache.log/
و پیغام
های دسترسی به سرور را در var/log/squid/access.log/
ذخیره می
کند که البته برنامه هایی نیز جهت آنالیز
access.log قابل
دریافت هسنتد که از آن ها می توان به SARG
اشاره نمود
( که
با نام sqmgrlog شهرت
دارد ).
من
چیز مفیدی را در مورد squid's
cache_store_log پیدا
نکردم که از همین جهت می توان توسط خط 3
بالا آن
را غیر فعال نمود .
-
Cache Access
شما
می توانید استفاده از کش را در سرورتان
مقدور سازید که این کار از طریق http_access
امکان پذیر
است . این
را مد نظر داشته باشید که خط acl
یک شبکه
یا یک ابزار شبکه را تعریف می کند.
:: اندکی
در مورد Upstream Proxy
شاید
یکی از برتری های Squid
استفاده
از Upstream Proxy باشد
که می تواند سرعت دسترسی به اینترنت تا
حد قابل ملاحظه ای بالا ببرد.
بعنوان
مثال وقتی ISP شما
دارای کش جهت کاربرانش می باشد کش سرور
شما می تواند سایت های بسیاری را در خود
ذخیره کند که این خود تا حد زیادی بازدهی
را در مواقع ضروری بالا می برد.
یکی
دیگر از مزایای Squid
پشتیبانی
به صورت چندگانه است بدین مفهوم که می
توان چندین کش سرور را با ارتباط داد که
Squid این
کار را از طریق پروتکول ICP
انجام می
دهد . ICP این
اجازه را به کش سرورها می دهد که که طریق
پکت های سریع UDP یا
هم ارتباط برقرار نمایند .
خوب
جهت استفاده از این مزایا شما اول باید
مد نظر داشته باشید که آدرس کش سرور ها
چیست ( proxyserver.yourisp.com
) و هم چنین
از چه پورتی بدین منظور استفاده می کند .
استفاده
از Upstream Proxy به
راحتی امکان پذیر است :
|
cache_peer
proxy.yourisp.com parent 3128 3130 prefer_direct off
|
خط
cache_peer اسم
هاستینگ و نوع کشینگ "parent"
و پورت
پراکسی "3128" و
پورت ICP" 3130" را
مشخص می کند . اگر
کش سرور شما پروتکل ICP
را پشتیبانی
نمی کند از این خط استفاده نمایید :
|
cache_peer
proxy.yourisp.com parent 3128 7 no-query default prefer_direct
off
|
- Sharing Caches
توجه
داشته باشید که در مواقع ضروری که یک شرکت
چندین ارتباط را جهت دسترسی به اینترنت
را داشته باشد Squid کش
نمودن سرور ها در حالت اشتراک گذاری آن
ها می پذیرد ( بدین
مفهوم که چندین کش سرور با هم ارتباط داشته
باشند ). در
این صورت باید هر کش سرور این خط را در
فایل پیکربندی خود داشته باشند :
|
cache_peer
theotherproxy.yournetwork.com sibling 3128 3130
|
که
اگر دقت نمایید یکی از پارامترها به
sibling تغییر
یافته بدین مفهوم که فایل های کش را چنانچه
در کش سرور دیگر باشد آن ها را آن ها دریافت
می کند .
- رد
نمودن فایل های آلوده
فایل
هایی وجود دارند که به ویروس نیز آلوده
هستند مانند WIN-BUGFIX.EXE
که مربوط
به ویروس Melissa می
شد که با یک پارامتر ساده می توان دریافت
چنین فایل هایی را از سرور رد نمود .
|
acl
nastyfile dstdom_regex -i WIN[.*]BUG[.*]EXE http_access deny
nastyfile
|
:: تنظیمات
پیشرفته
ترنفند
هایی نیز وجود دارند که شما می توانید جهت
وب پراکسی خود اعمال نمایید مانند شناسایی
کاربر و یا پراکسی ترانسپرنت و یا عدم
دسترسی کاربر به فایل های غیر مجاز در طی
ساعات اداری . اما
این را فراموش نکنید که فایل پیکربندی
Squid بسیار
آسیب پذیر است و با یک تنظیم ناصحیح کوچک
کش سرور کار نمی کند!
- احراز
هویت کاربران
این
مرحله یکی از مهم ترین اجزا جهت مدیران
شبکه است بعنوان مثال مواقعی که شرکت شما
دسترسی به اینترنت را جهت کاربر امکان
پذیر و یا رد می کند .
تنظیم
نمودن یک acl جهت
ورود یا رد نمودن کاربر به راحتی از طریق
تغییر زیر در فایل پیکربندی امکان پذیر
است :
|
authenticate_program
/your/authentication/program acl validusers proxy_auth
REQUIRED http_access allow validusers
|
و این
را توجه داشته باشید که یک برنامه مناسب
شناساگر پراکسی پیدا نمایید (
proxy authentication ) که
قابل ذکر است Squid خود
دارای شناساگری به صورت داخلی نمی باشد
که شما باید در خط authenticate_program
تنظیمات
مناسب را بر طبق برنامه احراز هویت مورد
استفاده، تغییر دهید.
البته
Squid همراه
با چند برنامه احراز هویت نیز ارائه شده
است که در مسیر /usr/lib/squid
موجود
هسنتد که شامل smb_auth (
شناساگر
جهت دومین NT ) و
squid_ldap_auth ( جهت
شناسایی دایرکتوری LDAP
) که در این
میان شناساگر مورد انتحاب من pam_auth
می باشد
که از لایبرری های PAM
جهت شناسایی
کاربران استفاده می کند.
برتری
pam_auth در
شناسایی کاربران در روش های متعدد است و
همه برنامه های شما (
نظیر XDM,
Squid, Apache و
.... ) بر
روی آن قرار دارند ...
جهت
تنظیم pam_auth ( این
روش جهت سیستم های ردهت است ):
- فایل
etc/pam.d/squid/ را
ایجاد نمایید که باید این چنین باشد :
|
auth
required /lib/security/pam_stack.so service=system-auth auth
required /lib/security/pam_nologin.so account required
/lib/security/pam_stack.so service=system-auth password
required /lib/security/pam_stack.so service=system-auth session
required /lib/security/pam_stack.so service=system-auth
|
- اطمینان
حاصل نمایید که خط زیر را در فایل پیکربندی
Squid گذارده
اید:
|
authenticate_program
/usr/lib/squid/pam_auth
|
- و
اینکه authconfig در
سرور شما اجرا شده است تا مشخص نماید شما
از چه سرور شناساگر استفاده می نمایید که
مورد LDAP مناسب
به نظر می رسد ...
:: پراکسی
به صورت ترانسپرنت
ترانسپرنت
نمودن پراکسی یک روش است که شما می توانید
که یک پراکسی سرور را بین شبکه و اینترنت
بگذارید و بدون اینکه نیاز به تنظیمات
خاصی باشد ما مستقیما به اینرنت وصل خواهیم
شد ( توجه
داشته باشید که این روش فقط برای پروتکل
WWW قابل
اجراست ولی جهت سرویس FTP
قابل
استفاده نمیباشد.
) همچنین
باید توجه داشته باشید که ترانسپرنت نمودن
پراکسی و اضافه نمودن احراز هویت که در
مرحله قبل توضیح داده شد هر دو با هم امکان
پذیر نیست.
جهت
نصب پراکسی به صورت ترانسپرنت شما به این
موارد نیاز خواهید داشت :
- یک
قانون فایروال ( Rule )
و Redirect
نمودن
ترافیک خروجی شبکه به پراکسی سرور .
- یک
قانون Squid جهت
فعال کردن Squid تا
اینکه به صورت ترانسپرنت عمل نماید .
جهت
اجرای یک قانون فایروال شما به قانونی
نظیر زیر احتیاج خواهید داشت :
|
/sbin/ipchains
-A input -p tcp -s 0/0 -d 0/0 80 -j REDIRECT 3128
|
جهت
iptables ( هسته
2.4 لینوکس
2.4 به
بالا ) ممکن
است شما مایل به نصب iptables
مبنی بر
فایروال در Squid باشید
. در
قستمی از نصب فایروال شما به ایجاد قانون
DNAT جهت
ارسال ترافیک بر روی پورت 80
به 3128
پراکسی
سرور خواهید داشت .
برای
اطلاعات بیشتر جهت ایجاد قانون های NAT
می توانید
به وب سایت NET
FILTER مراجعه
کنید .
تنظیمات
مورد نیاز Squid جهت
فعال کردن Squid به
صورت ترانسپرنت در اینجا ذکر شده اند :
|
httpd_accel_host
virtual httpd_accel_port 80 httpd_accel_with_proxy
on httpd_accel_uses_host_header on
|
چنانچه
در نصب و راه اندازی Squid
به مشکلی
برخورد نموده اید می توانید از طریق ایمیل
با من مکاتبه نمایید.
هم چنین
در اینجا جا دارد ازدوست گرامیم علی مصلحی
و اعضای گروه Rayesh در
همکاری جهت تهیه این مقاله تشکر نمایم .
احسان
امیدوار
Ehsan.Omidvar@Gmail.com |