منبع اصلی نوشتار زیر در این لینک قرار دارد

نصب و راه اندازی squid در لینوکس

اسکویید یک کارساز پراکسی (پراکسی سرور) است که روی http و https و ftp عمل میکند و می‌تواند به عنوان کارساز کش (کش‌سرور) نیز به کار رود. اسکوئید یک برنامه چندسکویی است و قابل نصب در لینوکس و ویندوز است. پراکسی سرور واسطه‌ای بین کاربر داخلی و اینترنت است. در حقیقت پراکسی در خواست کلاینت (client)را به پراکسی سرور فرستاده، پراکسی سرور محتویات بسته را بررسی می‌کند و در صورت لزوم پردازش‌های مورد نظر را روی بستهٔ دیتا انجام می‌دهد و بسته را می‌سنجد، در صورت عدم مغایرت با سیاست‌های امنیتی تنظیم شده برای شبکه به آن‌ها اجازهٔ عبور از فایروال را می‌دهد و این درخواست روی شبکه ارسال می‌شود و جواب آن توسط پراکسی سرور از اینترنت دریافت و برای کلاینت ارسال می‌شود.

مزایای استفاده از پراکسی

همانطور که اشاره شد پراکسی سرور دارای قابلیت‌های فراوانی است که از آن جمله می‌توان به موارد زیر اشاره کرد:

  • ذخیره‌سازی : با توجه به گران بودن هزینهٔ استفاده از اینترنت (بسته به اندازه پهنای باند مصرفی) و محدودیت پهنای باند معمولاً اطلاعات مورد نظر در زمان کم و با سرعت مطلوب به دست نمی‌آید. برای کمک به رفع این مشکل، پراکسی سرور منابعی مانند فایل‌ها و صفحات وبی که مورد دسترسی قرار می‌گیرند در یک حافظهٔ جداگانه ذخیره می‌کند و تقاضای مجدد این منابع با محتویات کش پاسخ داده می‌شود، در نتیجه از یک سو زمان دستیابی کاهش می‌یابد و از سوی دیگر چون اطلاعات از اینترنت دریافت نمی‌شود باعث کاهش ترافیک شبکه می‌شود و پهنای باند محدود با اطلاعات تکراری اشغال نمی‌شود.
  • دیوار آتش : پراکسی سرور می‌تواند تقاضای کاربران را به فایروال بدهد که به انها اجازهٔ ورود یا خروج به شبکهٔ داخلی داده شود.
  • فیلتر کردن : پراکسی سرور می‌تواند تمام محتویات ترافیک وارد شونده یا خارج شونده از شبکهٔ داخلی سازمان را باز بینی کند و طبق تنظیمات انجام شده هر چیزی که به معیارهای تعیین شده برای امنیت یا سیاست‌های آن سازمان، مغایرت دارد مسدود کند.
  • تصدیق هویت : بیشتر منابع الکترونیکی سازمان‌ها برای حفظ امنیت محدود می‌شوند. این محدودیت می‌تواند با ایجاد کلمهٔ رمز یا محدود کردن دامنهٔ آی پی اعمال شود ف در اینصورت اگر کاربری از یک سرویس‌دهندهٔ اینترنت دیگر، در جایی غیر از سازمان استفاکند آی پی کامپیوتر کاربر غیر معتبر تشخیص داده می‌شود و نیز برای کاربرانی که در داخل سازمان باشند ولی به صورت فیزیکی به شبکهٔ داخلی متصل نشده باشند پراکسی می‌تواند به کاربران دور اجازهٔ عبور موقت دهد و یا به آنها به طور موقت یک آی پی سازمان تخصیص داده می‌شود (مانند استفاده از لپ تاپ شخصی در شبکه داخلی سازمانی مثل دانشگاه) تا بتوانند از منابع محدود شده استفاده کنند.
  • تغییر هویت : برای جلوگیری از برخی حمله‌های نفوذ گران و محافظت از شبکهٔ داخلی سازمان سرور پراکسی قادر به تغییر هویت کلاینت‌های داخلی می‌باشد. بدین صورت که اگر منبع تقاضا شده در کش موجود نباشد، سرور پراکسی برای آن کاربر به عنوان کلاینت عمل می‌کند و از یکی از آدرس‌های آی پی خودش، برای ارسال تقاضا به سرور موجود در اینترنت استفاده می‌کند و سپس پاسخ به وسیلهٔ پراکسی سرور برای کاربر ارسال می‌شود. این پروسه تغییر آی پی باعث می‌شود تقاضا دهندهٔ اولیه قابل ردیابی نباشد و معماری شبکهٔ سازمان از دید بیرونی مخفی بماند. در شکل ۴ نمونه‌ای از این عملکرد نشان داده شده‌است.
  • ثبت کردن : پراکسی سرور امکان ثبت گزارش کامل کارکردش را دارد تا در هر زمان امکان پیگیری اعمال کاربران داخل سازمان را فراهم آورد. اینکه کلاینت در چه ساعت و و دقیقه‌ای چه درخواستی ارسال کرده و حجم اطلاعات مبادله شده، نوع اطلاعات و … از این جمله‌اند.

