وثائق لينوكس العربية

تسجيل كل ما يطبعه المستخدم في سجلات

كتب بواسطة مسلم عادل بتاريخ 2008/09/11

اذا كنت مدير نظام، على الاغلب ستسفيد من هذا المقال كثيرا، خاصة اذا كنت مضطر ان تعطي صلاحيات الدخول للنظام (عبر ssh) لاكثر من مستخدم ولا يمكنك الوثوق بهم جميعا (مثل خدمات الاستضافة التي تسمح بالدخول للنظام عبر ssh)

هنا يدخل البرنامج الرائع snoopy.

لا تنفذ أي أمر من الأوامر المذكورة في هذا المقال قبل أن تقوم بقراءة المقال كاملا، والا ستضطر أن تعيد تشغيل جهازك أكثر من مرة حتى تاخذ التعديلات حيز التنفيذ

مبدأ عمل snoopy يقوم على “مشاهدة” و “متابعة” الوظيفة execve() ليعرف ماذا يطبع مستخدمي النظام وبعدها يقوم بتحويل هذه “المشاهدات” الى نص عبر authpriv facility الخاصة بـ syslog. لهذا السبب ستجد جميع الأوامر التي يطبعها المستخدم مخزنة في الملف /var/log/auth.log (لانه الملف المربوط بـ authpriv).

ولكن /var/log/auth.log يحتوي على معلومات كثيرة جدا بدون وجود snoopy، فماذا تتوقع ان يحدث لهاذا الملف مع وجود snoopy (الذي سيسجل كل شيء يعمله كل المستخدمين، من بداية دخولهم الى النظام وحتى خروجهم !!)
سينتج عن هذا ملف كبير الحجم قد يتجاوز حجمه 500 م.ب في اليوم الواحد !!

انا عن نفسي حاولت تغيير مكان تخزن مخرجات snoopy ولم استطع، فقمت بعمل برنامج صغير يقرأ auth.log ويستخرج منه مخرجات snoopy. ولكن هذا الحل لم اجده عمليا، فقررت تحميل الكود المصدري لـ snoopy وتعديله. وهذا ما سنقوم به الان.

ولكن قبل أن اشرح طريقة تعديله، ساقوم بذكر طريقة تركيب الحزمة الافتراضية الغير معدلة (ستكون مخرجات snoopy مخزنة في auth.log)

root@laptop:~# apt-get install snoopy

 

تعديل snoopy ليخزن مخرجاته الى /var/log/snoopy.log

 

ملاحظات
* تأكد أن snoopy غير مثبت في جهازك واذا كان مثبت قم بازالته واعد تشغيل النظام.
* تأكد أن مستودعات الكود المصدري لديبيان او ابنائه مفعل عندك
* تأكد أن الحزمة dpkg-dev مثبتة في جهازك

كما ذكرت أريد تغيير مسار تخزين المخرجات الى مسار اخر، ولكن في نفس الوقت، لا أريده أن يرسل أي شيء الى auth.log، لفعل هذا، ساقوم بتغيير الـ facility الخاصة بـ syslog من authpriv الى log_local6 لاستطيع فيما بعد تحديد اسم الملف الذي ستيحتوي على المخرجات.

اتبع الاتي:

root@laptop:~# mkdir /root/snoopy-work
root@laptop:~# cd /root/snoopy-work
root@laptop:~/snoopy-work# apt-get source snoopy
root@server:~/snoopy-work# apt-get build-dep snoopy
root@server:~/snoopy-work# wget http://linuxdocs-ar.com/patches/snoopy-1.3-syslogfacility.patch
root@server:~/snoopy-work# cd snoopy-1.3
root@server:~/snoopy-work/snoopy-1.3# patch -p1 < ../snoopy-1.3-syslogfacility.patch
root@server:~/snoopy-work/snoopy-1.3# dpkg-buildpackage -uc -us
root@server:~/snoopy-work/snoopy-1.3# cd ..
root@server:~/snoopy-work# apt-get install ld.so.preload-manager
root@server:~/snoopy-work# dpkg -i snoopy_1.3-13_i386.deb

انتهينا من تعديل snoopy، بقي علينا فقط تعديل syslog لتحديد اسم الملف الذي سيخزن مخرجات snoopy.

قم بتحرير الملف /etc/syslog.conf باستخدام اي محرر نصوص تريده، واضف التالي في نهايته:

local6.* /var/log/snoopy.log

احفظ الملف ونفذ الاتي:

root@laptop:~# touch /var/log/snoopy.log
root@laptop:~# chown syslog.adm /var/log/snoopy.log
root@laptop:~# /etc/init.d/sysklogd restart

تم !!!

الان ابدا بمراقبة الملف

/var/log/snoopy.log لتعرف ماذا يطبع مستخدومك.

, , , , , ,

أكتب تعليق

هل تبحث عن شيء؟

إستخدم النموذج التالي للبحث:

مواقع أنصح بها!

أنصح بزيارة المواقع التالية:

الأرشيف

ستجد هنا أرشيف المقالات السابقة: