Hoe je een SIEM kunt bouwen met Suricata en Elastic Stack op Rocky Linux 8

Introductie

De vorige handleidingen in deze serie hebben u door het installeren, configureren en uitvoeren van Suricata als een Intrusion Detection (IDS) en Intrusion Prevention (IPS) systeem geleid. U heeft ook geleerd over Suricata regels en hoe u uw eigen regels kunt maken.

In deze handleiding gaat u verkennen hoe u Suricata integreert met Elasticsearch, Kibana en Filebeat om uw eigen Security Information and Event Management (SIEM) tool te creëren met behulp van de Elastic stack en Rocky Linux 8. SIEM-tools worden gebruikt om gebeurtenisgegevens te verzamelen, te aggregeren, op te slaan en te analyseren om te zoeken naar beveiligingsdreigingen en verdachte activiteiten op uw netwerken en servers.

De componenten die u zult gebruiken om uw eigen SIEM te bouwen zijn:

  • Elasticsearch om de beveiligingsgebeurtenissen op te slaan, te indexeren, te correleren en te doorzoeken die afkomstig zijn van uw Suricata-server.
  • Kibana om de beveiligingsgebeurtenislogs weer te geven en te navigeren die zijn opgeslagen in Elasticsearch.
  • Filebeat om het eve.json logbestand van Suricata te parseren en elke gebeurtenis naar Elasticsearch te sturen voor verwerking.
  • Suricata om uw netwerkverkeer te scannen op verdachte gebeurtenissen en ongeldige pakketten te loggen of te blokkeren.

Eerst installeer en configureer je Elasticsearch en Kibana met enkele specifieke authenticatie-instellingen. Vervolgens voeg je Filebeat toe aan je Suricata-systeem om de logs van `eve.json` naar Elasticsearch te sturen.

Tenslotte leer je hoe je verbinding maakt met Kibana via SSH en je webbrowser, en vervolgens laad en interageer je met Kibana-dashboards die de gebeurtenissen en waarschuwingen van Suricata tonen.

Vereisten

Als je deze zelfstudiereeks hebt gevolgd, zou Suricata al moeten draaien op een Rocky Linux-server. Deze server zal worden aangeduid als je Suricata-server.

Je hebt ook een tweede server nodig om Elasticsearch en Kibana te hosten. Deze server zal worden aangeduid als je Elasticsearch-server. Het moet een Rocky Linux 8-server zijn met:

Voor het doel van deze handleiding moeten beide servers kunnen communiceren met behulp van privé-IP-adressen. U kunt een VPN zoals WireGuard gebruiken om uw servers te verbinden, of een cloudprovider gebruiken die privénetwerken tussen hosts heeft. U kunt er ook voor kiezen om Elasticsearch, Kibana, Filebeat en Suricata op dezelfde server uit te voeren om te experimenteren.

Stap 1 – Elasticsearch en Kibana installeren

De eerste stap in deze handleiding is het installeren van Elasticsearch en Kibana op uw Elasticsearch-server. Om te beginnen, voegt u de Elastic GPG-sleutel toe aan uw server met de volgende opdracht:

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

Vervolgens maakt u een elasticsearch.repo bestand aan in uw /etc/yum/yum.repos.d directory met de volgende inhoud, gebruikmakend van vi of uw voorkeurseditor. Dit zorgt ervoor dat de upstream Elasticsearch repositories worden gebruikt bij het installeren van nieuwe pakketten via yum:

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

Als u vi gebruikt, drukt u op ESC wanneer u klaar bent met het maken van wijzigingen en vervolgens op :x om de wijzigingen naar het bestand te schrijven en af te sluiten.

Installeer nu Elasticsearch en Kibana met behulp van het dnf commando. Druk op Y om eventuele meldingen over GPG-sleutelafdrukken te accepteren:

  1. sudo dnf install --enablerepo=elasticsearch elasticsearch kibana

