معرّف سجل النظام الذي له الأولوية القصوى. Syslog - سجل نظام الشبكة. رسائل سجل النظام الداخلية

يوفر بروتوكول syslog وبرنامج الدعم تسجيل المعلومات حول الأحداث في سجل النظام (السجلات ، وحدة تحكم النظام) ، بالإضافة إلى نقلها إلى خادم التسجيل عبر الشبكة ، والفرز والمعالجة اعتمادًا على مصدر الرسائل وأهميتها. تصف المقالة بروتوكول سجل النظام وتنفيذه في Solaris و Linux (syslogd) و Cisco IOS ، بالإضافة إلى الأدوات المساعدة: logrotate و logwatch.

مكونات النظام هي منشئ رسائل (جهاز أو عملية) ، وبروتوكول تبادل ، ومجمع رسائل (جامع ، خادم سجل النظام) ، مرحل (مرحل ، يستقبل رسائل من مولِّد واحد أو أكثر وينقلها إلى جامع واحد أو أكثر أو المرحلات التالية). لا يعرف المولد (أو المرحل عند الإرسال) ما إذا كان جهاز الاستقبال عبارة عن مرحل أم جامع ، ويمكنه إرسال رسالة واحدة إلى عدة أجهزة استقبال ، ويمكنه معالجة الرسالة نفسها (على سبيل المثال ، الكتابة إلى ملف).

لا يحتوي بروتوكول سجل النظام على أي حماية ضد تزوير الرسائل. والأسوأ من ذلك ، أن استخدام بروتوكول UDP يسمح للمهاجمين بإرسال رسائل نيابة عن أي مضيف. يجب حماية شبكة LAN (IOS ACL ، ipchains) من تلقي الحزم ذات العناوين المحلية المخادعة (على الرغم من أن هذا لا يمنع إرسال الرسائل المخادعة من داخل شبكة LAN) ومن تلقي الحزم من الخارج على المنفذ 514 / udp. إن حالات تجاوز القرص برسائل خاطئة معروفة.

لا يوفر بروتوكول سجل النظام و UDP تسليمًا مضمونًا (يمكن فقد الرسائل بسبب ازدحام الشبكة أو اعتراضها ، ويتم حذف الرسائل التالفة بدون تحذير) ، وتسلسل التسليم الصحيح (قد تصل رسالة إنهاء العملية قبل رسالة بدء العملية) ، وأولوية التسليم.

لا يتم ضمان سرية الرسائل ، حيث يتم إرسالها بنص واضح.

إذا حددت مُجمعًا أو عنوان ترحيل غير صحيح عند إعداد منشئ الرسائل ، فلن تكون هناك رسائل خطأ - سيتم حذف الرسائل (أو كتابتها في سجل شخص آخر ؛).

لا توجد وسيلة لمنع تكرار إرسال الرسائل من خلال مرحلات تم تكوينها بشكل غير صحيح.

يقترح RFC 3195 بروتوكولًا جديدًا عبر TCP (syslog-conn ، 601) يوفر تسليمًا مضمونًا بالتسلسل الصحيح. التنفيذ غير معروف لي. مزيج هائل من أوامر XML وأوامر نمط SMTP ورموز الإرجاع ورؤوس MIME (BEEP) التي تغلف رسائل تنسيق سجل النظام القياسية. يتم استخدام وضعين - RAW (مشابه لبروتوكول UDP الحالي) و COOKED (يتم تنظيم الرسائل حسب الحقول). يتيح لك برنامج BEEP توفير المصادقة والنزاهة والسرية (SASL ، TLS).

يقترح مشروع RFC الخاص بعلامة سجل النظام توفير المصادقة وترتيب الرسائل وسلامة الرسائل واكتشاف الرسائل المفقودة من خلال إنشاء رسائل خاصة تحتوي على توقيع رقمي لمجموعة من الرسائل السابقة ، والحفاظ على بروتوكول وتنسيق سجل النظام القياسي ، واستخدام UDP. مستخدم بواسطة SHA1 ، OpenPGP DSA.

يتم استخدام المنفذ 514 / UDP لتلقي الرسائل. يوصى أيضًا باستخدام المنفذ المصدر 514 لتمرير الرسائل. الرسالة عبارة عن سلسلة نصية ولا يمكن أن يزيد طولها عن 1024 بايت ، وإلا يمكن اقتطاعها أو حتى التخلص منها. حتى الرسالة المشوهة المرسلة إلى المنفذ 514 يجب معاملتها كرسالة سجل نظام. ومع ذلك ، إذا أرسل الترحيل الرسالة أكثر ، فيجب أن يضيف إليها الرؤوس القياسية (ربما يتم اقتطاعها إلى 1024 بايت) - المستخدم ، والإشعار ، والتوقيت المحلي ، والاسم البسيط لمصدر الرسالة.

تبدأ الرسالة بحقل PRI ، والذي يقوم بترميز المعلومات حول مصدر الرسالة (منشأة) ومستوى الخطورة (مستوى الخطورة) للرسالة. يتبعه الوقت (TIMESTAMP) ، مسافة ، اسم المضيف أو عنوان IP بالتدوين العشري (HOSTNAME) ، مسافة ، نص رسالة مخصصة (MSG) في US-ASCII (0x20 - 0x7e).

اسم المضيف (بسيط ، وليس FQDN!) مكتوب كما هو معروف لمولد الرسائل. إذا كان للجهاز واجهات متعددة مع عناوين IP مختلفة ، فيمكن استخدام أي منها كاسم أو عنوان مضيف.

عادةً ما يحتوي نص الرسالة (MSG) على ملصق (TAG) يشير إلى البرنامج أو العملية التي أصدرت الرسالة ونص الرسالة (المحتوى). قد يحتوي الملصق على أحرف وأرقام لاتينية. يتم تحديد بداية نص الرسالة من خلال الحرف الخاص الأول ، وعادة ما تكون نقطتان أو قوس مربع مفتوح. على سبيل المثال ، يستخدم Cisco IOS رقم تسلسل الرسالة ونقطتين كتسمية ، بينما يستخدم Unix اسم برنامج بسيط (يبدأ نص الرسالة برقم عملية بين قوسين مربعين ونقطتين).

syslogdيتلقى الرسائل من المنفذ 514 / UDP ومن المصادر المحلية (مقبس / مطور / سجل) ، ويقوم بتوجيهها حسب مصدر الرسالة ومستوى الخطورة. يسمح لك بإخراج الرسائل إلى السجل ، والإخراج إلى وحدة التحكم ، والمحطة ، وإرسالها إلى خادم آخر. يتم تقديم نوع إضافي من مصدر MARK (علامات عادية ، معلومات)

يحتوي كل سطر سجل على إدخال رسالة واحد ، يتكون من حقول مفصولة بمسافات:

  • التاريخ بتنسيق نص قياسي (حقل TIMESTAMP من رسالة سجل النظام)
  • اسم المضيف (fqdn أو اختصار ، حقل HOSTNAME من رسالة سجل النظام)
  • نص الرسالة (حقلا TAG و CONTENT من رسالة سجل النظام)

معلمات الإطلاق:

  • مقبس استماع إضافي (مفيد في chrooting daemons ؛ قد يكون هناك أكثر من واحد)
  • (وضع التصحيح)
  • -F التكوين-اسم الملف (إفتراضي، /etc/syslog.conf)
  • (قم بتغيير السلوك المعتاد حيث لا يتم تمرير الرسائل المستلمة من المضيفين البعيدين لكتابتها إلى المضيف البعيد لتجنب التكرار)
  • قائمة المضيف (قائمة المضيفين الذين لا ينبغي كتابة أسمائهم كـ FQDNs ؛ مفصولة بنقطتين)
  • م الدقائق (الفاصل الزمني للإدخالات المؤقتة العادية ؛ الافتراضي هو 20 ؛ إذا كان 0 ، فلا تفعل ذلك على الإطلاق)
  • -p مقبس الاستماع (إفتراضي: / ديف / سجل)
  • -r(السماح باستلام الرسائل من المضيفين البعيدين ؛ يجب أن يكون جدار الحماية مفتوحًا ؛ يجب تحديد سجل النظام لـ 514 / udp في / etc / services)
  • قائمة المجال (اقتطع أسماء المضيف من أسماء النطاقات المحددة ؛ مفصولة بنقطتين ؛ افتراضيًا ، يتم اقتطاع النطاق الذي يطابق نطاق خادم سجل النظام)
  • -الخامس
  • -x(حظر تحديد اسم مضيف من عنوانه ، ويمنع الجمود عند التشغيل على نفس المضيف كخادم DNS)

الملفات المستخدمة:

  • /etc/syslog.conf- ملف التكوين (تم تغييره عند بدء التشغيل حسب المعلمة -F)
  • / ديف / سجل- المقبس الذي تقرأ منه الرسائل المحلية (يتم تغييره عند بدء التشغيل حسب المعلمة -p)
  • /var/run/syslogd.pid- معرف العمليه

رد فعل للإشارات:

  • SIGHUP - إعادة التهيئة (يغلق كل الملفات ، ويعيد قراءة ملف التكوين)
  • SIGTERM - الاغلاق
  • SIGINT ، SIGQUIT - اخرج إذا تم تعطيل تصحيح الأخطاء
  • SIGUSR1 - تمكين / تعطيل تصحيح الأخطاء (فقط عند استخدام مفتاح -d)

يعمل كجذر. لا يغير أذونات الملف. إذا اضطر إلى إنشاء ملف ، فإنه يقوم بإنشائه بأذونات 644. إذا كان من الضروري تقييد الوصول إلى السجل ، فيجب إنشاء الملف المقابل يدويًا (أو يجب تغيير حقوق الوصول). يخلق مشاكل خاصة لوغروت.

يمثل مجموعة من قواعد توجيه الرسائل. تتكون كل قاعدة من محدد وإجراء مفصولة بعلامات تبويب (في الأنظمة القديمة ، Solaris 5) أو مسافات (Linux). عند تلقي رسالة لتسجيل الدخول (من klogd ، من برنامج محلي أو بعيد) ، يتحقق syslogd من كل قاعدة لمعرفة ما إذا كانت الرسالة تتطابق مع النمط المحدد بواسطة المحدد. إذا تطابقت ، فسيتم تنفيذ الإجراء المحدد في القاعدة. لرسالة واحدة م. تم تنفيذ عدد تعسفي من الإجراءات (أي أن معالجة الرسائل لا تتوقف عند النجاح الأول).

يتكون المحدد من جزأين مفصولين بنقطة: مصدر الرسالة ومستوى الخطورة. لم يتم تمييز الأحرف الكبيرة والصغيرة. يمكنك أيضًا استخدام الأرقام (راجع /usr/include/syslog.h). بالإضافة إلى المصادر المحددة في سجل النظام 3 ، يمكنك تحديد علامة(طوابع زمنية منتظمة) ، الأمان(مرادف عفا عليه الزمن ل المصادقة). بالإضافة إلى مستويات الخطورة المحددة في syslog.h ، يمكنك استخدام تحذير(مرادف ل تحذير), خطأ(مرادف ل يخطئ), هلع(مرادف ل يظهر). تعتبر الرسائل ذات المستوى الذي يساوي أو يزيد عن المستوى المحدد في المحدد ومصدر مساوٍ للمستوى المحدد في المحدد مؤهلة. تشير علامة النجمة الموجودة قبل النقطة إلى أي مصدر ، بعد النقطة - إلى أي مستوى. كلمة لا أحدبعد النقطة - لا يوجد مستوى لهذا المصدر. يمكنك تحديد مصادر متعددة في محدد واحد (مفصولة بفواصل). يمكن تحديد محددات متعددة على نفس الخط. الدلالات غير واضحة: إذا كنت تستخدم محددات موجبة ، فعندئذٍ المنطق أو، إذا كانت سلبية ( لا أحدوعلامة تعجب) ، ثم المنطق و.

في سجل النظام الجديد (لينكس) ، يمكنك أن تسبق المستوى بعلامة التساوي - فقط الرسائل ذات المستوى المحدد (ولكن ليس المستوى الأعلى) ستطابق المحدد ؛ علامة التعجب - لن تتطابق مع الرسائل ذات المستوى المساوي أو الأعلى ؛ علامة التعجب والمساواة - لن تتطابق مع الرسائل ذات المستوى الذي يساوي المستوى المحدد.

كإجراء ، يمكنك تحديد:

  • اسم الملف العادي (المسار الكامل من الجذر) ، مطروحًا منه أمام الاسم يعطل كتابة المزامنة
  • القنوات المسماة - فيفو (يتم وضع شريط عمودي قبل الاسم) ، يجب أن تكون القناة نفسها تم إنشاؤه قبل بدء syslogd باستخدام الأمر mkfifo
  • محطة أو وحدة تحكم
  • hostname (تمرير الرسائل للتسجيل عن بعد)
  • قائمة المستخدمين (مفصولة بفواصل) الذين سيتم إرسال الرسالة إلى محطاتهم
  • النجمة لإرسال رسالة إلى جميع المحطات (الحائط)

عند تحليل ملف التكوين syslogdيقارن العنوان loghost(محدد في / etc / hosts ، وليس عبر DNS) بعنوان جهاز الكمبيوتر الخاص بك ، وإذا كان يتطابق ، يحدد المتغير لوغوست. ثم يتم تمرير syslog.conf من خلال معالج الماكرو m4 (1). يتم استخدام هذا بشكل أساسي بحيث يمكن استخدام ملف التكوين نفسه على مضيفي العميل والخادم (من وجهة نظر سجل النظام).

بدء وإيقاف الإجراء: /etc/init.d/syslog(روابط لها من الدلائل /etc/rc؟.d). يتم تخزين رقم العملية في /etc/syslog.pid.

يقرأ klogd رسائل kernel (إما من خلال / proc / kmsg أو عبر مكالمات النظام) ، ويحدد المستوى ، ويحول عناوين الأوامر إلى أسماء البرامج ، ويمرر الرسالة إلى syslogd.

معلمات الإطلاق:

  • -ج المستوى(سيتم إرسال الرسائل من هذا المستوى والرسائل الأقل خطورة إلى سجل النظام ، وسيتم إخراج الرسائل الأكثر جدية إلى وحدة التحكم ؛ الافتراضي هو 7 ؛ لا يمكن تحديد 0)
  • (وضع التصحيح)
  • -F اسم الملف (سجل بالملف المحدد بدلاً من سجل النظام)
  • -أنا(يجب استخدام رموز الوحدة النمطية في klogd قيد التشغيل بالفعل في كل مرة يتم فيها تحميل أو إلغاء تحميل وحدة ؛ ونأمل أن تقوم الإصدارات الحالية من insmod و rmmod و modprobe بعمل ذلك بنفسها)
  • -أنا(إعادة تحميل رموز kernel والوحدة في klogd قيد التشغيل بالفعل)
  • اسم الملف (استخدم الملف المحدد كجدول رمز kernel بدلاً من /boot/System.map)
  • (لا تدخل في الخلفية ؛ مطلوب للتشغيل من init)
  • -o(الوضع لمرة واحدة - تسجيل جميع الرسائل المتراكمة في المخزن المؤقت لـ kernel والخروج)
  • -p(فقط في حالة إعادة تحميل جدول رمز الوحدة النمطية في وقت ترجمة العنوان - قد لا تتمكن النواة من القيام بذلك)
  • (استخدم فقط syscalls ولا تدخل إلى / proc / kmsg للحصول على الرسائل الأصلية)
  • -الخامس(عرض الإصدار والخروج)
  • -x(لا تقم بتحويل العناوين إلى أسماء)
  • -2 (رسائل تعطل kernel - عفوًا! - يتم إرسالها مرتين: قبل تحويل العنوان إلى اسم - لـ ksymoops - وبعد ذلك)

مستويات رسالة Kernel (يتم تحديدها بواسطة الرقم الموجود بين قوسين زاوية وتحويلها إلى مستوى خطورة سجل النظام ، دون تغيير عند الإخراج إلى ملف):

  • KERN_EMERG - 0 (النظام غير قابل للاستخدام)
  • KERN_ALERT - 1 (يجب اتخاذ إجراء على الفور)
  • KERN_CRIT - 2 (حالات حرجة)
  • KERN_ERR - 3 (شروط الخطأ)
  • KERN_WARNING - 4 (ظروف تحذير)
  • KERN_NOTICE - 5 (حالة طبيعية ولكنها مهمة)
  • KERN_INFO - 6 (إعلامي)
  • KERN_DEBUG - 7 (رسائل مستوى التصحيح)

رد فعل للإشارات:

  • SIGINT و SIGKILL و SIGTERM و SIGHUP - إيقاف التشغيل
  • SIGTSTP - توقف عن التسجيل
  • SIGCONT - استئناف ، وربما اختيار واحد آخر
  • مصدر الرسالة (/ proc / kmsg أو مكالمات النظام)
  • SIGUSR1 - إعادة تحميل رموز الوحدة
  • SIGUSR2 - إعادة تحميل رموز النواة والوحدة النمطية

يتم تخزين رقم العملية في /var/run/klogd.pid.

تهيئة التسجيل: openlog- يشير إلى البادئة القياسية المضافة إلى جميع الرسائل اللاحقة (عادةً اسم البرنامج ورقم العملية بين قوسين مربعين ونقطتين) ؛ المصدر والخيارات. كلوسلوج- تسجيل نهاية. سجل النظام- التسجيل (يشير إلى المصدر ومستوى الخطورة وتنسيق الخط كما في printf).