مطالب بالا از ویکی پدیای فارسی و ادامه مطلب را می توانید از سایت ویکی پدیای فارسی بخوانید.

بطور کلی نحوه عملکرد اسکویید به این صورت است که ماشین های کلاینت درخواست خود مانند یک صفحه ی وب را به ماشین اسکویید ارسال و اسکویید خودش درخواست کلاینت را به اینترنت (یا وب نصب شده بر روی شبکه محلی LAN) ارسال کرده و پاسخ را خودش به کلاینت تحویل می دهد. Cache Server یعنی اینکه وقتی کلاینت در خواست را به اسکویید فرستاد و اسکویید پاسخ را از مقصد دریافت کرد، برای سرعت بخشیدن به پاسخ های بعدی به همین درخواست، یک کپی از آنرا در خودش نگه می دارد. با این کار سرعت پاسخ دهی به درخواست بعدی به کلاینت ها بسیار سریعتر خواهد بود. Proxy Server یعنی اعمال قوانین و سیاست هایی بر روی ماشین اسکویید تا کنترل بر روی درخواست های کلاینت ها و تعیین دسترسی به نوع اشیا (مانند صفحات وب) داشته باشیم. بطور مثال می توانیم تعیین کنیم کدام کلاینت ها به کدام سایت ها دسترسی داشته باشند.

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

  1. نصب و پیکربندی اسکویید در ماشین مورد نظر
  2. پیکربندی ماشین های کلاینت (مرورگر ماشین های کلاینت)

نصب و پیکربندی Squid در توزیع های لینوکسی

نصب در توزیع های لینوکسی به دو صورت : کامپایل از کد منبع یا نصب از طریق بسته های باینری deb و یا rpm انجام می شود. مزیت کامپایل و نصب از طریق بسته های کد منبع اینکه : این بسته ها قابل نصب در تمامی توزیع های لینوکسی هستند و می توان کنترل بیشتری بر Option های اسکویید داشت بطوریکه می توان برخی از گزینه های غیر فعال را با استفاده از سوئیچ های مربوطه فعال نمود در صورتی که در بسته های باینری همه چیز بصورت خودکار و از پیش تعیین شده نصب خواهد شد. در این مطلب اسکویید را با استفاده از بسته های باینری در توزیع های مبتنی بر دبیان و Redhat و به ترتیب با استفاده از دستور های apt-get و yum نصب خواهیم کرد. نخستین دستور زیر برای نصب در توزیع های مبتنی بر دبیان و دومین دستور برای نصب در توزیع های مبتنی بر yum خواهد بود (نصب نسخه 3).

apt-get install squid

yum install squid

پس از نصب، باید فایل squid.conf در مسیر زیر را برای پیکربندی ویرایش کنیم. تنظیمات اسکویید مانند میزان حافظه Ram و میزان فضای اسکویید، دایرکتوری و محل ذخیره سازی فایل های Cache شده، پورتی که اسکویید به آن گوش م دهد و غیره در این فایل انجام می شود. squid.conf تنها فایلی است که باید آنرا تنظیم کنیم.

less /etc/squid/squid.conf

بهتر است پیش از تغییر این فایل، یک کپی از آن با دستور زیر تهیه کنید. نام فایل کپی گرفته squid.conf.orginal می باشد.

cp /etc/squid/squid.conf /etc/squid/squid.conf.orginal