De optie --enablerepo wordt gebruikt om de standaard uitgeschakelde instelling in het bestand /etc/yum.repos.d/elasticsearch.repo te overschrijven. Deze aanpak zorgt ervoor dat de Elasticsearch- en Kibana-pakketten niet per ongeluk worden geüpgraded wanneer u andere pakketupdates op uw server installeert.

Zodra u klaar bent met het installeren van de pakketten, zoek en noteer dan het privé-IP-adres van uw server met behulp van het ip address show-commando:

  1. ip -brief address show

U ontvangt output zoals de volgende:

Output
lo UNKNOWN 127.0.0.1/8 ::1/128 eth0 UP 159.89.122.115/20 10.20.0.8/16 2604:a880:cad:d0::e56:8001/64 fe80::b832:69ff:fe46:7e5d/64 eth1 UP 10.137.0.5/16 fe80::b883:5bff:fe19:43f3/64

Het privé-netwerkinterface in deze output is het gemarkeerde eth1-apparaat, met het IPv4-adres 10.137.0.5. Uw apparaatnaam en IP-adressen zullen verschillend zijn. Ongeacht uw apparaatnaam en privé-IP-adres, zal het adres afkomstig zijn uit de volgende gereserveerde blokken:

  • 10.0.0.0 tot 10.255.255.255 (10/8-prefix)
  • 172.16.0.0 tot 172.31.255.255 (172.16/12-prefix)
  • 192.168.0.0 tot 192.168.255.255 (192.168/16-prefix)

Als u meer wilt weten over hoe deze blokken zijn toegewezen, bezoek dan de RFC 1918-specificatie)

Neem het private IP-adres van uw Elasticsearch-server op (in dit geval 10.137.0.5). Dit adres zal worden aangeduid als your_private_ip in de rest van deze handleiding. Let ook op de naam van de netwerkinterface, in dit geval eth1. In het volgende deel van deze handleiding zult u Elasticsearch en Kibana configureren om verbindingen te accepteren op het private IP-adres vanaf uw Suricata-server.

Stap 2 — Elasticsearch configureren

Elasticsearch is standaard geconfigureerd om alleen lokale verbindingen te accepteren. Bovendien heeft het geen enkele authenticatie ingeschakeld, dus tools zoals Filebeat kunnen geen logs naar het verzenden. In dit gedeelte van de handleiding zult u de netwerkinstellingen voor Elasticsearch configureren en vervolgens de ingebouwde beveiligingsmodule xpack van Elasticsearch inschakelen.

Netwerkinstellingen voor Elasticsearch configureren

Aangezien uw Elasticsearch- en Suricata-servers gescheiden zijn, moet u Elasticsearch configureren om verbindingen te accepteren op zijn private netwerkinterface.

Open het bestand /etc/elasticsearch/elasticsearch.yml met vi of uw voorkeurseditor:

  1. sudo vi /etc/elasticsearch/elasticsearch.yml

# Zoek de uitgeschakelde #network.host: 192.168.0.1 regel tussen regels 50–60 en voeg een nieuwe regel toe nadat deze de network.bind_host instelling configureert, zoals hieronder aangegeven:

# Standaard is Elasticsearch alleen toegankelijk op localhost. Stel hier een ander
# adres in om deze node op het netwerk beschikbaar te maken:
#
#network.host: 192.168.0.1
network.bind_host: ["127.0.0.1", "your_private_ip"]
#
# Standaard luistert Elasticsearch naar HTTP-verkeer op de eerste vrije poort die
# het vindt, beginnend bij 9200. Stel hier een specifieke HTTP-poort in:

Vervang je privé IP-adres in plaats van het your_private_ip adres. Deze regel zorgt ervoor dat Elasticsearch nog steeds beschikbaar is op zijn lokale adres zodat Kibana erbij kan, evenals op het privé IP-adres voor je server.

Ga vervolgens naar het einde van het bestand met de vi sneltoets SHIFT+G.

Voeg de volgende gemarkeerde regels toe aan het einde van het bestand:

. . .
discovery.type: single-node
xpack.security.enabled: true

