Graylog: Κεντρική συλλογή και ανάλυση αρχείων καταγραφής

Graylogείναι μια πλήρης, ανοιχτού κώδικα λύση για κεντρική συλλογή αρχείων καταγραφής, αποθήκευση, οπτικοποίηση, φιλτράρισμα, αναζήτηση και ανάλυση. Μπορεί επίσης να χρησιμοποιηθεί σε εργασίες παρακολούθησης και για αποστολή ειδοποιήσεων. Το Graylog μπορεί να συλλέξει αρχεία καταγραφής και συμβάντα από εκατοντάδες συσκευές δικτύου, συμπεριλαμβανομένων διακομιστών Linux, διακομιστών Windows, εξοπλισμού δικτύου ή άλλου υλικού. Το Graylog είναι μια ισχυρή πλατφόρμα που μπορεί να αποθηκεύσει terabyte από αρχεία καταγραφής, ενώ επιτρέπει την αναζήτησή τους σχεδόν αμέσως. Η ανάπτυξη της στοίβας Graylog και οι βασικές της δυνατότητες για εργασίες καταγραφής καλύπτονται σε αυτόν τον οδηγό.

Τα ακόλουθα στοιχεία αποτελούν μέρος της στοίβας Graylog:

  • Διακομιστής Graylog – διεπαφή ιστού οπτικοποίησης και διαμόρφωσης.
  • MongoDB – η βάση δεδομένων που χρησιμοποιείται για την αποθήκευση πληροφοριών μεταδεδομένων.
  • ElasticSearch ή το fork του OpenSearch – χρησιμοποιείται για την αποθήκευση και την αναζήτηση πλήρους κειμένου δομημένων και μη δομημένων αρχείων καταγραφής.
  • Java (OpenJDK) – είναι ο χρόνος εκτέλεσης του OpenSearch (ElasticSearch).

Για να αποθηκεύσουμε τα αρχεία καταγραφής, θα χρησιμοποιήσουμε το OpenSearch, το οποίο είναι ένα δωρεάν ανάλογο ανοιχτού κώδικα της στοίβας ELK (Elasticsearch + Logstash + Kibana).

Πώς να εγκαταστήσετε τη στοίβα Graylog σε συστήματα Linux

Οι οδηγίες εγκατάστασης για τη στοίβα Graylog είναι πολύ διαφορετικές για κάθε έκδοση. Επομένως, συνιστούμε να επιλέξετε με μη αυτόματο τρόπο τη διανομή Linux και την έκδοση Graylog στοhttps://go2docs.graylog.org/current/home.htmδικτυακός τόπος. Το Debian 12 και το Graylog 5.2 χρησιμοποιούνται σε αυτόν τον οδηγό.

Η στοίβα Graylog μπορεί να εκτελεστεί μέσω docker-compose, αλλά σε αυτήν την περίπτωση, θα καλύψουμε την πλήρη ανάπτυξη όλων των στοιχείων.

Θα χρησιμοποιήσουμε:

  • OpenJDK 17
  • OpenSearch2.x (ήElasticsearch7.10.2 – η μόνη έκδοση που είναι συμβατή με το Graylog 5.2)
  • MongoDB5.x ή 6.x (το MongoDB 7 δεν συνιστάται επί του παρόντος για ανάπτυξη)
  • Για μια μικρή εγκατάσταση, ο διακομιστής Graylog απαιτεί τουλάχιστον 2 GB μνήμης RAM.

Εγκαταστήστε τα προαπαιτούμενα και προσθέστε το αποθετήριο MongoDB 6:

$ sudo apt-get install gnupg curl
$ curl -fsSL https://www.mongodb.org/static/pgp/server-6.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg --dearmor
$ echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg] https://repo.mongodb.org/apt/debian bullseye/mongodb-org/6.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
$ sudo apt-get update

Τώρα εγκαταστήστε το πακέτο MongoDB:

$ sudo apt-get install -y mongodb-org

Στην περίπτωσή μου, η εγκατάσταση του Mongodb στο Debian 12 έχει ως αποτέλεσμα ένα σφάλμα:

The following packages have unmet dependencies:
mongodb-org-mongos : Depends: libssl1.1 (>= 1.1.1) but it is not installable
mongodb-org-server : Depends: libssl1.1 (>= 1.1.1) but it is not installable
I had to install an additoonal libssl package:

Διορθώστε το εγκαθιστώντας το πακέτο libssl.

$ sudo wget https://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb
$ sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb

Ξεκινήστε την υπηρεσία:

$ sudo systemctl daemon-reload
$ sudo systemctl enable mongod.service
$ sudo systemctl restart mongod.service
$ sudo systemctl --type=service --state=active | grep mongod

Στη συνέχεια, προχωρήστε στην εγκατάσταση OpenSearch.