chmod a-w /etc/squid/squid.conf.original

برخی از پارامتر های اسکویید

اسکویید بطور پیش فرض بر روی پورت 3128 به درخواست های کلاینت ها گوش می دهد. پارامتری که پورت اسکویید را مشخص می کند http_port در فایل squid.conf است. می توانید مقدار این پارامتر را تغییر دهید تا اسکویید بر روی پورت دیگری به درخواست ها گوش دهد. بطور مثال پورت 8080 پورت متداول دیگری است که مورد استفاده است.

grep http_port /etc/squid/squid.conf

OUTPUT : http_port 3128

اسکویید از حافظه اصلی و دیسک برای ذخیره سازی اشیا Cache شده استفاده می کند. حافظه اصلی سرعت بالاتری نسبت به دیسک دارد بنابراین تمامی اشیا پر استفاده توسط کاربران در این حافظه نگهداری می شوند. اشیایی که به تازگی Cache شده باشند نیز در این حافظه نگهداری خواهند شد. چونکه فضای RAM نسبت به دیسک کمتر است و نیاز به فضای لازم برای اشیا دیگر است با استفاده از الگوریتم های ویژه ای مانند LRU اشیایی که کمتر مورد استفاده قرار می گیرند را از حافظه اصلی خارج و در دیسک قرار می دهند. دو پارامتری که به ترتیب فضای حافظه اصلی و فضای دیسک را برای اسکویید تعیین می کنند :

grep cache_dir /etc/squid/squid.conf

OUTPUT : #cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256

grep cache_mem /etc/squid/squid.conf

OUTPUT : cache_mem 8 MB

پارمتر cache_dir شامل فرمت زیر است :

cache_dir Type Directory-Name Fs-specific-data options

در خروجی مثال بالا نوع سیستم فایل انتخاب شده برای دایرکتوری اشیا ذخیره شده اسکویید از نوع ufs بوده که مختص استفاده در اسکویید است. سه عدد پس از مسیر دایرکتوری به ترتیب 100 یعنی میزان فضای انتخاب شده برای ذخیره اشیا که 100 مگابایت می باشد، 16 تعداد دایرکتوری های سطح 1 که زیر دایرکتوری squid ایجاد می شوند و 256 تعداد دایرکتوری لایه سطح 2 که در هر کدام از 16 دایرکتوری لایه 1 ساخته می شوند (یعنی 16 لایه دایرکتورزی زیر داریکتوری squid و زیر هر کدام 256 دایرکتوری دیگر)

cache_dir diskd /cache0 200000 16 256

در مثال بالا نوع سیستم فایل diskd و اندازه فضای ذخیره سازی 200000 مگابایت و تعداد 16 دایرکتوری در سطح اول (زیر دایرکتوری cache0) و زیر هر یک از این 16 دایرکتوری 256 دایرکتوری دیگر ایجاد می شود.

مقدار پیش فرض cache_mem هشت مگابایت است که بسته به نیاز شما و میزان حافظه ی اصلی در دسترس می توانید آنرا افزایش دهید. افزایش بی اندازه آن بر عملکرد سیستم عامل و دیگر فرایند های موجود بر روی سیستم اثر می گذارد و میزان پایین آن نیز بر عملکرد خود اسکویید اثر دارد. زیرا اگر میزان آن بیش از حد زیاد باشد، خود سیستم عامل و دیگر فرایند ها مختل خواهند شد و اگر کم باشد، فضای کافی برای ذخیره اشیا درخواست شده از سوی کاربرن وجود نخواهد داشت.

علامت # در خروجی دستور بالا به معنی توضیح یا Comment بودن آن خط است. خطوطی که با # شروع می شوند از نظر اسکویید بی اهمیت هستند و تنها برای کاربر و کسی که فایل را می خواند قابل فهم است. البته ممکن است در جلوی برخی از پارامتر ها علامت # باشد که برای فعال کردن پارامتر باید # را پاک کنید.

پارامتر shutdown_lifetime مدت زمانی است که اسکویید پس از دریافت سگنال shutdown (یعنی سیگنال SIGTERM یا SIGHUP) اجازه می دهد تا connection ها وجود داشته باشند. وقتی که اسکویید سگنال های بالا را دریافت می کند به حالت (مد) shutdown pending می رود تا زمانی که تمامی socket های فعال بسته می شوند. در این مد دیگر هیچگونه اتصال جدید پذیرفته نمی شود. خط زیر میزان این پارامتر 10 ثانیه در نظر گرفته شده است.