De discovery.type instelling maakt het mogelijk voor Elasticsearch om te draaien als een enkele node, in plaats van in een cluster van andere Elasticsearch-servers. De xpack.security.enabled instelling schakelt enkele van de beveiligingsfuncties in die zijn inbegrepen bij Elasticsearch.

Sla het bestand op en sluit het wanneer je klaar bent met bewerken.

Voeg tot slot firewall-regels toe om ervoor te zorgen dat je Elasticsearch-server bereikbaar is op zijn privé-netwerkinterface. Als je de voorafgaande handleidingen hebt gevolgd en firewalld gebruikt, voer dan de volgende opdrachten uit:

  1. sudo firewall-cmd --permanent --zone=internal --change-interface=eth1
  2. sudo firewall-cmd --permanent --zone=internal --add-service=elasticsearch
  3. sudo firewall-cmd --permanent --zone=internal --add-service=kibana
  4. sudo systemctl reload firewalld.service

Vervang de naam van uw privé-netwerkinterface in plaats van eth1 in het eerste commando als die van u anders is. Dat commando wijzigt de interfaceregels om de internal Firewalld-zone te gebruiken, die meer permissief is dan de standaard public zone.

De volgende commando’s voegen regels toe om Elasticsearch-verkeer op poort 9200 en 9300 toe te staan, samen met Kibana-verkeer op poort 5601.

Het laatste commando laadt de Firewalld-service opnieuw met de nieuwe permanente regels op hun plaats.

Daarna start u de Elasticsearch-daemon en configureert u wachtwoorden voor gebruik met de xpack security module.

Het starten van Elasticsearch

Nu u de netwerkconfiguratie en de xpack security-instellingen voor Elasticsearch heeft geconfigureerd, moet u het starten zodat de wijzigingen van kracht worden.

Voer het volgende systemctl-commando uit om Elasticsearch te starten:

  1. sudo systemctl start elasticsearch.service

Zodra Elasticsearch klaar is met starten, kunt u doorgaan naar het volgende gedeelte van deze handleiding waarin u wachtwoorden genereert voor de standaardgebruikers die zijn ingebouwd in Elasticsearch.

Het configureren van Elasticsearch-wachtwoorden

Nu je de instelling xpack.security.enabled hebt ingeschakeld, moet je wachtwoorden genereren voor de standaard Elasticsearch-gebruikers. Elasticsearch bevat een hulpprogramma in de map /usr/share/elasticsearch/bin dat automatisch willekeurige wachtwoorden kan genereren voor deze gebruikers.

Voer de volgende opdracht uit om naar de map te navigeren en vervolgens willekeurige wachtwoorden te genereren voor alle standaard gebruikers:

  1. cd /usr/share/elasticsearch/bin
  2. sudo ./elasticsearch-setup-passwords auto

Je krijgt output zoals hieronder. Wanneer gevraagd wordt om door te gaan, druk op y en vervolgens op RETURN of ENTER:

Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
The passwords will be randomly generated and printed to the console.
Please confirm that you would like to continue [y/N]y


Changed password for user apm_system
PASSWORD apm_system = eWqzd0asAmxZ0gcJpOvn

Changed password for user kibana_system
PASSWORD kibana_system = 1HLVxfqZMd7aFQS6Uabl

Changed password for user kibana
PASSWORD kibana = 1HLVxfqZMd7aFQS6Uabl

Changed password for user logstash_system
PASSWORD logstash_system = wUjY59H91WGvGaN8uFLc

Changed password for user beats_system
PASSWORD beats_system = 2p81hIdAzWKknhzA992m

Changed password for user remote_monitoring_user
PASSWORD remote_monitoring_user = 85HF85Fl6cPslJlA8wPG

Changed password for user elastic
PASSWORD elastic = 6kNbsxQGYZ2EQJiqJpgl

Je kunt het hulpprogramma niet opnieuw uitvoeren, dus zorg ervoor dat je deze wachtwoorden ergens veilig noteert. Je hebt het wachtwoord van de gebruiker kibana_system nodig in de volgende sectie van deze handleiding, en het wachtwoord van de gebruiker elastic in de stap Configuratie van Filebeat van deze handleiding.

