نحوه نصب و پیکربندی Squid Proxy در Ubuntu 20.04
پروکسی Squid
Squid یک Proxy chashing تقریبا کامل با امکان پشتیبانی از پروتکلهای معروف شبکه ازجمله HTTP HTTPS ،FTP میباشد. Squid میتواند با ذخیره کردن درخواستهای تکراری، فیلتر کردن ترافیکهای وب و ایجاد محدودیت جغرافیایی برای دسترسی به محتوای عملکرد وب سرور را بهبود بخشد.
در این آموزش نحوه راه اندازی Squid Proxy بر روی Ubunto 20.04 و پیکربندی مرورگرهای گوگل کروم و فایرفاکس برای استفاده از آن را توضیح میدهیم.
نصب Squid در Ubuntu
پکیج Squid به صورت پیشفرض در مخازن Ubunto 20.04 وجود دارد. برای نصب آن کافیست دستورات زیر را اجرا کنیم.
Iranshell@Sq:~$ sudo apt update
Iranshell@Sq:~$ sudo apt install squid
پس از اتمام نصب، سرویس Squid به طور اتوماتیک فعال میشود. برای بررسی وضعیت سرویس آن از دستور زیر استفاده میکنیم.
Iranshell@Sq:~$ sudo systemctl status squid
انجام تنظیمات Squid
تنظیمات سرویس Squid در مسیر etc/squid/squid.conf/ قرار دارد. این فایل شامل توضیحاتی است که چگونگی کارکرد هر تنطیم را توضیح میدهد. برای اینکه در بروز رسانیهای بعدی این تنظیمات بازنویسی نشوند میتوانیم تنظیمات خود را در فایلهای جداگانه قرار انجام داده و با استفاده از دستورالعمل “include” در فایل اصلی قرار دهیم.
تهیه Backup از تنظیمات
قبل از هرگونه تغییری پیشنهاد میکنیم از فایل اصلی تنطیمات یک back up تهیه کنید.
Iranshell@Sq:~$ sudo cp /etc/squid/squid.conf{,.orginal}
برای شروع انجام تنظیمات Squid، فایل تنظیمات را با ویرایشگر متنی باز میکنیم.
Iranshell@Sq:~$ sudo nano /etc/squid/squid.conf
Squid به صورت پیش فرض از پورت 3128 TCP و تمامی اینترفیسهای شبکه سرور برای پذیرش ارتباطات وب استفاده میکند. برای تغییر پورت و اینترفیسی که Squid از آنها استفاده میکند کافیست، خطی که با http_port شروع میشود را پیدا و پورت و آدرس IP اینترفیس مورد نظر را اضافه نماییم. اگر در اینجا هیج اینترفیسی مشخص نشده باشد، به صورت پیشفرض Squid به همه اینترفیسها گوش خواهد داد.
http_port IP_ADDR:PORT
اجرای پیش فرض Squid بر روی همه اینترفیسها و پورت 3128 اکثرا برای تعداد زیادی از کاربران مناسب است.
Squid به ما این امکان را میدهد تا چگونگی دسترسی کاربران به منابع وب را با استفاده از Access Control Lists کنترل کنیم. به طور پیش فرض دسترسی به منابع وب فقط برای local host مجاز است.
192.168.33.1
All other allowed IPs
اگر همه کلاینتهایی که از proxy استفاده میکنند، دارای IP استاتیک باشند. سادهترین گزینه برای محدود کردن دسترسی آنها استفاده از ACL میباشد. در غیر این صورت میتوانیم Squid را طوری تنظیم کنیم که برای صدور مجوز برای کلایتها از احراز هویت استفاده کند.
ایجاد فایل ACL مجزا
به جای افزودن آدرسهای IP به فایل تنظیمات اصلی، میتوانیم یک فایل اختصاصی برای نگهداری IPهای مجاز ایجاد کنیم.
Iranshell@Sq:~$ sudo nano /etc/squid/allowed_ips.txt
192.168.33.1
All other allowed IPs
پس از اتمام، فایل تنظیمات اصلی را باز میکنیم و یک ACL جدید با نام allow_ips ایجادمیکنیم. در ادامه و با استفاده از دستور http_access مجوز دسترسی را برای ACL تنظیم میکنیم.
…
#acl allowed_ips src “/etc/squid/allowed_ips.txt”
…
#http_access allow localnet
http_access allow localhost
http_access allow allowed_ips
#And finally deny all other access to this proxy
http_access deny all
ترتیب برای دستورات http_access مهم است. بایستی همه مجوزها قبل از خط http_access deny all نوشته شوند.
دستورالعمل http_access در عمل مانند قوانین فایروال میکند. یعنی در هنگام چک کرده دستورات، اسکوید آنها را از بالا به پایین میخواند و اگر با قانونی منطبق شود، دیگر دستورات زیرین را پردازش نمیکند.
بعد ازانجام هرگونه تغییری در فایل تنطیمات، برای اعمال تغییرات بایستی سرویس پروکسی را ریستارت کنیم.
احراز هویت Squid
اگر محدودیت دسترسی بر اساس IP، در برخی سناریوهای استفاده، کاربردی نباشد، میتوانیم Squid را به گونهای تنظیم کنیم که از یک راهکار back-end برای احراز هویت کاربران استفاده کند. در حال حاضر Squid از مکانیزیمهای احراز هویت LDAP و http basic auth و Samba پشتیبانی میکند.
ما در این راهنما از basic auth که یک روش احراز هویت ساده و مبتنی بر پروتکل HTTP میباشد، استفاده می کنیم.
برای ایجاد یک پسورد رمزنگاری شده توصیه میشود از ابزار openssl برای این کار استفاده کنیم. دستور زیر نام کاربری و پسورد رمزشده را به فایل /etc/squid/htpasswd اضافه میکند.
Iranshell@Sq:~$ sudo printf “USERNAME:$(openssl passwd -crypt PASSWORD)\n” | sudo tee -a /etc/squid/htpasswd
برای مثال برای ایجاد کاربر “admin” با رمز عبور “admin” دستور زیر را اجرا میکنیم.
Iranshell@Sq:~$ sudo printf “admin:$(openssl passwd -crypt admin)\n” | sudo tee -a /etc/squid/htpasswd
Output
admin:pHeV9kKFEV4fU
فعال کردن احراز هویت HTTP Basic Auth
برای فعال سازی HTTP Basic Auth تنظیمات زیر را در فایل اصلی اضافه میکنیم.
Iranshell@Sq:~$ sudo nano /etc/squid/squid.conf
#…
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/htpasswd
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
#…
#http_access allow localnet
http_access allow localhost
http_access allow authenticated
#And finally deny all other access to this proxy
http_access deny all
در سه خط برجسته اول یک ACL جدید به اسم authenticated و خط برجسته آخر یک مجوز دسترسی برای کاربران احراز هویت شده ایجاد میکنیم.
برای اعمال تنظیمات، سرویس مربوط به پروکسی را مجدداً ریستارت میکنیم.
Iranshell@Sq:~$ sudo systemctl restart squid
تنظیمات فایروال
برای باز کردن پورتهای سرور پروکسی بر روی فایروال کافیست پروفایل Squid را با استفاده از دستور زیر بر روی ufw فعال کنیم.
Iranshell@Sq:~$ sudo ufw allow ‘Squid”
اگر Squid از پورت غیر پیش فرض مانند 8888 استفاده کند، میتوانیم با استفاده از دستور زیر پورت مورد نظر را باز کنیم.
Iranshell@Sq:~$ sudo ufw allow 8888/tcp
تنظیمات مرورگر برای استفاده از پراکسی
بعد از نصب Squid آخرین مرحله انجام تنظیمات مورد نیاز بر روی مرورگرهای مختلف برای استفاده از پروکسی میباشد.
مرورگر فایرفاکس
مراحل زیر برای windows ،macOS و Linux یکسان است.
- در گوشه سمت راست بالا، روی آیکون Menu کلیک میکنیم.
- در منوی باز شده option را زده و به قسمت Network میرویم.
- دکمه setting را می زنیم و در پنجره باز شده دکمه تنظیمات دستی پراکسی را انتخاب میکنیم.
آدرس IP سرور پروکسی را در قسمت HTTP Host و 3128 را در قسمت Port وارد میکنیم و در ادامه چک باکس Use this proxy server for all protocols را میزنیم.
برای ذخیره تنظیمات، روی دکمه OK کلیک میکنیم.
در این مرحله تنطیمات مربوط به پروکسی بر روی فایرفاکس تمام شده است و ما میتوانیم با استفاده از پروکسی در اینترنت یک چرخی بزنیم. برای اطمینان از عملکرد صحیح پروکسی، در آدرس google.com عبارت “what is my ip” را جستجو میکنیم. در اینجا google باید IP سرور پروکسی به عنوان IP ما تشخیص دهد.
برای بازگشت به تنظیمات پیشفرض کافیست از قسمت network setting گزینه Use system proxy settings را انتخاب و تنظیمات را ذخیره کنیم.
افزونههای زیادی مانند FoxyProxy وجود دارند که میتوانند به ما در انجام تنظیمات پروکسی فایرفاکس کمک کنند.
مروگر گوگل کروم
گوگل کروم به صورت پیشفرض از تنظیمات پروکسی سیستم عامل به عنوان تنطیمات پروکسی خود استفاده میکند. برای راحتی کار میتوانیم به جای تغییر تنظیمات پروکسی سیستم عامل از یک افزونه مانند SwitchyOmega یا اجرای مرورگر کروم از خط فرمان تنظیمات مربوط به پروکسی را بر روی آن انجام دهیم.
برای راه اندازی مروگر کروم با استفاده از پروفایل جدید و اتصال به سرور پروکسی، از دستور زیر استفاده میکنیم.
دستور قابل اجرا Linux
Iranshell@Sq:~$ /usr/bin/google-chrome \
–user-data-dir=”$HOME/proxy-profile” \
–proxy-server=”http://Iranshell:3128″
دستور قابل اجرا در macOS
Iranshell@Sq:~$ “/Applications/Google Chrome.app/Contents/MacOS/Google Chrome” \
–user-data-dir=”$HOME/proxy-profile” \
–proxy-server=”http://Iranshell:3128″
دستور قابل اجرا در windows
Iranshell@Sq:~$ “C:\Program Files (x86)\Google\Chrome\Application\chrome.exe”^
–user-data-dir=”%USERPROFILE%\proxy-profile”^
–proxy-server=”http://Iranshell:3128″
با اجرای این دستورات پروفایل مربوط به مروگر کروم شامل تنطیمات پروکسی به صورت اتوماتیک ایجاد میشود. به این ترتیب میتوانیم همزمان چندین مروگر کروم با تنظیمات متفاوت اجرا کنیم.
برای تایید اینکه سرور پروکسی به درستی کار میکند، به آدرس google.com رفته و عبارت “What is my ip” جستجو میکنیم. بایستی IP نشان داده شده در مرورگر آدرس سرور پروکسی باشد.
دیدگاهتان را بنویسید