لوغروت(الإصدار 3.2-1 / 3.3.2-1 / 3.5.9) - حارب السجلات المتزايدة: التدوير (الإصدار) والضغط والحذف وإرسال البريد. تشغيل يوميا بواسطة كرون /etc/cron.daily/logrotate) ويسمح لك بمعالجة السجلات إذا تجاوزت الحجم المحدد أو في الفترة الزمنية المحددة. يسمح لك بمعالجة ليس فقط سجلات سجل النظام ، ولكن أيضًا أي برامج أخرى. حدود:

  • [-د](وضع التصحيح ، لا توجد تغييرات حقيقية)
  • [-F](قم بإجراء التغييرات حتى إذا كان logrotate لا يرى الحاجة - يُستخدم عند تغيير قائمة السجلات التي تمت معالجتها)
  • [اسم ملف الدولة ] (يتم تخزين الحالة الحالية للسجلات في هذا الملف بين عمليات التشغيل ، والقيمة الافتراضية هي /var/lib/logrotate.status)
  • التكوين-أسماء الملفات (الأسماء مفصولة بمسافات ؛ الترتيب مهم ؛ إذا تم تحديد اسم دليل ، فسيتم اعتبار كل ملف فيه ملف تكوين ؛ يستخدم RH الملف /etc/logrotate.confوالدليل /etc/logrotate.d)

يحدد ملف التكوين الخيارات العامة (واحد لكل سطر) التي تعين الخيارات الافتراضية لجميع السجلات. لكل سلسلة من السجلات المراد معالجتها ، يتم تحديد الخيارات المحلية عن طريق تحديد اسم الملف الأساسي متبوعًا بالخيارات المحلية في أقواس معقوفة ، واحدة لكل سطر. يمكن اقتباس اسم الملف وفقًا لقواعد shell إذا كان يحتوي على مسافات وأحرف خاصة أخرى. يمكنك تحديد أسماء ملفات متعددة أو أنماط اسم ملف مفصولة بمسافة (تتبع القوالب أيضًا قواعد shell). يتم التعامل مع معالجة كل قسم كإجراء منفرد. الأسطر التي تبدأ بـ "#" هي تعليقات. تلغي الخيارات المحددة في ملف التكوين التالي معنى الخيارات المحددة في الملف السابق. الإعدادات المحلية لها الأسبقية على الإعدادات العامة. لم يتم تعريف ترتيب الملفات في دليل التكوين.

حدود:

  • ضغط | لا يوجد ضغط(الإصدارات القديمة يتم ضغطها أو عدم ضغطها باستخدام gzip)
  • ضغط كمد(يحدد برنامج الضغط ، الافتراضي هو gzip)
  • فك ضغط cmd(يضبط برنامج فك الضغط ، الافتراضي هو ungzip)
  • ضغط النص(يحدد لاحقة الملفات المضغوطة)
  • الانضغاطات(يحدد معلمات برنامج الضغط ؛ الافتراضي هو "-9" ، أي أقصى ضغط لـ gzip)
  • اقتطاع النسخ | نوكوبيترونكات(عادة ما يتم إعادة تسمية الإصدار القديم ويتم إنشاء إصدار جديد من السجل ؛ باستخدام هذا الخيار ، ينسخ logrotate السجل إلى ملف جديد ثم يقتطع القديم ؛ يستخدم إذا كان البرنامج الذي ينشئ السجل لا يعرف كيفية الإغلاق ذلك ؛ يتم فقد الإدخالات التي تم إجراؤها في الفترة الفاصلة بين النسخ والاقتطاع ؛ هل سيساعد إذا كتب برنامج التسجيل بدلاً من استخدام وضع الإلحاق على الملف باستخدام مؤشر داخلي؟)
  • يزيد[ أذونات صاحب مجموعة] | nocreate(مباشرة بعد إعادة تسمية النسخة القديمة من المجلة وقبل الاتصال بعد الدورانيتم إنشاء سجل جديد بالسمات المحددة - يتم تحديد الأذونات بالنظام الثماني ، كما في chmod.2 ؛ إذا لم يتم تحديد السمات ، فسيتم أخذها من المجلة القديمة)
  • اليومي(يتم تغيير الإصدارات في السلسلة يوميًا)
  • تأخير ضغط | ضغط العقدة(بعض البرامج لا تغلق السجل على الفور ، وفي هذه الحالة يجب تأجيل الضغط حتى الدورة التالية)
  • أخطاء البريد الإلكتروني (لمن يبلغ عن الأخطاء)
  • تمديد لاحقة (تحدد اللاحقة المضافة إلى أسماء الملفات أثناء التدوير قبل لاحقة الضغط)
  • إذا كانت فارغة | إخطار(قم بتغيير الإصدارات حتى إذا كان الملف فارغًا ؛ افتراضي)
  • تتضمن اسم الملف | اسم الدليل (استبدل ملفًا نصيًا أو جميع الملفات من الدليل المحدد ؛ لا يتم تضمين الدلائل الفرعية والملفات الخاصة والملفات ذات اللواحق من قائمة الاستبعاد ؛ لا يمكن استخدامها داخل قسم)
  • بريد العنوان | نوميل(عندما يستلزم تغيير الإصدار حذف المجلة القديمة ، ثم أرسلها إلى العنوان المحدد)
  • mailfirst(لا ترسل النسخة المحذوفة من السجل ، ولكن ترسل النسخة الأولى)
  • ميلاست(إرسال نسخة السجل ليتم حذفها ؛ افتراضي)
  • في عداد المفقودين | نوميسينجوك(لا ترسل رسائل خطأ إذا كان السجل مفقودًا)
  • شهريا(يتغير الإصدار شهريًا)
  • أولدير الدليل | noolddir(أثناء تغيير الإصدار ، يتم نقل السجل إلى الدليل المحدد ؛ يجب أن يكون على نفس الجهاز الفعلي)
  • بعد الدوران مخطوطةيتم تنفيذها كأوامر قشرة بعد عملية تغيير الإصدار)
  • أجرى مسبقا(كل الخطوط الأخرى حتى الخط مخطوطةيتم تنفيذها قبل عملية تغيير الإصدار)
  • استدارة رقم (كم عدد الإصدارات القديمة التي يجب الاحتفاظ بها ؛ إذا كان 0 ، فلا شيء)
  • بحجم بايت (يحدث تغيير الإصدار إذا تجاوز حجم السجل العدد المحدد ؛ يمكنك استخدام اللاحقات "k" - كيلوبايت - و "M" - ميغا بايت)
  • نصوص مشتركة | nosharedscripts(تنفيذ الأوامر أجرى مسبقاو بعد الدورانمرة واحدة فقط لجميع الملفات الموضحة في القسم)
  • المحرمات [+ ] قائمة لاحقة (تعيين قائمة بلاحقات الاستبعاد لـ تتضمن؛ إذا تم تحديد علامة الجمع ، فإن الإضافة ، وإلا البديل ؛ الافتراضي: .rpmorig و .rpmsave و .rpmnew و "و v" و .swp و "~")
  • أسبوعي(يتغير الإصدار أسبوعيا)

قدمها RH /etc/logrotate.confيصف الخيارات والخيارات العامة لـ / var / log / wtmp و / var / log / lastlog ويشير إلى الدليل /etc/logrotate.d، حيث تكتب كل حزمة الإعدادات المحلية لسجلاتها.

logwatch هي إطار عمل لكتابة البرامج (تسمى المرشحات) لاستخراج معلومات مفيدة من سجلات عديدة وكبيرة ومتنوعة (وليس فقط syslog). تأتي "الحزمة" مع العديد من المرشحات المصممة لـ Red Hat Linux (بعض الإصدارات القديمة ، لأن inetd مذكور بدلاً من xinetd) ، ولكن سيكون عليك تكييفها مع موقف معين بنفسك. تم إجراء التغيير الأخير من قبل المؤلف في سبتمبر 2000 ، لذلك لم يعد من الممكن توقع المزيد من التطوير.

يمكن كتابة المرشحات بأي لغة برمجة ، لكن مؤلف الحزمة يفضل perl. يجب كتابة المرشحات بطريقة تمكنهم من قراءة البيانات من stdin وإخراج النتيجة إلى stdout. قبل استدعاء عامل التصفية ، يتم تعيين متغيرات البيئة التالية: LOGWATCH_DATE_RANGE ، LOGWATCH_DETAIL_LEVEL ، LOGWATCH_TEMP_DIR ، LOGWATCH_DEBUG. البرنامج الرئيسي مكتوب أيضًا بلغة بيرل: /etc/log.d/scripts/logwatch.pl(/etc/log.d/logwatch و / usr / sbin / logwatch و /etc/cron.daily/00-logwatch هي روابط رمزية لها).

الدليل /etc/log.d/conf/logfiles/يحتوي على ملفات تكوين مجموعة السجلات التي تخزن سجلات الخدمات المحفوظة. يتم وصف كل مجموعة في ملف منفصل أسم المجموعة.confوالتي تحدد:

  • ملف السجل = اسم الملف الذي يحتوي على السجل ، أو نمط التسمية ؛ يمكن تحديد أسماء أو أنماط متعددة ؛ يمكن أن تكون الأسماء نسبة إلى LogDir
  • Archive = اسم الملف الذي تم إنشاؤه بواسطة logrotate للنسخة المؤرشفة من السجل ، أو نمط التسمية ؛ يمكن تحديد أسماء أو أنماط متعددة ؛ يمكن أن تكون الأسماء نسبة إلى LogDir
  • أسماء المرشحات ( مرة واحدة فقط ، على الرغم من أنها تظهر بشكل مختلف!) من /etc/log.d/scripts/shared/كما
    *مرشح اسم = المعلمات ، على سبيل المثال ، لتصفية السجل حسب التاريخ إذا كان بتنسيق قياسي سجل النظام ، استخدم السطر:
    * ApplyStdDate =

الدليل /etc/log.d/conf/services/يحتوي على ملفات تكوين للخدمات التي ستعمل ساعة تسجيل إدخالات السجل الخاصة بها. يتم وصف كل خدمة في ملف منفصل اسم الخدمة.confوالتي تحدد:

  • ملف السجل = تسجيل اسم المجموعة
  • أسماء التصفية من /etc/log.d/scripts/shared/كما
    *مرشح اسم = المعلمات ، التي تم إطلاقها قبل مرشح الخدمة
  • $اسم متغير البيئة = المعنى

الدليل /etc/log.d/scripts/logfiles/يحتوي على عوامل تصفية لمعالجة مجموعات السجل: عند معالجة مجموعة السجل ، يتم عرض جميع الملفات في الدليل /etc/log.d/scripts/logfiles/ أسم المجموعة تستخدم كمرشحات.

الدليل /etc/log.d/scripts/services/يحتوي على عوامل تصفية لمعالجة سجلات خدمات معينة.

الدليل /etc/log.d/scripts/shared/يحتوي على عوامل تصفية شائعة مستخدمة في ملفات تكوين مجموعة السجل:

  • applicationstddate - يقوم بتصفية السجل حسب التاريخ المطلوب ، إذا كان مكتوبًا بتنسيق سجل النظام (هنا وفي المرشحات الخاصة حسب التاريخ ، أدخل LANG = قبل تاريخ الاستدعاء ، وإلا فإن Mar لا يتطابق مع Mar بأي شكل من الأشكال ؛)
  • توسيع التكرار - يحول سطور "آخر رسالة مكررة" إلى عدد الأسطر المقابلة مع نص الرسالة من السطر السابق
  • يحتوي فقط - يترك فقط سطور السجل التي تحتوي على السلسلة المحددة (أضع علامات اقتباس حول "$ *")
  • الخدمة فقط - يختار من السجل بتنسيق سجل النظام الأسطر المتعلقة بالخدمة المحددة (يتم تمرير اسم الخدمة كمعامل)
  • إزالة - يترك فقط سطور سجل النظام التي لا تحتوي على السطر المحدد ( وضعت علامات الاقتباس حول "$ *" وقمت بإزالة 1 ، و remove2 ، وما إلى ذلك. لأنني لم أفهم كيفية تحديد عدة أنماط فرعية لـ egrep في سطر واحد؛ بالمناسبة ، يتم استبدال المعلمات في الغلاف ، لذلك لا يمكن استخدام الأحرف الخاصة أيضًا)
  • removeheaders - إزالة الحقول القياسية (التاريخ والوقت واسم المضيف وتسمية الخدمة ورقم العملية)
  • يزيل الخدمة - يزيل الأسطر من سجل سجل النظام التي لا تتعلق بالخدمة المحددة (يتم تمرير اسم الخدمة كمعامل)

يتم تخزين المعلمات الافتراضية في الملف /etc/log.d/conf/logwatch.conf (/etc/log.d/logwatch.conf له ارتباط رمزي به) ، التعليقات التي تجعل من الممكن فهم المعنى من المعلمات:

  • LogDir - دليل متعلق بأسماء الملفات التي يتم اعتبارها
  • MailTo - لمن يتم إرسال التقرير إليه
  • طباعة - بدلاً من إرسال التقرير بالبريد ، اطبعه على stdout
  • حفظ - بدلاً من إرسال التقرير بالبريد ، سيتم حفظه في الملف المحدد
  • المحفوظات - استخدام إصدارات السجلات التي تم إنشاؤها بواسطة logrotate
  • النطاق - الفاصل الزمني المدروس: الكل ، اليوم ، أمس (يوم أمس في التقويم)
  • التفاصيل - مستوى تفاصيل التقرير: من 0 إلى 10 أو منخفض ، متوسط ​​، مرتفع
  • الخدمة - اسم الكل أو عامل التصفية من /etc/log.d/scripts/services/ (يمكن تحديد عوامل تصفية متعددة)
  • ملف السجل - اسم المجموعة بالكامل أو سجل المجموعة (يمكن تحديد مجموعات متعددة)

معلمات الإطلاق:

  • - التفاصيل مستوى (مستوى الإسهاب في التقرير: مرتفع أو متوسط ​​أو منخفض)
  • --ملف تسجيل تسجيل المجموعة (معالجة سجلات هذه المجموعة فقط ؛ يتم تحديد المجموعة باسم رمزي في ملف التكوين ؛ يمكن تحديد مجموعات متعددة)
  • --الخدمات اسم الخدمة (معالجة إدخالات السجل المتعلقة بهذه الخدمة فقط ؛ يتم تحديد الخدمة بواسطة اسم رمزي في ملف التكوين ؛ يمكن تحديد خدمات متعددة ؛ الاسم الجميعيتسبب في معالجة السجل لجميع الخدمات)
  • --مطبعة(تقرير إلى stdout)
  • - mailto العنوان (إرسال التقرير إلى العنوان المحدد)
  • --حفظ اسم الملف (كتابة تقرير إلى ملف محدد)
  • --أرشيف(لا تعالج الإصدارات الحالية من السجلات فحسب ، بل تعالج أيضًا النسخ القديمة التي تم إنشاؤها بواسطة logrotate)
  • --نطاق فاصل التاريخ (معالجة الإدخالات في السجلات التي تنتمي إلى الفاصل الزمني المحدد فقط: في الامس, اليوم, الجميع)

الاستخدام الرئيسي هو تضمين الملف 00-logwatch (يبدأ بـ "00" للتشغيل قبل logrotate) في الدليل /etc/cron.daily ، مما يؤدي إلى تشغيل ساعة السجل يوميًا بالخيارات الافتراضية.

لسوء الحظ ، تم تصميم جميع عوامل التصفية لضمان كتابة السجلات على نفس المضيف الذي تعمل عليه الخدمة.

يتم الاحتفاظ بجميع السجلات على جهاز كمبيوتر واحد (إذا كنت مصابًا بجنون العظمة ، فيمكنك كتابة السجلات على خادمين في وقت واحد).

المراسلات بين اسم مصدر رسمي وجهاز أو برنامج حقيقي:

  • local0- سيسكو
  • local3 - ftp (يوجد اسم مصدر خاص ، لكن Solaris 2.5 لا يعرفه)
  • local4 - محجوز للمحاسبة
  • local5 - POP3 / IMAP
  • local6-tac_plus>

يجب أن يكون للخادم شاشة مفتوحة للمنفذ 514 / udp (يمكنك تحديد عناوين مصدر الحزم ، لكن هذا سيساعد فقط في مواجهة الحوادث). يجب أن يكون بدء syslogd (الخيارات في /etc/rc.d/init.d/syslog أو / etc / sysconfig / syslog) مع مفاتيح التبديل "-r -m 0" (وأيضًا "-x" إذا كان يعمل على نفس الكمبيوتر خادم DNS). بدء klogd بمفاتيح "-2 -c 1". إعداد syslog.conf:

  • * .crit - إخراج الرسائل بمستوى خطورة CRIT وما فوق إلى الأجهزة الطرفية وكتابتها في ملف منفصل (chmod 600) ، وإرسال رسائلك إلى خادم النسخ الاحتياطي ؛ يعتبر sendmail تلقي الرسائل أمرًا بالغ الأهمية
  • kern - إنشاء ملف kern للرسائل من جميع المستويات (chmod 600)
  • البريد - إنشاء ملف بريد للرسائل من جميع المستويات (بدون مزامنة)
  • auth، authpriv - إنشاء ملف آمن للرسائل من جميع المستويات (chmod 600)
  • أخبار - إنشاء ملف منفصل لكل مستوى خطورة في دليل الأخبار (تصحيح بدون تزامن)
  • cron - قم بإنشاء ملف cron للرسائل من جميع المستويات (لا يعرف cron في RH 6.2 و Solaris 2.5 كيفية استخدام سجل النظام)
  • local0 - إنشاء ملف منفصل لكل مستوى خطورة في دليل cisco (خطأ وأدناه بدون مزامنة)
  • local3 - إنشاء ملف منفصل لكل مستوى خطورة في دليل ftp (معلومات وتصحيح بدون مزامنة)
  • local5 - إنشاء ملف imap.log للرسائل من جميع المستويات
  • local6 - إنشاء ملف tac_plus.log للرسائل من جميع المستويات
  • local7 - ملف boot.log (رسائل عند تمهيد النظام وبدء أو إيقاف syslogd و klogd)
  • جميع الرسائل من مستوى INFO وما فوق غير المدرجة في أحد الملفات المحددة أعلاه ، اكتب في ملف الرسائل (chmod 600)