Op dit punt in de handleiding ben je klaar met het configureren van Elasticsearch. De volgende sectie legt uit hoe je de netwerkinstellingen van Kibana en de xpack beveiligingsmodule configureert.

Stap 3 — Configuratie van Kibana

In de vorige sectie van deze handleiding heb je Elasticsearch geconfigureerd om verbindingen te accepteren op het privé-IP-adres van je Elasticsearch-server. Je moet hetzelfde doen voor Kibana, zodat Filebeats op je Suricata-server er toegang toe hebben.

Eerst zul je de beveiligingsfunctionaliteit van Kibana’s xpack inschakelen door enkele geheimen te genereren die Kibana zal gebruiken om gegevens op te slaan in Elasticsearch. Vervolgens configureer je de netwerkinstellingen en authenticatiedetails van Kibana om verbinding te maken met Elasticsearch.

Het inschakelen van xpack.security in Kibana

Om te beginnen met de instellingen voor xpack beveiliging in Kibana, moet je enkele versleutelingssleutels genereren. Kibana gebruikt deze sleutels om sessiegegevens (zoals cookies) op te slaan, evenals verschillende opgeslagen dashboards en weergaven van gegevens in Elasticsearch.

Je kunt de benodigde versleutelingssleutels genereren met het hulpprogramma kibana-encryption-keys dat is inbegrepen in de /usr/share/kibana/bin directory. Voer het volgende uit om naar de directory te gaan en vervolgens de sleutels te genereren:

  1. cd /usr/share/kibana/bin/
  2. sudo ./kibana-encryption-keys generate -q --force

De -q vlag onderdrukt de instructies van het gereedschap, en de --force vlag zal ervoor zorgen dat je nieuwe sleutels maakt. Je zou output moeten ontvangen zoals het volgende:

Output
xpack.encryptedSavedObjects.encryptionKey: 66fbd85ceb3cba51c0e939fb2526f585 xpack.reporting.encryptionKey: 9358f4bc7189ae0ade1b8deeec7f38ef xpack.security.encryptionKey: 8f847a594e4a813c4187fa93c884e92b

Kopieer deze drie sleutels ergens veilig. Voeg ze nu toe aan het configuratiebestand /etc/kibana/kibana.yml van Kibana.

Open het bestand met vi of je voorkeurseditor:

  1. sudo vi /etc/kibana/kibana.yml

Ga naar het einde van het bestand met de vi sneltoets SHIFT+G. Plak de drie xpack regels die je hebt gekopieerd aan het einde van het bestand:

/etc/kibana/kibana.yml
. . .

# Specificeert de locatie die moet worden gebruikt voor alle lokaliseerbare strings, datums en nummerformaten.
# Ondersteunde talen zijn de volgende: Engels - en, standaard, Chinees - zh-CN.
#i18n.locale: "en"

xpack.encryptedSavedObjects.encryptionKey: 66fbd85ceb3cba51c0e939fb2526f585
xpack.reporting.encryptionKey: 9358f4bc7189ae0ade1b8deeec7f38ef
xpack.security.encryptionKey: 8f847a594e4a813c4187fa93c884e92b

Houd het bestand open en ga verder naar het volgende gedeelte waar u de netwerkinstellingen van Kibana configureert.

Configuratie van Kibana-netwerken

Om de netwerkinstellingen van Kibana te configureren zodat het beschikbaar is op het privé-IP-adres van uw Elasticsearch-server, zoek de uitgecommentarieerde regel #server.host: "localhost" in /etc/kibana/kibana.yml. De regel staat bijna aan het begin van het bestand. Voeg een nieuwe regel toe na deze met het privé-IP-adres van uw server, zoals hieronder gemarkeerd:

/etc/kibana/kibana.yml
# Kibana wordt bediend door een back-end server. Deze instelling geeft de poort aan om te gebruiken.
#server.port: 5601

