هناك أفضل

 

عملية إعداد سيرفر RANCID لمراقبة التغييرات في أجهزة سيسكو

رانسيد RANCID هي اختصار لـ Really Awesome New Cisco ConfIg Differ
و عند إعداد خادم رانسيد فإنك ستحصل على رسالة بالبريد الإلكتروني عن أي تعديل يحصل لأي من راوترات أو سويتشات أو فايرولات سيسكو و سيكون مضمون الرسالة موضحا لما كان عليه ملف إعدادات سيسكو السابق و ما هو التعديل الذي طرأ عليه. أضف إلى أنه يراقب أي تعديل في السوفتواير أو الهاردوير أو حتى رقم السيريال و يستخدم في ذلك نظام CVS أو SVN للنسخ المتعدد Versioning.

حقيقة لم أعرف أن هناك برنامج رائع بهذا الشكل و لم أسمع عنه من قبل لكني وجدته بالصدفة أثناء بحثي في الإنترنت بالأمس و قمت بتثبيته على أحد خوادم FreeBSD في العمل و كانت النتائج أكثر من رائعة، مذهلة في الحقيقة.

مالفائدة من برنامج كهذا؟
أولا في بيئات العمل الكبيرة يجب أن يكون هناك إعدادات قياسية لأي من الأجهزة، و بالأخص في أجهزة الشبكة مثل أجهزة سيسكو و هو ما يسمى بالـ Standardization حتى تسهل عملية إدارة عدد كبير من الأجهزة.
أضف إلى ذلك أن وجود أكثر من مسؤول عن الشبكة (Network Admin) قد يصعب العملية و ربما يصعب تتبع الأخطاء في حال تغيير قيم معينة و ما إلى ذلك. لذى، وجود نظام نسخ متعدد Versioning System و ربطه بملف إعدادات سيسكو هو الحل الأمثل لهذا كما أنه يقوم بعمل نسخة احتياطية لملف إعدادات سيسكو، و صدقوني هذا أمر في غاية الأهمية لأنه قد يأتي يوم تتمنون وجود نسخة احتياطية للملف لتتفاجئون بعدم وجوده!!

كيفية عمل البرنامج؟
برنامج رانسيد عبارة عن سكريبتات تعمل على استخدام اسم مستخدم للدخول على أجهزة سيسكو و نقل الملفات إلى خادم رانسيد، لذلك يجب إعداد بعض الملفات قبل تشغيل البرنامج لتسهيل و تمكين البرنامج من الدخول إلى الأجهزة. بعد ذلك يتم وضع الملفات في نظام النسخ المتعدد CVS أو SVN لمعرفة التغييرات الطارئة على الملف و من ثم إرسالها إلى المستخدم.

ملخص الخطوات التي اتبعتها في إنشاء الخادم
أولا قمت بتثبيت حزمة رانسيد و من ثم إنشاء حساب مستخدم اسمه rancid
بعد ذلك تعديل ملف إعدادات رانسيد الرئيسي rancid.conf و تغيير القيم التالية
LIST_OF_GROUPS="networks"
MAILDOMAIN="@yourdomain.tld"; export MAILDOMAIN
ثم إنشاء الملف .cloginrc في المجلد الشخصي للمستخدم و في هذا الملف يجب إدخال معلومات الدخول الخاصة بكل راوتر أو سويتش أو فايروول.
عمل روابط (ناعمة) soft links للسكريبتات ليسهل الوصول إليها، لا حاجة لعمل الروابط في حال وجود السكريبت rancid-run و rancid-cvs في المجلد /usr/local/bin/

ln -s /usr/local/libexec/rancid/clogin /usr/sbin/clogin
ln -s /usr/local/libexec/rancid/rancid-run /usr/local/bin/rancid-run
ln -s /usr/local/libexec/rancid/rancid-cvs /usr/local/bin/rancid-cvs

