تحدثنا سابقاً عن تثبيت Squid Proxy على Linux، ولكن تركه مفتوحاً للجميع (Open Relay) هو دعوة للكارثة. يمكن لأي شخص استخدام عنوان IP الخاص بك لأنشطة غير قانونية، أو استنزاف موارد الخادم. في هذا المقال المفصل، سنغوص في أعماق تأمين البروكسي باستخدام أنظمة المصادقة (Authentication Schemes).
لماذا المصادقة ضرورية؟
المصادقة ليست مجرد "اسم مستخدم وكلمة مرور". إنها الطبقة الأولى في استراتيجية "الدفاع في العمق" (Defense in Depth). بدون مصادقة، أنت تعتمد فقط على عناوين IP (ACLs)، وهو ما قد يكون كافياً في الشبكة المنزلية، ولكن ليس في بيئة العمل أو الخوادم العامة.
أنواع المصادقة في Squid
يدعم Squid عدة طرق، منها:
- Basic Auth: الأبسط والأكثر شيوعاً. يرسل كلمة المرور بتشفير base64 (سهل الفك)، لذا يفضل استخدامه مع HTTPS أو في شبكات موثوقة.
- Digest Auth: أكثر أماناً، حيث لا يتم إرسال كلمة المرور عبر الشبكة، بل يتم إرسال "هضم" (Hash).
- NTLM / Kerberos: كما ذكرنا في مقال بروكسي الشركات، هذه هي الطريقة المثلى لبيئات Windows Active Directory.
التطبيق العملي: إعداد Basic Auth
سنستخدم أداة htpasswd المساعدة لإنشاء ملف كلمات المرور.
1. تثبيت الأدوات اللازمة
sudo apt update
sudo apt install apache2-utils squid -y
2. إنشاء ملف المستخدمين
سنقوم بإنشاء ملف مخفي في مسار إعدادات Squid.
sudo htpasswd -c /etc/squid/passwords user1
سيطلب منك إدخال كلمة المرور للمستخدم user1. لإضافة مستخدم آخر لاحقاً، احذف الخيار -c (Create).
3. تكوين Squid
افتح ملف التكوين /etc/squid/squid.conf وأضف السطور التالية في البداية (قبل أي قواعد http_access أخرى):
# تعريف برنامج المصادقة
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords
auth_param basic children 5
auth_param basic realm Welcome to MasarWeb Secure Proxy
auth_param basic credentialsttl 2 hours
# تعريف قائمة التحكم بالوصول (ACL)
acl authenticated_users proxy_auth REQUIRED
# تطبيق القاعدة
http_access allow authenticated_users
http_access deny all
التحقق من العمل
بعد إعادة تشغيل الخدمة (sudo systemctl restart squid)، حاول تصفح الإنترنت.
سيظهر لك المتصفح نافذة منبثقة تطلب اسم المستخدم وكلمة المرور.
هذا يعمل على جميع المتصفحات التي شرحناها سابقاً: Chrome و Firefox.
نصائح أمنية إضافية
- غير المنفذ الافتراضي 3128 لتقليل عمليات المسح العشوائي (Port Scanning).
- استخدم Fail2Ban لحظر عناوين IP التي تحاول تخمين كلمات المرور بشكل متكرر (Brute-force attacks).
- راقب السجلات بانتظام:
tail -f /var/log/squid/access.log.