Biztos volt már olyan, hogy jó lett volna a szervereid logjait egy központi helyen tárolni. Az is jó, ha valami értelmes felületen lehetne ezeket a logokat megfigyelni, elemezni. Klasszikusan erre az egyik megoldás, ha a szervereid logjait egy loggyűjtő szerverre irányítod. Simán meg lehet csinálni, ha csinálsz egy loggyűjtő szervert és a többi szervered logjait átirányítod annak az Rsyslogjába, aztán a logokban tudsz greppelni. Jó megoldás, de mi van, ha többre vágysz ennél? Urambocsá' szeretnéd grafikonon is látni hányas a kabát, vagy van olyan alkalmazásod amelynek a log kimenetét elemezgetni akarod. Esetleg riportokat készítenél a logokból. Van egy jó hírem. A Graylog pont erre való.

Az egyik lehetséges megoldás a Graylog szerver. Ebben a cikkben azt fogom leírni, hogy hogyan készíts CentOS8 vagy RHEL8 rendszeren Graylog szervert és egy másik szerver logjait hogyan tudod beirányítani erre a Graylog szerverre.

Akkor csapjunk bele, telepítsünk Graylog szervert!

Előfeltételek

Kell két CentOS8/RHEL8 szerver Minimál installal. Ebben a leírásban CentOS8 rendszert használok, de RHEL8 alatt ugyanúgy kell működjön a leírás. Hálózatnak DHCP-t használok, DNS nincs a teszt környezetben, ezért végig IP címeket fogok használni. A két szerverből az egyik lesz a szerver (graylog-server 192.168.1.204), a másik a kliens (graylog-client 192.168.1.183). Mind a kettőt frissítsük le majd indítsuk újra. 

yum update -y
reboot

Kérdezzük le a verziószámokat mindkét gépen!

[root@graylog-server ~]# cat /etc/redhat-release 
CentOS Linux release 8.2.2004 (Core)
[root@graylog-client ~]# cat /etc/redhat-release 
CentOS Linux release 8.2.2004 (Core)

Graylog Szerver telepítése

Három komponensre lesz szükségünk. Ezek mindegyike kell a Graylog szerver működéséhez. Ebben a leírásban az elérhető legfrissebb verziókkal dolgoztam, amelyek a következőek:

Graylog 4.0
MongoDB 4.4
Elasticsearch 7.0

A leírásban végig root-ként dolgoztam a rendszerben, tehát nem sudoers userrel sudo-val.

Mostantól a szerveren (graylog-server 192.168.1.204) fogunk dolgozni.

Első lépésben olyan komponensekre van szükségünk amelyek nincsenek meg a hivatalos CentOS8/RHEL8 tárolókban. Erre való az EPEL repó. Telepítsük fel! Erről már írtam egy cikkben, itt találod:
EPEL repó telepítése CentOS8/RHEL8 rendszeren

Ha kész az EPEL repó telepítése, akkor rakjuk fel a szükséges programokat!

yum install -y wget pwgen perl-Digest-SHA

Telepítsük a java környezetet!

yum install -y java-1.8.0-openjdk-headless

Ellenőrizzük a Java verziót!

[root@graylog-server ~]# java -version
openjdk version "1.8.0_272"
OpenJDK Runtime Environment (build 1.8.0_272-b10)
OpenJDK 64-Bit Server VM (build 25.272-b10, mixed mode)

Itt értünk az Elasticsearch telepítéséhez. Nem egyszerű program, és nagyon sok funkciója van, de most azokkal nem foglalkozunk egyszerűen csak rakjuk fel, mert a Graylognak szüksége van rá. Telepítsük az Elasticsearch-öt

Először kell a GPG kulcs az Elasticearcs-höz.

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

El kell készítsnük egy repót az Elasticsearch telepítéséhez.

vim /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Most már tudjuk telepíteni az Elasticsearch-öt

yum install -y elasticsearch-oss

Állítsuk be a következőket a konfigurációjában:

vim /etc/elasticsearch/elasticsearch.yml
cluster.name: graylog
action.auto_create_index: false

Töltsük újra a systemd-t!

systemctl daemon-reload

Rögzítsük az Elasticsearch indulását a rendszer bootolásához, majd indítsuk el a szolgáltatást!

systemctl enable elasticsearch
systemctl restart elasticsearch

Ellenőrizzük, hogy fut-e!