shutdown_lifetime 10 seconds

دو پارامتر minimum_object_size و maximum_object_size به ترتیب حداقل و حداکثر اندازه اشیایی که می توانند در دایرکتوری پارامتر cache_dir ذخیره شوند را بر حسب مگابایت نگه می دارند. هیچ شی با حجم کمتر از minimum_object_size و بیشتر از maximum_object_size نمی توانند در دایرکتوری ذخیره شود. اگر می خواهید محدودیت را از حداقل اندازه بر دارید مقدار پارامتر minimum_object_size را 0 کیلوبایت تنظیم کنید.

minimum_object_size 0 KB

maximum_object_size 10 MB

تعریف قوانین و سیاست های اسکویید

اصلی ترین تنظیماتی که بر روی اسکویید (فایل squid.conf) انجام می گیرد تعریف ACL ها یا Access Control List هاست. ACL ها از دو بخش ACL Element و ACL List تشکیل شده است. ACL Element ها در واقع قوانینی هستند که تعریف می کنیم (مانند اینکه کدام کلاینت ها به کدام سایت ها و یا اشیا (مانند فرمت فایل ها) دسترسی داشته باشند) و ACL List ها چگونگی اعمال این قوانین هستند که بصورت Allow و Deny هستند. دستورهای زیر نمونه هایی از ACL ها هستند.

acl our_networks src 192.168.1.0/24 192.168.2.0/24

http_access allow our_networks

خط اول یک ACL به نام our_networks تعریف می کند از نوع src که دو مقدار 192.168.1.0/24 و 192.168.2.0/24 را که محدوده آدرس های دو شبکه هستند را می گیرد. بلافاصله پس از تعریف ACL ها که با کلمه ی acl آغاز می وند و فرمت کلی زیر را دارند یک ACL List از نوع http_access که بر روی درخواست های مرورگر کاربران کنترل دارد بر روی ACL تعریف شده در بالا اعمال (our_network) و اجازه (allow) عبور ترافیک را می دهد.

فرمت کلی تعریف یک ACL بصورت زیر است :

acl ACL_NAME ACL_TYPE VALUE

و فرمت ACL List ها قوانین تعرف شده به فرمت بالا را اعمال می کند بصورت زیر است

ACL_LIST_TYPE allow|deny ACL_NAME

دو خط زیر دو ACL تعریف می کنند که یکی از نوع src که تعیین کننده آدرس های مبدا (کلاینت هایی که درخواستی را از طریق Squid Server به یک سرویس مانند http ارسال کرده اند) و دیگری از نوع time که برای تعریف قوانینی که از نوع زمان هستند (کلاینت ها در چه ساعاتی دسترسی داشته باشند یا نداشته باشند).

acl biz_network src 10.1.42.0/24

acl biz_hours time M T W T F 9:00-17:00

برای اعمال این acl ها باید خطی مانند زیر را بلافاصله بعد از دو خط بالا می آوریم

http_access allow biz_network biz_hours

این باعث می شود تا کاربران شبکه 192.168.10/24 در ساعت های 9 تا 17 بتوانند درخواست بدهند.

راه اندازی اسکویید

اگر برای بار نخست است که فایل squid.conf را ویرایش می کنید باید برای فعال کردن سرویس اسکویید دستور زیر را اجرا کنید

etc/init.d/squid start/

و اگر پیش از این تغییراتی را انجام داده بودید، برای اعمال تغییرات تازه در فایل squid.conf باید سرویس اسکویید را با دستور زیر restart کنید

etc/init.d/squid restart/

البته دستور بالا تمامی سوکت های باز شده توسط اسکویید را بسته و مجدد باز می کند که این باعث قطع ارتباط کاربران خواهد شد پس بهتر است با دستور زیر سرویس اسکویید را reload کنید تا بدون قطع ارتباط کاربران، تغییرات اعمال شوند

etc/init.d/squid reload/



برچسب ها : , , , , ,

به سیاره لینوکس امتیاز دهید

به اين صفحه امتياز دهيد