# Geeft het adres aan waaraan de Kibana-server zal binden. IP-adressen en hostnamen zijn beide geldige waarden.
# De standaardwaarde is 'localhost', wat meestal betekent dat externe machines geen verbinding kunnen maken.
# Om verbindingen van externe gebruikers toe te staan, stelt u deze parameter in op een niet-loopbackadres.
#server.host: "localhost"
server.host: "your_private_ip"

Vervang uw privé-IP door het uw_privé_ip-adres.

Opslaan en sluit het bestand wanneer je klaar bent met bewerken. Vervolgens moet je de gebruikersnaam en het wachtwoord configureren die Kibana gebruikt om verbinding te maken met Elasticsearch.

Kibana Referenties Configureren

Er zijn twee manieren om de gebruikersnaam en het wachtwoord in te stellen die Kibana gebruikt om zich te authenticeren bij Elasticsearch. De eerste is om het configuratiebestand /etc/kibana/kibana.yml te bewerken en daar de waarden toe te voegen. De tweede methode is om de waarden op te slaan in de keystore van Kibana, wat een geobfusceerd bestand is dat Kibana kan gebruiken om geheimen op te slaan.

We zullen de methode van de keystore in deze handleiding gebruiken, omdat dit het bewerken van het configuratiebestand van Kibana rechtstreeks vermijdt.

Als je er de voorkeur aan geeft om in plaats daarvan het bestand te bewerken, zijn de instellingen die je daarin moet configureren elasticsearch.username en elasticsearch.password.

Als je ervoor kiest om het configuratiebestand te bewerken, sla dan de rest van de stappen in dit gedeelte over.

Om een geheim toe te voegen aan de keystore met behulp van het hulpprogramma kibana-keystore, navigeer eerst naar de /usr/share/kibana/bin map. Voer vervolgens het volgende commando uit om de gebruikersnaam voor Kibana in te stellen:

  1. cd /usr/share/kibana/bin
  2. sudo ./kibana-keystore add elasticsearch.username

Je ontvangt een prompt zoals de volgende:

Username Entry
Enter value for elasticsearch.username: *************

Voer kibana_system in wanneer daarom wordt gevraagd, door de gebruikersnaam te kopiëren en plakken of zorgvuldig in te typen. Elk teken dat u typt, wordt gemaskeerd met een asterisk (*)-teken. Druk op ENTER of RETURN wanneer u klaar bent met het invoeren van de gebruikersnaam.

Herhaal het proces nu, deze keer om het wachtwoord op te slaan. Zorg ervoor dat u het wachtwoord voor de kibana_system gebruiker kopieert dat u hebt gegenereerd in het vorige gedeelte van deze handleiding. Ter referentie, in deze handleiding is het voorbeeldwachtwoord 1HLVxfqZMd7aFQS6Uabl.

Voer de volgende opdracht uit om het wachtwoord in te stellen:

  1. sudo ./kibana-keystore add elasticsearch.password

Wanneer gevraagd, plak het wachtwoord om eventuele transscriptiefouten te vermijden:

Password Entry
Enter value for elasticsearch.password: ********************

Kibana starten

Nu u de netwerkconfiguratie en de xpack beveiligingsinstellingen voor Kibana hebt geconfigureerd, en referenties hebt toegevoegd aan de keystore, moet u deze starten zodat de wijzigingen van kracht worden.

Voer de volgende systemctl-opdracht uit om Kibana opnieuw te starten:

  1. sudo systemctl start kibana.service

Zodra Kibana is gestart, kunt u doorgaan naar het volgende gedeelte van deze handleiding waar u Filebeat op uw Suricata-server configureert om de logs naar Elasticsearch te sturen.

Stap 4 — Filebeat installeren

Nu je Elasticsearch en Kibana processen geconfigureerd zijn met de juiste netwerk- en authenticatie-instellingen, is de volgende stap om Filebeat te installeren en in te stellen op je Suricata-server.

Om te beginnen met het installeren van Filebeat, voeg de Elastic GPG-sleutel toe aan je Suricata-server met de volgende opdracht:

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