[root@graylog-server ~]# systemctl status elasticsearch
● elasticsearch.service - Elasticsearch
Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2020-11-21 18:49:50 CET; 7s ago
Docs: http://www.elastic.co
Main PID: 4397 (java)
Tasks: 31 (limit: 11477)
Memory: 1.2G
CGroup: /system.slice/elasticsearch.service
└─4397 /bin/java -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75>
nov 21 18:49:50 graylog-server.torig.hu systemd[1]: Started Elasticsearch.
lines 1-11/11 (END)

Fut, örülünk.

Ellenőrizzük a működését is. Kérdezzük le, hogy az Elasticsearch felel-e localhoston a 9200-as porton. Valami ilyesmit fogunk látni:

[root@graylog-server ~]# curl -X GET http://localhost:9200
{
"name" : "JsX6_8g",
"cluster_name" : "graylog",
"cluster_uuid" : "kuWLU8VLSGy8EehcodslRg",
"version" : {
"number" : "6.8.13",
"build_flavor" : "oss",
"build_type" : "rpm",
"build_hash" : "be13c69",
"build_date" : "2020-10-16T09:09:46.555371Z",
"build_snapshot" : false,
"lucene_version" : "7.7.3",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}

Felel. Klassz, örülünk.

Akkor tegyük fel a MongoDB-t ami a Graylog adatbázisát fogja adni. Ehhez is kell készítsünk egy repót.

vim /etc/yum.repos.d/mongodb-org-4.4.repo
[mongodb-org-4.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/8Server/mongodb-org/4.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.4.asc

Indulhat a MongoDB telepítése.

yum install -y mongodb-org

Rögzítsük, boot időben induláshoz, majd indítsuk el a MongoDB-t.

systemctl enable mongod
systemctl start mongod

Ellenőrizzük!


[root@graylog-server ~]# systemctl status mongod
● mongod.service - MongoDB Database Server
Loaded: loaded (/usr/lib/systemd/system/mongod.service; enabled; vendor preset: disabled)
Active: active (running) since Sat 2020-11-21 18:56:36 CET; 5s ago
Docs: https://docs.mongodb.org/manual
Process: 5024 ExecStart=/usr/bin/mongod $OPTIONS (code=exited, status=0/SUCCESS)
Process: 5022 ExecStartPre=/usr/bin/chmod 0755 /var/run/mongodb (code=exited, status=0/SUCCESS)
Process: 5021 ExecStartPre=/usr/bin/chown mongod:mongod /var/run/mongodb (code=exited, status=0/SUCCE>
Process: 5019 ExecStartPre=/usr/bin/mkdir -p /var/run/mongodb (code=exited, status=0/SUCCESS)
Main PID: 5027 (mongod)
Memory: 60.8M
CGroup: /system.slice/mongod.service
└─5027 /usr/bin/mongod -f /etc/mongod.conf
nov 21 18:56:34 graylog-server.torig.hu systemd[1]: Starting MongoDB Database Server...
nov 21 18:56:34 graylog-server.torig.hu mongod[5024]: about to fork child process, waiting until server>
nov 21 18:56:34 graylog-server.torig.hu mongod[5024]: forked process: 5027
nov 21 18:56:36 graylog-server.torig.hu mongod[5024]: child process started successfully, parent exiting
nov 21 18:56:36 graylog-server.torig.hu systemd[1]: Started MongoDB Database Server.

Fut, örülünk.

Eljött végre a mi időnk, elkezdhetjük telepíteni a Graylogot is. A Grayloghoz is szükségünk van a Graylog repó használatára, de van neki telepíthető repó fájlja rpm formátumban. Hurrá! Telepítsük azt:

yum install -y https://packages.graylog2.org/repo/packages/graylog-4.0-repository_latest.rpm

Most már van repónk, telepíthetjük a programot.

yum install -y graylog-server

Szerkesszük meg a konfigot és írjuk bele a titkosító jelszót és az admin jelszót. Generáljunk titkosító kódot, mert az a tuti. Jó tanács: Maradjon ez a jelszó 96 hosszú, mert rövidebbel nem fog működni.

[root@graylog-server ~]# pwgen -N 1 -s 96
CcQ3Md2Mut6gaEKTD0Vk7tsc4SQDFDTp4o4xmrFXST3UzTQwwtTakWx5xGOMLb4g4lBdJl0jVqzKa4H2JS834vv0SukGAUnC

Admin userh jelszavához is generáljunk jelszót.

root@graylog-server ~]# echo -n jelszavunk | shasum -a 256
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 -

Ez utóbbi lesz az amivel majd a webes felületen be tudunk lépni, csak a fájlban kódolva tároljuk. A belépéshez pedig elég lesz beírni a jelszavunk. Keressük meg a megfelelő üres helyeket és adjuk meg paraméternek a kódokat az alábbiak szerint.

vim /etc/graylog/server/server.conf
...
password_secret = CcQ3Md2Mut6gaEKTD0Vk7tsc4SQDFDTp4o4xmrFXST3UzTQwwtTakWx5xGOMLb4g4lBdJl0jVqzKa4H2JS834vv0SukGAUnC
...
root_password_sha2 =e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
...

Adjuk hozzá a konfighoz a root email címet is és állítsuk be az időzónát ha szükséges! Az UTC az alapértelmezett.

...
root_email = "Ez az e-mail-cím a szpemrobotok elleni védelem alatt áll. Megtekintéséhez engedélyeznie kell a JavaScript használatát."
...
root_timezone = UTC
...

Be kell állítsuk a konfigban, hogy a Graylog melyik IP címen keresztül engedje a Webbes felületet működni. Adjuk meg a szerverünk IP címét!

http_bind_address = 192.168.1.204:9000

Ha natolt hálózatban van a géped és kívülről kell elérned, akkor add meg a publikus IP címet. Ha csak sima belső háló, akkor ezt hagyd ki! Most sem kell beállítani.

http_external_uri = http://publikus_ip:9000/

Töltsük újra a systemd-t, rögzítsük rendszerindításra a szervizt, majd indítsuk el a Graylogot!

systemctl daemon-reload
systemctl enable graylog-server
systemctl start graylog-server

Ellenőrizzük, hogy fut-e! Valami ilyesfélét fogunk látni.

[root@graylog-server ~]# systemctl status graylog-server
● graylog-server.service - Graylog server
Loaded: loaded (/usr/lib/systemd/system/graylog-server.service; enabled; vendor preset: disabled)
Active: active (running) since Sun 2020-11-22 19:25:22 CET; 1h 9min ago
Docs: http://docs.graylog.org/
Main PID: 1871 (graylog-server)
Tasks: 178 (limit: 23967)
Memory: 950.1M
CGroup: /system.slice/graylog-server.service
├─1871 /bin/sh /usr/share/graylog-server/bin/graylog-server
└─1885 /usr/bin/java -Xms1g -Xmx1g -XX:NewRatio=1 -server -XX:+ResizeTLAB -XX:+UseConcMarkSw>
nov 22 19:25:22 graylog-server.torig.hu systemd[1]: Started Graylog server.

Ahhoz, hogy a Graylog rendesen fusson, be kell állítsuk a Selinuxot. Hogy mi a Selinux? Hát erről lehetne bőven beszélni kb két hétig. Legyen most elég annyi, hogy a Selinux egy biztonsági program amely része a CentOS8/RHEL8 rendszernek. Nagyjából fájl ACL szinten kell beállítani a hozzáférési a jogosultságokat, illetve engedélyezni kell, hogy egy folyamat mihez férhet hozzá. Ha ezeket nem állítjuk be, akkor a Selinux megakadályoza a folyamatokat az erőforrás elérésében. Javaslom sose kapcsold ki, mert kb 99,99%-al növeli a szervered biztonsági szintjét. Nagyon röviden. 

Selinux beállítások. Hogy a Web szerver hozzáférjen a hálózathoz:

setsebool -P httpd_can_network_connect 1

A Graylog REST API és a Web interface használatához:

semanage port -a -t http_port_t -p tcp 9000

Elasticsearch HTTP API ha szükséges lenne:

semanage port -a -t http_port_t -p tcp 9200

MongoDB default port használatához:

semanage port -a -t mongod_port_t -p tcp 27017

Engedélyezzük a MongoDB modult is a Selinuxhoz!

ausearch -c 'mongod' --raw | audit2allow -M my-mongod
semodule -i my-mongod.pp

Ha mindez megvan, akkor ellenőrizzük, hogy működik-e a Graylog szerverünk. Nézzük meg, hogy teker-e a log.

tail -f /var/log/graylog-server/server.log

Ha igen, akkor már nem sok van hátra. Nyissunk tűzfalat a webes felület eléréséhez!

firewall-cmd --permanent --add-port=9000/tcp
firewall-cmd --reload

Várni kell egy kicsit míg a Graylog el nem indul, aztán lehet nyitni webes felületet.

http://192.168.1.204:9000/

Belépés admin felhasználóval és a korábban a Graylog konfigurációban megadott hosszú kódnál levő jelszóval lehetséges. (jelszavunk)

 

Belépés után el is kezdhetjük a Graylog szerverünk konfigurálását.

Graylog Kliens beállítása, logok küldése a Graylog szerverbe

Eddig rendben vagyunk. Mi lenne, ha beleirányítanánk egy másik szerver logját a Graylog szerverünkbe? Tegyük meg. Végül is log szervert szeretnénk építeni, nem?

Itt most a kliensünk (graylog-client 192.168.1.183) szerver logjait fogom beirányítani a Graylog szerverre. Még mindig a szerveren dolgozunk! Szólok, ha átmegyünk a kliensre konfigolni. Szóval a logok fogadásához elő kell készítsük a szerverünket. Tűzfalon állítsuk be a logok forwardolását az alábbi parancsokkal. Itt a Forward szabály ami biztosítani fogja, hogy az 514-es UDP portra érkező forgalmat átirányítja a Graylog szerver 1514-es portjára, mert a Graylog azon várja a beérkező logokat.

firewall-cmd --add-masquerade --permanent
firewall-cmd --add-forward-port=port=514:proto=udp:toport=1514 --permanent
firewall-cmd --reload

Ha kívülről a 1514-re akarjuk küldeni a logokat, akkor ezt is állítsuk be. Egyébként elég nekünk az 514-es külső port nyitása is.

firewall-cmd --permanent --add-port=1514/udp
firewall-cmd --reload

Most a Graylog Webes felületén kell néhány beállítást eszközölnünk. Állítsuk be, hogy az Rsyslog küldéseket a Graylog UDP-n fogadja. Ehhez kell csináljunk egy Input beállítást a System/Inputs menüpontban, hogy a Graylog az UDP 1514-es porton várja az adatokat. A szükséges tűzfal szabályokat az imént felvettük hozzá.
Válasszuk ki a menüből a Syslog UDP menüsort majd kattintusnk a Launch new input gombra.

Adjuk meg a szükséges paramétereket az alábbiak szerint!


Mostantól a kiensünkön (graylog-client 192.168.1.183) ​dolgozunk. Lépjünk be root-ként, majd szerkesszük meg az Rsyslog konfigot kényünk-kedvünk szerint. Például:

vim /etc/rsyslog.conf

Egészítsük ki a fájlt még egy sorral. Ha ezt hozzáírjuk, akkor a log bejegyzések nem csak lokálisan lesznek tárolva, hanem el is lesznek küldve a Graylog szerverünkre.

*.info;mail.none;authpriv.none;cron.none @192.168.1.204:514

Indítsuk újra az rsyslogot!

systemctl restart rsyslog

Ellenőrzés. Nyissunk két terminált a kliensen. Egyikben beküldünk egy log bejegyzést, a másikban pedig figyeljük, hogy lokálisan is tárolódik-e a log bejegyzés.

Küldjünk be az "ALMA" stringet üzenetként az rsyslogba.

logger ALMA

Egy másik terminálablakban egyidejűleg megfigyelhetjük a journalctl -f paranccsal, hogy a log bejegyzés lokálisan megjelenik-e.

journalctl -f
nov 21 20:07:55 graylog-server.torig.hu root[5273]: ALMA

Esetleg tail -f -el a logba írást is ellenőrizhetjük.

tail -f /var/log/messages
nov 21 20:07:55 graylog-server.torig.hu root[5273]: ALMA

A kliens konfiguráció ilyen egyszerű volt. Nem kell hozzá se agent se semmi. Az Rsyslog elvégzi amire szükségünk van. Most a Graylog Webes felületén figyelhetjük a log bejegyzés megjelenését.

Működik minden. A Graylognak nagyon fejlett szűrési lehetőségei vannak. Riasztásokat állíthatunk be bizonyos eseményekre. Egyedi Dashboardokat készíthetünk. Csinálhatunk a főnökeinknek színes-szagos-grafikonos-gyönyörűséges riportokat igényeink szerint, de ez már egy másik történet.
Mindazonáltal a Graylognak van egy csomó olyan képessége amely meghaladja e cikk kereteit.

A tesztelésért és javításért köszönet Alexnek.

 

 

We use cookies

We use cookies on our website. Some of them are essential for the operation of the site, while others help us to improve this site and the user experience (tracking cookies). You can decide for yourself whether you want to allow cookies or not. Please note that if you reject them, you may not be able to use all the functionalities of the site.