السلام عليكم ورحمة الله وبركاته ...


دليل ملفات الــ Log


موضوعي لهذا اليوم أجده مهم للمحترفين وللمستخدمين العاديين ... ولم أجد أحد صراحة تكلم عنه سابقا ... ولا حتى فكر في السؤال عنه ولهذا ما سأتناول في هذا الموضوع تصنيف ملفات الـ Log وكيفية التعامل معها وفهم محتويات كل واحد منها ... وأيضا الطريقة التي يكتب النظام ملاحظاته في هذه الملفات ...

أولا: ما هو ملف الـ Log ؟
هو عبارة عن ملف يتم تدوين في الملاحظات حول العمليات التي يجريها النظام ... مثل تشغيل الخدمات كالـ ftp وتسجيل حالات الدخول والخروج للنظام ... وغيرها من الأمور التي سنذكرها لاحقا ...

ثانيا: ما هو المجلد الرئيسي لهذه الملفات ؟
المجلد الرئيسي لها هو var/log/

ثالثا: ما هي الملفات الرئيسية التي بداخل هذا المجلد ؟


boot.msg
firewall
lastlog
mail
messages
wtmp


والمجلدات التي في داخله كثيرة ... أهمها هي:


YaST2
cups
samba
squid


وغيرها الكثير لكن هذه أهمها أو أهم ما سأقوم بشرحه ...


رابعا: لقد سردت لنا الكثير من الملفات والمجلدات فما هو عمل كل واحد منهم ؟
نعم سأذكر كل ملف ومجلد وماذا ممكن أن تجد بداخله...

1-
ملف الــ boot.msg


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



2- ملف الــ firewall

هذا الملف يتم تسجيل فيه عمليات التي تحصل على الفايروول ... ما هي المنافذ المفتوحة والمغلقة وماذا يحصل ... وهو موجود مع نظام سوزي ... ﻻ أعلم إن كان موجود مع توزيعة أخرى ...

3-
ملف الــ lastlog

ويتم تسجيل فيه من المستخدمين الذين لديك ومن فيهم قام بالدخول على النظام ومتى دخل عليه ... كل هذه الأمور مسجلة فيه ... ولأن هذا الملف هو ليس عبارة عن ملف ASCII عادي بل هو عبارة عن Binary هههههه أنا ... مجرد مزحة ... وبما إنه نوعه Binary إذن ﻻ يمكن فتحه مثل الملفات الأخرى بأدوات العادية لكن يجب عرضه من خلال الأمر lastlog ... أكيد سيسأل سائل ... لماذا أقول لكي يصعب التعديل على من الذي دخل على الموضوع من خلال تحريره بأي محرر ... إذن Binary فوائده كثيرة هههههههههه ...

4-
ملف الــ mail


هذا الملف يتم تسجيل الأمور التي يقوم نظام الميل mail على جهازك ... جميع الأمور المتعلقة بالميل تسجل هنا ... سواءا إرسال إستقبال كلها هنا أو في ملحقاتها ... مثل mail.err الي يسجل فيه الأخطاء وهكذا ...

5-
ملف الــ wtmp


يتم تسجيل فيه كل مستخدم متى قام بالدخول الى النظام ومتى خرج ... ومن أين دخل على النظام وما هي المدة التي أستغرقها داخل النظام ... ولأنه الملف أيضا ليس نوعه ASCII TEXT فلذلك يجب أن تعرض محتواه من خلال الأمر التالي: last

6-
ملف الــ messages

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

للمن لديه خبرة في هذا الملف ... فهو من أكثر الملفات التي تحبها الأداة Guru-Antilog حق أخونا sAFA7_eLNeT الشهيرة ... تجدها هنا ...


نأتي الى المجلدات:
1- مجلد الــ YaST2
وفيه يتم تسجيل جميع الأمور التي تحصل من خلال الأداة yast ... كل ما تعمله الأداة مسجل هنا ...
2-
مجلد الــ cups
وفيه يتم تسجيل جميع الأمور التي تخص تعريف الطابعات والطباعة لديك ... سواءا على شبكة أو كانت مربوطة مباشرة كلها تسجل هنا ... فهي المكان الرئيسي لتسجيل جميع الأفعال التي تحصل مع الخدمة cupsd.
3-
مجلد الــ samba
هنا يتم تسجيل جميع الأفعال التي تحصل مع الخدمة السامبا ... التي تستعمل في مشاركة الملفات بين انظمة التشغيل وغيرها من الأمور الكثيرة التي تقدمها هذه الخدمة ... كل ما يخصها تجده هنا ...
4-
مجلد الــ squid
هذا المجلد يتم تسجيل فيه جميع الأفعال التي تقوم بها خدمة الـ squid ... فيها عدة ملفات ... منها لتسجيل الأخطاء ومنها لتسجيل المواقع التي يتم زيارتها من قبل المستخدمين على الشبكة المربوطة بسيرفر الــ squid ... وأيضا الكثير من الأمور الأخرى ... بإمكانك الدخول اليه والتفرج بنفسك ...