بعد ذلك قمت بالدخول بحساب المستخدم rancid لتجربة الإعدادات في هذا الملف للتأكد من إمكانية الدخول للأجهزة و الحمد لله كانت الإعدادات تعمل بكفائة و بهذا تنتهي عملية إعداد رانسيد.
بعد ذلك قمت بإعداد نظام النسخ المتعدد بإعطاء صلاحية كاملة للمستخدم الذي أنشأته على المجلد المخصص لذلك و هو /usr/local/var/rancid
ثم قمت بكتابة الأمرين التاليين لتفعيل الـ CVS و تشغيل سكريبتات رانسيد
$ rancid-cvs
$ rancid-run

الأمر الأول يقوم بإنشاء المجلدات الخاصة بنظام النسخ المتعدد و منها مجلد CVS و مجلد logs بالإضافة إلى مجلد بنفس الاسم الذي اخترته في LIST_OF_GROUPS و هو networks
آخر خطوة قمت بعملها هي الدخول على المجلد networks و تعديل الملف router.db والذي قمت بإضافة الأجهزة التي أريد مراقبتها كما في الشرح المفصل
بقي أمرين، أولها إرسال الرسائل عبر البريد الإلكتروني، و هذا يعتمد تماما على خادم البريد المستخدم، و بحكم أني أعمل على خادم بوستفيكس Postfix، فلقد قمت بالخطوات الموجودة في الشرح المفصل. أما الأمر الأخير هو جعل كل ما سبق تلقائي، و هذا يعني استخدام الـ cron

الخطوات بالتفصيل
تثبيت الحزمة:

# cd /usr/ports/net-mgmt/rancid
# make install clean

إنشاء حساب المستخدم و إعطاءه الصلاحيات اللازمة:

# pw groupadd rancid
# pw useradd rancid -g rancid -m /home/rancid
# pw usermod -c "RANCID User fo Cisco Devices" -s /usr/local/bin/bash
# chown -R rancid:rancid /usr/local/var/rancid

إعدادات الملف rancid.conf
# cp -v /usr/local/etc/rancid/rancid.conf.sample /usr/local/etc/rancid/rancid.conf
قمت بتعديل قيمة المتغيرات على النحو التالي:

LIST_OF_GROUPS="networks"
MAILDOMAIN="@yourdomain.tld"; export MAILDOMAIN

مع استبدال yourdomain.tld باسم النطاق الصحيح الذي استخدمه

إعدادات الملف .clogin
قمت بالدخول بحساب المستخدم rancid و إنشاء الملف .clogin في المجلد المنزلي Home Folder و إضافة المحتويات التالية:
add user 192.168.1.20     rancid
هذا في حال استخدامك للمستخدم rancid في الدخول إلى أجهزة سيسكو، في حال استخدامك لمستخدم آخر، يجب وضع اسمه الصحيح هنا بدلا من rancid

add password 192.168.1.20     {verysecretpassword}     {enablepassword}
add method 192.168.1.20     ssh

السطر الأول يعني استخدام كلمة المرور verysecretpassword للدخول إلى الجهاز المحدد 192.168.1.20 و كلمة المرور enablepassword للوضع المتقدم Enable Mode في جهاز سيسكو
أما السطر الأخير فيعني استخدام بروتوكول ssh للدخول إلى الجهاز المعني و يمكن استبداله بـ telnet في حال عدم استخدامك للـ ssh، واعلم بأنك في وضع حرج!
و في آخر الملف تأكد من وجود

# set ssh encryption type, dflt: 3des
add cyphertype *

و إن كان جهاز السيسكو الذي تستخدمه لا يحتاج إلى enable password يعني auto-enabled فيجب وضع السطر التالي قبل كلمة المرور
add autoenable 192.168.1.20 1

تجربة الإعدادات في ملف .clogin
قبل تجربة الإعدادات يفضل عمل الروابط (الناعمة) Soft Links لتسهل عملية كتابة الأوامر

ln -s /usr/local/libexec/rancid/clogin /usr/sbin/clogin
ln -s /usr/local/libexec/rancid/rancid-run /usr/local/bin/rancid-run
ln -s /usr/local/libexec/rancid/rancid-cvs /usr/local/bin/rancid-cvs