$ sudo apt-get update && sudo apt-get -y install lsb-release ca-certificates curl gnupg2

Προσθέστε το ρεπό:

$ curl -o- https://artifacts.opensearch.org/publickeys/opensearch.pgp | sudo gpg --dearmor --batch --yes -o /usr/share/keyrings/opensearch-keyring
$ echo "deb [signed-by=/usr/share/keyrings/opensearch-keyring] https://artifacts.opensearch.org/releases/bundle/opensearch/2.x/apt stable main" | sudo tee /etc/apt/sources.list.d/opensearch-2.x.list
$ sudo apt update

Μάθετε περισσότερα:Τι πρέπει να γνωρίζετε για τη συγχώνευση HBO Max και Discovery Plus: Βασικές πληροφορίες και ανάλυση περιεχομένου

Ξεκινώντας από το OpenSearch 2.12, πρέπει να ορίσετε έναν κωδικό πρόσβασης διαχειριστή κατά την εγκατάσταση:

$ sudo OPENSEARCH_INITIAL_ADMIN_PASSWORD=$(tr -dc A-Z-a-z-0-9_@#%^-_=+ < /dev/urandom  | head -c${1:-32}) apt-get install opensearch

Στη συνέχεια, διαμορφώστε τις ρυθμίσεις OpenSearch:

$ sudo nano /etc/opensearch/opensearch.yml

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

cluster.name: graylog
node.name: ${HOSTNAME}
path.data: /var/lib/opensearch
path.logs: /var/log/opensearch
discovery.type: single-node
network.host: 0.0.0.0
action.auto_create_index: false
plugins.security.disabled: true
indices.query.bool.max_clause_count: 32768

Διαμορφώστε τις ρυθμίσεις για τον διακομιστή SMTP που θα χρησιμοποιείται για την αποστολή ειδοποιήσεων email:

transport_email_enabled = true
transport_email_hostname = smtp.gmail.com
transport_email_port = 465
transport_email_use_auth = true
transport_email_use_tls = false
transport_email_use_ssl = true
transport_email_auth_username =
transport_email_auth_password =
transport_email_subject_prefix = [graylog]
transport_email_from_email =
transport_email_web_interface_url =

Στη συνέχεια αλλάξτε τις προεπιλεγμένες ρυθμίσεις Java:

$ sudo nano /etc/opensearch/jvm.options

Χρησιμοποιήστε τις παραμέτρους Xms και Xmx για να καθορίσετε πόση μνήμη μπορεί να χρησιμοποιήσει η εικονική μηχανή Java. Συνιστάται η μισή μνήμη RAM του κεντρικού υπολογιστή να έχει οριστεί εδώ. Για παράδειγμα, εάν ο κεντρικός υπολογιστής σας έχει 8 GB μνήμης RAM, διαθέστε 4 GB εδώ:

-Xms4g
-Xmx4g

Αλλαγή ρυθμίσεων εικονικής μνήμης:

$ sudo sysctl -w vm.max_map_count=262144
$ sudo echo 'vm.max_map_count=262144' >> /etc/sysctl.conf

Ξεκινήστε την υπηρεσία OpenSearch:

$ sudo systemctl enable --now opensearch

Στη συνέχεια προχωρήστε σεεγκαταστήστε τον διακομιστή Graylog. Υπάρχουν δύο εκδόσεις του Graylog. Το ελεύθεροGraylog Openκαι η επιχείρηση που βασίζεται σε συνδρομέςGraylog Operations.

Για να εγκαταστήσετε το Graylog Open:

$ wget https://packages.graylog2.org/repo/packages/graylog-5.2-repository_latest.deb
$ sudo dpkg -i graylog-5.2-repository_latest.deb
$ sudo apt-get update && sudo apt-get install graylog-server

Δημιουργία κωδικών πρόσβασης για δύο μεταβλητές,password_secretκαιroot_password_sha2. Το Graylog δεν θα ξεκινήσει χωρίς αυτά.

Ο κωδικός password_secret πρέπει να αποτελείται από τουλάχιστον 64 χαρακτήρες:

$ pwgen -N 1 -s 96

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

$ echo -n "Enter Password: " && head -1 </dev/stdin | tr -d 'n' | sha256sum | cut -d" " -f1

Προσθέστε τις προκύπτουσες τιμές password_secret και root_password_sha2 στο/etc/graylog/server/server.conf

Ρυθμίστε τη διεύθυνση IP του διακομιστή ιστού Graylog και τη θύραhttp_bind_address.

Έναρξη Graylog:

$ sudo systemctl enable --now graylog-server

Τώρα συνδεθείτε στη διεπαφή ιστού Graylog χρησιμοποιώντας τον χρήστη διαχειριστή και τον κωδικό πρόσβασης του οποίου ο κατακερματισμός καθορίσατε στο αρχείο διαμόρφωσης. Ωστόσο, αυτός ο κωδικός πρόσβασης δεν θα γίνει δεκτός την πρώτη φορά που θα συνδεθείτε.

Αν κοιτάξετε τα αρχεία καταγραφής διακομιστή GrayLog, θα βρείτε ένα ενδιαφέρον μήνυμα:

$ cat /var/log/graylog-server/server.log

It seems you are starting Graylog for the first time. To set up a fresh install, a setup interface has been started. You must log in to it to perform the initial configuration and continue.
Initial configuration is accessible at 0.0.0.0:9000, with username 'admin' and password 'eDLaYAlaeX'.
Try clicking on https://admin:[email protected]:9000

Χρησιμοποιήστε τον προσωρινό κωδικό πρόσβασης από το αρχείο καταγραφής για να συνδεθείτε για πρώτη φορά. Χρησιμοποιήστε τον απλό οδηγό αρχικής διαμόρφωσης. Η λειτουργία κόμβου δεδομένων Graylog χρησιμοποιείται για τη διαμόρφωση ενός συμπλέγματος OpenSearch πολλαπλών κόμβων. Αυτό το βήμα μπορεί να παραλειφθεί για απλή διαμόρφωση με έναν κεντρικό υπολογιστή καταγραφής.

Στη συνέχεια, συνδεθείτε στη διεπαφή ιστού Graylog χρησιμοποιώντας τοδιαχειριστήςχρήστης και κωδικός πρόσβασης:

Μόλις συνδεθείτε, δημιουργήστε τον χρήστη Graylog κάτω απόΣύστημα->Χρήστες και Ομάδες. Ορισμένες ρυθμίσεις του ενσωματωμένου λογαριασμού διαχειριστή δεν μπορούν να προσαρμοστούν, επομένως είναι καλύτερο να δημιουργήσετε έναν ξεχωριστό λογαριασμό χρήστη. Εκχωρήστε το ρόλο Διαχειριστή σε αυτόν τον χρήστη και καθορίστε μια διεύθυνση email.

Τώρα πρέπει να δημιουργήσουμε τοΕισροές(συλλέκτες δεδομένων). Είναι προτιμότερο να δημιουργείτε ξεχωριστή είσοδο για κάθε κατηγορία συσκευών (διακομιστές Linux, συσκευές δικτύωσης υπολογιστών, κεντρικοί υπολογιστές Windows, κ.λπ.).

Θα δημιουργήσουμε έναSyslog UDPείσοδο για κεντρικούς υπολογιστές Linux. Καθορίστε το όνομά του και τη θύρα στην οποία θα λαμβάνει δεδομένα ο διακομιστής Graylog. Αφήστε τις υπόλοιπες ρυθμίσεις ως προεπιλεγμένες.

Τώρα πηγαίνετε στοΣύστημα->Δείκτεςκαι δημιουργήστε ένα ξεχωριστό ευρετήριο για την κατηγορία συσκευών Linux.

Καθορίστε ένα όνομα, περιγραφή και πρόθεμα (για παράδειγμα,linux_indx). Διαμορφώστε πόσες ημέρες θα διατηρούνται παλιά αρχεία καταγραφής, πότε να διαγράφονται τα παλιά ευρετήρια και το μέγιστο μέγεθος ευρετηρίου.

Δημιουργήστε ένα ξεχωριστόΡοή για κάθε είσοδο.Αυτό επιτρέπει τον διαχωρισμό αρχείων καταγραφής από διαφορετικές κατηγορίες συσκευών μεταξύ διαφορετικών ευρετηρίων. Μεταβείτε στοΡεύμα-> Δημιουργία ροής -> καθορίστε το όνομα της ροής και επιλέξτε το ευρετήριο που θέλετε να χρησιμοποιήσετε.

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

Στη συνέχεια, ξεκινήστε τη ροή.

Πώς να στείλετε αρχεία καταγραφής από το Linux στο Graylog

Τώρα διαμορφώστε τις συσκευές-πελάτες σας ώστε να στέλνουν συμβάντα και αρχεία καταγραφής στο Graylog. Το Graylog μπορεί να λάβει δεδομένα από διάφορες πηγές: Filebeat, Winlogbeat, Nxlog, Syslog, Rsyslog κ.λπ.

Για να συλλέξετε αρχεία καταγραφής και να τα στείλετε στο Graylog, μπορείτε να χρησιμοποιήσετεrsyslogσε διακομιστές Linux

$ sudo apt install rsyslog

$ sudo systemctl status rsyslog

Μόλις εκτελεστεί η υπηρεσία rsyslog, διαμορφώστε ποια αρχεία καταγραφής θα σταλούν στο Graylog.

$ sudo nano /etc/rsyslog.d/60-graylog.conf

Προσθέστε την ακόλουθη γραμμή στο αρχείο:

 *.*@192.168.14.146:20514;RSYSLOG_SyslogProtocol23Format

Σε αυτό το παράδειγμα, θα στείλουμε όλα τα αρχεία καταγραφής σε μορφή syslog στον διακομιστή Graylog (192.168.14.146) στη θύρα που ορίσατε για είσοδο (20514).

Επανεκκινήστε το rsyslog:

$ sudo systemctl restart rsyslog

Αναζήτηση και ανάλυση αρχείων καταγραφής στο Graylog

Τώρα πηγαίνετε στοΑναζήτηση Graylogκαρτέλα, επιλέξτε τη ροή «Linux» και θα δείτε όλα τα συμβάντα που έχουν ληφθεί από τους οικοδεσπότες σας τα τελευταία 5 λεπτά (το χρονικό εύρος μπορεί να αλλάξει).

Χρησιμοποιήστε απλά φίλτρα για να βρείτε συγκεκριμένα συμβάντα. Η γραμμή αναζήτησης Graylog είναι διαδραστική. Στη γραμμή αναζήτησης, επιλέγετε διαφορετικές ιδιότητες συμβάντων και επιλέγετε από τις προτεινόμενες επιλογές.

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

source:srv-ubun01 AND application_name:sshd AND message:Fail*

Αυτό το ερώτημα επιστρέφει όλα τα αρχεία καταγραφής που πληρούν και τις τρεις προϋποθέσεις (τοANDπαράμετρος). Εάν το AND δεν έχει καθοριστεί, η Graylog υποθέτει ότι αναζητάτε συμβάντα στοORτρόπος.

Ο πίνακας θα εμφανίζει συμβάντα που ταιριάζουν με τα κριτήρια αναζήτησής σας. Μπορείτε να επεκτείνετε και να εξερευνήσετε τις λεπτομέρειες του αρχείου καταγραφής. Τα φίλτρα αναζήτησης στο Graylog είναι αρκετά απλά και εύχρηστα στη χρήση και στην εξερεύνηση. Μπορείτε πάντα να επεκτείνετε οποιοδήποτε συμβάν, να προβάλετε τα διαθέσιμα πεδία (χαρακτηριστικά συμβάντος) και να χρησιμοποιήσετε τις τιμές τους για να φιλτράρετε και να αναζητήσετε συγκεκριμένα συμβάντα.

Το Graylog σας επιτρέπει να δημιουργείτε και να προσαρμόζετε διαφορετικούς πίνακες εργαλείων που εμφανίζουν πληροφορίες σχετικά με συμβάντα που σας ενδιαφέρουν (μπορεί να περιλαμβάνουν μετρήσεις συμβάντων, κεντρικούς υπολογιστές, στοιχεία ομάδας, γραφήματα ή χάρτες). Τα γραφικά στοιχεία χρησιμοποιούνται για την προσαρμογή των πινάκων εργαλείων.

Διαμόρφωση ειδοποιήσεων Graylog σχετικά με την εμφάνιση συμβάντων

Όταν συμβαίνουν ορισμένα συμβάντα, το Graylog μπορεί να στέλνει αυτόματες ειδοποιήσεις (ειδοποιήσεις). Για παράδειγμα, θέλω η Graylog να μου στέλνει ένα email όταν κάποιος συνδέεται σε έναν από τους διακομιστές μου μέσω SSH.

Μεταβείτε στοΕιδοποιήσεις->Ειδοποιήσεις και συμβάντα. Στην καρτέλα Ειδοποίηση, προσθέστε διευθύνσεις email προς αποστολή email.

Το Graylog έχει ενσωματωμένα πρότυπα για την αποστολή ειδοποιήσεων στο MS Teams και στο Slack. Η αποστολή μηνυμάτων από το Graylog σε WhatsApp ή Telegram messenger μπορεί να διαμορφωθεί χρησιμοποιώντας πρόσθετα πρόσθετα.

Δημιουργήστε ένα ερώτημα για να αναζητήσετε συμβάντα για τα οποία θέλετε να ειδοποιηθείτε στον Ορισμό συμβάντος. Για να παρακολουθείτε τις συνδέσεις SSH σε κεντρικούς υπολογιστές Linux, επιλέξτε την κατάλληλη ροή και καθορίστε ένα ερώτημα αναζήτησης:

application_name:sshd AND message:Accepted password*

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

Το μόνο που μένει είναι να επιλέξετε τον τύπο ειδοποίησης ->e-mail. Όταν συμβεί ένα συγκεκριμένο συμβάν στα αρχεία καταγραφής, η Graylog θα στείλει μια ειδοποίηση μέσω email.

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

Related Posts