:: مقدمه
یك پراكسی سرور یك سرویس كارآمد جهت شبكه شما یا شبكه شما و اینترنت است
كه امنیت بالاتری را جهت كاربران اینترنت فراهم می كند و هم چنین می
تواند بعنوان یك كش سرور هم استفاده شود كه باعث بالا رفتن بازدهی سرور
شما و سرعت آن در دسترسی به اینترنت می شود .
Squid خود یك پراكسی سرور ایمن با توانایی بسیار بالا كه دارای امكان
استفاده در جهت كش سرور را نیز دارد كه یكی از كاربردی ترین كش سرورها در
شبكه اینترنت است . اطلاعاتی بیشتر در مورد این كش سرور ازطریق سایت
http://www.squid-cache.org قابل دریافت است .

:: نصب لینوكس

بهترین راه جهت نصب لینوكس استفاده از نمونه های مختلف در دسترس است ,
كه ردهت و دبیان از مشهورترین آنهاست كه براحتی از طریق اینترنت قابل
دریافت هستند.
::نصب 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 از اینترنت اقدام نمایید :
apt-get install squid
- نصب از طریق سورس

اگر شما مایل به نصب Squid از طریق فایل های سرورس هستید شما می توانید
این كار را جهت همه نسخه های لینوكس انجام دهید . یادآور شوم كه شما
احتیاج به دریافت جدیترین سورس Squid از وب سایت آن هستید . سورس Squid
به صورت فایل فشرده شده tar است كه شما احتیاج دارید ابتدا ها را غیر
فشرده نمایید :
zcat squid-2.3.STABLE4-src.tar.gz | tar xf -
هنگامی كه شما فایل فشرده tar را غیر فشرده نمودید شما از این طریق
احتیاج به تنظیم و نصب Squid به صورت زیر دارید:
cd squid-2.3.STABLE4
./configure
make all
make install
جهت اطلاعات بیشتر جهت نصب آن فایل INSTALL كه در سورس كد موجود است را
می توانید مورد بررسی قرار دهید.
:: تنظیم نمودن Squid
همه تنظیمات این پراكسی سرور در فایل كانفیگ آن است ( squid.conf ) كه
بستگی به نسخه لینوكس شما ممكن است در فولدر /etc/squid.conf یا
/etc/squid/squid.conf باشد . قبل از انجام هركاری شما باید مسیر این
فایل را در سیستم تان پیدا نمایید :
locate squid.conf
روش های متعددی جهت تنظیم نمودن Squid از طریق وب یا GUI ( اینترفیس
كاربری گرافیكی ) وجود دارد . این GUI ها توانایی خواندن و تشخیص و نوشتن
فایل كانفیگ در محل مربوطه را دارا هستند .
خوب ما در اینجا تنظیم نمودن Squid را به صورت دستی شرح می دهیم . جهت
این كار شما یك ویرایش گر متن مانند emacs یا دیگر نرم افزار ها احتیاج
دارید و اینكه فراموش نكنید جهت انجام فرامین مربوطه شما باید از طریق
روت وارد شوید تا دسترسی به نوشتن در فایل كانفیگ را داشته باشید .
فایل كانفیگ Squid خود دارای پارامترهای تنظیماتی بسیاری است كه ما در
اینجا همه آن ها را پوشش نخواهیم داد و به اصلیترین آن ها اشاره خواهیم
نمود .
:: تنظیمات پیش فرض
به صورت پیشفرض 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
:: نكته های قابل ذكر در این پارامترها :
acl privatenet * . برای مثال دو شبكه خصوصی در پشت فایروال وجود دارد
كه از IANA در شماره های 192.168.x.x به آن اختصاص داده شده است::
- نمونه های تنظیمات فایل كانفیگ
دقت داشته باشید كه تنظیمات اشاره شده در اینجا تنها بخش كوچكی از ان چه
كه شما می خواهید با پراكسی سرور 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 را ایجاد نمایید كه باید این چنین باشد :
service=system-auth auth required /lib/security/pam_stack.so
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-aut
session required /lib/security/pam_stack.so service=system-auth
- اطمینان حاصل نمایید كه لاین زیر را در فایل كانفیگ Squid گذارده اید :
authenticate_program /usr/lib/squid/pam_auth
- و اینكه authconfig در سرور شما اجرا شده است تا مشخص نماید شما از چه
سرور شناساگر استفاده می نمایید كه مورد LDAP مناسب به نظر می رسد ...
:: پراكسی به صورت ترانسپرنت
ترانسپرنت نمودن پراكسی یك روش است كه شما می توانید كه یك پراكسی سرور
را بین شبكه و اینترنت بگذارید و بدون اینكه نیاز به تنظیمات خاصی باشد
ما مستقیما به اینرنت وصل خواهیم گردید ( توجه داشته باشید كه این روش
فقط برای پروتكول WWW قابل اجراست ولی جهت سرویس FTP جواب نمی دهد )
كاربرها باید متوجه باشند كه ترانسپرنت نمودن پراكسی و اضافه نمودن
شناسایی كه در مرحله قبل توضیح داده شد هر دو با هم امكان پذیر نیست .
جهت نصب پراكسی به صورت ترانسپرنت شما به این چیزها احتیاج خواهید داشت :
- یك قانون فایروال ( Rule ) و ری دایركت نمودن ترافیك خروجی شبكه به پراكسی سرور .
- یك قانون 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
-------

نویسنده : David Elson
مترجم : احسان امیدوار
Ehsan.Omidvar@Gmail.com
ویراستاری : مرکز آموزش فناوری اطلاعات گرگان
GorganITTC@golestantvto.ir
www.GolestanTVTO.ir WEBSITE :