Vervolgens maak je een elasticsearch.repo-bestand aan in je /etc/yum/yum.repos.d-directory met de volgende inhoud, gebruikmakend van vi of je favoriete editor:

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

Als je klaar bent met het maken van wijzigingen, sla het bestand op en sluit het af. Installeer nu het Filebeat-pakket met behulp van het dnf-commando:

  1. sudo dnf install --enablerepo=elasticsearch filebeat

Vervolgens moet je Filebeat configureren om verbinding te maken met zowel Elasticsearch als Kibana. Open het configuratiebestand /etc/filebeat/filebeat.yml met vi of je favoriete editor:

  1. sudo vi /etc/filebeat/filebeat.yml

Zoek de Kibana-sectie van het bestand rond regel 100. Voeg een regel toe na de uitgecommentarieerde #host: "localhost:5601"-regel die verwijst naar het privé-IP-adres en poort van je Kibana-instantie:

/etc/filebeat/filebeat.yml
. . .
# Vanaf Beats versie 6.0.0 worden de dashboards geladen via de Kibana API.
# Dit vereist een configuratie van de Kibana-eindpunt.
setup.kibana:

  # Kibana Host
  # Schema en poort kunnen worden weggelaten en zullen worden ingesteld op de standaardwaarden (http en 5601)
  # Als je een extra pad opgeeft, is het schema vereist: http://localhost:5601/path
  # IPv6-adressen moeten altijd worden gedefinieerd als: https://[2001:db8::1]:5601
  #host: "localhost:5601"
  host: "your_private_ip:5601"

. . .

Deze wijziging zorgt ervoor dat Filebeat verbinding kan maken met Kibana om de verschillende SIEM-indices, dashboards en verwerkingspipelines in Elasticsearch aan te maken om uw Suricata-logs te verwerken.

Vervolgens zoekt u de sectie Elasticsearch Output in het bestand rond regel 130 en bewerkt u de instellingen voor hosts, username en password om overeen te komen met de waarden voor uw Elasticsearch-server:

output.elasticsearch:
  # Array van hosts om verbinding mee te maken.
  hosts: ["your_private_ip:9200"]

  # Protocol - ofwel `http` (standaard) of `https`.
  #protocol: "https"

  # Authenticatiegegevens - ofwel API-sleutel of gebruikersnaam/wachtwoord.
  #api_key: "id:api_key"
  username: "elastic"
password: "6kNbsxQGYZ2EQJiqJpgl"

. . .

Vervang op de hosts-regel het privé-IP-adres van uw Elasticsearch-server. Verwijder het #-teken bij het username-veld en laat het ingesteld op de elastic-gebruiker. Wijzig het password-veld van changeme naar het wachtwoord voor de elastic-gebruiker dat u hebt gegenereerd in de Configuratie van Elasticsearch-wachtwoorden-sectie van deze handleiding.

Sla het bestand op en sluit het af wanneer u klaar bent met bewerken. Schakel vervolgens de ingebouwde Suricata-module van Filebeat in met het volgende commando:

  1. sudo filebeat modules enable suricata

Nu Filebeat is geconfigureerd om verbinding te maken met Elasticsearch en Kibana, met de Suricata-module ingeschakeld, is de volgende stap om de SIEM-dashboards en -pipelines in Elasticsearch te laden.

Voer het filebeat setup-commando uit. Het kan enkele minuten duren om alles te laden:

  1. sudo filebeat setup

Zodra het commando is voltooid, zou je output moeten ontvangen zoals het volgende:

Output
Overwriting ILM policy is disabled. Set `setup.ilm.overwrite: true` for enabling. Index setup finished. Loading dashboards (Kibana must be running and reachable) Loaded dashboards Setting up ML using setup --machine-learning is going to be removed in 8.0.0. Please use the ML app instead. See more: https://www.elastic.co/guide/en/machine-learning/current/index.html It is not possble to load ML jobs into an Elasticsearch 8.0.0 or newer using the Beat. Loaded machine learning job configurations Loaded Ingest pipelines

