السلام عليكم ورحمة الله وبركاته
أهلا بالجميع
فى البداية احب ان انوه ان هذا الموضوع لن يكون شرح لكيفية عمل ال Squid وضبط اعداداته الأولية لكن سأتناول إن شاء الله بعض الأمور المتقدمة التى تفيد مديرى الشبكات فى بيئات العمل الكبيرة، لذا إذا كنت لا تعرف ماهو ال Squid وما يقوم به من مهام فعليك بتلك الوصلات التالية :
http://linuxac.org/forum/showthread.php?t=728
http://www.linuxac.org/forum/showthread.php?t=795
http://linuxac.org/forum/showthread.php?t=4824
، وكعادتنا فى طرح المواضيع سنبدأ التعريف بالموضوع من العنوان :
HowTo:Squid3.1-with-Active_directory-integrated-with webmin and Squid Report Generator
أعلم أن العنوان طويل بما فيه الكفاية لكن تعالوا لنقسم العنوان ونبدأ مع القسم الأول :
أولا Squid-3.1 : يعلم مديرى الشبكات الذى يتعاملون مع برنامج Squid أنه توجد منه اصدارات مختلفة لن أتطرق إليها لكن الذى دفعنى إلى استخدام الإصدارة 3.1 هو دعم لبروتوكول الإنترنت الإصدار السادس (IPV6) بشكل كامل .
ثانيا Active Directory : فى البداية قد يتساءل البعض لم Active directory الخاص بميكروسوفت والذى سوف نقوم باستخدامه ك Authentication Server وليس برمجية حرة والتى يتوافر الكثير منها على الشبكة العنكبوتية بوفرة ؟
للأسف بعض الشركات حاليا التى تستخدم جنو/لينوكس فى مراحل أولية لم تستغنِ بشكل كامل عن برامج ميكروسوفت ، لذا فى بعض الأحيان يتوجب على مدير الشبكة أن يوفر حلا متوازنا بين جنو/لينوكس ومنتجات ميكروسوفت لذا قد يعمل مديرى الشبكات فى شركات تعتمد على ال Active Directory ك Domain Controller لمعظم خدمات الشبكة التى توفرها الشركة ، وفى الموضوع الذى سنطرحه سنقوم بالأعتماد على ال Active Directory فى توفير مهام التوثيق للمستخدمين باستخدام Squid وللمزيد راجع الوصلة التالية :
ثالثا Webmin :هنا نقطة التحول التى قد تساعد على توفير الكثير والكثير من الوقت ، فبعد البحث عن عدة حلول لإدارة Squid من خلال واجهة رسومية لتسهيل الأمور من خلالها وعدم الأحتياج إلى الطرفية صراحة لم أجد أفضل منها ، وخصوصا الحلول الأخرى التى توفرها لأدارة معظم الخدمات التى قد يديرها أى مدير شبكة يعتمد على جنو/لينوكس فى إعداد الخوادم .
أخيرا Squid Reports Generator : الميزة المرجوة من ذلك التطبيق هو تسهيل متابعة التقارير لكن مستخدم يعمل من خلال البروكسى Squid وطبعا مديرى الشبكات يعلمون أهم الBandwidth لديهم وهذه الأداة توفر عدة تقارير اكثر من جيدة لمتابعة ذلك .
المقدمة السابقة كانت للتعريف ببعض الأدوات التى سنقوم باستخدامها لاتمام المهمة المنوطة بنا لكن ما هى المتطلبات التى ينبغى توافر لكى نؤدى المهمة على أكمل وجه ؟
فى البداية سأفترض بعض الأمور :
1- لديك خادم ويندوز اين كانت الإصدارة 2003 أو 2008 يحتوى على Active Directory وتم تجهيزه وظبط اعدادات المستخدمين عليه (قمت بالتجربة على Active Directory 2003) .
2- لديك خادم جنو/لينوكس سنستخدمه لتثبيت الSquid بالإضافة إلى التطبيق Webmin عليه والتوزيعة التى اعتمدتها فى عملى هى Debian 4.0 Gnu/Linux ، إذا أردت العمل على أى توزيعة أخرى فالأمر راجع إليك لكن لا تتوقع منى رد على أى مشكلة تقابلك فيما عدا Debian (نعم أنا متعصب لديبيان فقط !)
3- أن تكون على علم بضبط اعدادت ال Squid كما ذكرت سابقا لأنى لأن أتطرق لشرح الأمور البديهية ، ما سنتناوله فى هذا الأمر هو كيفية ضبط ال Squid لكى يعمل مع ال Active Directory ، وكما ذكرت ايضا اعتمادى على تلك الإصدار خصيصا من ال Squid هى الدعم الكامل ل IPv6 ، لذا عملية التثبيت ستكون من خلال الشيفرة المصدرية ل Squid فاذا كنت تمتلك أحد الإصدارات من Squid التى تعمل لديك فعليا فقم بالتأكد من وجود دعم لل ldap والذى يتمثل فى تواجد الملف squid_ldap_auth لديك على أحد المسارات داخل ال Filesystem .
ملحوظة : مستخدمى ديبيان الذين يمتكلون اصدارا من ال Squid3 مثبت بالفعل يستطيعون التأكد من جود دعم لل ldap من خلال أمرين :
أولا من خلال تنفيذ الأمر :
كود PHP: .: أنقر هنا لتحديد الكل :.dpkg -L squid3 | grep squid_ldap_auth
إذا رأيت نتيجة الأمر بالشكل التالى :
كود PHP: .: أنقر هنا لتحديد الكل :./usr/lib/squid3/squid_ldap_auth
إذا ال Squid لديك يحتوى على دعم ال ldap اللازم للتواصل مع ال Active Directory .
الأمر الذى دفعنى أيضا إلى تثبيت حزمة ال Squid من الشيفرة المصدرية هو webmin فبعد عدة تجارب معها وجدت أنه فى حالة استخدام اصدار لل Squid أعلى من 3.0 فستظهر لك الرسالة التالية :
Your version of Squid is not supported by Webmin. Only versions from 1.1 to 2.7 are supported by this module.
مع العلم أنه عند تجربة الإصدار 3 من المستودعات لديبيان وجدت أن webmin تعمل معه بدون أى مشكلة ، لذا كانت الحيلة التى خطرت ببالى هو تعديل رقم الإصدار داخل ملف configure من الرقم 3.1.0.3 مثلا إلى الرقم 3.0 والنتيجة طبعا نجاح الأمر بدون أى مشكلة !!
طبعا عملية التثبيت من الشفرة المصدرية تتطلب بعض الحزم الخارجية لاتمام العملية بنجاح والأمر التالى يقوم بتحميل الحزم المطلوبة لذلك :
كود PHP: .: أنقر هنا لتحديد الكل :.debian:~# apt-get install build-essential libldap2-dev
ونبدأ مباشرة فى التطبيق العملى وذلك من خلال تحميل الشيفرة المصدرية من على هذا الرابط :
كود PHP: .: أنقر هنا لتحديد الكل :.wget -c http://www.squid-cache.org/Versions/v3/3.1/squid-3.1.0.3.tar.gz
بعد ذلك سنقوم بفك الضغط عن الملف بالشكل التالى :
كود PHP: .: أنقر هنا لتحديد الكل :.tar -zxf squid-3.1.0.3.tar.gz -C /usr/src/
بعد ذلك سنقوم بالولوج إلى المجلد الجديد squid-3.1.0.3 على المسار usr/src/ :
كود PHP: .: أنقر هنا لتحديد الكل :.cd /usr/src/squid-3.1.0.3
الخطوة التالية وهى الحيلة التى اتبعتها للتخلص من رسالة ال webmin هى تعديل ملف ال configure وعلى وجه التحديد هذا السطر رقم 2795:
كود PHP: .: أنقر هنا لتحديد الكل :.VERSION='3.1.0.3'
ليصبح مثلا :
كود PHP: .: أنقر هنا لتحديد الكل :.VERSION='3.0'
بعد ذلك سنبدأ عملية التثبيت وذلك بتشغيل ملف ال configure أولا وتمرير بعد الأمور التى نحتاجها والتى من ضمنها هو اضافة دعم بروتوكول ال ldap :
كود PHP: .: أنقر هنا لتحديد الكل :../configure --build=i486-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --libexecdir=${prefix}/lib/squid3 --disable-maintainer-mode --disable-dependency-tracking --srcdir=. --datadir=/usr/share/squid3 --sysconfdir=/etc/squid3 --mandir=/usr/share/man --enable-inline --enable-async-io=8 --enable-storeio=ufs,aufs,diskd --enable-removal-policies=lru,heap, --enable-poll --enable-delay-pools --enable-cache-digests --enable-snmp --enable-htcp --enable-select --enable-carp --enable-large-files --enable-underscores --enable-icap-client --enable-auth=basic,digest,ntlm --enable-basic-auth-helpers=LDAP,NCSA --enable-digest-auth-helpers=ldap,password --enable-external-acl-helpers=ip_user,ldap_group,unix_group --with-filedescriptors=65536 --with-default-user=proxy --enable-linux-netfilter build_alias=i486-linux-gnu --enable-arp-acl --with-logdir=/var/log/squid3
طبعا تستطيع تغيير واضافة ما تشاء لكن توجد بعض الأمور الأساسية منها الدعم للLDAP والمسارات لملف الاعدادات والملفات التنفيذية لل squid لذا أفضل أن تقوم بنسخ الأمر السابق كما هو .
بعد ذلك الأمر التالى البديهى هو تجميع الملفات المصدرية فى صيغة تنفيذية باستخدام الأمر make :
كود PHP: .: أنقر هنا لتحديد الكل :.make
ثم أخيرا تثبيت الملفات باستخدام make install :
كود PHP: .: أنقر هنا لتحديد الكل :.make install
الآن أصبح كل شىء جاهزا ، لكن لجعل الأمور أكثر سهولة ويسهر فقد قمت بعمل تحزيم لل squid فى صورة حزمة بامتداد deb. ويمكن تحميلها من هذا الرابط :
تنبيه : الحزمة السابقة قمت باستخدام معايير ديبيان التى تستخدم فى التحزيم والأمر كان للتجربة ليس إلا وبالتالى إذا أردت استخدام الحزمة فأنت تتحمل كامل المسئولية وليس لى دخل بأى ضرر يلحق بك !
ولمن يريد تعلم كيفية التحزيم بمعايير ديبيان فقد قمت باتباع الدليل التالى :
الآن سنقوم بضبط ملف الإعدادات الخاص ب squid لمعرفة كيفية ضبط الsquid لكى يعمل مع Active Directory موجود لديك :
قبل ضبط الملف سنقوم مرة أخرى بالتأكد من وجود اللف squid_ldap_auth على المسار الذى وضعناه أثناء عملية التجهيز للتجميع من الشيفرة المصدرية مثلا باستخدام الأمر ls :
كود PHP: .: أنقر هنا لتحديد الكل :.ls -l /lib/squid3/ | grep squid_ldap_auth
النتيجة كالتالى :
كود PHP: .: أنقر هنا لتحديد الكل :.-rwxr-xr-x 1 root root 37184 Dec 27 14:09 squid_ldap_auth
الآن كل شىء أصبح على ما يرام كل ما علينا هو التأكد أولا من الاتصال بال active directory وضبط عملية الإتصال بشكل سليم من خلال التالى (طبعا قم بفتح محاكى للطرفية ):
كود PHP: .: أنقر هنا لتحديد الكل :./lib/squid3/squid_ldap_auth -b "cn=Users,dc=your,dc=domain,dc=com" -D "cn=Administrator,cn=Users,dc=your,dc=domain,dc=com" -w "password" -f sAMAccountName=%s -h ldap-server-ip
طبعا لاحظ أن الجملة السابقة فى سطر واحد ، لكن ما يمكننى ملاحظته الآن أن الجميع قد فتح فاهه وذهل ولا يعرف مالذى تم !!
حسنا فى البداية لنشرح الجملة السابقة ونوضح بعض الأمور فيها :
أولا الخيار b- : هذا الخيار الذى سوف يمكننا من الإتصال بال directory service داخل ال domain الخاص بنا
ثانيا cn=Users : هذه هى المشكلة التى طالما أرقتنى ، الإتصال مع ال active directory أزعجنى كثيرا بسبب هذه ، فبعد عدة محاولات للإتصال بال active directory بشكل سليم تبين لى أنه لابد أولا مع وضع ال Directory Service التى سوف تعمل عليها قبل ال Domain وذلك لكى تتم العملية بنجاح .
ثالثا dc=your,dc=domain,dc=com : هنا قم باستبدال المعلومات التى تخص النطاق الذى تملكه على ال Active Directory .
رابعا الخيار D- : هنا باستخدام هذا الخيار للتوضيح أن ما سيأتى بعده هو المستخدم الذى سيقوم بعمل ال query على السيرفر للبحث عن المستخدم المطلوب أثناء تنفيذ عملية ال Authentication .
خامسا "cn=Administrator,cn=Users,dc=your,dc=domain,dc=co m" : فى هذا الجزء طبعا تستطيع تغيير المستخدم من Administrator إلى أى إسم آخر تحبه ويفضل أن تقوم بإنشاء مستخدم جديد لعمل ذلك .
سادسا الخيار w- : هذا الخيار يوضح كلمة المرور للمستخدم الذى سبق ذكره وهو Administrator .
سابعا "password" : هنا قم بوضع كلمة المرور الخاصة بالمستخدم Administrator .
تلميح : لتقليل الأخطار الأمنية يمكن وضع كلمة المرور الخاصة بالمستخدم الذى ستقوم بوضعه فى الجملة داخل ملف نصى على النظام وتقوم باستخدام الخيار W- بالإضافة إلى المسار الكامل للملف حتى لا تظهر كلمة المرور بشكل واضح .
ثامنا الخيار f- : هذا الخيار يوضح عملية ال Query الذى ستتم باستخدام بروتوكول ال ldap .
تاسعا sAMAccountName : هنا عملية البحث عن المستخدم ستكون بالإستعلام عن نفس الحساب الخاص به الذى يستخدمه المستخدم على جهازه .
عاشرا s% : هذه العلامة سوف تقوم باستبدال اسم المستخدم الذى سوف يتم ادخاله لمقارنته بالموجود على ال Domain .
العنصر الحادى عشر h- : هنا هذا الخيار سيمكننا من وضع العنون الخاص ال domain باستخدام عنوان بروتوكل الانترنت ز
العنصر الثانى عشر ldap-server-ip : هنا قم بوضع عنوان بروتوكول الانترنت الخاص بال domain وكمثال 192.168.1.15 .
بعد تنفيذ الجملة السابقة من خلال محاكى الطرفية سيظهر مؤشر الإستعداد داخل المحاكى ينتظر منك ادخال إسم المستخدم وكلمة المرور وستفصل بينها بمسافة ويكون ذلك من خلال الشكل التالى :
كود PHP: .: أنقر هنا لتحديد الكل :.Administrator password
بعد ذلك ستقوم بالضغط على زر الإدخال Enter فإذا ظهر لك فى الطرفية كلمة OK فقد تمت عملية الإتصال بشكل سليم وهنا تأكدنا من الوصول إلى ال Domain بشكل مضبوط ، أما إذا ظهر ERR أو ERR Success فتأكد مرة أخرى من البيانات والجملة التى استخدمتها .
الآن نفترض أن كل شىء على ما يرام وتم الإتصال بال Domain بشكل سليم سنقوم بوضع الإعدادات التالية داخل ملف الإعدادات الخاص ب Squid وهو squid.conf على المسار التالى
كود PHP: .: أنقر هنا لتحديد الكل :.nano /etc/squid3/squid.conf
ثم قم بوضع التالى بداخله :
كود PHP: .: أنقر هنا لتحديد الكل :.auth_param basic program /usr/lib/squid3/ldap_auth -b "dc=Users,dc=your,dc=domain,dc=com" -D "cn=Administrator,cn=Users,dc=your,dc=domain,dc=com" -w "password" -f sAMAccountName=%s -h 192.168.1.75
auth_param basic children 5
auth_param basic realm Your Organisation Name
auth_param basic credentialsttl 5 minutes
بعد ذلك سنقوم بعمل قائمة acl جديدة تخص المستخدمين بالشكل التالى :
كود PHP: .: أنقر هنا لتحديد الكل :.acl ldap_users proxy_auth REQUIRED
http_access allow ldap_users
طبعا كما ذكرت أنا أفترض أنك تعمل على ال Squid وتعلم كيفية ضبط الإعدادات لذا الإعضاء الجدد يرجى مراجعة الروابط التى فى بداية الموضوع أولا .
تلميح : بدلا من عمل acl داخل ملف squid.conf يمكن استخدام ال Domain بنا وعمل الصلاحيات اللازمة باستخدامه وسيكون ذلك من خلال الملف squid_ldap_group وبذلك عملية التوثيق والصلاحيات على الإستخدام داخل المجموعات ستكون مدارة بشكل كامل من خلال ال Domain .
بقى لنا تثبيت ال webmin وعلى الفور نقوم بتنفيذ الأمر التالى من خلال محاكى الطرفية :
كود PHP: .: أنقر هنا لتحديد الكل :.cd /usr/src; wget -c http://puzzle.dl.sourceforge.net/sourceforge/webadmin/webmin_1.441_all.deb
لكن قبل أن نشرع فى عملية التثبيت فالتطبيق webmin يحتاج بعض الحزم الخارجية سنقوم بتثبيتها أولا :
كود PHP: .: أنقر هنا لتحديد الكل :.apt-get install -y openssl libauthen-pam-perl libio-pty-perl libmd5-perl libnet-ssleay-perl
بعد الانتهاء من تثبيت تلك الحزم نبدأ فى تثبيت الحزمة :
كود PHP: .: أنقر هنا لتحديد الكل :.dpkg -i webmin_1.441_all.deb
بعد التثبيت ستأتى لك رسالة داخل محاكى الطرفية تخبرك بالعنوان الذى سوف تستخدمه للدخول إلى webmin .
تلميح : من الممكن أن تستخدم عنوان الجهاز الذى قمت بتثبيت webmin عليه .
ما بقى لنا الآن هو تثبيت مولد التقارير sarg لكى يعمل مع Squid وذلك من خلال الأمر التالى :
كود PHP: .: أنقر هنا لتحديد الكل :.apt-get install sarg
قم بالدخول إلى webmin وعلى اليسار قم باستخدام قائمة Unused modules واضبط اعدادات كل من squid و sarg وهنيئا لك !
دمتم بود
السلام عليكم



رد مع اقتباس




مواقع النشر (المفضلة)