على أجهزة الكمبيوتر العميلة ، نقوم بتهيئة سجل النظام بحيث يتم إرسال جميع الرسائل إلى خادم سجل النظام ، ويتم تكرار رسائل الخطأ في / var / log / syslog ، ويتم تكرار رسائل الحالة الحرجة على وحدة التحكم ، ومحطات المستخدم. على أجهزة الكمبيوتر التي تعمل بنظام التشغيل Linux ، قم أيضًا بتفريغ رسائل التمهيد إلى ملف محلي (local7 ، boot.log). يجب أن يتلقى خادم سجل النظام الاحتياطي رسائل المستوى الحرج من الشبكة وكتابتها في ملف (ثقب الشاشة ، مفتاح التشغيل "-r").

logrotate: تخزين إلى الأبد ، وتغيير الإصدارات نادرًا قدر الإمكان (شهريًا ، باستثناء الحبار) ، والتفريغ في مجلدات منفصلة (باستثناء الحبار) والضغط (في الوضع المتأخر ، باستثناء ftpd ، و linuxconf ، و sendfax) ، وإرسال الأخطاء والملفات المحذوفة إلى أنا. تطابق معلمات سجل النظام.

يواجه كل من مستخدمي Linux المبتدئين عاجلاً أم آجلاً بعض المشكلات في إعداد وتنظيم عمل نظامهم. ومن شبه المؤكد أن كل مبتدئ سمع نصائح من مستخدمين أكثر خبرة: "انظر إلى السجلات". النصيحة جيدة ، لكن المبتدئ لا يزال بحاجة إلى معرفة: ما هي السجلات وأين تبحث عنها! لذلك سأحاول في هذا المقال أن أخبرك ماذا وأين تشاهد.

في اللغة العامية للمبرمجين ، تسمى "السجلات" بروتوكولات العمل التي يتم الاحتفاظ بها بواسطة نظام التشغيل نفسه وبشكل مستقل بواسطة العديد من البرامج. غالبًا ما تُستخدم كلمة "مجلة" كمرادف لكلمة "بروتوكول" بهذا المعنى. هناك حالتان رئيسيتان تظهر فيهما الحاجة إلى تحليل البروتوكول: عندما لا يعمل شيء ما في النظام كما توقعنا (حل المشكلة) ، وعندما يكون هناك شك في أن النظام قد تم اختراقه من قبل بعض المهاجمين ونحن بحاجة إلى اكتشف بالضبط ما حدث وكيف تم ذلك ، وما الذي يجب فعله لإزالة عواقب الغزو.

واحدة من أشهر حالات استخدام ملفات السجل لكشف متسلل هي قصة القبض على المخترق الشهير كيفين ميتنيك من قبل متخصص أمن الكمبيوتر Tsuomo Shimomura. هذه فقرة واحدة من المقال تصف كيف حدث ذلك.

"في يوم عيد الميلاد ، عندما ذهب شيمومورا للتزلج في نيفادا في إجازة ، قام شخص (نعرف بالفعل) باختراق جهاز الكمبيوتر المنزلي الخاص به شديد الأمان في سولانا بيتش ، كاليفورنيا ، وبدأ في نسخ ملفاته - مئات الملفات السرية. طالب دراسات عليا من لاحظ مركز الحوسبة الفائقة في سان دييغو ، حيث عمل شيمومورا ، تغييرات في ملفات "السجل" (السجل) في النظام واكتشف بسرعة ما كان يحدث. كل هذا كان ممكنًا بسبب حقيقة أن شيمومورا قام بتثبيت برنامج على جهاز الكمبيوتر الخاص به يقوم تلقائيًا بنسخ يسجل "السجل" على جهاز كمبيوتر احتياطي في سان دييغو. ويدعى الطالب شيمومورا ، الذي هرع إلى المنزل لجرد البضائع المسروقة ".

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

كيف يتم إنشاء الرسائل للبروتوكول

يجب أن نبدأ بحقيقة أنه عند إنشاء برامج بلغة C ، فإن المبرمجين لديهم الفرصة ، إذا لزم الأمر ، لإدراج استدعاء لوظائف خاصة openlog ، setlogmask ، syslogو كلوسلوج، المضمنة في المكتبة القياسية C. تُستخدم هذه الوظائف لإرسال رسائل حول أحداث معينة أثناء تنفيذ البرنامج إلى برنامج خفي للنظام خاص syslogd، يقود بروتوكول النظام. دور openlogيقيم علاقة مع الشيطان syslogd، وظيفة سجل النظاميولد رسالة محددة للكتابة على البروتوكول والوظيفة كلوسلوجيغلق اتصالاً مفتوحًا.

الرسائل التي تم إنشاؤها بواسطة الوظيفة سجل النظام، تتكون من عدة حقول مفصولة بمسافات. تبدأ كل رسالة بحقل PRI، والتي تحتوي في شكل مشفر على معلومات حول فئة الرسالة (منشأة) ومستوى الخطورة (مستوى الخطورة) أو الأولوية (الأولوية) للرسالة.

الفئة (منشأة) هي معلومات حول الفئة التي تنتمي إليها الرسالة المحددة. يتم ترميز الفئة كرقم من 0 إلى 23. الفئات التالية موجودة (تم تعريفها في الملف /usr/include/sys/syslog.h):

الجدول 1.

قيمة عدديةرمزفك التشفير
0 نواة رسائل Kernel
1 المستعمل مصمم لمجموعة متنوعة من الرسائل من برامج المستخدم. (رسائل من برامج المستخدم)
2 بريد رسائل من نظام البريد.
3 شيطان الرسائل الواردة من شياطين النظام هذه ، على عكس FTP أو LPR ، لا تحتوي على فئات مخصصة لها.
4 المصادقة أي شيء متعلق بتفويض المستخدم ، مثل تسجيل الدخول و su (الأمان / الأذونات)
5 سجل النظام يمكن لنظام التسجيل تسجيل الرسائل من نفسه.
6 lpr رسائل من نظام الطباعة.
7 الإخبارية رسائل من خادم الأخبار. (نت نيوز ، USENET)
8 uucp رسائل من بروتوكول نسخ UNIX-to-UNIX. هذا جزء من تاريخ UNIX ، وعلى الأرجح لن تحتاجه أبدًا (على الرغم من استمرار تسليم نسبة معينة من رسائل البريد عبر UUCP).
9 كرون رسائل من برنامج جدولة النظام.
10 المؤلف مثل المصادقة ، ولكن الرسائل في هذه الفئة تتم كتابتها إلى ملف لا يمكن إلا لبعض المستخدمين قراءته (ربما يتم تمييز هذه الفئة لأن الرسائل التي تنتمي إليها قد تحتوي على كلمات مرور عامة للمستخدمين لا ينبغي أن يراها الأشخاص غير المصرح لهم ، وبالتالي السجل يجب أن يكون للملفات الأذونات المناسبة).
11 بروتوكول نقل الملفات باستخدام هذه الفئة ، يمكنك تكوين خادم FTP لتسجيل إجراءاته.
من 12 إلى 15 - محجوز لاستخدام النظام.
من 16 إلى 23local0 - محلي 7 الفئات المحجوزة للاستخدام من قبل مسؤول النظام. تُستخدم فئة local7 عادةً للرسائل التي يتم إنشاؤها أثناء تمهيد النظام.

فئة المصادقةله اسم مرادف قديم الأمان، وهو غير مستحسن. بالإضافة إلى ذلك ، هناك فئة خاصة علامة(ليس لديه مكافئ رقمي) ، والذي يتم تخصيصه للرسائل الفردية التي تم إنشاؤها بواسطة البرنامج الخفي نفسه syslogd. تُستخدم هذه الفئة لوضع علامات خاصة في السجل في فترة زمنية محددة (كل 20 دقيقة افتراضيًا) ، مما يسمح ، على سبيل المثال ، بمعرفة دقة 20 دقيقة عندما يتجمد جهاز الكمبيوتر الخاص بك.

لاحظ أن الفئة لا علاقة لها باسم البرنامج الذي يرسل الرسائل إلى البرنامج الخفي. syslogd. كما يقولون ، أي صدفة هي محض صدفة. علاوة على ذلك ، يمكن لبعض البرامج إنشاء رسائل من فئات مختلفة. على سبيل المثال ، شيطان telnetdفي حالة محاولات التسجيل غير الناجحة يولد رسائل فئة المؤلف، وفي حالات أخرى يصنف مشاركاتهم على أنها شيطان.

المعلمة الثانية ، على أساسها يتم تشكيل قيمة الحقل PRI، هو مستوى أو أولوية الرسالة (الأولوية) ، أي معلومات حول درجة أهمية الرسالة. يتم تعيين 8 مستويات من الأهمية افتراضيًا (يتم تحديدها أيضًا في الملف /usr/include/sys/syslog.h) ، والتي تم ترميزها بأرقام من 0 إلى 7:

الجدول 2.

قيمة عدديةرمز فك التشفير
0 يظهر(الاسم القديم لـ PANIC) طارئ. النظام غير صالح للعمل.
1 إنذار قلق! مطلوب تدخل فوري.
2 نقد خطأ فادح (حالة حرجة).
3 يخطئ(الاسم القديم خطأ) رسالة خطأ.
4 تحذير(الاسم القديم لـ WARN)تحذير.
5 تنويه معلومات حول بعض الأحداث العادية ولكن المهمة.
6 معلومات إعلان.
7 التصحيح تم إنشاء الرسائل أثناء التصحيح.

حقل PRIيتم تشكيل الرسالة على النحو التالي: يتم ضرب القيمة الرقمية للفئة في 8 وإضافتها إلى القيمة الرقمية للأولوية ، ويتم وضع الرقم الناتج بين قوسين زاوية ويتم كتابته في الحقل.

متابعة الميدان PRIتم تضمين الحقول التالية في الرسالة:

  • الطابع الزمني- وقت توليد الرسائل ،
  • HOSTNAME- اسم المضيف أو عنوان IP بالتدوين العشري ،
  • MSG- نص رسالة عشوائية - بعض السلاسل النصية (المعلومات) في شفرة US-ASCII (0x20 - 0x7e).

الوقت (محلي!) مكتوب بالتنسيق: 13 فبراير 21:12:06. إذا كان رقم اليوم عبارة عن رقم واحد ، فإنه يسبقه مسافة إضافية (وليس 0!). انتبه إلى عدم وجود عام ومنطقة في التاريخ ، والتي يجب أن تؤخذ في الاعتبار عند تنظيم تخزين طويل المدى لملفات السجل. لكي يكون الوقت في الرسالة صحيحًا ، يجب مزامنته (على سبيل المثال ، باستخدام بروتوكول NTP).

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

رسالة نصية ( MSG) تحتوي عادةً على ملصق ( بطاقة شعار) يشير إلى البرنامج أو العملية التي أصدرت الرسالة ، وجسم الرسالة ( المحتوى). قد يحتوي الملصق على أحرف وأرقام لاتينية. عادةً ما يكون الملصق عبارة عن اسم برنامج بسيط ، يتبعه أحيانًا معرف عملية محاط بأقواس مربعة. يتم فصل نص الرسالة عن التسمية بأحرف خاصة - في Linux عادةً ما يكون هذا هو النقطتان والمسافة.

التعامل مع الرسائل باستخدام syslogd

جميع الرسائل التي تم إنشاؤها بواسطة برامج فردية باستخدام الوظيفة سجل النظام، يتم إرسالها عبر المقبس / ديف / سجلالنظام الخفي syslogd، وهو المسؤول عن معالجة هذه الرسائل. يجب أن أقول أنه ، في الواقع ، تم إطلاق شيطانين لتسجيل الدخول في النظام - syslogdو كلوغد. يتم تضمين كلا الشياطين في الحزمة syslogd، وهو أحدث إصدار يمكنك العثور عليه على موقع الويب.

الشيطان كلوغدمسؤول عن تسجيل الأحداث التي تحدث في نواة النظام. الحاجة إلى عفريت منفصل كلوغدلأن النواة لا يمكنها استخدام الوظيفة القياسية سجل النظام. الحقيقة هي أن المكتبات القياسية (بما في ذلك المكتبة التي توجد بها الوظيفة سجل النظام) مخصصة للاستخدام بواسطة التطبيقات العادية فقط. نظرًا لأن النواة تحتاج أيضًا إلى وظائف مماثلة ، فهي تتضمن مكتباتها الخاصة غير المتاحة للتطبيقات. لذلك ، يستخدم kernel آلية إنشاء الرسائل الخاصة به. الشيطان كلوغدمصمم لتنظيم معالجة هذه الرسائل. من حيث المبدأ ، يمكنه إجراء مثل هذه المعالجة بشكل مستقل تمامًا عن syslogd، على سبيل المثال عن طريق كتابة هذه الرسائل إلى ملف ، ولكن في معظم الحالات يكون الإعداد الافتراضي هو كلوغد، حيث يتم إعادة توجيه جميع الرسائل من kernel إلى نفس البرنامج الخفي syslogd.

للتأكد من الشياطين syslogdو كلوغديعمل على نظامك ، قم بتشغيل الأمر ps- الفأس | سجل grep. أعطاني هذا الأمر النتيجة التالية:

$ ps -ax | سجل grep 569؟ S 0:00 syslogd -m 0574؟ S 0:00 كلوغد-إكس 1013؟ S 0:00 تسجيل الدخول - كوس 1191؟ S 0:00 kalarmd --login يخبرك أول سطرين فقط أن شياطين التسجيل تعمل على النظام.

معالجة الرسائل بواسطة البرنامج الخفي syslogdيتكون من حقيقة أنه يراقب باستمرار ظهور الرسائل ويقارن كل إدخال وارد بالقواعد الموجودة في الملف /etc/syslog.conf. تتم كتابة كل قاعدة كسطر في الملف /etc/syslog.conf، تتكون من مجالين. يحدد الحقل الأيسر ("المحدد") نموذجًا واحدًا أو أكثر يتم من خلاله تحديد الرسائل. القوالب مفصولة بفواصل منقوطة (انظر ملف المثال أدناه /etc/syslog.conf). يحدد الحقل الأيمن ("الإجراء") الترتيب الذي تتم فيه معالجة الرسائل المحددة. الحقول مفصولة بمسافة أو علامة تبويب واحدة أو أكثر.

كل نمط في حقل "المحدد" يكون من النوع "category.level" (أي ، "منشأة. أولوية"). يمكن أن تكون قيم حقل "الفئة":

  • أحد الأسماء التقليدية للفئات المدرجة في الجدول 1 ،
  • العديد من هذه الأسماء (في هذه الحالة يتم فصلهم بفاصلات)
  • أو الرمز * (بمعنى "كل الفئات").

يمكن أن تكون قيم حقل "المستوى":

  • أحد الأسماء الشرطية للمستوى المدرج في الجدول 2 ،
  • الرمز * (سجل جميع رسائل هذه الفئة بغض النظر عن المستوى) ،
  • أو كلمة لا أحد(لا تسجل الرسائل في هذه الفئة).

تحديد قيمة معينة في حقل "المستوى" يتم تفسيره على أنه "جميع قيم هذا المستوى وما فوق". إذا كنت بحاجة إلى تسجيل رسائل من مستوى واحد فقط ، فأنت بحاجة إلى وضع علامة يساوي ("=") أمام القيمة المراد تعيينها. إذا كان مطلوبًا تسجيل الرسائل من جميع المستويات باستثناء المستوى المحدد ، فسيتم وضع علامة تعجب ("!") قبل اسم المستوى. يتم تفسير وضع هاتين العلامتين في نفس الوقت على أنه "لا تسجل رسائل من المستوى المحدد وما فوق".

لم يتم تمييز الأحرف الكبيرة والصغيرة في حقل "المحدد". يمكنك أيضًا استخدام الأرقام (راجع /usr/include/syslog.h). بالإضافة إلى الفئات المدرجة في الجدول 1 ، يمكنك تحديدها علامة(الطوابع الزمنية العادية) و الأمان(مرادف عفا عليه الزمن ل المصادقة). بالإضافة إلى قيم الأولوية المدرجة في الجدول 2 ، يمكنك استخدام تحذير(مرادف ل تحذير), خطأ(مرادف ل يخطئ), هلع(مرادف ل يظهر).

عندما تتطابق فئة ومستوى الرسالة المستلمة مع أحد أنماط حقل "المحدد" للصف ، syslogdيعالج السجل وفقًا للإجراء المحدد في حقل "الإجراء" من هذا السطر.