Als er geen fouten zijn, gebruik dan het systemctl commando om Filebeat te starten. Het zal gebeurtenissen van het eve.json logbestand van Suricata naar Elasticsearch sturen zodra het actief is.

  1. sudo systemctl start filebeat.service

Nu je Filebeat, Kibana en Elasticsearch geconfigureerd hebt om je Suricata-logs te verwerken, is de laatste stap in deze handleiding om verbinding te maken met Kibana en de SIEM-dashboards te verkennen.

Stap 5 — Navigeren door de SIEM-dashboards van Kibana

Kibana is de grafische component van de Elastic stack. Je zal Kibana gebruiken met je browser om de gebeurtenis- en waarschuwingsgegevens van Suricata te verkennen. Omdat je Kibana geconfigureerd hebt om alleen beschikbaar te zijn via het privé IP-adres van je Elasticsearch-server, moet je een SSH-tunnel gebruiken om verbinding te maken met Kibana.

Verbinding maken met Kibana via SSH

SSH heeft een optie -L waarmee je netwerkverkeer op een lokaal poort kunt doorsturen via de verbinding naar een extern IP-adres en poort op een server. Je zal deze optie gebruiken om verkeer van je browser naar je Kibana-instantie door te sturen.

Op Linux, macOS en bijgewerkte versies van Windows 10 en hoger kunt u de ingebouwde SSH-client gebruiken om de tunnel te maken. U zult dit commando telkens gebruiken wanneer u verbinding wilt maken met Kibana. U kunt deze verbinding op elk moment sluiten en vervolgens het SSH-commando opnieuw uitvoeren om de tunnel te herstellen.

Voer het volgende commando uit in een terminal op uw lokale desktop of laptopcomputer om de SSH-tunnel naar Kibana te maken:

  1. ssh -L 5601:your_private_ip:5601 sammy@203.0.113.5 -N

De verschillende argumenten voor SSH zijn:

  • De -L-vlag stuurt verkeer door naar uw lokale systeem op poort 5601 naar de externe server.
  • Het uw_prive_ip:5601-gedeelte van het commando geeft de service op uw Elasticsearch-server aan waar uw verkeer naartoe wordt doorgestuurd. In dit geval is die service Kibana. Zorg ervoor dat u het privé-IP-adres van uw Elasticsearch-server vervangt door uw_prive_ip.
  • Het adres 203.0.113.5 is het openbare IP-adres dat u gebruikt om verbinding te maken met en uw server te beheren. Vervang uw Elasticsearch-server’s openbare IP-adres hiermee.
  • De -N-vlag instrueert SSH om geen commando uit te voeren zoals een interactieve /bin/bash-shell, en in plaats daarvan gewoon de verbinding open te houden. Het wordt over het algemeen gebruikt bij het doorsturen van poorten zoals in dit voorbeeld.

Als u de tunnel op elk moment wilt sluiten, drukt u op CTRL+C.

Op Windows zou uw terminal er ongeveer als volgt uit moeten zien:

Let op: U wordt mogelijk gevraagd een wachtwoord in te voeren als u geen SSH-sleutel gebruikt. Typ of plak het in het promptvenster en druk op ENTER of RETURN.

Op macOS en Linux zal uw terminal er ongeveer zo uitzien als op de volgende schermafbeelding:

Zodra u verbinding hebt gemaakt met uw Elasticsearch-server via SSH met de poortdoorsturing, opent u uw browser en gaat u naar http://127.0.0.1:5601. U wordt doorgestuurd naar de inlogpagina van Kibana:

Als uw browser geen verbinding kan maken met Kibana, ontvangt u een bericht zoals het volgende in uw terminal:

Output
channel 3: open failed: connect failed: No route to host

Dit foutbericht geeft aan dat uw SSH-tunnel geen verbinding kan maken met de Kibana-service op uw server. Zorg ervoor dat u het juiste privé-IP-adres voor uw Elasticsearch-server hebt opgegeven en vernieuw de pagina in uw browser.