خامسا: ما هي أهم أدوات عرض اللوج ؟
كما أتضح لنا في الأعلى إنه البعض منها ﻻ يمكن عرضه من خلال أدوات التصفح العادية وتحتاج الى أدوات خاصة مثل الـ last والـ lastlog ... أما الملفات الأخرى فيمكنك عرضها من خلال التالي:

1- الأمر less ويمكنك إستعماله كما يلي:


less /var/log/messages


2- الأمر more ويمكنك إستعماله بنفس الطريقة التي مع الأمر less


more /var/log/messages


3- الأمر الذي هو جدا مهم وهو tail ... هذا الأمر يقوم بعرض آخر ملف معيين ... وفي حالتنا سنحدد له أن يعرض آخر ملف اللوج وهذا ما نحتاجه غالبا بالضبط ... خاصة لما تريد تشغل خدمة معينة مثلا الــ httpd ... وتظهر لك مشاكل ... وتريد تقرأ آخر اللوج لأنه أكيد المشكلة في الاخير تم تدوينها ﻷنها حصلت الحين ... وقتها ننفذ التالي:


tail /var/log/messages


الآن هذا بصفة أساسية سيعرض لك فقط آخر 10 سطور ... لماذا ﻻ نجلعه يعرض آخر 25 سطر ؟ إذن نعمل التالي:


tail -n25 /var/log/messages


طيب الحين لنفرض نريد أن نراقب هذا الملف بصورة Live أو كل شي يحصل في الـ run time نراه في نفس اللحظة نعمل ماذا ؟ أعمل التالي:


tail -f /var/log/messages


تحب تزيد عدد السطور فقط أضف الـ n25- على الأمر وسيعرض لك 25 سطر، ماذا لو 50 سطر ؟ ههههه


سادسا: كيف نقرأ محتوى أحد ملفات الــ Log ؟
أوكي هذا صراحة السؤال ليس سهلا وليس صعبا ... ولكن غالبا أصحاب الخلفية البرمجية يمكنهم فهم المحتوى بسهولة وذلك ﻷنه المحتوى أيضا عبارة عن أكواد ... لكن أكواد لم تكتبها أن بل كتبها لك النظام ولهذا فهي مفهومة لهم ... لكن هذا ﻻ يعني إنه الذين ليس لديهم خلفية برمجية لن يفهموا منه شيئا ... ﻻ بالعكس أيضا يمكنهم فهم ذلك كل ما عليهم هو المتابعة معي ... وطبعا المبرمجين تابعوا معي أيضا ...


لنفرض قمنابالتالي:


binary:/var/log # tail /var/log/messages

Dec 25 14:10:04 binary dhclient: DHCPREQUEST on eth0 to 10.0.0.1 port 67

Dec 25 14:10:04 binary dhclient: DHCPACK from 10.0.0.1

Dec 25 14:10:04 binary dhclient: bound to 10.0.0.4 -- renewal in 1483 seconds

.

الآن لنأتي لنفصل كل ما في هذه السطور ...


السطر الأول:

أوﻻ ماذا تعني Dec 25 14:10:04 ؟ تعني التاريخ الذي بدأت فيه العملية ...

ثانيا ماذا يعني binary ؟ هذا هو أسم الجهاز على الشبكة أي الـ Hostname ...

ثالثا dhclient ما هي ؟ هذه خدمة service موجودة على النظام تقوم بعملية طلب الـ IP من الـ DHCP Server لكي يقوم بتثبيته على الجهاز ...

رابعا DHCPREQUEST هذه هي نوع الـ packet المرسلة من قبل dhclient والتي تطلب فيها IP من الـ DHCP Server الموجودة على الشبكة ...

خامسا on eth0 تعني العملية تمت على كارت الشبكة الي أسمه eth0

سادسا to 10.0.0.1 هي الجهة التي تم إرسال الـ packet من برنامج dhclient اليه من خلال المنفذ eth0

سابعا port 67 أي بإستعمال المنفذ port هذا ...

فالنعيد مرة ثانية ما شرحناه ... السطر الأول يعني إرسال packet من نوع DHCPREQUEST من خلال كارت الشبكة eth0 الى الجهاز الي رقم الـ IP له 10.0.0.1 من خلال المنفذ port 67 في الساعة 14:10:04 في اليوم 25 من شهر 12 ... هل هذا صعب ؟ ﻻ أعتقد ذلك ...

السطر الثاني:
سأبدأه من عند DHCPACK وذلك ﻷنه جميع ما سبق هو نفس الي في السطر الذي سبقه ... طيب الـ DHCPACK ما هي ؟ هي نوع من أنواع الـ packets التي يرجعها الـ DHCP Server الى البرنامج dhclient ... أما from 10.0.0.1 فتعني إنه الـ packet هذه جاءت من الجهاز الذي يحمل هذا الـ IP