يمكن أن يحتوي حقل "الإجراء"

  • اسم الملف العادي (ملف السجل) ، ويجب تحديد المسار الكامل للملف ، بدءًا من الجذر "/" ، وإذا كان الملف المحدد غير موجود ، syslogdيخلقها
  • اسم الأنبوب المسمى (الأنبوب المسمى) - FIFO؛ في هذه الحالة ، يسبق الاسم بشريط عمودي ("|") ، ويجب إنشاء القناة نفسها قبل البدء syslogdفريق مكفيفو,
  • الإشارة إلى محطة طرفية أو وحدة تحكم (كجهاز: / dev / tty1) ،
  • بالإشارة إلى مضيف بعيد (مسبوقًا بالرمز @) ،
  • أو قائمة مستخدمين (مفصولة بفواصل) سيتم إرسال رسالة إلى أجهزتهم وفقًا لهذه القاعدة. بدلاً من قائمة المستخدمين ، يمكنك وضع علامة النجمة (*) ، مما يعني أنه يتم إرسال الرسائل إلى جميع المستخدمين العاملين حاليًا في النظام.

في أغلب الأحيان ، لا يزال حقل "الإجراء" يحتوي على اسم ملف السجل. علاوة على ذلك ، قبل اسم الملف ، يمكنك وضع علامة الطرح ("-") ، مما يعني أن النظام يمكنه تخزين الملف في المخزن المؤقت لذاكرة التخزين المؤقت ، وليس مسحه بعد كتابة كل رسالة على القرص. هذا ، بالطبع ، يسرع العمل ، خاصة إذا تمت كتابة العديد من الرسائل الكبيرة في السجل ، ولكن يمكن أن يؤدي إلى فقدان بعض الرسائل في حالة حدوث عطل غير متوقع في النظام ، أي بالضبط عندما تكون هناك حاجة خاصة لمثل هذه الرسائل. يمكنك أيضًا تحديد طابعة كجهاز في حقل "الإجراء" - / dev / lp0. من المناسب تطبيق مثل هذا النوع من "الإجراء" في تلك الحالات عندما يتعلق الأمر بنظم مهمة بشكل خاص. لا يمكن للمخترقين محوها أو تغيير البروتوكولات التي تمت طباعتها ، لذلك يعد هذا استخدامًا جيدًا لطابعة نقطية قديمة.

بالإضافة إلى الأسطر مع القواعد الموجودة في الملف /etc/syslog.confقد تحتوي على أسطر فارغة وأسطر تعليق تبدأ بـ #. المزيد حول هيكل الملف /etc/syslog.confيمكنك قراءة صفحة الدليل syslog.conf للحصول على أمثلة قليلة لإدخالات القواعد في هذا الملف. لاحظ أنه عند تحديد أزواج "category.level" في الملف syslog.confلا يمكنك استخدام القيم العددية الواردة في الجدولين 1 و 2 ، يسمح فقط بأسمائها الشرطية.

إذا كانت الرسالة تتطابق مع أنماط سطرين أو أكثر ، فستتم معالجتها وفقًا لكل من هذه القواعد (أي أن معالجة الرسالة لا تتوقف عند النجاح الأول). هذا يعني أنه يمكن تنفيذ عدد تعسفي من الإجراءات على رسالة واحدة. لذلك ، يمكنك كتابة رسالة إلى ملف السجل وإرسالها إلى المستخدم (المستخدمين) أو إلى مضيف بعيد.

بالإضافة إلى ذلك ، إذا تم إدراج عدة أزواج من "category.level" (مفصولة بفاصلة منقوطة) في حقل "المحدد" ، فيمكن للأزواج التالية إلغاء تأثير الأزواج السابقة. يمكنك مشاهدة مثال على هذا الإلغاء في قائمة الملفات أدناه. /etc/syslog.conf: يسجل جميع الرسائل في أو أعلى المعلومات في ملف / var / log / messages ، لكن يتخطى (وليس السجلات) رسائل البريد و authpriv و cron.

قائمة 1. ملف /etc/syslog.confمن نظام مبني على أساس توزيع Red Hat Linux 7.1 (لقد قمت فقط بترجمة التعليقات الواردة في هذا الملف إلى اللغة الروسية وسلطت الضوء على القواعد بالخط العريض).
# طباعة جميع الرسائل من النواة إلى وحدة التحكم. # kern. * / dev / console# سجل جميع رسائل معلومات المستوى أو أعلى ، # باستثناء الرسائل من نظام البريد التي تحتوي على معلومات حساسة ، # رسائل المصادقة ورسائل cron daemon. * .info ؛ mail.none ؛ authpriv.none ؛ cron.none / var / log / messages# اكتب الرسائل التي تحتوي على معلومات مصادقة # سرية في ملف منفصل ، بغض النظر عن مستواها. authpriv. * / var / log / secure# يتم أيضًا تسجيل جميع رسائل نظام البريد بشكل منفصل. mail. * / var / log / maillog# سجل إجراءات برنامج cron الخفي. * / var / log / cron. * / var / log / cron# يجب استلام رسائل الطوارئ على الفور # من قبل جميع مستخدمي النظام * .emerg *# تتم كتابة الرسائل من الخدمات الإخبارية ذات المستوى الحرج وما فوق في ملف منفصل. uucp ، news.crit / var / log / spooler# نسخ الرسائل الصادرة أثناء مرحلة التمهيد إلى ملف boot.log local7. * /var/log/boot.log
كما ترى ، تتم كتابة معظم الرسائل ببساطة في ملفات السجل المختلفة الموجودة في الدليل / فار / سجلأو الدلائل الفرعية الخاصة به ، حيث يكون ملف سجل النظام الرئيسي في Red Hat Linux هو الملف / فار / سجل / رسائل. فقط الرسائل الموجودة في فئات البريد ، و authpriv و cron (التي يتم تخصيص ملفات منفصلة لها) لا تقع ضمنها. دعنا نلقي نظرة على هذا الملف ، وباستخدام مثاله ، فكر في ما تم تسجيله في ملفات السجل.

ملف السجل / var / log / messages

طبعا من المستحيل الحديث هنا عن محتوى كل سطر من هذا الملف. لكي يحصل القارئ على فكرة عن المعلومات التي يمكن العثور عليها في البروتوكول ، سنقدم رسائل سطور منفصلة مع تعليقات موجزة للغاية.

يحتوي كل سطر في ملف السجل على إدخال رسالة واحد يتكون من حقول الرسالة التالية ، مفصولة بمسافات:

  • التاريخ بتنسيق نص قياسي (حقل الطابع الزمنيمن الرسالة سجل النظام),
  • اسم المضيف (حقل HOSTNAMEمن الرسالة سجل النظام)
  • نص الرسالة (الحقول بطاقة شعارو المحتوىمن الرسالة سجل النظام)

أولاً ، من الجدير بالذكر أنه إذا كان جهاز الكمبيوتر الخاص بك لا يعمل على مدار الساعة طوال أيام الأسبوع ، ولكن تم إيقاف تشغيله ليلاً ، فقد يحتوي هذا الملف على سجلات لعدة "دورات عمل" تبدأ بإقلاع الكمبيوتر وتنتهي بإغلاق الكمبيوتر. تبدأ هذه الدورة برسالة حول إطلاق شياطين التسجيل (هذا أمر مفهوم ، لم يتم تسجيل أي رسائل قبل إطلاقها):

