Τρόπος διαχείρισης αρχείων καταγραφής συστήματος (Διαμόρφωση, περιστροφή και εισαγωγή στη βάση δεδομένων) στο RHEL 7 - Μέρος 5


Για να διατηρήσετε τα συστήματά σας RHEL 7 ασφαλή, πρέπει να γνωρίζετε πώς να παρακολουθείτε όλες τις δραστηριότητες που λαμβάνουν χώρα σε τέτοια συστήματα εξετάζοντας αρχεία καταγραφής. Έτσι, θα μπορείτε να εντοπίσετε οποιαδήποτε ασυνήθιστη ή δυνητικά κακόβουλη δραστηριότητα και να εκτελέσετε αντιμετώπιση προβλημάτων συστήματος ή να προβείτε σε άλλη κατάλληλη ενέργεια.

Στο RHEL 7, ο δαίμονας rsyslogd είναι υπεύθυνος για την καταγραφή του συστήματος και διαβάζει τη διαμόρφωσή του από το /etc/rsyslog.conf (αυτό το αρχείο καθορίζει την προεπιλεγμένη θέση για όλα τα αρχεία καταγραφής συστήματος) και από αρχεία μέσα στο /etc/rsyslog.d, εάν υπάρχουν.

Διαμόρφωση Rsyslogd

Μια γρήγορη επιθεώρηση του rsyslog.conf θα είναι χρήσιμη για να ξεκινήσετε. Αυτό το αρχείο χωρίζεται σε 3 κύριες ενότητες: Ενότητες (καθώς το rsyslog ακολουθεί μια αρθρωτή σχεδίαση), οδηγίες Παγκόσμια (χρησιμοποιούνται για τον ορισμό καθολικών ιδιοτήτων του δαίμονα rsyslogd) και Κανόνες. Όπως πιθανώς θα μαντέψετε, αυτή η τελευταία ενότητα υποδεικνύει τι καταγράφεται ή εμφανίζεται (γνωστό και ως επιλογέας) και πού, και θα είναι το επίκεντρό μας σε όλο αυτό το άρθρο.

Μια τυπική γραμμή στο rsyslog.conf είναι η εξής:

Στην παραπάνω εικόνα, μπορούμε να δούμε ότι ένας επιλογέας αποτελείται από ένα ή περισσότερα ζεύγη Facility:Priority που χωρίζονται με ερωτηματικά, όπου το Facility περιγράφει τον τύπο του μηνύματος (ανατρέξτε στην ενότητα 4.1.1 στο RFC 3164 για να δείτε η πλήρης λίστα των διαθέσιμων εγκαταστάσεων για το rsyslog) και η προτεραιότητα υποδεικνύει τη σοβαρότητά του, η οποία μπορεί να είναι μία από τις ακόλουθες αυτονόητες λέξεις:

  1. εντοπισμός σφαλμάτων
  2. πληροφορίες
  3. ειδοποίηση
  4. προειδοποίηση
  5. πλανώμαι
  6. κριτ
  7. συναγερμός
  8. αναδύονται

Αν και δεν αποτελεί προτεραιότητα από μόνη της, η λέξη-κλειδί καμία σημαίνει ότι δεν υπάρχει καμία προτεραιότητα για τη συγκεκριμένη εγκατάσταση.

Σημείωση: ότι μια δεδομένη προτεραιότητα υποδηλώνει ότι όλα τα μηνύματα αυτής της προτεραιότητας και άνω πρέπει να καταγράφονται. Έτσι, η γραμμή στο παραπάνω παράδειγμα δίνει εντολή στον δαίμονα rsyslogd να καταγράφει όλα τα μηνύματα με πληροφορίες προτεραιότητας ή υψηλότερα (ανεξάρτητα από την εγκατάσταση) εκτός από αυτά που ανήκουν στο mail, authpriv και υπηρεσίες cron (δεν θα ληφθούν υπόψη μηνύματα που προέρχονται από αυτές τις εγκαταστάσεις) στη διεύθυνση /var/log/messages.

Μπορείτε επίσης να ομαδοποιήσετε πολλές εγκαταστάσεις χρησιμοποιώντας το σύμβολο άνω και κάτω τελείας για να εφαρμόσετε την ίδια προτεραιότητα σε όλες. Έτσι, η γραμμή:

*.info;mail.none;authpriv.none;cron.none                /var/log/messages

Θα μπορούσε να ξαναγραφτεί ως

*.info;mail,authpriv,cron.none                /var/log/messages