السطر الثالث:
أيضا bound to 10.0.0.4 تعني تم ربط جهازك بالـ IP الذي رجعه لك الـ DHCP Server والذي هو 10.0.0.4 ... والعبارة هذه -- renewal in 1483 seconds. تعني إنه سيرجع يطلب IP بعد 1483 من الثواني ... والذي هو تقريبا 25 دقيقة ...



هل هناك مشكلة الحين في قراءة ملف أو Log معيين ؟ أكيد المسألة ستختلف من ملف الى آخر ... وذلك ﻷنه المحتوى سيكون حسب ما خصص ذلك الملف له ... ومسألة شرح جميع السطور في كل الملفات وأشكالها صعب جدا ويمكن تأخذ مننا شهور لكثرتها وكثرت ما تحتويه .... لكن أفهم كيف يبنى ملف الـ Log بغض النظر عن نوعه فكلمه تابعين للقاعدة التالية:

1-
يبدأ بتاريخ ووقت التنفيذ

2- أسم الجهاز hostname الذي تم الدخول اليه أو بعض المرات أسم عام للخدمة التي طلبت التنفيذ مثل: linux kernel والتي تعني إنه الكيرنل هو من قام بها ... وبعض الملفات ممكن يكون أسم المستخدم ... تختلف حسب نوع التدوينه ...


3-
الخدمة التي قامت بالعمل أو بتنفيذ شيء معيين ...


4-
نوع الحدث الذي تم ... إرسال بيانات ... تنفيذ أو تشغيل خدمة معينة مثلا:


binary:/var/log # /etc/init.d/named start

Starting name server BIND

Warning: File, /etc/named.conf.include not found. Creating it. done


حيث قمت بتشغيل خدمة الـ named والتي هي الـ DNS ... وقال لي إنها أشتغلت تمام وقامت بإنشاء الملف


/etc/named.conf.include


من تلقاء نفسها لعدم وجوده بالسابق ... الآن لنفتح آخر الـ Log لنرى ماذا كتب هناك ... نرى كالتالي:


Dec 25 23:33:57 binary named[15638]: starting BIND 9.3.2 -t /var/lib/named -u named

Dec 25 23:33:57 binary named[15638]: found 1 CPU, using 1 worker thread

Dec 25 23:33:57 binary named[15638]: loading configuration from '/etc/named.conf'

Dec 25 23:33:57 binary named[15638]: listening on IPv6 interfaces, port 53

Dec 25 23:33:57 binary named[15638]: listening on IPv4 interface lo, 127.0.0.1#53

Dec 25 23:33:57 binary named[15638]: listening on IPv4 interface eth0, 10.0.0.4#53

Dec 25 23:33:57 binary named[15638]: command channel listening on 127.0.0.1#953

Dec 25 23:33:57 binary named[15638]: command channel listening on ::1#953

Dec 25 23:33:57 binary named[15638]: zone 0.0.127.in-addr.arpa/IN: loaded serial 42

Dec 25 23:33:57 binary named[15638]: zone localhost/IN: loaded serial 42

Dec 25 23:33:57 binary named[15638]: running


طبعا يخبرني إنه تم عملية التشغل للخدمة وقام بتحميل الإعدادات من ملف

/etc/named.conf

وحاليا يتصنت على كل من الشبكة الداخلة lo والشبكة من خلال eth0 ... وإنه قام بتشغيل الزون للـ local domain ... وبالختام أخبرني إنه كل شي يعمل الحين من خلال كلمة running


5- العمل الذي قامت به الخدمة المذكورة ... والذي يكون بعد الرمز ":" ...

في الختام الموضوع صراحة طويل طويل جدا ... وصعب أن أقوم بتغطيته لوحدي ... ولهذا أتمنى لو يشارك الجميع في إكمال هذه الدليل الذي سيكون إن شاء الله مرجع جيد للعرب في التعامل مع ملفات الـ Log ... الموجودة على جهازك والتي تسهل عليك الكثير من الأمور ... خاصة عند حصول مشكلة عندك على الجهاز ... أو في حالات الإختراق والأمور الخاصة بالحماية ... كلها تكون مسجلة في الـ Log إلا إذا تدخل برنامج مثل برنامج أخونه سفاح وقام بحذف هذه الملفات ... هنا أقول لك هناك حل آخر وهو أنك تعمل التسجيل يكون remotely أي على سيرفر خارجي ... وليس على نفس السيرفر أو الجهاز الذي نتكلم عليه ... مجرد معرفتك لأنواع ملفات تسجيل الـ log ستسهل عليك أين تبحث وبعد ذلك قمت بشرح أنا كيف تبحث وكيف تقرأ المحتوى ... أرجوا أن يكون الموضوع قد نال على رضاكم ...

أخوكم B!n@ry ...