17 سبتمبر ، 08:32:56 kos3 syslogd 1.4-0: إعادة التشغيل. 17 سبتمبر 08:32:56 kos3 syslog: بدأ syslogd بنجاح 17 سبتمبر 08:32:56 kos3 kernel: klogd 1.4-0 ، مصدر السجل = / proc / بدأ kmsg. 17 سبتمبر 08:32:56 kos3 kernel: فحص /boot/System.map-2.4.2-2 سبتمبر 17 08:32:56 kos3 syslog: بدء تشغيل klogd نجح

  • - ما إصدار kernel المستخدم: 17 سبتمبر 08:32:56 kos3 kernel: إصدار Linux 2.4.2-2 ( [بريد إلكتروني محمي]) (إصدار دول مجلس التعاون الخليجي 2.96 20000731 (Red Hat Linux 7.1 2.96-79)) # 1 الأحد 8 أبريل 20:41:30 بتوقيت شرق الولايات المتحدة 2001
  • - مع المعلمات التي بدأ تشغيل النواة: 17 سبتمبر 08:32:56 kos3 kernel: سطر أوامر Kernel: auto BOOT_IMAGE = linux ro root = 303 BOOT_FILE = / boot / vmlinuz-2.4.2-2
  • - معلومات حول نوع المعالج ومقدار ذاكرة الوصول العشوائي: 17 سبتمبر 08:32:56 kos3 kernel: تم اكتشاف معالج 1594.849 ميجا هرتز. 17 سبتمبر 08:32:56 kos3 kernel: Memory: 125652k / 130560k متاح (رمز نواة 1365k ، 4200k محجوز ، 92k data ، 236k init ، 0k highmem) 17 سبتمبر 08:32:56 kos3 kernel: CPU: L1 I cache: 12K ، L1 D cache: 8K Sep 17 08:32:56 kos3 kernel: CPU: L2 cache: 256K Sep 17 08:32:56 kos3 kernel: CPU: Intel (R) Pentium (R) 4 CPU 1.60GHz stepping 02
  • - معلومات حول ذاكرة القرص (بما في ذلك معلومات حول هندسة القرص وهيكل تقسيم القرص والمقاطعات المستخدمة): 17 سبتمبر 08:32:56 kos3 kernel: hda: MAXTOR 6L020J1، ATA DISK drive 17 سبتمبر 08:32:56 kos3 kernel: hdc: SAMSUNG CD-ROM SC-148C ، محرك أقراص ATAPI CD / DVD-ROM 17 سبتمبر 08:32:56 kos3 kernel: ID0 at 0x1f0-0x1f7،0x3f6 on irq 14 Sep 17 Sep 17 08:32:56 kos3 kernel: hands1 at 0x170-0x177 ، 0x376 على irq 15 سبتمبر 17 08:32:56 kos3 kernel: hda: 40132503 قطاعات (20548 ميجا بايت) w / 1819KiB Cache، CHS = 2498/255/63، UDMA (100) 17 سبتمبر 08:32:56 kos3 kernel: فحص التقسيم: 17 سبتمبر 08:32:56 kos3 kernel: hda: hda1 hda2 hda3 hda4< hda5 hda6 hda7 >17 سبتمبر 08:32:56 kos3 kernel: محرك الأقراص المرنة: fd0 هو 1.44 مليون
  • - معلومات حول الأجهزة الطرفية: 17 سبتمبر 08:32:56 kos3 kernel: usb-uhci.c: USB UHCI في I / O 0x1820 ، IRQ 11 سبتمبر 17 08:32:56 kos3 kernel: usb-uhci.c: تم اكتشاف منفذين 17 سبتمبر 08:32:56 kos3 kernel: ttyS00 at 0x03f8 (irq = 4) هو 16550A 17 سبتمبر 08:32:56 kos3 kernel: ttyS01 at 0x02f8 (irq = 3) is a 16550A Sep 17 08:32:56 kos3 kernel: eth0: Intel (R) 8255x-based Ethernet Adapter 17 سبتمبر 08:32:56 kos3 kernel: Intel (R) PRO / 100 Fast Ethernet Adapter - برنامج تشغيل قابل للتحميل ، الإصدار 1.5.6 سبتمبر 17 08:32:56 kos3 kernel : PCI: Found IRQ 11 للجهاز 02: 08.0
  • - معلومات حول بدء الخدمات والخدمات الفردية: 17 سبتمبر 08:32:56 kos3 kernel: NET4: Linux TCP / IP 1.0 لـ NET4.0 سبتمبر 17 08:32:56 kos3 kernel: بروتوكولات IP: ICMP ، UDP ، TCP ، IGMP سبتمبر 17 ، 08:32:56 kos3 kernel: NET4: Unix domain sockets 1.0 / SMP for Linux NET4.0. 17 سبتمبر 08:32:56 kos3 kernel: parport0: نمط الكمبيوتر في 0x378 (0x778) 17 سبتمبر 08:32:56 kos3 kernel: parport0: irq 7 تم اكتشافه في 17 سبتمبر 08:32:42 kos3 rc.sysinit: تشغيل المستخدم وحصص جماعية لأنظمة الملفات المحلية: نجحت في 17 سبتمبر 08:32:43 kos3 rc.sysinit: تمكين مساحة المبادلة: نجحت سبتمبر 17 08:32:44 kos3 init: إدخال مستوى التشغيل: 3 سبتمبر 17 08:32:45 kos3 kudzu: جارٍ التحديث نجح / etc / fstab في 17 سبتمبر 08:32:55 kos3 kudzu: نجح 17 سبتمبر 08:32:55 شبكة kos3: تعيين خيارات الشبكة: نجحت في 17 سبتمبر 08:32:55 شبكة kos3: أظهر واجهة lo: نجحت سبتمبر 17 08 : 32:56 شبكة kos3: تم تفعيل واجهة eth0: نجحت في 17 سبتمبر 08:32:56 kos3 keytable: تحميل تخطيط لوحة المفاتيح: 17 سبتمبر 08:32:56 kos3 keytable: تحميل خط النظام: 17 سبتمبر 08:32:56 kos3 عشوائي: تهيئة مُنشئ الأرقام العشوائية: نجح في 17 سبتمبر 08:32:41 kos3 rc.sysinit: تكوين معلمات kernel: نجح في 17 سبتمبر 08:32:41 kos3 rc.sysinit: إعداد الخط الافتراضي (cyr-sun16): نجح سبتمبر 17 08:32:41 kos3 rc.sysinit: تفعيل أقسام المبادلة: نجح في 17 سبتمبر 08:32:41 kos3 rc.sysinit: إعداد اسم المضيف kos3: نجح في 17 سبتمبر 08:33:03 kos3 xinetd: نجح بدء xinetd سبتمبر 17 08: 33:05 kos3 gpm: تم بدء gpm بنجاح 17 سبتمبر 08:33:05 kos3 crond: تم بدء crond في 17 سبتمبر 08:33:06 kos3 xfs: الاستماع على المنفذ 7100 سبتمبر 17 08:33:06 kos3 xfs: تم بدء تشغيل xfs
  • - معلومات حول تركيب أنظمة الملفات: 17 سبتمبر 08:32:56 kos3 kernel: VFS: Mounted root (ext2 filesystem) للقراءة فقط. 17 سبتمبر 08:32:56 kos3 kernel: إضافة Swap: 265032k swap-space (الأولوية -1) 17 سبتمبر 08:32:56 kos3 kernel: MSDOS FS: استخدام مخطط الشفرة 866 سبتمبر 17 08:32:56 kos3 kernel: MSDOS FS : IO charset koi8-r سبتمبر 17 08:32:41 kos3 rc.sysinit: تركيب نظام ملفات USB: نجح في 17 سبتمبر 08:32:41 kos3 rc.sysinit: نجح التحقق من نظام ملفات الجذر في 17 سبتمبر 08:32:41 kos3 rc.sysinit : إعادة تثبيت نظام ملفات الجذر في وضع القراءة والكتابة: نجح في 17 سبتمبر 08:32:41 kos3 rc.sysinit: تركيب نظام ملفات proc: نجح في 17 سبتمبر 08:32:41 kos3 fsck: /: نظيف ، 30407/160000 ملف ، 95270/319410 block 17 سبتمبر 08:32:42 kos3 fsck: / HOME: نظيف ، ملفات 6573/432864 ، كتل 689090/863722 سبتمبر 17 08:32:42 kos3 fsck: / usr: clean ، 55105/329952 ملفات ، 286888/659602 block Sep 17 08:32:42 kos3 rc.sysinit: نجح فحص أنظمة الملفات
  • - بعض رسائل الخطأ: 17 سبتمبر 08:32:42 تحميل kos3: فشل اتصال SMB 17 سبتمبر 08:32:42 تحميل kos3: فشل إرسال الحزمة إلى 10.104.129.245 (137) ERRNO = الشبكة غير قابلة للوصول 17 سبتمبر 08:32:42 kos3 mount: mount: / dev / sda4: جهاز غير معروف 17 سبتمبر 08:32:59 kos3 mount: خطأ في الاتصال بـ 192.168.36.20:139 (لا يوجد طريق للاستضافة) 17 سبتمبر 08:32:59 kos3 mount: mount: / dev / sda4: جهاز غير معروف
  • - رسائل تسجيل المستخدم: 17 سبتمبر 08:33:14 تسجيل دخول kos3 (pam_unix): جلسة مفتوحة للمستخدم kos بواسطة LOGIN (uid = 0) 17 سبتمبر 08:33:14 kos3 - kos: تسجيل الدخول على tty1 BY kos سبتمبر 17 08 : 41: 39 kos3 su (pam_unix): فشل المصادقة ؛ logname = kos uid = 500 euid = 0 tty = ruser = rhost = المستخدم = الجذر
  • - وأخيرًا ، الرسائل المكتوبة عند إيقاف تشغيل الكمبيوتر ، على سبيل المثال: 17 سبتمبر 10:30:07 kos3 rc: إيقاف keytable: نجح 17 سبتمبر 10:30:07 kos3 Font Server: إنهاء 17 سبتمبر 10:30:08 kos3 xfs: نجح stop xfs في 17 سبتمبر 10:30:08 kos3 gpm: نجح stop gpm في 17 سبتمبر 10:30:08 kos3 xinetd: الخروج ... 17 سبتمبر 10:30:10 kos3 rpc.statd: إشارة القبض 15 ، un- التسجيل والخروج. 17 سبتمبر 10:30:11 kos3 kernel: توقف تسجيل Kernel (proc). 17 سبتمبر 10:30:11 kos3 kernel: إنهاء Kernel log daemon. 17 سبتمبر 10:30:12 kos3 syslog: توقف klogd نجح سبتمبر 17 10:30:12 kos3 الخروج على الإشارة 15

    تحتوي نفس البنية تقريبًا على إدخالات في ملفات بروتوكول أخرى مذكورة في الملف /etc/syslog.conf.

    أوامر المسجل والذيل

    من الوصف السابق يمكننا أن نستنتج أن إصدار جميع الرسائل لسجلات النظام يجب أن يضعه المبرمج في مرحلة إنشاء البرنامج. هذا ليس صحيحا تماما للمستخدم أيضًا القدرة على إرسال رسالة إلى البرنامج الخفي syslogd. للقيام بذلك ، لدى Linux أمر المسجل، والذي يوفر إرسال رسالة من سطر الأوامر (sh ، bash ، إلخ). إنه جزء من حزمة util-linux. بطبيعة الحال ، يهدف هذا الأمر في المقام الأول إلى توفير إمكانات التسجيل عندما يقوم المستخدم بإنشاء أنواع مختلفة من البرامج النصية للصدفة. ولكن يمكن أيضًا تشغيله مباشرةً من سطر الأوامر ، على سبيل المثال ، للتعرف على إمكانيات نظام التسجيل. تنسيق تشغيل الأمر: المسجل [-isd] [-f file] [-p PRI] [-t TAG] [-u socket]خيارات سطر الأوامر لها المعنى التالي:

    • -أنا- تضمين رقم العملية في الرسالة
    • - رسالة مكررة إلى stderr
    • - استخدم وضع مخطط البيانات عند إرسال الرسائل (بدلاً من البث المنتظم)
    • -f اسم الملف- احفظ الرسالة في الملف المحدد (الافتراضي هو / فار / سجل / رسائل)
    • -ع مستوى المنشأة- تعيين فئة الرسالة والأولوية (افتراضي: إشعار المستخدم)
    • -t بطاقة شعار - تعيين مجال TAG
    • -u مقبس- إرسال رسالة إلى المقبس المحدد ، بدلاً من استدعاء syslogd
    • MSG- رسالة نصية

    إرسال رسائل متعددة باستخدام البرنامج المسجلوتعجب بالنتيجة في الملف / فار / سجل / رسائل(ما لم تقم بالطبع بتغيير القيمة الافتراضية).

    بالمناسبة ، هناك طريقة ممتعة للغاية لعرض الرسائل المكتوبة في ملف / فار / سجل / رسائلفريق المسجل. تعتمد هذه الطريقة على استخدام برنامج خاص الذيل. افتح نافذة طرفية ، واحصل على حقوق المستخدم المتميز (باستخدام الأمر سو) وقم بتشغيل الأمر في هذه النافذة
    tailf / var / log / messages
    بعد ذلك ، قم بالتبديل إلى محطة أخرى وتشغيل الأمر هناك مسجل custom_text. سيتم عرض رسالتك على الفور في النافذة حيث يتم تشغيل البرنامج. الذيل. أي بمساعدة هذا البرنامج ، يمكن لمسؤول النظام مراقبة تسجيل الرسائل الجديدة في البروتوكول في الوقت الفعلي. صحيح ، من غير المحتمل أن يكون لدى مسؤول النظام وقت لمراقبة سلوك النظام بهذه الطريقة (باستثناء حالات الطوارئ). لذلك ، تم تطوير برامج خاصة لتحليل البروتوكولات. لكن عنهم أقل قليلاً ، لكن الآن دعنا ننتقل إلى مسألة كيفية تنظيم الإشراف على جهاز كمبيوتر بعيد (تذكر كيف ألقيت القبض على المهاجم شيمومورا؟).

    تسجيل الشبكة

    كما ذكرنا ، يمكن إرسال رسائل نظام التسجيل بواسطة البرنامج الخفي syslogdإلى مضيف بعيد. لكن يجب على شخص ما أن يأخذها هناك. اتضح أن هذا هو نفس الشيطان syslogdيعمل على هذا المضيف البعيد. أكثر دقة، syslogdعلى أي جهاز كمبيوتر ، يمكنه الاستماع ليس فقط على / dev / log socket (وبالتالي قبول الرسائل من المصادر المحلية) ، ولكن أيضًا على المنفذ 514 / UDP ، مما يضمن استلام الرسائل من أجهزة الكمبيوتر الأخرى على الشبكة المحلية (ثم كتابتها إلى ملف محلي). هذا يجعل من الممكن إنشاء "خادم تسجيل" ، والذي يمكن أن يكون مناسبًا جدًا لمسؤول النظام (يتم تتبع جميع الأحداث على الشبكة في مكان واحد) ، كما يزيد أيضًا من أمان الشبكة ، نظرًا لأن التقارير عن اختراق متسلل لأحد المواقع لا يمكن إزالة مضيفي الشبكة على الفور من البروتوكول بواسطة هذا المخترق.

    ومع ذلك ، من أجل تنظيم مثل هذا "تسجيل الشبكة" ، يجب بذل بعض الجهود الإضافية.

    أولاً ، نظرًا لاستخدام المنفذ 514 / UDP لتلقي الرسائل وإرسالها عبر الشبكة ، يجب أن يكون متاحًا على كل من جهازي الكمبيوتر (العميل والخادم). لهذا في الملف / الخ / الخدماتيجب أن يحتوي كلا الجهازين على الخط
    سجل النظام 514 / udp
    إذا كان هذا الخط هو / الخ / الخدماتمفقود، syslogdلا يمكن استقبال الرسائل أو إرسالها إلى الشبكة لأنه لا يمكن فتح منفذ UDP. إذا نشأ مثل هذا الموقف ، syslogdيتوقف على الفور عن كتابة أي رسائل حتى إلى السجل المحلي. ومع ذلك ، كما هو موضح في الأمر ملاحظة، فإنه يظل في الذاكرة وحتى أنه يخزن الرسائل في بعض المخازن المؤقتة ، لأنه إذا كانت السلسلة " سجل النظام 514 / udp "استعادة الملف / الخ / الخدماتعلى العميل ، فلا تزال بعض الرسائل "المفقودة" على الأقل تظهر في السجل (بعد إعادة التشغيل syslogd).

    ثانيًا ، عند بدء البرنامج الخفي syslogdيجب تحديد الخيار على الخادم -r، والذي يوفر إمكانات التسجيل عن بُعد (افتراضيًا ، البرنامج الخفي syslogdينتظر رسالة فقط من المقبس المحلي). كيف وأين يتم تعيين هذا الخيار ستتم مناقشته أدناه ، في القسم الخاص ببدء البرنامج الخفي. syslogd.

    حسنًا ، وثالثًا ، يجب تصحيح الإعدادات الموجودة في الملفات وفقًا لذلك. /etc/syslog.confعلى كلا الجهازين. على سبيل المثال ، إذا كنت تريد إعادة توجيه جميع الرسائل إلى خادم التسجيل ، فأنت بحاجة إلى الكتابة في الملف على جهاز الكمبيوتر العميل /etc/syslog.confخط مثل هذا:
    *.*@hostname
    إذا كان خلال بداية البرنامج الخفي syslogdلن يكون الخادم متاحًا (على سبيل المثال ، غير متصل حاليًا) أو لن يكون من الممكن العثور عليه بالاسم (لم تعمل خدمة DNS بشكل صحيح) syslogdيقوم 10 محاولات أخرى للعثور على الخادم ، وفقط إذا لم يكن من الممكن العثور على الخادم بعد ذلك ، فإنه يتوقف عن المحاولة ويرسل رسالة مناسبة.

    إذا كان لديك عدة مجالات على شبكتك يتم خدمتها بواسطة نفس خادم التسجيل ، فلا تتفاجأ برؤية أسماء العملاء الكاملة (بما في ذلك المجال) في تسجيل الدخول على الخادم. في الواقع ، عند بدء التشغيل syslogdيمكن استخدام الخيارات -s domain_listأو -ل قائمة المضيف، والتي توفر استبدال أسماء المضيف الكاملة في البروتوكول بأسمائها المختصرة (دون تحديد المجال).

    لا تنس بعد ضبط خيارات التشغيل والملف /etc/syslog.confإعادة تشغيل البرنامج الخفي لأنه ، على عكس كرون, syslogdلا يقوم بإعادة قراءة ملفات التكوين تلقائيًا.

    خيارات بدء تشغيل البرنامج الخفي syslogd

    نظرًا لأننا تطرقنا إلى مسألة تعيين معلمات بدء التشغيل الخفي في القسم الفرعي السابق syslogdدعونا نلقي نظرة على هذه المسألة بمزيد من التفصيل. كما ذكرنا سابقًا ، يتم إطلاق كل من شيطان التسجيل في مرحلة تهيئة النظام ، وبشكل أكثر تحديدًا ، من خلال برنامج نصي /etc/rc.d/init.d/syslog(والتي ، بالإضافة إلى البرامج النصية لبدء تشغيل الخدمات الأخرى ، يتم إنشاء روابط رمزية في الدلائل /etc/rc.d/rc؟.d/). ومع ذلك ، ليست هناك حاجة لتعديل هذا البرنامج النصي لتعيين معلمات بدء التشغيل ، لأنه منذ الإصدار 7.2 في توزيع Red Hat ، تتم قراءة خيارات بدء التشغيل لكلا البرنامجين من ملف تكوين منفصل / etc / sysconfig / syslog. فيما يلي قائمة مختصرة بالمعلمات المحتملة للبرنامج الخفي syslogd.

    بدء المعلمات syslogd:

    • -مقبس- يحدد مقبسًا إضافيًا سيستمع عليه البرنامج الخفي syslogd. يمكنك تحديد ما يصل إلى 19 منفذًا (هناك المزيد ، لكن لهذا تحتاج إلى إعادة تجميع الحزمة). يتم استخدام هذا الخيار عند تشغيل برنامج خفي آخر (مثل ftp أو http) في بيئة مقيدة (يقوم بإجراء chroot).
    • - وضع التصحيح. في الوقت نفسه ، لا يدخل البرنامج الخفي في الخلفية ويصدر جميع الرسائل إلى المحطة الحالية.
    • -f config-filenameيحدد اسم ملف التكوين البديل الذي سيتم استخدامه بدلاً من الاسم الافتراضي. /etc/syslog.conf.
    • بشكل افتراضي في syslogdيحظر نقل الرسائل الواردة عبر الشبكة إلى بعض أجهزة الكمبيوتر الأخرى. يتم ذلك لتجنب عمليات نقل الرسائل التي لا نهاية لها حول الحلبة. يتيح لك الخيار -h تغيير السلوك العادي والتأكد من إعادة توجيه الرسائل المستلمة من المضيفين البعيدين على الشبكة (واعتنِ بالتكرار المحتمل بنفسك).
    • -ل قائمة المضيف- تحدد قائمة بالمضيفين الذين لا ينبغي كتابة أسمائهم مع اسم المجال الكامل (FQDN - اسم مجال Qwalified الكامل) ؛ الأسماء في القائمة مفصولة بنقطتين.
    • -m دقيقةتم إطلاقه بدون هذا الخيار syslogdبانتظام (كل 20 دقيقة) يسجل رسائل الفئات علامة، وهذا هو ، مجرد طوابع زمنية. مع خيار ميمكنك إما تغيير الفاصل الزمني بين العلامات ، أو إلغاء إصدار هذه الرسائل تمامًا ، والتي تحتاج إلى ضبط الفاصل الزمني على صفر: -m0.
    • لا تدخل في الخلفية. يكون الخيار مطلوبًا في الحالات التي يتم فيها بدء syslogd والتحكم فيه بواسطة عملية فيه.
    • -p المقبستحديد مقبس UNIX بديل (بدلاً من الاستماع الافتراضي / ديف / سجل). يرجى ملاحظة: خيار يحدد مآخذ إضافية ، و -p- لبديل!
    • -rالسماح لتلقي الرسائل من المضيفين البعيدين. تحدثنا عن هذا في القسم السابق ، لذلك حذفت التفاصيل.
    • -قائمة المجالتحديد قائمة المجالات التي لا يلزم تسجيل أسمائها مع اسم المضيف (أي ، بالنسبة لهذه المجالات ، سيتم تسجيل أسماء المضيف فقط بدلاً من اسم المجال المؤهل بالكامل (FQDN). يتم فصل الأسماء في القائمة بـ علامة النقطتين اسم المجال الذي يوجد به خادم syslogd غير مطلوب في هذه القائمة (تتم إزالة اسمه افتراضيًا).
    • -الخامسعرض الإصدار والانتهاء.
    • -xيمنع رفض تحديد اسم مضيف من عنوانه حالة توقف تام عند التشغيل على نفس مضيف خادم DNS.

    بعد بدء البرنامج الخفي syslogdتم إنشاء ملف الحالة / var / lock / subsys / syslogطول صفري ، وملف مع معرف العملية /var/run/syslogd.pid.

    مع الأمر
    kill -SIGNAL `cat / var / run / syslogd.pid`
    يمكنك إرسالها إلى الشيطان syslogdإحدى الإشارات التالية:

    • SIGHUP - إعادة تشغيل البرنامج الخفي (إعادة التهيئة) ؛ يتم إغلاق جميع الملفات المفتوحة ، وإعادة تشغيل البرنامج الخفي ، وإعادة قراءة ملف التكوين الخاص به.
    • SIGTERM - الاغلاق.
    • SIGINT ، SIGQUIT - إذا تم تمكين وضع التصحيح (الخيار-د) ، يتم تجاهل الإشارات ، وإلا - الخروج.
    • SIGUSR1 - تمكين / تعطيل وضع التصحيح (يعمل فقط إذا تم بدء البرنامج الخفي بالمفتاح -d).

    الشيطان كلوغدلديه على الأقل العديد من خيارات الإطلاق مثل syslogdومع ذلك ، لن نعطيها هنا ، مع إحالة القارئ إلى صفحة الدليل المقابلة (يجب على المستخدم عدم تكوين كلوغدفمن الأفضل تركها في الدولة كما أنتجها مطورو التوزيع).

    ملف dmesg والأمر dmesg

    كما سبق ذكره ، فإن ملفات السجل المذكورة في الملف /etc/syslog.confيقع عادة في الدليل / فار / سجلوأدلةها الفرعية. ولكن ، إذا نظرنا إلى هذا الدليل ، فسنجد العديد من الملفات هناك ، والتي توجد بتنسيق /etc/syslog.confلم يذكر. دعونا نلقي نظرة على الغرض منها. لنبدأ بالملف dmesg.

    أولاً ، من الضروري الإشارة إلى أن Linux لديه أمر يحمل نفس الاسم. إذا قارنا إخراج هذا الأمر (عندما يتم تشغيله بدون معلمات) بمحتويات الملف / فار / سجل / dmesg، ستجد أنها متشابهة جدًا ، وإن لم تكن متطابقة (قم بتوجيه إخراج الأمر إلى ملف dmesg2ومقارنة الملفات dmesgو dmesg2). بتعبير أدق ، الملف / فار / سجل / dmesgواحد إلى واحد يتزامن مع بداية الإخراج الذي نحصل عليه في الأمر dmesg. على النحو التالي من ، يحتوي kernel على مخزن مؤقت للحلقة يتم فيه كتابة الرسائل من البرنامج الخفي لتسجيل kernel. تلك الرسائل التي تمت كتابتها إلى هذا المخزن المؤقت أثناء عملية التنزيل ، وتشكل محتوى الملف / فار / سجل / dmesg. على ما يبدو ، يتم تشكيل هذا الملف في نهاية تمهيد النظام.

    إذا نظرت مرة أخرى في قائمة الملفات أعلاه /etc/syslog.conf، سترى أن جميع المشاركات في هذه الفئة نواةصدرت إلى وحدة التحكم كذلك. ولكن هناك يتم تشغيلهم بسرعة عبر الشاشة وبالكاد يكون لديك الوقت لقراءتها وفهمها. لكن يتم حفظها في ملف / فار / سجل / dmesgوبالتالي فهو متاح للتفكير على مهل (إذا اكتملت عملية التنزيل بنجاح). بعد اكتمال عملية التمهيد ، تستمر كتابة الرسائل من kernel إلى المخزن المؤقت الحلقي. عندما يتم تنفيذ الأمر dmesg، يتم إرجاع الحالة الحالية للمخزن المؤقت. لذلك ، يحتوي إخراج هذا الأمر على رسائل أكثر من الملف / فار / سجل / dmesg: في إخراج هذا الأمر ، يمكنك أيضًا رؤية الرسائل التي يصدرها kernel بعد اكتمال عملية التمهيد.

    كل الرسائل من / فار / سجل / dmesgسوف تجد في الملف / فار / سجل / رسائل، هناك فقط يتناوبون مع رسائل من برامج أخرى. لا يوجد سوى اختلاف واحد مهم: في الملف dmesgلم يتم تحديد وقت ومصدر الرسالة (اسم المضيف وفئة الرسالة). المضيف هنا دائمًا "محلي" ، ويتم تحديد بداية العد التنازلي من خلال آخر إعادة تمهيد للكمبيوتر.

    lastlog و wtmp و utmp

    باستثناء ملف dmesgفي الكتالوج / فار / سجل /هناك ملفان آخران غير مذكورين في /etc/syslog.conf، ولكنها مرتبطة بشكل مباشر بالتسجيل - هذه ملفات lastlogو wtmp. لكن انظر إليهم بنفس الطريقة التي نظرنا فيها إلى الملف / فار / سجل / رسائللا معنى له - لن تفهم أي شيء. الحقيقة هي أن المعلومات الموجودة في هذه الملفات مسجلة بتنسيق خاص ، ويجب عرضها باستخدام أدوات برمجية خاصة. لكن علينا أولاً أن نقول بضع كلمات حول الغرض من هذه الملفات.

    ملف lastlogيخزن معلومات حول آخر تسجيل دخول للمستخدم إلى النظام. لا أعرف ما إذا كنت قد لاحظت أنه عند إدخال اسم مستخدم وكلمة مرور ، تظهر رسالة مثل هذه على الشاشة:

    تسجيل الدخول إلى Localhost: kos كلمة المرور: آخر تسجيل دخول: الأربعاء 9 أكتوبر 19:25:53 في tty1 يتم إنشاء هذه الأسطر الثلاثة بواسطة الأداة المساعدة تسجيل الدخول، والذي ، بعد التأكد من أن المستخدم لديه حقوق تسجيل الدخول ، يصل إلى الملف / var / log / lastlog، يستخرج معلومات حول تسجيل الدخول الناجح السابق للمستخدم من هناك ، ويعرضها على الشاشة ، ثم يقوم بتحديث الإدخال في الملف lastlog. يمكنك منع هذه الرسالة عن طريق إنشاء ملف .hushlogin فارغ في الدليل الرئيسي الخاص بك. ومع ذلك ، لا ينصح بعمل هذا ، بل على العكس من ذلك ، يجدر الانتباه بشكل خاص إلى محتوى هذه الرسالة حتى لا تفوتك الحالات التي قام فيها شخص آخر بتسجيل الدخول باسمك.

    على عكس الملف / var / log / lastlog، الذي يحتوي على إدخالات الوقت الاخيرتسجيل الدخول لكل مستخدم في الملف / فار / سجل / wtmpيتم تذكرها الكلتسجيلات دخول وخروج المستخدم منذ إنشاء هذا الملف. كما في الملف lastlog، السجلات في / فار / سجل / wtmpيتم إجراؤها بتنسيق خاص ، بحيث يمكن عرضها فقط باستخدام أوامر خاصة. ولكن ، قبل الحديث عن هذه الأوامر ، دعنا نقول أن هناك ملفًا آخر يحتوي على إدخالات حول تسجيل المستخدم - هذا هو الملف / var / run / utmp. يحتوي هذا الملف على معلومات حول المستخدم الذي قام بتسجيل الدخول حاليًا إلى النظام.

    يمكنك الآن التحدث عن كيفية عرض معلومات حول المستخدمين الذين يعملون أو سبق لهم العمل في النظام. الأمر الرئيسي لهذا هو الأمر الاخير. يقوم بإخراج جميع السجلات من ملف / فار / سجل / wtmpواسم المستخدم ، وهو إشارة إلى الجهاز الطرفي الذي عمل المستخدم من خلاله ، ووقت دخول المستخدم إلى النظام ووقت مغادرته للنظام ، بالإضافة إلى مدة جلسة المستخدم في النظام. إذا تم مقاطعة عمل المستخدم فقط بسبب إيقاف تشغيل النظام نفسه ، فبدلاً من وقت خروج المستخدم توجد كلمة "down" (من السهل تحديد وقت توقف النظام من هذه الخطوط). يتم عرض وقت إعادة التشغيل على أسطر منفصلة تبدأ بكلمة "reboot".

    أمر lastbكفريق الاخير، لكنه يعرض معلومات حول محاولات تسجيل دخول المستخدم الفاشلة. ومع ذلك ، تجدر الإشارة إلى أن هذا الأمر لن يعمل إلا في حالة وجود الملف. / فار / سجل / btmp. ومع ذلك ، لا يُنشئ أي من البرامج التي تمت مناقشتها هنا ملفات سجل ، لذلك إذا تم حذف أحدها ، فسينتهي حفظ السجلات.

    أمر lastlogتنسيقات وإخراج محتويات الملف / var / log / lastlog. سيتم عرض اسم المستخدم واسم الجهاز الذي قام المستخدم بتسجيل الدخول من خلاله وآخر وقت لتسجيل الدخول. بشكل افتراضي (عندما يتم إدخال الأمر بدون معلمات) عناصر الملف / var / log / lastlogسيتم إخراجها بترتيب أرقام معرف المستخدم. إذا حددت الخيار -u login-name ، فسيتم فقط عرض معلومات حول وقت تسجيل الدخول الأخير للمستخدم المحدد. من خلال تحديد الخيار -t days ، ستحصل فقط على سجلات الأيام الأخيرة من الأيام. إذا لم يقم المستخدم بتسجيل الدخول على الإطلاق ، فبدلاً من اسم الجهاز الطرفي ووقت تسجيل الدخول الأخير ، سيتم الإشارة إلى السلسلة "** لم يتم تسجيل الدخول مطلقًا **".

    عند تنفيذ الأمر lastlogعلى جهاز كمبيوتر بطيء ، قد يبدو في بعض الحالات أن الأمر "معلق". هذا يرجع إلى حقيقة أنه حتى لو تم تسجيل مستخدمين فقط (الجذر والمستخدم) في النظام ، في الملف / var / log / lastlogلا يزال يتم تخصيص مساحة لأقصى عدد ممكن من المستخدمين الذين يمكنهم العمل في النظام. لذلك ، في الملف / var / log / lastlogقد تكون هناك فجوات كبيرة بين أرقام معرف المستخدمين الذين قاموا بتسجيل الدخول. لأنه عند عرض مثل هذه الفواصل الزمنية ، لا يعرض البرنامج المعلومات على الشاشة ، وهناك انطباع "معلق".

    لعرض معلومات حول من يعمل حاليًا في النظام ، استخدم الأوامر ث, من الذىو المستخدمين. أمر المستخدمينيتم استخدامه عندما تريد فقط معرفة المستخدم الذي يعمل حاليًا في النظام ، لكنك لست مهتمًا بالمحطة الطرفية التي اتصل منها وما الذي يفعله. إذا كنت تريد معرفة من قام بتسجيل الدخول من أي محطة طرفية ، فاستخدم الأمر من الذى. يقوم هذا الأمر بطباعة المعلومات من ملف / var / run / utmp. يمكنك إجبارها على إخراج البيانات من ملف / فار / سجل / wtmp(أو أي ملف آخر يكون منطقيًا بالنسبة له) إذا حددت اسم هذا الملف في سطر الأوامر. ولكن في الإخراج ، ستظل ترى اسم المستخدم فقط ، وإشارة إلى الجهاز الطرفي الذي قام المستخدم بتسجيل الدخول من خلاله ، ووقت تسجيل الدخول ، وفي حالة تسجيل الدخول من كمبيوتر بعيد ، اسم هذا الكمبيوتر.

    يتم عرض مزيد من المعلومات بشكل ملحوظ بواسطة الأمر ث. في مخرجاته ، سترى الوقت الحالي ، ومدة تشغيل النظام ، وعدد المستخدمين الذين تم تسجيل دخولهم حاليًا إلى النظام ، ومتوسط ​​تحميل النظام خلال آخر دقيقة ، و 5 ، و 15 دقيقة. ثم تُخرج لكل مستخدم:

  • اسم المستخدم،
  • اسم المحطة ،
  • اسم المضيف البعيد
  • الوقت المنقضي منذ تسجيل الدخول
  • الوقت الذي لا يتم فيه استخدام هذا الجهاز (وقت الخمول) ،
  • إجمالي الوقت الذي تقضيه جميع العمليات التي تم إطلاقها من هذه المحطة (العمود JCPU) ،
  • الوقت الذي يتم خلاله تشغيل آخر العمليات التي أطلقها المستخدم (رسم بياني PCPU) ،
  • معلومات حول البرنامج الذي يتم تنفيذه حاليًا من قبل المستخدم (في شكل سطر أوامر لتشغيل أمر مع جميع المعلمات).

    كما سبق ذكره ، فإن الأمر ثيطبع المعلومات المخزنة في ملف أوتمب. بالمناسبة ، القيادة رجلتنص على وجوب حرمان المستخدمين العاديين من حق الوصول للكتابة إلى الملف أوتمب، نظرًا لأن العديد من برامج النظام (لبعض الأسباب التي لا يمكن تفسيرها) تعتمد على سلامتها. أنت تخاطر بإرباك ملفات إحصائيات النظام وإجراء تغييرات على ملفات النظام إذا سمحت لأي مستخدم بالكتابة إلى ملف utmp.

    ملفات الدخول للبرامج الأخرى

    بالإضافة إلى تلك الملفات التي تحدثنا عنها بالفعل ، هناك ملفات بروتوكول أخرى تم إنشاؤها بواسطة برامج منفصلة. الأمثلة الأكثر شيوعًا هي بروتوكولات البرنامج الخفي. سامبا, بروتوكول نقل الملفاتأو httpdالتي يتم الاحتفاظ بها في ملفات منفصلة. تقوم بعض هذه البرامج بإنشاء بروتوكولاتها في أدلة فرعية للدليل / فار / سجل /، والبعض الآخر يحفظ البروتوكولات في أماكن أخرى. وقد تختلف بنية هذه الملفات بشكل كبير عن بنية الملفات التي أنشأها النظام سجل النظام. على سبيل المثال ، سأقدم بضعة أسطر من بروتوكول الخادم اباتشييعمل على جهاز الكمبيوتر الخاص بي: 192.168.36.21 - - "GET / ve / documents / new / log / HTTP / 1.1" 200 1774 "-" "Mozilla / 5.0 (X11؛ U؛ Linux i686؛ ru-RU؛ rv: 1.0. 0) Gecko / 20020530 "192.168.36.21 - -" GET /icons/back.gif HTTP / 1.1 "304 -" - "Mozilla / 5.0 (X11؛ U؛ Linux i686؛ ru-RU؛ rv: 1.0.0) Gecko / 20020530 "192.168.36.21 - -" GET /icons/folder.gif HTTP / 1.1 "304 -" - "" Mozilla / 5.0 (X11؛ U؛ Linux i686؛ ru-RU؛ rv: 1.0.0) Gecko / 20020530 "192.168.36.21 - -" GET /icons/text.gif HTTP / 1.1 "304 -" - "Mozilla / 5.0 (X11؛ U؛ Linux i686؛ ru-RU؛ rv: 1.0.0) Gecko / 20020530" 192.168.36.21 - - "GET /ve/papers/new/log/protok_lovim.htm HTTP / 1.1" 200 46597 "http: // linux / ve /apers / new / log /" "Mozilla / 5.0 (X11؛ U؛ Linux i686؛ ru-RU؛ rv: 1.0.0) Gecko / 20020530 "192.168.36.21 - -" GET /bugtraq.css HTTP / 1.1 "404279" http: // linux / ve /apers / new / log / protok_lovim .htm "" Mozilla / 5.0 (X11؛ U؛ Linux i686؛ ru-RU؛ rv: 1.0.0) Gecko / 20020530 "192.168.36.21 - -" GET /img/bug1.gif HTTP / 1.1 "404280" http : // لينكس / الخامس / أوراق / جديد / لو g / protok_lovim.htm "" Mozilla / 5.0 (X11 ؛ يو ؛ لينكس i686 ؛ ru-RU ؛ rv: 1.0.0) Gecko / 20020530 "192.168.36.21 - -" GET /img/title.gif HTTP / 1.1 "404281" http: //linux/ve/papers/new/log/protok_lovim.htm "" Mozilla /5.0 (X11؛ U؛ Linux i686؛ ru-RU؛ rv: 1.0.0) Gecko / 20020530 "كما ترى ، تختلف بنية ملف السجل هذا بشكل كبير عما رأيناه في سجلات النظام.

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

    smbd / service.c: make_connection (550) linux (192.168.36.10) يتصل بالخدمة العامة مثل user kos (uid = 500، gid = 500) (pid 1366) smbd / service.c: close_cnum (550) linux (192.168.168.1) 36.10) اتصال مغلق بالخدمة العامة توضح الأمثلة المذكورة أعلاه أنه إذا كان بإمكانك قراءة القليل من اللغة الإنجليزية ولديك بعض الفهم لبنية السجلات ، فيمكنك استخراج الكثير من المعلومات المفيدة من ملفات السجل. فقط يجب استخراجه من رواسب "النفايات الصخرية" الكاملة - ملفات متسلسلة ضخمة من البروتوكولات ، وهي مهمة غير تافهة. لذلك ، تم تطوير أدوات برمجية خاصة لتحليل البروتوكول.

    وسائل معالجة البروتوكولات

    تم تطوير الكثير من البرامج والنصوص المختلفة لتحليل البروتوكول. سأقتصر على وصف موجز لاثنين من هذه العلاجات: مشاهدة السجلو راقب.

    مشاهدة السجلهو سكربت Perl مضمّن مع توزيعة Red Hat Linux القياسية. في وقت إعداد هذا المقال فقط ، تم نشر الإصدار 4.1 من هذا البرنامج على موقع الويب الخاص بالمطور (وهو كيرك باور).

    الفكرة الرئيسية وراء هذا البرنامج هي أن ملف السجل يتم تمريره من خلال مرشح يستخرج من السجل جميع الأسطر (أي الرسائل) التي تفي بالمعايير المحددة. يتم إرسال النتائج بالبريد الإلكتروني إلى المستخدم المحدد (الجذر افتراضيًا). يمكن كتابة المرشحات بأي لغة برمجة ، لكن مؤلف الحزمة يفضل Perl. يجب كتابة المرشحات بطريقة تمكنهم من قراءة البيانات من stdin وإخراج النتيجة إلى stdout.

    الاستخدام الرئيسي مشاهدة السجليتكون من تضمين ارتباط إلى البرنامج النصي الرئيسي ( /etc/log.d/scripts/logwatch.pl) إلى الدليل /etc/cron.daily ، مما يؤدي إلى التنفيذ اليومي مشاهدة السجلمع الإعدادات الافتراضية. يتم إعطاء الارتباط اسمًا يبدأ بـ "00" (على سبيل المثال ، 00-logwatch) بحيث يتم تشغيل البرنامج النصي قبل logrotate.

    ولكن يمكنك أيضًا تشغيل البرنامج النصي من سطر الأوامر. بالطبع ، إذا لم تقم بتغيير معلمة إخراج المعلومات ، فيجب البحث عن نتيجة عملها في صندوق بريد المستخدم المتميز. إذا كنت تريد رؤية هذه النتائج على الشاشة ، فيجب عليك تحديد المعلمة في سطر الأوامر --مطبعة- طباعة تقرير إلى stdout.

    التنسيق العام لتشغيل البرنامج النصي:

    /etc/log.d/scripts/logwatch.pl [--detailمستوى ] [--ملف تسجيلتسجيل المجموعة ] [--الخدماتاسم الخدمة ] [- طباعة] [- mailtoالعنوان ] [--حفظاسم الملف ] [- أرشيفات] [- نطاقفاصل التاريخ ]

    يتم تخزين الخيارات الافتراضية في ملف /etc/log.d/logwatch.conf ، التعليقات التي تجعل من الممكن فهم معنى خيارات سطر الأوامر:

    • LogDir - دليل متعلق بأسماء الملفات التي تعتبر ؛
    • MailTo - لمن ترسل التقرير ؛
    • طباعة - بدلاً من إرسال التقرير بالبريد ، اطبعه على stdout ؛
    • حفظ - بدلاً من إرسال التقرير بالبريد ، احفظه في الملف المحدد ؛
    • المحفوظات - معالجة ليس فقط الإصدارات الحالية من السجلات ، ولكن أيضًا النسخ القديمة التي تم إنشاؤها بواسطة logrotate ؛
    • النطاق - معالجة الفاصل الزمني المحدد: الكل ، اليوم ، أمس (يوم أمس في التقويم) ؛
    • التفاصيل - مستوى تفاصيل التقرير: من 0 إلى 10 أو منخفض ، متوسط ​​، مرتفع ؛
    • الخدمة - الكل أو اسم المرشح من /etc/log.d/scripts/services/ (يمكن تحديد عوامل تصفية متعددة) ؛
    • ملف السجل - الكل أو اسم مجموعة السجل (يمكن تحديد مجموعات متعددة).

    مزيد من المعلومات حول البرنامج النصي مشاهدة السجلستجد في.

    تصف المقالة برنامج نصي آخر لمعالجة ملفات السجل ، والذي تم تضمينه في توزيعة Mandrake Linux. يسمى هذا البرنامج النصي راقب("مراقب بسيط") ومكتوب أيضًا بلغة بيرل.

    إدارة العمل راقبباستخدام ملف تكوين واحد ، افتراضيًا $ الصفحة الرئيسية / .swatchrc. يحتوي هذا الملف على نماذج نصية (في شكل تعبيرات نمطية) راقبسيبحث في ملفات السجل. كل نمط من هذا القبيل يتبعه إجراء راقبيجب أن يستغرق الأمر إذا عثر على نص يطابق النمط.

    على سبيل المثال ، لنفترض أنك تريد أن يتم تحذيرك في كل مرة تتم فيها محاولة هجوم تجاوز سعة المخزن المؤقت على خادم الويب الخاص بك. وأنت تعلم أنه في مثل هذه الحالات في ملف السجل /var/apache/error.logتظهر رسالة تحتوي على الكلمات "اسم الملف طويل جدًا". في هذه الحالة ، في ملفك .swatchrcأدخل البيان التالي:

    Watchfor / اسم الملف طويل جدًا / mail [بريد إلكتروني محمي]، الموضوع = BufferOverflow_attempt

    لن أقدم هنا وصفًا أكثر تفصيلاً للبرنامج. راقب. يتم تخصيص مقال متحمس له ، ويمكن العثور على البرنامج نفسه على الموقع الإلكتروني. أريد فقط أن أشير و راقب، و مشاهدة السجلتنفيذ خوارزمية معالجة ملف بروتوكول بدائية إلى حد ما ، والتي تتلخص في البحث في البروتوكول عن سلسلة أحرف معينة (توقيع). في هذه الأثناء ، أولاً ، غالبًا ما لا يشير وجود مثل هذا الخيط بعد إلى اقتحام المهاجم ، وثانيًا ، يمكن للمهاجم المختص أن يتولى محو آثار نشاطه. عيب آخر واضح للمنتجات المدروسة هو أنها تعمل في "الوضع المتأخر" ، حيث يتم إطلاقها وفقًا لجدول زمني فقط. ويجب أن تتم مكافحة المتسللين "في الوقت الفعلي" ، والاستجابة على الفور لمحاولات اختراق النظام. لذلك ، تقدم المنتجات التجارية أنظمة مراقبة تعمل بشكل مستمر وتطبق خوارزميات تحليل البروتوكول "الذكية". تعتمد هذه الخوارزميات على التحليل الإحصائي لتدفق الرسائل وكشف الانحرافات ذات الدلالة الإحصائية للنظام عن سلوكه الطبيعي.

    في ختام هذا القسم ، أود أن أشير إلى أن موقع الويب SecurityLab.ru (http://www.securitylab.ru/tools/؟ID=22111) يحتوي على قائمة روابط لمواقع الويب الخاصة بأدوات برامج معالجة البروتوكول المختلفة مع وصف موجز لهذه الأدوات. يمكنك تجربة برامج مختلفة واختيار البرنامج الذي يناسبك.

    دوران ملف السجل

    بالطبع ، أنت تدرك أنه إذا تم استخدام النظام بكثافة ، فإن ملفات السجل تنمو بسرعة. مما يؤدي إلى هدر مساحة القرص. كما توجد مشكلة "ترويض" البروتوكولات. Red Hat Linux يحل هذه المشكلة بنص. لوغروت، والذي يقع في الدليل /etc/cron.daily، وبالتالي يديرها البرنامج الخفي كروناليومي. يسمح لك هذا البرنامج النصي بمعالجة ليس فقط سجلات النظام سجل النظامولكن أيضًا أي برامج أخرى.

    النصي لوغروتيراقب نمو ملفات السجل ويضمن ما يسمى بالتناوب لهذه الملفات إذا تجاوزت الحجم المحدد (أو بعد الفاصل الزمني المحدد). التدوير ليس أكثر من نسخ متسلسل للإصدارات السابقة من ملفات الأرشيف بالطريقة التالية:

  • Messages.2 -> messages.3
  • Messages.1 -> Messages.2
  • Messages.0 -> Messages.1
  • الرسائل -> Messages.0
    وإنشاء ملف رسائل جديد لتسجيل الرسائل اللاحقة.

    قائمة الملفات المراد معالجتها بواسطة البرنامج النصي لوغروتويتم تحديد معلمات هذه المعالجة من خلال ملفات التكوين ، والتي قد تكون متعددة. يتم تحديد أسماء ملفات التكوين في سطر أوامر تشغيل البرنامج النصي (انظر خيارات التشغيل أدناه). في Red Hat Linux ، بشكل افتراضي ، كملفات تكوين لـ لوغروتيستخدم الملف /etc/logrotate.conf، والتي قد تبدو كالتالي:

    التدوير الأسبوعي 4 إنشاء ضغط يتضمن /etc/logrotate.d / var / log / wtmp / var / log / lastlog (إنشاء شهري 0664 root utmp rotate 1)

    هذا الملف يشبه أي ملف تكوين لبرنامج نصي. لوغروتيتكون من عدة أقسام. يحدد القسم الأول الخيارات العامة (خيار لكل سطر) التي تحدد الخيارات الافتراضية لجميع السجلات. تحدد الأقسام التالية الخيارات المحلية لسلسلة من ملفات السجل. يتم سرد أسماء هذه الملفات في السطر الأول من القسم ، ثم يتم تعيين المعلمات المحلية في أقواس معقوفة صالحة فقط عند معالجة الملفات المحددة (أيضًا معلمة واحدة لكل سطر). يمكن اقتباس أسماء ملفات السجل وفقًا لقواعد الغلاف إذا كانت تحتوي على مسافات أو أحرف خاصة أخرى. يمكنك تحديد أسماء ملفات متعددة أو أنماط اسم ملف مفصولة بمسافة (تتبع القوالب أيضًا قواعد shell). يتم التعامل مع معالجة كل قسم كإجراء منفرد. الأسطر التي تبدأ بـ "#" هي تعليقات. الإعدادات المحلية لها الأسبقية على الإعدادات العامة.

    في نموذج ملف التكوين المحدد ، يتم وصف المعلمات العامة أولاً ، ثم في قسم منفصل ، معلمات معالجة ملفات / var / log / wtmp و / var / log / lastlog. بالإضافة إلى ذلك ، من بين المعلمات العالمية ، يتم إعطاء ارتباط للدليل /etc/logrotate.d، حيث تكتب كل حزمة الإعدادات المحلية لسجلاتها.

    في قسم الإعدادات العامة ، يتم أولاً تعيين إحدى المعلمات التالية ، والتي تحدد معايير تدوير الملف:

  • اليومي- تغيير الاصدارات في المسلسل يحدث يوميا ،
  • أسبوعي- الإصدار يتغير أسبوعيا ،
  • شهريا- يتغير الإصدار شهريًا ،
  • بحجم بايت - يحدث تغيير الإصدار إذا تجاوز حجم السجل العدد المحدد من البايتات ؛ يمكنك استخدام اللاحقات "k" - كيلوبايت - و "M" - ميغا بايت)

  • والمعلمة تتضمن، متبوعًا باسم ملف تكوين آخر (إضافي) ، أو حتى اسم دليل. في الحالة الأخيرة ، تعتبر جميع الملفات في الدليل المحدد ، باستثناء الدلائل الفرعية والملفات الخاصة والملفات ذات اللواحق من قائمة الاستبعاد ، ملفات تكوين للبرنامج النصي. لوغروت(توجيه تتضمنلا يمكن استخدامه داخل قسم يحدد معاملات المعالجة لمجموعة من الملفات).

    معامل استدارة رقم يمكن أن يكون موجودًا بين المعلمات العالمية والمحلية ويحدد عدد الإصدارات القديمة التي يجب تخزينها ؛ إذا كان الرقم 0 ، فلن يتم إنشاء إصدارات مؤرشفة من البروتوكول.

    إذا تم تعيين المعلمة ضغط، ثم يتم ضغط الإصدارات الأقدم باستخدام gzip ، وإذا تم تحديد ذلك لا يوجد ضغط- لا يضغطون. معامل ضغط كمديسمح لك بتحديد برنامج الضغط الذي سيتم استخدامه (الافتراضي هو gzip) ، و فك ضغط cmdيحدد برنامج فك الضغط (الافتراضي هو ungzip). الانضغاطاتيحدد معلمات برنامج الضغط ؛ الافتراضي هو "-9" ، أي أقصى ضغط لـ gzip. باستخدام المعلمة ضغط النصيمكنك تغيير لاحقة الملفات المضغوطة والخيار تمديد لاحقة يحدد لاحقة تضاف إلى أسماء الملفات أثناء الدوران (قبل لاحقة الضغط).

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

    باستخدام معلمات أخرى لملف التكوين ، يمكنك تجاوز حقوق الوصول إلى ملفات السجل (إذا لم يتم تعيين هذه المعلمة ، فسيتم استخدام سمات ملف السجل القديم) ؛ تحديد لمن ترسل رسائل خطأ حول عمل نظام التسجيل ؛ إرسال نسخة أرشيفية من السجل إلى المستخدم المحدد ؛ حدد الدليل الذي سيتم نقل البروتوكولات إليه أثناء تغيير الإصدار (يجب أن يكون الدليل على نفس الجهاز المادي مثل / var / log) أو حدد قائمة لواحق الاستبعاد للدليل تتضمن. يمكن العثور على وصف تفصيلي لهذه الميزات والخيارات (بالإضافة إلى تلك التي لم يتم ذكرها) في الأمر الرجل.

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

    يمكنك أيضًا تحديد الخيارات التالية في سطر أوامر التشغيل:

    • - وضع التصحيح ، لا توجد تغييرات حقيقية ،
    • -F- إجراء تغييرات حتى لو لوغروتلا يرى الحاجة - يستخدم للتغييرات في قائمة السجلات المعالجة ،
    • رجل السجل
    • ميك باور ، "Paranoid Penguin: swatch: Automated Log Monitoring for the Vigilant but Lazy"
    • RFC 3164. C. Lonvick ، ​​بروتوكول BSD Syslog ، أغسطس 2001.
    • RFC 3195. D. New ، M. Rose ، تسليم موثوق لـ syslog ، نوفمبر 2001.
    • لكل. S. Lapshansky ، "الشيطان يراقب النظام"
    • دينيس كوليسنيشنكو ،

    سيسمح لك تسبق اسم الملف بحرف خط أنابيب (|) باستخدامه فيفو (أول ما يدخل - يخرج أولاً ،أول ما يدخل ، يخرج أولاً) أو الأنابيب المسماةكمتلقي الرسالة. قبل بدء (أو إعادة تشغيل) syslogd ، يجب إنشاء FIFA باستخدام الأمر mkfifo. في بعض الأحيان يستخدم فيفو لتصحيح الأخطاء.

    المحطة الطرفية ووحدة التحكم

    المحطة الطرفية مثل / dev / console.

    آلة بعيدة

    لإعادة توجيه الرسائل إلى مضيف آخر ، اسبق اسم المضيف بعلامة (@). لاحظ أنه لا يتم إعادة توجيه الرسائل من المضيف المستلم. (لهذه المهمة للعمل على العميل والخادم في الملف / الخ / الخدماتيجب كتابة السطر سجل النظام 514 / udp، وفتح منفذ UTP 514)

    قائمة المستخدمين

    قائمة مفصولة بفواصل للمستخدمين الذين يتلقون الرسائل (إذا كان المستخدم قد قام بتسجيل الدخول). غالبًا ما يتضمن هذا المستخدم الجذر.

    جميع الأعضاء المسجلين

    لإعلام جميع المستخدمين المسجلين باستخدام أمر الجدار ، استخدم حرف النجمة (*).

    مثال بسيط syslog.conf:

    # طباعة جميع رسائل kernel إلى وحدة التحكم. # kern. * / dev / console # جميع سجلات مستوى المعلومات أو أعلى ، باستثناء رسائل البريد الإلكتروني ، و # لا تسجل رسائل المصادقة ورسائل cron daemon! * .info؛ mail.none؛ authpriv.none؛ cron.none / var / log / messages # تسجيل الرسائل التي تحتوي على معلومات مصادقة # سرية إلى ملف منفصل ، بغض النظر عن مستواها. authpriv. * / var / log / secure # تتم أيضًا كتابة جميع الرسائل من نظام البريد في ملف منفصل. mail. * - / var / log / maillog # تسجيل رسائل برنامج الجدولة إلى ملف / var / log / cron cron. * / var / log / cron # يجب استلام رسائل الطوارئ فورًا # بواسطة جميع مستخدمي النظام * .emerg * # حفظ الرسائل أخبار المستوى الحرج وما فوق في ملف منفصل. uucp، news.crit / var / log / spooler # تخزين رسائل التمهيد في boot.log local7. * /var/log/boot.log

    كما هو الحال مع العديد من ملفات التكوين ، فإن البنية هي:

    • الأسطر التي تبدأ بـ # ويتم تجاهل الأسطر الفارغة.
    • يمكن استخدام الرمز * للإشارة إلى جميع الفئات أو جميع الأولويات.
    • تشير الكلمة الأساسية الخاصة "لا شيء" إلى أنه لا ينبغي إجراء التسجيل لهذه الفئة لهذا الإجراء.
    • تشير الواصلة الموجودة قبل اسم الملف (مثل - / var / log / maillog في هذا المثال) إلى أنه يجب عدم مزامنة السجل بعد كل عملية كتابة. في حالة تعطل النظام ، قد تفقد المعلومات ، ولكن تعطيل المزامنة سيؤدي إلى تحسين الأداء.

    في صيغة ملف التكوين ، يمكنك وضع الأولوية إشارة!لإظهار أنه لا ينبغي تطبيق الإجراء ، من هذا المستوى وما فوق. وبالمثل ، يمكن أن تكون الأولوية مسبوقة تسجيل =للإشارة إلى أن القاعدة تنطبق فقط على هذا المستوى ، أو != لتوضيح أن القاعدة تنطبق على جميع المستويات باستثناء هذا المستوى. فيما يلي بعض الأمثلة (يمكنك العثور على العديد من الأمثلة على man syslog.conf):

    # إرسال جميع رسائل kernel إلى / var / log / kernel. # إرسال جميع الرسائل المهمة وذات المستوى الأعلى إلى جهاز sysloger البعيد ووحدة التحكم # أرسل جميع المعلومات والإشعارات ورسائل مستوى التحذير إلى / var / log / kernel-info # kern. * / var / log / kernel kern.critsysloger kern .crit / dev / console kern.info؛ kern.! err / var / log / kernel-info # أرسل جميع رسائل نظام البريد باستثناء مستوى المعلومات إلى / var / log / mail. mail. * ؛ mail.! = info / var / log / mail

    حاولت إظهار عمل syslogd بأكبر قدر ممكن من الوضوح على الرسم التخطيطي:

    بدء البرنامج الخفي syslogd

    يبدأ إطلاق البرنامج الخفي للتسجيل في مرحلة تهيئة النظام عن طريق برنامج نصي /etc/rc.d/init.d/syslogومع ذلك ، من أجل تعيين خيارات التشغيل ، ليست هناك حاجة لتعديل هذا البرنامج النصي - بدءًا من الإصدار 7.2 ، تتم قراءة خيارات التشغيل من ملف تكوين منفصل / etc / sysconfig / syslog (/ etc / default / syslogفي دبيان).

    فيما يلي بعض الأشياء الممكنة معلمات بدء تشغيل البرنامج الخفي لـ syslogd:

    • -a / مجلد / مقبس- تحديد مقبس استماع إضافي (لا تنس إنشاء مقبس مسبقًا)
    • - وضع التصحيح. في هذه الحالة ، لا يدخل البرنامج الخفي في الخلفية ويصدر جميع الرسائل إلى المحطة الحالية ؛
    • -F التكوين-اسم الملف. يحدد اسم ملف التكوين البديل الذي سيتم استخدامه بدلاً من /etc/syslog.conf الافتراضي ؛
    • -ل قائمة المضيف- إعداد قائمة بالمضيفين الذين لا ينبغي كتابة أسمائهم مع اسم المجال الكامل (FQDN - Full Qwalified Domain Name) ؛
    • -m دقيقة- التشغيل بدون هذا الخيار ، يسجل sysklogd رسائل علامة الفئة (الطوابع الزمنية) كل 20 دقيقة. باستخدام الخيار -m ، يمكنك إما تغيير الفاصل الزمني بين العلامات أو التوقف تمامًا عن إصدار مثل هذه الرسائل ؛
    • -p المقبس- إعداد مقبس UNIX بديل (بدلاً من الاستماع / dev / log الافتراضي) ؛
    • -r- إذن لتلقي الرسائل من المضيفين البعيدين ؛
    • -x- حظر تحديد اسم المضيف من خلال عنوانه لمنع التجميد عند العمل على نفس المضيف مثل خادم DNS.
    • -الخامس- عرض النسخة والانتهاء من العمل

    بعد بدء البرنامج الخفي syslogd ، يتم إنشاء ملف الحالة / var / lock / subsys / syslogطول صفري ، وملف مع معرف العملية /var/run/syslogd.pid.

    مع الأمر
    kill -SIGNAL `cat / var / run / syslogd.pid`

    يمكن إرسالها البرنامج الخفي syslogdإحدى الإشارات التالية: تنفس الصعداء حتى- إعادة تشغيل البرنامج الخفي ؛ سيغرم- الانتهاء من العمل؛ سيجسر 1- تمكين / تعطيل وضع التصحيح.

    في الواقع ، تم إطلاق شيطانين لتسجيل الدخول في النظام - syslogdو كلوغد. يتم تضمين كلا الشياطين في الحزمة syslogd.

    كلوغد الخفيمسؤولاً عن تسجيل الأحداث التي تحدث في جوهر النظام. ترجع الحاجة إلى برنامج klogd المنفصل إلى أن kernel لا يمكنه استخدام وظيفة سجل النظام القياسية. هذا لأن مكتبات C القياسية (بما في ذلك المكتبة التي تحتوي على وظيفة سجل النظام) مخصصة للاستخدام من قبل التطبيقات الشائعة. نظرًا لأن النواة تحتاج أيضًا إلى وظائف التسجيل ، فهي تتضمن مكتباتها الخاصة غير المتاحة للتطبيقات. لذلك ، يستخدم kernel آلية إنشاء الرسائل الخاصة به.

    كلوغد الخفيمصمم لتنظيم معالجة هذه الرسائل. من حيث المبدأ ، يمكنه إجراء هذه المعالجة بمفرده وبشكل مستقل عن syslogd ، مثل كتابة هذه الرسائل إلى ملف ، ولكن في معظم الحالات يتم استخدام إعداد klogd الافتراضي ، حيث يتم إعادة توجيه جميع الرسائل من kernel إلى نفس سجل النظام شيطان.

    التدوير التلقائي (تحديث الملفات المعبأة) وأرشفة السجلات

    بمرور الوقت ، يميل ملف السجل إلى النمو ، خاصةً عند تشغيل الخدمة بشكل مكثف. وفقًا لذلك ، من الضروري أن تكون قادرًا على التحكم في حجم السجلات. يتم ذلك باستخدام ملفات أوامر logrotate، والذي يتم إجراؤه عادة شيطان كرون. سأتحدث عن عمل كرون في المقالات التالية. الهدف الرئيسي أوامر logrotateهو إجراء نسخ احتياطي للسجلات بشكل دوري وإنشاء سجلات جديدة نظيفة. يتم حفظ عدة أجيال من السجلات وعندما تنتهي صلاحية سجل الجيل الأخير ، يمكن أرشفتها (مضغوطة). يمكن إرسال النتيجة بالبريد ، على سبيل المثال ، إلى الشخص المسؤول عن الأرشفة.

    لتحديد ترتيب التناوب وأرشفة السجلات ، استخدم ملف الضبط /etc/logrotate.conf . بالنسبة للسجلات المختلفة ، يمكنك تعيين فترات دورية مختلفة ، على سبيل المثال ، يوميًا أو أسبوعيًا أو شهريًا ، بالإضافة إلى ذلك ، يمكنك ضبط عدد الأجيال المتراكمة ، وكذلك تحديد ما إذا كان سيتم إرسال نسخ من الأرشيفات إلى مدير الأرشيف ، وإذا اذن متى. أدناه هو مبين مثال ملف /etc/logrotate.conf:

    # أولاً قم بتعيين المعلمات الافتراضية (الخيارات العامة) # تحديث ملفات السجل أسبوعيًا # أرشيف سجل المتجر لآخر 4 أسابيع ، قم بالتناوب 4 # إنشاء ملف جديد (فارغ) بعد التدوير (تحديث) إنشاء # uncomment إذا كنت تريد ضغط الملفات المحفوظة # ضغط # تمكين إعدادات التدوير من الدليل المحدد تتضمن /etc/logrotate.d # لا تخزن wtmp ، أو btmp - إعدادات تدوير بيانات السجل كما يلي: / var / log / wtmp (missingok شهريًا إنشاء 0664 root utmp rotate 1) / var / log / btmp (missingok شهريًا إنشاء 0664 root utmp rotate 1) يمكن تكوين # سجلات نظام محددة أدناه

    يتم وضع الخيارات العالمية في البداية ملف logrotate.conf. يتم استخدامها بشكل افتراضي ما لم يتم تحديد شيء أكثر تحديدًا في مكان آخر. في المثال ، يتم تدوير السجلات أسبوعيويتم الاحتفاظ بنسخ احتياطية لـ أربعةأسابيع. بمجرد تدوير المجلة ، يتم إنشاء مجلة جديدة تلقائيًا بدلاً من المجلة القديمة. ملف logrotate.confقد تحتوي على مواصفات من ملفات أخرى. لذلك ، فهو يشمل جميع الملفات من الدليل /etc/logrotate.d.

    يحتوي هذا المثال أيضًا على قواعد خاصة لـ / فار / سجل / wtmpو / فار / سجل / btmp(تخزين المعلومات حول المحاولات الناجحة وغير الناجحة للدخول إلى النظام) ، ويتم تداولها شهريًا. إذا كانت الملفات مفقودة ، فلن يتم إعطاء رسالة خطأ. يتم إنشاء ملف جديد ويتم الاحتفاظ بنسخة احتياطية واحدة فقط.

    في هذا المثال ، عندما يصل النسخ الاحتياطي إلى الجيل الأخير ، يتم حذفه لأنه لم يتم تحديد ما يجب فعله به.

    سجل النسخ الاحتياطيةيمكن أيضًا إنشاؤها عندما تصل السجلات إلى حجم معين ، ويمكن إنشاء البرامج النصية من مجموعات الأوامر للتشغيل قبل أو بعد عملية النسخ الاحتياطي. مثال:

    / var / log / messages (تدوير 5 بريد [بريد إلكتروني محمي]حجم 100k postrotate / usr / bin / killall -HUP syslogd endcript)

    في هذا المثال التناوب / فار / سجل / رسائليتم إنتاجه عندما يصل إلى حجم 100 كيلوبايت. يتم تجميع خمس نسخ احتياطية ، وعند انتهاء صلاحية أقدم نسخة احتياطية ، يتم إرسالها بالبريد [بريد إلكتروني محمي]تتضمن كلمة الأمر postrotate برنامجًا نصيًا يعيد تشغيل البرنامج الخفي syslogd بعد اكتمال التدوير عن طريق إرسال إشارة HUP. مطلوب كلمة الأمر endcript لإنهاء البرنامج النصي ، وأيضًا إذا كان هناك نص برمجي تم تدوينه مسبقًا. راجع صفحات الرجل للحصول على logrotate لمزيد من المعلومات.

    حدود، في ملف التكوين logrotate.conf:

    • ضغط| لا يوجد ضغط(الإصدارات القديمة يتم ضغطها أو عدم ضغطها باستخدام gzip)
    • ضغط كمد(يحدد برنامج الضغط ، الافتراضي هو gzip)
    • فك ضغط cmd(يضبط برنامج فك الضغط ، الافتراضي هو ungzip)
    • ضغط النص(يحدد لاحقة الملفات المضغوطة)
    • الانضغاطات(يحدد معلمات برنامج الضغط ؛ الافتراضي هو "-9" ، أي أقصى ضغط لـ gzip)
    • اقتطاع النسخ| نوكوبيترونكات(عادة ما يتم إعادة تسمية الإصدار القديم ويتم إنشاء إصدار جديد من السجل ؛ باستخدام هذا الخيار ، ينسخ logrotate السجل إلى ملف جديد ثم يقتطع القديم ؛ يستخدم إذا كان البرنامج الذي ينشئ السجل لا يعرف كيفية الإغلاق ذلك ؛ تم فقد الإدخالات التي تم إجراؤها في الفترة الفاصلة بين النسخ والاقتطاع ؛ هل سيساعد ذلك إذا كتب برنامج التسجيل بدلاً من استخدام وضع الإلحاق على الملف باستخدام مؤشر داخلي؟)
    • يزيد[إذن مالك مجموعة] | nocreate(مباشرة بعد إعادة تسمية الإصدار القديم من المجلة وقبل استدعاء postrotate ، يتم إنشاء دفتر يومية جديد بالسمات المحددة - يتم تعيين الأذونات بالنظام الثماني ، كما في chmod.2 ؛ إذا لم يتم تحديد السمات ، فسيتم أخذها من مجلة قديمة)
    • اليومي(يتم تغيير الإصدارات في السلسلة يوميًا)
    • تأخير ضغط| ضغط العقدة(بعض البرامج لا تغلق السجل على الفور ، وفي هذه الحالة يجب تأجيل الضغط حتى الدورة التالية)
    • أخطاءالبريد الإلكتروني(لمن يبلغ عن الأخطاء)
    • تمديدلاحقة(تحدد اللاحقة المضافة إلى أسماء الملفات أثناء التدوير قبل لاحقة الضغط)
    • إذا كانت فارغة| إخطار(قم بتغيير الإصدارات حتى إذا كان الملف فارغًا ؛ افتراضي)
    • تتضمناسم الملف| اسم الدليل (استبدل نصيًا ملفًا أو جميع الملفات من الدليل المحدد ؛ لا يتم تضمين الدلائل الفرعية والملفات الخاصة والملفات ذات اللواحق من قائمة الاستبعاد ؛ لا يمكن استخدامها داخل قسم)
    • بريدالعنوان| نوميل(عندما يستلزم تغيير الإصدار حذف المجلة القديمة ، ثم أرسلها إلى العنوان المحدد)
    • mailfirst(لا ترسل النسخة المحذوفة من السجل ، ولكن ترسل النسخة الأولى)
    • ميلاست(إرسال نسخة السجل ليتم حذفها ؛ افتراضي)
    • في عداد المفقودين| نوميسينجوك(لا ترسل رسائل خطأ إذا كان السجل مفقودًا)
    • شهريا(يتغير الإصدار شهريًا)
    • أولديرالدليل| noolddir(أثناء تغيير الإصدار ، يتم نقل السجل إلى الدليل المحدد ؛ يجب أن يكون على نفس الجهاز الفعلي)
    • بعد الدوران(يتم تنفيذ جميع الأسطر الإضافية حتى سطر النهاية كأوامر shell بعد عملية تغيير الإصدار)
    • أجرى مسبقا(يتم تنفيذ جميع الأسطر الأخرى حتى سطر النهاية قبل عملية تغيير الإصدار)
    • استدارةرقم(كم عدد الإصدارات القديمة التي يجب الاحتفاظ بها ؛ إذا كان 0 ، فلا شيء)
    • بحجمبايت(يحدث تغيير الإصدار إذا تجاوز حجم السجل العدد المحدد ؛ يمكنك استخدام اللاحقات "k" - كيلوبايت - و "M" - ميغا بايت)
    • نصوص مشتركة| nosharedscripts(قم بتنفيذ الأمرين المسبق و postrotate مرة واحدة فقط لجميع الملفات الموضحة في القسم)
    • المحرمات[+] قائمة لاحقة(إعداد قائمة بلاحقات الاستبعاد للتضمين ؛ إذا تم تحديد علامة الجمع ، فحينئذٍ يتم الإضافة ، أو الاستبدال بخلاف ذلك ؛ الافتراضي: .rpmorig ، .rpmsave ، .rpmnew ، "، v" ، .swp و "~")
    • أسبوعي(يتغير الإصدار أسبوعيا)

    دراسة المجلات ومراقبتها

    تحتوي إدخالات السجل عادةً على طابع زمني واسم المضيف الذي تعمل عليه العملية الموضحة واسم العملية. عرض السجلاتيمكنك استخدام برنامج ترحيل ، على سبيل المثال ، أقل، يمكنك البحث عن إدخالات محددة (على سبيل المثال ، رسائل kernel من برنامج خفي معين) باستخدام الأمر grep:

    # less / var / log / messages # grep "ppp" / var / log / messages | ذيل 17 ديسمبر 16:34:25 الوكيل pppd: تم إنهاء الاتصال. 17 ديسمبر 16:34:25 proxy pppd: Exit. 17 ديسمبر 16:35:57 pppd الوكيل: تم إنهاء LCP بواسطة النظير (^ P] kV ^ @

    قد لا يعمل الكمبيوتر باستمرار ويغلق ، على سبيل المثال في الليل. لذلك ، يتم تخزين الإدخالات في / var / log / messages بشكل دوري من بدء تشغيل الكمبيوتر إلى إيقاف التشغيل ، ويمكن رؤية ذلك من الرسائل:

    17 ديسمبر ، 08:32:56 syslogd خادم سجل النظام 1.4-0: إعادة التشغيل. 17 ديسمبر 08:32:56 سجل نظام خادم syslog: بدأ syslogd بنجاح 17 ديسمبر 08:32:56 نواة خادم سجل النظام: klogd 1.4-0 ، مصدر السجل = / بدأ proc / kmsg. 17 ديسمبر ، 08:32:56 سجل نظام خادم سجل النظام: تم بدء تشغيل klogd بنجاح

    17 ديسمبر 08:32:56 نواة خادم syslog: سطر أوامر Kernel: BOOT_IMAGE تلقائي = جذر linux ro = 303 BOOT_FILE = / boot / vmlinuz-2.4.2-2 17 ديسمبر 08:32:56 نواة خادم سجل النظام: الذاكرة: 125652k / 130560k متاح (رمز نواة 1365k ، 4200k محجوز ، 92k بيانات ، 236k init ، 0k highmem) 17 ديسمبر 08:32:56 نواة خادم سجل النظام: وحدة المعالجة المركزية: Intel (R) Pentium (R) 4 CPU 1.60GHz يخطو 02

    أيضًا ، في هذا الملف ، يمكنك العثور على معلومات حول ذاكرة القرص (بما في ذلك معلومات حول هندسة القرص ، وهيكل القسم والمقاطعات المستخدمة) ، ومعلومات حول الأجهزة الطرفية ، حول بدء الخدمات والخدمات الفردية ، ومعلومات حول توصيل أنظمة الملفات ورسائل تسجيل دخول المستخدم. ، وكذلك رسائل الخطأ.

    في بعض الأحيان قد يكون من الضروري مراقبة سجل النظامللبحث عن الأحداث الجارية. على سبيل المثال ، يمكنك محاولة التقاط حدث نادر الحدوث في لحظة حدوثه. في هذه الحالة ، يمكنك استخدام الأمر ذيلمع الخيار -Fلمراقبة محتويات سجل النظام. مثال:

    # tail -f / var / log / messages | grep syslog-server 17 ديسمبر 16:46:09 syslog-server pppd: pptpd-logwtmp.so ip-up ppp0 maikop 94.77.0.150 17 ديسمبر 16:46:09 syslog-server pppd: Script / etc / ppp / ip-up انتهى (pid 12552) ، الحالة = 0x0 17 ديسمبر 16:46:49 pptpd لخادم سجل النظام: CTRL: بدأ اتصال عنصر تحكم العميل 85.175.197.65 17 ديسمبر 16:46:49 pptpd لخادم سجل النظام: CTRL: بدء الاتصال (بدء pppd ، فتح GRE) 17 ديسمبر 16:46:49 خادم سجل النظام pppd: تم تحميل البرنامج المساعد /usr/lib/pptpd/pptpd-logwtmp.so.

    بالإضافة إلى ملفات السجل المحددة في /etc/syslog.conf ، هناك أيضًا ملفات أخرى ، مثل الملف الذي يخزن معلومات حول عملية تمهيد النظام قبل بدء syslogd ، بالإضافة إلى الملفات ذات التنسيق الثنائي و تخزين معلومات حول آخر تسجيل دخول للمستخدم إلى النظام ، وحول جميع عمليات تسجيل دخول المستخدم الناجحة وجميع عمليات تسجيل دخول المستخدم غير الناجحة ، على التوالي. يمكن أن يحتوي الدليل / var / log / أيضًا على ملفات السجل للعناصر الشريرة مثل خادم الويب أو الخادم الوكيل. يشبه تنسيق هذه الملفات سجلات syslogd.

    أخيرًا ، أود أن أؤكد أن هذا البروتوكول ليس آمنًا للغاية ، لأن. لا يحتوي سجل النظام على أي حماية ضد تزوير الرسائل. والأسوأ من ذلك ، أن استخدام بروتوكول UDP يسمح للمهاجمين بإرسال رسائل نيابة عن أي مضيف. يجب حماية شبكة LAN الخاصة بك من تلقي الحزم ذات العناوين المحلية المخادعة (على الرغم من أن هذا لا يمنع إرسال الرسائل المخادعة من داخل شبكة LAN) ومن تلقي الحزم من الخارج على المنفذ 514 / udp. إن حالات تجاوز القرص برسائل خاطئة معروفة.

    لا يوفر بروتوكول سجل النظام و UDP تسليمًا مضمونًا (يمكن فقد الرسائل بسبب ازدحام الشبكة أو اعتراضها ، ويتم حذف الرسائل التالفة بدون تحذير) ، وتسلسل التسليم الصحيح (قد تصل رسالة إنهاء العملية قبل رسالة بدء العملية) ، وأولوية التسليم.

    لا يتم ضمان سرية الرسائل ، حيث يتم إرسالها بنص واضح.

    إذا حددت مُجمعًا أو عنوان ترحيل غير صحيح عند إعداد منشئ الرسائل ، فلن تكون هناك رسائل خطأ - سيتم حذف الرسائل (أو كتابتها في سجل شخص آخر).

    تم اقتراح العديد من المشاريع لتحسين بروتوكول سجل النظام. على سبيل المثال ، يقترح RFC 3195 نظام تسجيل قائم على بروتوكول TCP (نظام تسجيل الدخول) يضمن تسليم الرسائل بالتسلسل الصحيح. يقترح مشروع تسجيل سجل النظام توفير المصادقة وترتيب الرسائل وسلامة الرسائل واكتشاف الرسائل المفقودة من خلال إنشاء رسائل خاصة تحتوي على توقيع رقمي لمجموعة من الرسائل السابقة مع الحفاظ على بروتوكول سجل النظام القياسي وتنسيقه واستخدام UDP.

    دعونا نلخص قليلا:

    لينكس لديه عفريت واحد مسؤول عن تسجيل أحداث النظام المحلي والأنظمة البعيدة. يتم جمع جميع الأحداث من socket / dev / log ، ومنفذ UDP - 514 ، وكذلك من البرنامج الخفي klogd "المساعد" ، الذي يرسل الرسائل من النواة. تتم تصفية جميع الرسائل المجمعة بواسطة البرنامج الخفي syslogd من خلال القواعد الموجودة في الملف /etc/syslog.conf وتوزيعها على الوجهات المناسبة وفقًا للقواعد. يتم "قطع" ملفات السجل بشكل دوري. يتم تحديد التردد بواسطة ملف logrotate.conf والأمر logrotate ، والذي يتم تشغيله بواسطة برنامج جدولة النظام - cron.

    هذا كل شيء لهذا اليوم. آمل أن أكون قد وصفت كل شيء بوضوح قدر الإمكان. بمرور الوقت ، سأكمل المقال!

    مع خالص التقدير ، ماك سيم!