Με άλλα λόγια, οι εγκαταστάσεις mail, authpriv και cron ομαδοποιούνται και η λέξη-κλειδί κανένας εφαρμόζεται στο τρεις από αυτούς.

Δημιουργία προσαρμοσμένου αρχείου καταγραφής

Για να καταγράψουμε όλα τα μηνύματα δαίμονα στο /var/log/tecmint.log, πρέπει να προσθέσουμε την ακόλουθη γραμμή είτε στο rsyslog.conf είτε σε ξεχωριστό αρχείο (ευκολότερο στη διαχείριση ) μέσα στο /etc/rsyslog.d:

daemon.*    /var/log/tecmint.log

Ας επανεκκινήσουμε τον δαίμονα (σημειώστε ότι το όνομα της υπηρεσίας δεν τελειώνει με ένα d):

systemctl restart rsyslog

Και ελέγξτε τα περιεχόμενα του προσαρμοσμένου αρχείου καταγραφής μας πριν και μετά την επανεκκίνηση δύο τυχαίων δαιμόνων:

Ως άσκηση αυτο-μελέτης, θα σας συνιστούσα να παίξετε με τις εγκαταστάσεις και τις προτεραιότητες και είτε να καταγράψετε πρόσθετα μηνύματα σε υπάρχοντα αρχεία καταγραφής είτε να δημιουργήσετε νέα όπως στο προηγούμενο παράδειγμα.

Περιστρεφόμενα αρχεία καταγραφής χρησιμοποιώντας Logrotate

Για να αποτρέψετε την ατελείωτη ανάπτυξη των αρχείων καταγραφής, το βοηθητικό πρόγραμμα logrotate χρησιμοποιείται για την περιστροφή, τη συμπίεση, την αφαίρεση και εναλλακτικά την αποστολή αρχείων καταγραφής, διευκολύνοντας έτσι τη διαχείριση συστημάτων που δημιουργούν μεγάλο αριθμό αρχείων καταγραφής.

Προτεινόμενη ανάγνωση: Πώς να ρυθμίσετε και να διαχειριστείτε την περιστροφή αρχείων καταγραφής χρησιμοποιώντας το Logrotate στο Linux

Το Logrotate εκτελείται καθημερινά ως εργασία cron (/etc/cron.daily/logrotate) και διαβάζει τη διαμόρφωσή του από το /etc/logrotate .conf και από αρχεία που βρίσκονται στο /etc/logrotate.d, εάν υπάρχουν.

Όπως και στην περίπτωση του rsyslog, ακόμη και όταν μπορείτε να συμπεριλάβετε ρυθμίσεις για συγκεκριμένες υπηρεσίες στο κύριο αρχείο, η δημιουργία ξεχωριστών αρχείων διαμόρφωσης για καθεμία θα σας βοηθήσει να οργανώσετε καλύτερα τις ρυθμίσεις σας.

Ας ρίξουμε μια ματιά σε ένα τυπικό logrotate.conf:

Στο παραπάνω παράδειγμα, η logrotate θα εκτελέσει τις ακόλουθες ενέργειες για το /var/loh/wtmp: προσπαθήστε να κάνετε περιστροφή μόνο μία φορά το μήνα, αλλά μόνο εάν το αρχείο είναι τουλάχιστον < ισχυρό>1 MB σε μέγεθος και, στη συνέχεια, δημιουργήστε ένα ολοκαίνουργιο αρχείο καταγραφής με δικαιώματα ορισμένα σε 0664 και την κυριότητα που δίνεται στη ρίζα χρήστη και την ομάδα utmp. Στη συνέχεια, κρατήστε μόνο ένα αρχειοθετημένο αρχείο καταγραφής, όπως ορίζεται από την οδηγία περιστροφής:

Ας εξετάσουμε τώρα ένα άλλο παράδειγμα όπως βρίσκεται στο /etc/logrotate.d/httpd:

Μπορείτε να διαβάσετε περισσότερα σχετικά με τις ρυθμίσεις για το logrotate στις σελίδες man του (man logrotate και man logrotate.conf). Και τα δύο αρχεία παρέχονται μαζί με αυτό το άρθρο σε μορφή PDF για διευκόλυνσή σας στην ανάγνωση.