و من ثم عملية التجربة
$ clogin 192.168.1.20
إذا قام بالدخول إلى الجهاز و أعطاك سطر الأوامر الخاص بالسيسكو فالإعدادات صحيحة

إعدادات نظام النسخ المتعدد
بما أننا قمنا بإعطاء الصلاحيات اللزمة في خطوة إنشاء حساب المستخدم، بقي علينا تنفيذ الأمرين rancid-cvs و rancid-run مع مراعاة تنفيذها بالمستخدم rancid

$ rancid-cvs
$ rancid-run

إعدادات router.db
بعد تنفيذ الأمرين السابقين ستجد مجلدا بنفس القيمة التي اخترتها لـ LIST_OF_GROUPS و هي networks
قم بالدخول إلى المجلد networks و تعديل الملف router.db بإضافة الأجهزة التي تريد مراقبتها

core1-sw-jed:cisco:up
core1-sw-riy:cisco:up
mpls-jed:cisco:up
192.168.1.20:cisco:up

يمكنك وضع اسم الراوتر أو السويتش كما يمكنك وضع عنوان الأيبي الخاص به كما تلاحظون

إعدادات خادم البريد
إضافة السطر التالي في /usr/local/etc/postfix/virtual
rancid-networks     user@yourdomain.tld
و من ثم postmap /usr/local/etc/postfix/virtual لإعتماد التغييرات في بوستفيكس. بهذه الخطوة، أي بريد موجه إلى rancid-networks سيقوم بوستفيكس بتوجيهه إلى user@yourdomain.tld

إعدادات الـ cron
و لقد قمت بالدخول بالمستخدم rancid و كتابة الأمر التالي لتعديل ملف الـ cron لهذا المستخدم
$ crontab -e
و من ثم إضافة السطرين التاليين:

# Run config differ every hour
0 * * * * /usr/local/bin/rancid-run
# Clean out config differ logs (+n keeps n days, so 2 here) at 3:00AM
0 3 * * * /usr/bin/find /usr/local/var/rancid/logs -type f -mtime +2 -exec rm {} \;

المصادر التي استفدت منها في الموضوع
http://www.joe-ma.co.za/page.php?9
http://www.bsdguides.org/guides/freebsd/networking/rancid
http://homepage.mac.com/duling/halfdozen/RANCID-Howto.html#d0e395

عنوان التعقيب لهذه التدوينة:

http://yousef.raffah.com/trackback/212

تعليقات الزوار

فلة الموضوع .....

فلة الموضوع .....

بحتفظ به ان شاء الله في الجهاز ... مع المواضيع الي احتفظ بيها :)

يسعدني ذلك

و إن شاء الله نشوفك مستخدمه :)

Salam,Its very good

Salam, Its very good software, we used it for long time . but if you want more powerful tool, use expect by build you own script to manage your NOC with it. BemoX

I just knew about it

I just knew about it yesterday and I really liked it, plus it is simple to setup. On the other hand, I agree with you regarding having my own scripts, but I look at it from the point the says: "Why re-invent the wheel?"

Thanks for your input.

rplay

Salam,

 

After long use, you ill knew why you must re-invent the wheel :-)

for example, RANCID keep all password in clear text in cloginrc!!!

 

btw, its not about re-inventing the wheel per say.... its about expanding the wheel.

 

BemoX

This is what I didn't like

This is what I didn't like about the clogin file but it is not much of an issue as the file is 0600, so no one can read it, unless they logged in with the owner account. In my case, no one can login to that box unless they have a proper certificate, because SSH doesn't not allow user/password authentications, it is only certificate based.

Oh, I can't argue on the fact of "expanding the wheel", you are absolutely right and I agree with that.

Again, Thanks a lot for your valuable feedback

أرسل تعليق جديد

محتويات هذه الخانة سرية ولن تظهر للآخرين.