اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

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

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

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

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

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

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

    دیوار آتش :
    پراکسی سرور می تواند تقاضای کاربران را به فایروال بدهد که به انها اجازهٔ ورود یا خروج به شبکهٔ داخلی داده شود.
    فیلتر کردن : پراکسی سرور می تواند تمام محتویات ترافیک وارد شونده یا خارج شونده از شبکهٔ داخلی سازمان را باز بینی کند و طبق تنظیمات انجام شده هر چیزی که به معیارهای تعیین شده برای امنیت یا سیاست های آن سازمان، مغایرت دارد مسدود کند.

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

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

    ثبت کردن :
    پراکسی سرور امکان ثبت گزارش کامل کارکردش را دارد تا در هر زمان امکان پیگیری اعمال کاربران داخل سازمان را فراهم آورد. اینکه کلاینت در چه ساعت و و دقیقه ای چه درخواستی ارسال کرده و حجم اطلاعات مبادله شده، نوع اطلاعات و … از این جمله اند.

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

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

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

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


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

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

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

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

    کد PHP:
     cp /etc/squid/squid.conf /etc/squid/squid.conf.orginal 
    کد PHP:
     chmod a-/etc/squid/squid.conf.original 
    برخی از پارامتر های اسکویید :
    اسکویید بطور پیش فرض بر روی پورت 3128 به درخواست های کلاینت ها گوش می دهد. پارامتری که پورت اسکویید را مشخص می کند http_port در فایل squid.conf است. می توانید مقدار این پارامتر را تغییر دهید تا اسکویید بر روی پورت دیگری به درخواست ها گوش دهد. بطور مثال پورت 8080 پورت متداول دیگری است که مورد استفاده است.

    کد PHP:
     grep http_port /etc/squid/squid.conf 
    کد PHP:
     OUTPUT http_port 3128 
    اسکویید از حافظه اصلی و دیسک برای ذخیره سازی اشیا Cache شده استفاده می کند. حافظه اصلی سرعت بالاتری نسبت به دیسک دارد بنابراین تمامی اشیا پر استفاده توسط کاربران در این حافظه نگهداری می شوند. اشیایی که به تازگی Cache شده باشند نیز در این حافظه نگهداری خواهند شد. چونکه فضای RAM نسبت به دیسک کمتر است و نیاز به فضای لازم برای اشیا دیگر است با استفاده از الگوریتم های ویژه ای مانند LRU اشیایی که کمتر مورد استفاده قرار می گیرند را از حافظه اصلی خارج و در دیسک قرار می دهند. دو پارامتری که به ترتیب فضای حافظه اصلی و فضای دیسک را برای اسکویید تعیین می کنند :

    کد PHP:
    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 شامل فرمت زیر است :

    کد PHP:
     cache_dir Type Directory-Name Fs-specific-data options 
    در خروجی مثال بالا نوع سیستم فایل انتخاب شده برای دایرکتوری اشیا ذخیره شده اسکویید از نوع ufs بوده که مختص استفاده در اسکویید است. سه عدد پس از مسیر دایرکتوری به ترتیب 100 یعنی میزان فضای انتخاب شده برای ذخیره اشیا که 100 مگابایت می باشد، 16 تعداد دایرکتوری های سطح 1 که زیر دایرکتوری squid ایجاد می شوند و 256 تعداد دایرکتوری لایه سطح 2 که در هر کدام از 16 دایرکتوری لایه 1 ساخته می شوند (یعنی 16 لایه دایرکتورزی زیر داریکتوری squid و زیر هر کدام 256 دایرکتوری دیگر)

    کد PHP:
     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 ثانیه در نظر گرفته شده است.

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

    کد PHP:
    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 ها هستند.

    کد PHP:
    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 بصورت زیر است :

    کد PHP:
     acl ACL_NAME ACL_TYPE VALUE 
    و فرمت ACL List ها قوانین تعرف شده به فرمت بالا را اعمال می کند بصورت زیر است :

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

    کد PHP:
    acl biz_network src 10.1.42.0/24

    acl biz_hours time M T W T F 9
    :00-17:00 
    برای اعمال این acl ها باید خطی مانند زیر را بلافاصله بعد از دو خط بالا می آوریم :

    کد PHP:
     http_access allow biz_network biz_hours 
    این باعث می شود تا کاربران شبکه 192.168.10/24 در ساعت های 9 تا 17 بتوانند درخواست بدهند.

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

    کد PHP:
     etc/init.d/squid start
    و اگر پیش از این تغییراتی را انجام داده بودید، برای اعمال تغییرات تازه در فایل squid.conf باید سرویس اسکویید را با دستور زیر restart کنید :

    کد PHP:
     etc/init.d/squid restart
    البته دستور بالا تمامی سوکت های باز شده توسط اسکویید را بسته و مجدد باز می کند که این باعث قطع ارتباط کاربران خواهد شد پس بهتر است با دستور زیر سرویس اسکویید را reload کنید تا بدون قطع ارتباط کاربران، تغییرات اعمال شوند :

    کد PHP:
     etc/init.d/squid reload
    نوشته شده توسط نامی امیر
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 01-11-2020, 11:58 PM.

    #2
    بلاک کردن یا بستن سایت ها برای برخی از کاربران در squid

    فیلتر کردن سایت ها با استفاده از squid :
    توسط اسکویید می توانید کاربرانی را از مشاهده سایت ها، یا عدم دسترسی آنها به سایت در ساعت کاری در اداره منع کنید. با تعریف ACL هایی و استفاده از آدرس IP ماشین آن کاربر و تعیین یک یا چند سایت خاص و یا با استفاده از الگو هایی برای تعیین سایت ها برای کاربران محدودیت ایجاد کنیم. در اسکویید همه ی محدودیت ها توسط ACL و تعریف آنها انجام می شود، می توانید سایت هایی که کاربران یا برخی از آنها می بینند را Cache نکنید، در ساعاتی خاص اجازه دسترسی بدهید، محدودیت بر حجم Download و Upload برای کاربران بگذارید، پهنای باند را کنترل کتید و غیره. در این مطلب قصد داریم با تعریف ACL هایی برخی از کاربران را با استفاده از آدرس IP آنها برای مشاهده سایت هایی محدود کنیم.کاربران می توانن تنها در ساعت اداری (8 صبح تا 12 ظهر و از ساعت 13 ظهر تا 18 عصر) به سایت ها دسترسی داشته و برخی از IP ها نیز مسدود می شوند.فایل squid.conf را باز کنید

    کد PHP:
         vi /etc/squid/squid.conf 
    و ACL های زیر را در آن تعریف کنید. هر ACL داری یک نام و یک نوع است. همچنین یک مقدار متناسب با نوع آن. دو ACL تعریف شده زیر به نام های morning_hours و evening_hours از نوع time که بازه زمانی ساعت اداری را مشخص می کنند. (میان ساعت 12 تا 13 وقت نماز و ناهار و … هست).

    کد PHP:
        acl morning_hours time M T W H F 8:00-12:00

        acl evening_hours time M T W H F 13
    :00-18:00 
    از دو ACL زیر نخستین ACL از نوع url_regex و مقدار آن مسیر یک فایل شامل الگوهایی از URL سات ها و دمین ACL از نوع src و مقدار آن فایلی شامل آدرس های کلاینت هایی است که باید بلاک (Deny) شوند.

    کد PHP:
        “acl deniedDomains url_regex src “/etc/squid/deniedDomains

        “acl blacklistIP src “
    /etc/squid/blacklistIP 
    با استفاده از دو خط زیر سیاست Deny را بر روی ACL های تعریف شده در بالا اعمال می کنیم. دو خط زیر را اینگونه بخوانید: “آدرس های IP کلاینت های موجود در فایل مشخص شده در blacklistIP در بازه ساعت 8 صبح تا 12 ظهر و از ساعت 13 ظهر تا 18 عصر به آدرس های سایت های درون فایل مشخص شده در deniedDomains دسترسی ندارند”

    کد PHP:
        http_access deny deniedDomains morning_hours blacklistIP

        http_access deny deniedDomains evening_hours blacklistIP 
    محدودیت اعمال شده در بالا قطعن نباید شامل حال مدیران بشود (یا حتی کارمندانی دیگر که کارشان در شرکت با اینترنت است). پس با تعریف ACL زیر و سپس اعمال سیاست http_access allow به بقیه کاربران اجازه دسترسی را در تمامی ساعت ها خواهیم داد.

    کد PHP:
        “acl myNetworksrc “/etc/squid/acl

        http_access allow myNetwork 
    نکته ای که باید توجه کنید در نوشتن ACL ها و اعمال سیاست ها، اینکه اعمال سیاست بلافاصله پس از تعریف ACL ها انجام شود.

    آخرین گام برای تکمیل این مطلب ایجاد سه فایل است :

    ایجاد فایل deniedDomains که فهرست الگو های URL سایت ها را نگه می دارد.

    کد PHP:
         vi /etc/squid/deniedDomains 
    بطور مثال اسامی (الگو های) زیر را وارد کنید.

    friendster
    metacafe
    myspace
    videos.google
    youtube
    facebook
    chatenabled.mail.google.com


    ایجاد فایل blacklistIP که فهرست کلاینت های غیر مجاز را دارد.

    کد PHP:
         vi /etc/squid/blacklistIP 
    بطور مثال آدرس های زیر را وارد کنید. سه آدرس نخست برای سه کلاینت و آخرین خط کل شبکه 192.168.70.0/24 را شامل می شود.

    192.168.0.254
    192.168.1.221
    192.168.1.236
    172.16.70.0/24


    در انتها ایجاد فایل acl که فهرست کلاینت های مجاز را نشان می دهد.

    کد PHP:
         vi /etc/squid/acl 
    آدرس های زیر را می توان شامل آن باشد.

    192.168.1.0/24
    172.16.70.0/24
    213.44.2.126


    و در نهایت دستور زیر را وارد کنید تا اسکویید را اندازی مجدد شود : (تفاوت restart و reload را در انتهای این مطلب بخوانید)

    کد PHP:
         etc/init.d/squid reload
    تمامی مقادیر بکار رفته در این فایل ها باید با توجه به شبکه و نیاز شما تغییر کند.

    برای اطلاع بیشتر از ساختار فایل squid.conf و همچنین فرمت ACL ها می توانید این مطلب را از همین سایت و این مطلب را از سایت ویکی اسکویید بخوانید.
    نویسنده نامی امیر
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 01-11-2020, 11:58 PM.

    کامنت

    درباره انجمن منطقه لینوکسی ها

    انجمن منطقه لینوکسی ها با هدف ارتقاء سطح علمی کاربران در سطح جهانی و همچنین کمک به بالا بردن سطح علمی عمومی در زمینه های تخصصی فوق پایه گذاری شده است. انجمن منطقه لینوکسی ها از طریق کارشناسان و متخصصان پاسخگوی سوالات گوناگون کاربران مبتدی یا پیشرفته میباشد تا حد امکان تلاش شده که محیطی متنوع و کاربر پسند و به دور از هرگونه حاشیه جهت فعالیت کاربران در این انجمن ایجاد شود. لذا ما به صورت مستمر برای پیشرفت کمی و کیفی محتوی و اطلاعات انجمنمان میکوشیم که این برای ما ارزشمند و حائز اهمیت است. کلیه حقوق،اطلاعات و مقالات در این انجمن متعلق به سایت منطقه لینوکسی ها میباشد، و هرگونه نسخه برداری بدون ذکر منبع مورد پیگرد قانونی خواهد شد.

    شبکه های اجتماعی
    در حال انجام ...
    X