Squid هو تطبيق Linux-based proxy متكامل الميزات.
يستخدم في الغالب لفلترة حركة المرور والأمان وعمليات البحث عن DNS.
يتم استخدامه أيضًا لتحسين أداء خادم الويب عن طريق التخزين مؤقتًا.
أي أن خادم Squid هو جهاز كمبيوتر يعمل كوسيط بين كمبيوتر سطح المكتب والإنترنت يعيد توجيه طلبات العميل الواردة إلى خادم حيث يتم تخزين البيانات لسهولة الاسترجاع.
يدعم العديد من البروتوكولات بما في ذلك HTTP و FTP و TLS و SSL و Internet Gopher و HTTPS.
سنشرح هنا تثبيت وإعداد خادم Squid proxy على خادم Ubuntu 20.04.
المتطلبات الأساسية
خادم يعمل بنظام التشغيل Ubuntu 20.04.
إعداد كلمة مرور مستخدم root.
الخطوات
قبل البدء ستحتاج إلى تحديث حزم النظام إلى أحدث إصدار.
يمكنك تحديثها بالأمر التالي:
apt-get update -y
أعد تشغيل النظام لتطبيق التغييرات.
تثبيت Squid Proxy
بشكل افتراضي تتوفر حزمة Squid في Ubuntu 20.04.
يمكنك تثبيته باستخدام الأمر التالي:
apt-get install squid -y
تحقق من حالة خدمة Squid:
systemctl status squid
ستحصل على النتيجة التالية:
? squid.service - Squid Web Proxy Server
Loaded: loaded (/lib/systemd/system/squid.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2020-08-30 12:00:24 UTC; 11s ago
Docs: man:squid(8)
Process: 49265 ExecStartPre=/usr/sbin/squid --foreground -z (code=exited, status=0/SUCCESS)
Process: 49282 ExecStart=/usr/sbin/squid -sYC (code=exited, status=0/SUCCESS)
Main PID: 49283 (squid)
Tasks: 4 (limit: 2353)
Memory: 16.4M
CGroup: /system.slice/squid.service
??49283 /usr/sbin/squid -sYC
??49285 (squid-1) --kid squid-1 -sYC
??49287 (logfile-daemon) /var/log/squid/access.log
??49288 (pinger)
Aug 23 12:00:24 ubuntu2004 squid[49285]: Max Swap size: 0 KB
Aug 23 12:00:24 ubuntu2004 squid[49285]: Using Least Load store dir selection
Aug 23 12:00:24 ubuntu2004 squid[49285]: Set Current Directory to /var/spool/squid
Aug 23 12:00:24 ubuntu2004 squid[49285]: Finished loading MIME types and icons.
Aug 23 12:00:24 ubuntu2004 squid[49285]: HTCP Disabled.
Aug 23 12:00:24 ubuntu2004 squid[49285]: Pinger socket opened on FD 14
Aug 23 12:00:24 ubuntu2004 squid[49285]: Squid plugin modules loaded: 0
Aug 23 12:00:24 ubuntu2004 squid[49285]: Adaptation support is off.
Aug 23 12:00:24 ubuntu2004 squid[49285]: Accepting HTTP Socket connections at local=[::]:3128 remote=[::] FD 12 flags=9
Aug 23 12:00:25 ubuntu2004 squid[49285]: storeLateRelease: released 0 objects
يستخدم Squid المنفذ 3128.
يمكنك التحقق من ذلك:
netstat -plunt | grep 3128
ستحصل على النتيجة التالية:
tcp6 0 0 :::3128 :::* LISTEN 50017/(squid-1)
إعداد المصادقة (Authentication) القائمة على IP
سنقوم بإعداد Squid للمصادقة (authenticate) بناءً على عنوان IP الخاص بالعميل.
يمكنك القيام بذلك عن طريق تعديل الملف الافتراضي Squid
nano /etc/squid/squid.conf
أضف الأسطر التالية في بداية الملف
acl client1 src 192.168.10.10
acl client2 src 192.168.10.11
http_access allow client1 client2
احفظ وأغلق الملف.
أعد تشغيل خدمة Squid لتطبيق التغييرات
systemctl restart squid
client1 و client2 : اسم أجهزة الكمبيوتر.
192.168.10.10 و 192.168.10.11: عنوان IP لجهاز الكمبيوتر.
يمكن فقط لأجهزة الكمبيوتر التي تم عنوانها IP 192.168.10.10 و 192.168.10.11 الوصول إلى الإنترنت.
إعداد المصادقة (Authentication) القائمة على المستخدم
يمكن أيضًا إعداد Squid للمصادقة بناءً على المستخدم وكلمة المرور.
ستحتاج إلى تثبيت حزمة Apache utils في نظامك.
قم بتشغيل الأمر التالي لتثبيت حزمة Apache utils:
apt install apache2-utils -y
قم بإنشاء مستخدم أول باستخدام الأمر التالي:
htpasswd /etc/squid/passwd client1
سيُطلب منك إعداد كلمة مرور:
New password:
Re-type new password:
Adding password for user client1
أنشئ مستخدمًا اخر باستخدام الأمر التالي:
htpasswd /etc/squid/passwd client2
سيُطلب منك إعداد كلمة مرور:
New password:
Re-type new password:
Adding password for user client2
تحقق من كلا المستخدمين باستخدام الأمر التالي:
cat /etc/squid/passwd
ستحصل على النتيجة التالية:
client1:$apr1$CPlx8eVt$NJq3CT/hzfDCnAZRypIq5/
client2:$apr1$XYxQ2npc$IW0Nqjp15O5WYCo/wCFlB0
افتح ملف الإعداد الافتراضي Squid:
nano /etc/squid/squid.conf
أزل الأسطر الثلاثة الأولى التي أضفتها في القسم السابق وأضف الأسطر التالية في بداية الملف:
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwd
acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users
أحفظ وأغلق الملف.
أعد تشغيل خدمة وكيل Squid لتطبيق التغييرات:
systemctl restart squid
الآن ستحتاج إلى ادخال اسم المستخدم وكلمة المرور للوصول إلى الإنترنت.
إعداد Combined Authentication
يمكنك أيضًا إعداد Squid للمصادقة عن طريق عنوان IP واسم المستخدم / كلمة المرور.
افتح ملف التكوين الافتراضي Squid:
nano /etc/squid/squid.conf
ابحث عن الأسطر التالية التي أضفتها في القسم السابق:
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwd
acl ncsa_users proxy_auth REQUIRED
http_access allow ncsa_users
استبدلها بالأسطر التالية:
acl client1 src 192.168.10.10
acl client2 src 192.168.10.11
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/passwd
acl ncsa_users proxy_auth REQUIRED
http_access allow client1 client2 ncsa_users
احفظ وأغلق الملف.
أعد تشغيل خدمة Squid لتطبيق التغييرات:
systemctl restart squid
إعداد Squid لإخفاء هوية حركة المرور
ستحتاج إلى إضافة بعض القواعد لإخفاء عناوين IP للعميل من الخوادم التي تتلقى حركة المرور من Squid HTTP.
يمكنك القيام بذلك عن طريق تعديل الملف الافتراضي Squid:
nano /etc/squid/squid.conf
أضف الأسطر التالية في بداية الملف:
forwarded_for off
request_header_access Allow allow all
request_header_access Authorization allow all
request_header_access WWW-Authenticate allow all
request_header_access Proxy-Authorization allow all
request_header_access Proxy-Authenticate allow all
request_header_access Cache-Control allow all
request_header_access Content-Encoding allow all
request_header_access Content-Length allow all
request_header_access Content-Type allow all
request_header_access Date allow all
request_header_access Expires allow all
request_header_access Host allow all
request_header_access If-Modified-Since allow all
request_header_access Last-Modified allow all
request_header_access Location allow all
request_header_access Pragma allow all
request_header_access Accept allow all
request_header_access Accept-Charset allow all
request_header_access Accept-Encoding allow all
request_header_access Accept-Language allow all
request_header_access Content-Language allow all
request_header_access Mime-Version allow all
request_header_access Retry-After allow all
request_header_access Title allow all
request_header_access Connection allow all
request_header_access Proxy-Connection allow all
request_header_access User-Agent allow all
request_header_access Cookie allow all
request_header_access All deny all
احفظ وأغلق الملف.
أعد تشغيل خدمة Squid لتطبيق التغييرات:
systemctl restart squid
التحقق من Squid Proxy
ستحتاج إلى تعريف Proxy server الخاص بك في متصفح الويب مثل Mozilla الخاص بك.
انتقل إلى جهاز الكمبيوتر.
افتح متصفح الويب Mozilla.
وانقر فوق Edit ثم => Preferences.
انقر فوق Network Settings ثم Settings.
اختار Manual proxy وأدخل عنوان IP لخادم Squid في حقل HTTP Host و 3128 في حقل Port .
اختار Use this proxy server for all Protocols (استخدام الخادم الوكيل هذا لجميع البروتوكولات).
انقر فوق الزر OK (موافق) لحفظ الإعدادات.
تم إعداد المتصفح لتصفح الإنترنت من خلال Squid proxy.
تحقق من الإعدادات.
اذهب إلى الموقع:
URL https://www.whatismyip.com/.
سيُطلب منك تقديم اسم مستخدم وكلمة مرور.
أدخل اسم المستخدم وكلمة المرور لخادم Squid proxy الذي قمت بإنشائه مسبقًا .
انقر OK .
يجب أن ترى عنوان IP الخاص بخادم Squid بدلاً من عنوان IP لجهاز الكمبيوتر.