Ως μηχανικός συστήματος, θα εναπόκειται σχεδόν σε εσάς να αποφασίσετε για πόσο χρόνο θα αποθηκευτούν τα αρχεία καταγραφής και σε ποια μορφή, ανάλογα με το αν έχετε /var σε ξεχωριστό διαμέρισμα /< λογικός τόμος. Διαφορετικά, θέλετε πραγματικά να σκεφτείτε να αφαιρέσετε παλιά αρχεία καταγραφής για να εξοικονομήσετε χώρο αποθήκευσης. Από την άλλη πλευρά, μπορεί να αναγκαστείτε να κρατήσετε πολλά αρχεία καταγραφής για μελλοντικό έλεγχο ασφαλείας σύμφωνα με τις εσωτερικές πολιτικές της εταιρείας ή του πελάτη σας.

Αποθήκευση αρχείων καταγραφής σε μια βάση δεδομένων

Φυσικά η εξέταση των αρχείων καταγραφής (ακόμα και με τη βοήθεια εργαλείων όπως το grep και οι κανονικές εκφράσεις) μπορεί να γίνει μια αρκετά κουραστική εργασία. Για αυτόν τον λόγο, το rsyslog μας επιτρέπει να τα εξάγουμε σε μια βάση δεδομένων (τα RDBMS που υποστηρίζονται OTB περιλαμβάνουν MySQL, MariaDB, PostgreSQL και Oracle.

Αυτή η ενότητα του σεμιναρίου προϋποθέτει ότι έχετε ήδη εγκαταστήσει τον διακομιστή MariaDB και τον πελάτη στο ίδιο πλαίσιο RHEL 7 όπου γίνεται η διαχείριση των αρχείων καταγραφής:

yum update && yum install mariadb mariadb-server mariadb-client rsyslog-mysql
systemctl enable mariadb && systemctl start mariadb

Στη συνέχεια, χρησιμοποιήστε το βοηθητικό πρόγραμμα mysql_secure_installation για να ορίσετε τον κωδικό πρόσβασης για τον χρήστη root και άλλα ζητήματα ασφαλείας:

Σημείωση: Εάν δεν θέλετε να χρησιμοποιήσετε τον ριζικό χρήστη MariaDB για την εισαγωγή μηνυμάτων καταγραφής στη βάση δεδομένων, μπορείτε να διαμορφώσετε έναν άλλο λογαριασμό χρήστη να το πράξουν. Η εξήγηση του τρόπου με τον οποίο γίνεται αυτό είναι εκτός του πεδίου εφαρμογής αυτού του σεμιναρίου, αλλά εξηγείται λεπτομερώς στη γνωσιακή βάση MariaDB. Σε αυτό το σεμινάριο θα χρησιμοποιήσουμε τον λογαριασμό root για απλότητα.

Στη συνέχεια, κατεβάστε το σενάριο createDB.sql από το GitHub και εισαγάγετέ το στον διακομιστή της βάσης δεδομένων σας:

mysql -u root -p < createDB.sql

Τέλος, προσθέστε τις ακόλουθες γραμμές στο /etc/rsyslog.conf:

$ModLoad ommysql
$ActionOmmysqlServerPort 3306
*.* :ommysql:localhost,Syslog,root,YourPasswordHere

Επανεκκινήστε το rsyslog και τον διακομιστή βάσης δεδομένων:

systemctl restart rsyslog 
systemctl restart mariadb

Ερώτηση στα αρχεία καταγραφής χρησιμοποιώντας σύνταξη SQL

Τώρα εκτελέστε ορισμένες εργασίες που θα τροποποιήσουν τα αρχεία καταγραφής (όπως διακοπή και εκκίνηση υπηρεσιών, για παράδειγμα), στη συνέχεια συνδεθείτε στον διακομιστή DB και χρησιμοποιήστε τυπικές εντολές SQL για εμφάνιση και αναζήτηση στα αρχεία καταγραφής:

USE Syslog;
SELECT ReceivedAt, Message FROM SystemEvents;

Περίληψη

Σε αυτό το άρθρο εξηγήσαμε πώς να ρυθμίσετε την καταγραφή συστήματος, πώς να περιστρέψετε τα αρχεία καταγραφής και πώς να ανακατευθύνετε τα μηνύματα σε μια βάση δεδομένων για ευκολότερη αναζήτηση. Ελπίζουμε ότι αυτές οι δεξιότητες θα σας φανούν χρήσιμες καθώς προετοιμάζεστε για την εξέταση RHCE και στις καθημερινές σας υποχρεώσεις.

Όπως πάντα, τα σχόλιά σας είναι περισσότερο από ευπρόσδεκτα. Μη διστάσετε να χρησιμοποιήσετε την παρακάτω φόρμα για να επικοινωνήσετε μαζί μας.