نزولا عند رغبة الكثيرين و لتفاجئي بحجم الطلب على موضوع البروكسي و اعداداته و الفضل يعود لأخي ابو محمد Binary الذي اقنعني بكتابة الموضوع!!! سأقوم بشرح أكثر احترافية و تفصيل للاعدادت و بعض الاضافات الجديدة بدل الشرح القديم... على بركة الله نبدأ .
1- التأكد من وجود الsquid :
و ذلك باستخدام الأمر التالي:
2- تنزيل الsquid في حالة عدم وجوده:
باستخدام الأمر rpm :
rpm -ivh squid-2.5.STABLE9-7.i386.rpm
طبعاً يمكنك تنزيله من الانترنت من على :ftp://rpmfind.net/linux/fedora/core/...LE9-7.i386.rpm
3- المجلد الخاص باعدادات السكويد هو /etc/squid و اسم الملف الرئيسي squid.conf .قم بفتح الملف بمحررك المفضل، الخطوة الأولى التي قد تريد عملها هي تغيير البورت الذي يستخدمه السكويد. و هو بالطبع 3128 . يمكن تغييره ليصبح مثلاً 8080 عن طريق السطر http_port بجعله على النحو التالي مثلاً:
http_port 192.168.0.254:8080
طبعاً افترضنا ان الآي بي للجهاز الذي يعمل عليه السكويد هو 192.168.0.254 .
4- قم بضبط الخصائص التالية او قم باضافتها:
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
السطر الأول ليجعل السكويد يعمل ك httpd accelerator
السطر الثاني هو البورت الذي سيعمل كبروكسي
السطر الثالث ليعمل السكويد ك httpd accelerator و ك بروكسي
السطر الرابع لتفعيل خيار الهوست نايم من الurl
5- من المعروف ان السكويد لا يسمح لأي جهاز بالدخول عليه (يمنع الجميع) لذا علينا اضافة بعض السطور لنسمح لشبكتنا المحلية باستعمال البروكسي. ابحث عن الظهور الثاني للجملة Recommended minimum configuration . سوف يأخذك للمنطقة الخاصة بما يسمى الaccess list control .اضف السطر التالي تحت جملة CONNECT method CONNECT :
acl my_network src 192.168.0.0/255.255.255.0
طبعاً على اعتبار أن هذا هو مجال الشبكة المحلية.
6- انزل لأسفل في نفس الملف حتى تصل الى للجملة : INSERT YOUR OWN RULE(S) HERE . ثم أضف السطر التالي مباشرة فوق السطر الخاص بالlocalhost acl :
http_access allow my_network
7- قم بتشغيل السكويد:
نأتي الآن لاعدادات الشبكة و جهاز البروكسي...
سنفترض وجود كرتين شبكة على البروكسي... eth0 متصل بالشبكة الداخلية ، و eth1 متصل بالشبكة الخارجية او بعبارة أخرى الانترنت..
بطبيعة الحال فإنه يلزمك عمل NAT في الفايروول و ذلك من اعدادات الiptables حتى يقوم بتحويل الريكويست الخاصة بالhttp الى البورت المطلوب (8080 أو 3128).
تسهيلا للموضوع سأقوم بوضع اعدادات ال iptables كاملة حتى نقوم بحذف القواعد القديمة :
#حذف القواعد بالكامل
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
#القاعدة الأساسية هي رفض الطلبات القادمة و السماح للصادرة
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
#السماح لل loop back
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
# السماح لبعض الخدمات مثل DNS و udp و passive ftp بالعمل
iptables -A INPUT -i eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT
#تعديل النظام ليعمل كراوتر
iptables --table nat --append POSTROUTING --out-interface eth1 -j MASQUERADE
iptables --append FORWARD --in-interface eth0 -j ACCEPT
#اعطاء صلاحيات الدخول لكامل الشبكة المحلية
iptables -A INPUT -i eth0 -j ACCEPT
iptables -A OUTPUT -o eth0 -j ACCEPT
#عمل DNAT للطلبات على البورت 80 الخاص بالhttp للبورت الخاص بالسكويد
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.0.254:8080
#تحويل الطلب من الجهاز نفسه ايضا!!
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080
# رفض باقي الأمور و تخزينها في log file
iptables -A INPUT -j LOG
iptables -A INPUT -j DROP
طبعاً تعمدت استخدام long switches بدلا عن short في بعض المناطق ليفهم القارئ ما الغرض بالضبط من العملية. فمثلا --append تقابل -A .
بس تخلص اعدادات ال iptables لا تنسى تحفظ شغلك...
الآن قم بتفعيل الخيار ip forwarding بتغيير قيمة الخيار net.ipv4.ip_forward في الملف /etc/sysctl.conf لتصبح 1 بدلا من صفر.
مبروك! لقد قمت بتجهيز اعدادات البروكسي. و الآن يجب أن نقوم بجعل المتصفح يستخدم هذا البروكسي للدخول الى الانترنت. طبعاً يمكن استخدام أي متصفح حتى الانترنت اكسبلورر في اجهزة مايكروسوفت ويندوز.
في الانترنت اكسبلورر:
اذهب الى Tools ثم اختر Internet Options .
اختر التبويب Connections ثم اختر LAN Settings .
اختر المربع الخاص باستخدام البروكسي User a proxy server... ثم أدخل الآي بي الخاص بالسيرفر و هو في مثالنا 192.168.0.254 , و البورت الذي سيستخدمه و هو 8080 . ثم اضغط OK .
في الفايرفوكس:
اختر من قائمة Edit الخيار Preferences .
من الخيار General اختر الخيار Connections Settings .
اختر Manual Proxy Configuration و من ثم ادخل عنوان الآي بي و المنفذ كما فعلنا مع المثال السابق. و يمكنك استخدامه لجميع انواع الاتصال الأخرى بتفعيل الخيار use the same proxy for all protocols
يمكنك استخدام ال dhcp لاعطاء قيم الgateway للكلاينتس و تريح نفسك من الاعداد اليدوي... طبعاً ما حدا يسألني كيف؟!؟! هو ما في حد غيري؟؟؟ روح دور بتلاقي الجواب
في هذا الجزء سنقوم بالتحكم بزمن الدخول باستخدام الخاصية time مع الhttp_access التي سبق و تكلمنا عنها في السكويد.
هذا المثال سيوضح تقريباً الطريقة:
acl network1 src192.168.0.1/255.255.255.0
acl network2 src 192.168.1.1/255.255.255.0
acl shift1 time 8:00-13:00
acl shift2 time 15:00-21:00
http_access allow network1 shift1
http_access allow network2 shift2
http_access deny all
في المثال السابق سمحنا للشبكة الأولى بالدخول في وقت المناوبة الأولى فقط و هي تمتد من الساعة الثامنة صباحا و لغاية الواحدة من بعد الظهر، و للشبكة الثانية في المناوبة الثانية أي من الساعة الثالثة و حتى التاسعة ليلاً .
اذا أردت أن تعطي حسب أيام الأسبوع فهناك رمز لكل يوم مثل المثال التالي:
acl work_clients src 192.168.0.1/24
acl work_days time ASMTW 8:00-14:00
http_access allow work_clients work_days
سمحنا للشبكة الخاصة بنا في استخدام البروكسي في أيام العمل ( السبت، الأحد ... الأربعاء) و من الساعة الثامنة صباحاً الى الساعة الثانية ظهراً.
رموز الأيام كالتالي:
S - Sunday M - Monday T - Tuesday W - Wednesday H - Thursday F - Friday A - Saturday
هل ترغب في المزيد؟؟؟ حسنا سأعطيك كيفية التحكم بالمواقع المسموحة و حجب بعض المواقع كالاباحية مثلاً ...
اولا قم بعمل ملف بإسم ok-sites مثلا و ضعه في مجلد معين مثل /usr/local/squid/etc/ , و ضع فيه أسماء المواقع المسموح العمل عليها اثناء الدوام مثلاُ ...
#OK Sites
www.google.com
www.yahoo.com
www.linuxac.org
www.newsforge.com
و كمل باقي المواقع...
اضف acl جديدة تحت التي أنشاتها سابقا عل النحو التالي:
acl OKSites dstdomain "/usr/local/squid/etc/ok-sites"
ثم اسمح بالدخول...
http_access allow OKSites
سهلة صح؟؟؟
طيب ماذا لو أردت حجب بعض المواقع؟؟؟ بسيطة نفس العملية ضع اسماء المواقع في ملف المواقع الممنوعة و نفس الآلية و لكن استخدم deny بدل عن allow . طبعا يمكنك ايجاد لوائح طويلة للمواقع ال black listed على الانترنت و هي جاهزة فقط ضعها في الملف المطلوب.
الجزء الحالي سنقوم بعمل منع تنزيل بعض الملفات حسب امتدادها.. مثلا اردنا منع تنزيل ملفات ال avi و ال rar و ال zip او غيرها..
acl No_Video urlpath_regex -i \.avi$
http_access deny No_Video
و على غرارها باقي الامتدادات.. طبعا regex ترمز الى عبارة regular expression و يمكن استخدام نفس الطريقة لحجب مواقع بناء على الكلمات و ليس حسب اسم الموقع... مثلاً نريد منع مواقع تحوي في اسمها breast .. xxx ... sex او اي كلمة اخرى مثلاً... نضعهم في ملف لنقل مثلاً etc/squid/badwords
ملاحظة: قد يحتاج منك تغيير المجموعة المالكة والصلاحيات للملفات التي تقوم بوضع اسماء الدوماينز و الكلمات المراقبة فيها بالأمرين التاليين:
#chown root.squid /etc/squid/badwords
#chmod 640 /etc/squid/badwords
وفي ملف الكونف الاساسي نضيف التالي:
acl NO_SEX dstdom_regex -i "/etc/squid/badwords"
http_access deny NO_SEX
ملاحظة: الطريقة يمكن ان تمنع مواقع مفيدة لوجود بعض الكلمات في اسماءها مثل sexualdesease.com او غيرها ... في هذه الحالة استخدم طريقة حجب الموقع ككل في الاعلى..
يكفي هذا لليوم... قريباً سأقوم بوضع كيفية عمل simple authentication للبروكسي ... لا نريد سوى دعواتكم لي في السر و استفساراتكم هي التي يمكن وضعها هنا :clap2:
ãæÇÞÚ ÇáäÔÑ (ÇáãÝÖáÉ)