Log in op uw Kibana-server met elastic als gebruikersnaam en het wachtwoord dat u eerder in deze handleiding hebt gekopieerd voor de gebruiker.

Bladeren door Kibana SIEM-dashboards

Zodra u bent ingelogd op Kibana, kunt u de Suricata-dashboards verkennen die Filebeat voor u heeft geconfigureerd.

In het zoekveld bovenaan de welkomstpagina van Kibana voert u de zoektermen type:dashboard suricata in. Deze zoekopdracht retourneert twee resultaten: de Suricata Events en Suricata Alerts dashboards zoals op de volgende schermafbeelding:

Klik op het [Filebeat Suricata] Gebeurtenissen Overzicht resultaat om het Kibana-dashboard te bezoeken dat een overzicht toont van alle gelogde Suricata-gebeurtenissen:

Om het Suricata Alerts-dashboard te bezoeken, herhaal de zoekopdracht of klik op de Waarschuwingen link die is opgenomen in het Gebeurtenissen-dashboard. Uw pagina zou er ongeveer zo uit moeten zien als de volgende schermafbeelding:

Als u de gebeurtenissen en waarschuwingen die elk dashboard weergeeft wilt inspecteren, scrolt u naar de onderkant van de pagina waar u een tabel vindt die elke gebeurtenis en waarschuwing opsomt. U kunt elke vermelding uitklappen om de oorspronkelijke logboekvermelding van Suricata te bekijken en in detail de verschillende velden zoals bron- en doel-IP’s voor een waarschuwing, het type aanval, Suricata-handtekening-ID en anderen te onderzoeken.

Kibana heeft ook een ingebouwde reeks beveiligingsdashboards die u kunt openen via het menu aan de linkerkant van het browservenster. Navigeer naar het Netwerk dashboard voor een overzicht van gebeurtenissen die op een kaart worden weergegeven, evenals geaggregeerde gegevens over gebeurtenissen op uw netwerk. Uw dashboard zou er ongeveer zo uit moeten zien als de volgende schermafbeelding:

U kunt naar de onderkant van het Netwerk-dashboard scrollen voor een tabel met alle gebeurtenissen die overeenkomen met uw gespecificeerde zoekperiode. U kunt ook elke gebeurtenis gedetailleerd bekijken of een gebeurtenis selecteren om een Kibana-tijdlijn te genereren, die u vervolgens kunt gebruiken om specifieke verkeersstromen, waarschuwingen of community-ID’s te onderzoeken.

Conclusie

In deze tutorial hebt u Elasticsearch en Kibana geïnstalleerd en geconfigureerd op een standalone server. U hebt beide tools geconfigureerd om beschikbaar te zijn op een privé-IP-adres. U hebt ook de authenticatie-instellingen van Elasticsearch en Kibana geconfigureerd met behulp van de xpack beveiligingsmodule die bij elke tool is inbegrepen.

Na het voltooien van de Elasticsearch- en Kibana-configuratiestappen, hebt u ook Filebeat geïnstalleerd en geconfigureerd op uw Suricata-server. U hebt Filebeat gebruikt om de dashboards van Kibana te vullen en Suricata-logs naar Elasticsearch te verzenden.

Tenslotte hebt u een SSH-tunnel gemaakt naar uw Elasticsearch-server en bent u ingelogd op Kibana. U hebt de nieuwe Suricata Events en Alerts-dashboards gevonden, evenals het Network-dashboard.

De laatste tutorial in deze serie zal u begeleiden bij het gebruik van de SIEM-functionaliteit van Kibana om uw Suricata-alerts te verwerken. Hierin zult u ontdekken hoe u cases kunt maken om specifieke alerts te volgen, tijdlijnen om netwerkstromen te correleren, en regels om specifieke Suricata-events te matchen die u gedetailleerder wilt volgen of analyseren.

Source:
https://www.digitalocean.com/community/tutorials/how-to-build-a-siem-with-suricata-and-elastic-stack-on-rocky-linux-8