Introductie
De vorige tutorials in deze serie hebben je door het proces geleid van het installeren en configureren van Suricata. Ze hebben ook uitgelegd hoe je Filebeat kunt gebruiken om meldingen van je Suricata-server naar een Elastic Stack-server te sturen, om te worden gebruikt met de ingebouwde functionaliteit voor beveiligingsinformatie en gebeurtenissen (SIEM).
In deze laatste tutorial in de serie maak je aangepaste Kibana-regels en genereer je meldingen binnen de SIEM-dashboards van Kibana. Zodra je regels hebt ingesteld en begrijpt waar en hoe je Suricata-logs kunt filteren met behulp van Kibana, zul je ontdekken hoe je gevallen kunt maken en beheren met behulp van de tijdsanalysetools van Kibana.
Tegen het einde van deze tutorial heb je een SIEM-systeem dat je kunt gebruiken om beveiligingsgebeurtenissen op alle servers in je netwerk te volgen en te onderzoeken.
Vereisten
Als u deze zelfstudie serie hebt gevolgd, zou u al een server moeten hebben met minimaal 4 GB RAM en 2 CPU’s, en een niet-root gebruiker geconfigureerd. Voor de doeleinden van deze handleiding kunt u dit instellen door onze initiële serverinstallatiehandleidingen te volgen voor Ubuntu 20.04, Debian 11, of Rocky Linux 8, afhankelijk van uw besturingssysteem naar keuze.
U heeft ook Suricata geïnstalleerd en draaiend nodig op uw server. Als u Suricata op uw server moet installeren, kunt u dit doen met behulp van een van de volgende handleidingen, afhankelijk van uw besturingssysteem:
- Ubuntu 20.04: Hoe Suricata installeren op Ubuntu 20.04
- Debian 11: Hoe Suricata installeren op Debian 11
- Rocky Linux 8: Hoe Suricata installeren op Rocky Linux 8
U heeft ook een server nodig waarop de Elastic Stack draait en geconfigureerd is zodat Filebeat logs van uw Suricata-server naar Elasticsearch kan sturen. Als u een Elastic Stack-server moet maken, gebruik dan een van de handleidingen uit de volgende lijst die overeenkomt met uw besturingssysteem:
- Ubuntu 20.04: Hoe u een Security Information and Event Management (SIEM) systeem kunt bouwen met Suricata en de Elastic Stack op Ubuntu 20.04
- Debian 11: Hoe u een Security Information and Event Management (SIEM) systeem kunt bouwen met Suricata en de Elastic Stack op Debian 11
- Rocky Linux 8: Hoe u een Security Information and Event Management (SIEM) systeem kunt bouwen met Suricata en de Elastic Stack op Rocky Linux 8
Zorg ervoor dat u kunt inloggen op Kibana op uw Elasticsearch-server en dat er gebeurtenissen zijn in de verschillende Suricata-waarschuwingen en gebeurtenisdashboards.
Zodra u alle vereisten op hun plaats hebt, opent u een SSH-tunnel naar uw Kibana-server en logt u in op Kibana met uw browser met de referenties die u hebt gegenereerd in de vorige handleiding.
Stap 1 — API-sleutels inschakelen in Elasticsearch
Vooraleer je regels, waarschuwingen en tijdlijnen kunt maken in Kibana, moet je een xpack
beveiligingsmodule instelling inschakelen.
Open je /etc/elasticsearch/elasticsearch.yml
bestand met nano
of je favoriete editor.
Voeg de volgende gemarkeerde regel toe aan het einde van het bestand:
. . .
discovery.type: single-node
xpack.security.enabled: true
xpack.security.authc.api_key.enabled: true
Sla het bestand op en sluit het wanneer je klaar bent met bewerken. Als je nano
gebruikt, kan je dit doen met CTRL+X
, vervolgens Y
en ENTER
om te bevestigen.
Herstart nu Elasticsearch zodat de nieuwe instelling van kracht wordt.
Je bent nu klaar om regels te configureren, waarschuwingen te onderzoeken en tijdlijnen en cases te maken in Kibana.
Stap 2 — Regels toevoegen aan Kibana
Om de SIEM-functionaliteit van Kibana te gebruiken met Suricata-eventgegevens, moet je regels maken die waarschuwingen genereren over inkomende gebeurtenissen. Bezoek het Regels Dashboard in de beveiligingsapp-pagina van Kibana om regels te maken of te importeren.
Voor de doeleinden van deze handleiding zullen we de volgende handtekeningen gebruiken om verkeer te detecteren dat is gericht op een server op onjuiste poorten (SSH-, HTTP- en TLS-verkeer respectievelijk):
alert ssh any any -> 203.0.113.5 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000000;)
alert ssh any any -> 2001:DB8::1/32 !22 (msg:"SSH TRAFFIC on non-SSH port"; classtype: misc-attack; target: dest_ip; sid:1000001;)
alert http any any -> 203.0.113.5 !80 (msg:"HTTP REQUEST on non-HTTP port"; classtype:misc-activity; sid:1000002;)
alert http any any -> 2001:DB8::1/32 !80 (msg:"HTTP REQUEST on non-HTTP port"; classtype:misc-activity; sid:1000003;)
alert tls any any -> 203.0.113.5 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; classtype:misc-activity; sid:1000004;)
alert tls any any -> 2001:DB8::1/32 !443 (msg:"TLS TRAFFIC on non-TLS HTTP port"; classtype:misc-activity; sid:1000005;)
Als je je eigen handtekeningen gebruikt, of die van een regelset, zorg er dan voor dat je waarschuwingen kunt genereren en dat je toegang hebt tot de bijbehorende gebeurtenissen in de standaard Suricata-dashboards in Kibana.
Bezoek nu de Regel pagina in de Beveiligingsapplicatie van Kibana http://localhost:5601/app/security/rules/. Klik op de knop Nieuwe regel maken rechtsboven op de pagina.
Zorg ervoor dat het kaarttype Aangepaste query geselecteerd is. Scroll naar het invoerveld Aangepaste query en plak het volgende erin:
rule.id: "1000000" or rule.id :"1000001"
Zorg ervoor dat de waarden van je rule.id
overeenkomen met de sid
waarde van Suricata voor de aanval of aanvallen waarover je een melding wilt ontvangen.
Verander de keuzelijst van Query snel voorbeeld naar Afgelopen maand en klik dan op Voorbeeldresultaten. Als je overeenkomende gebeurtenissen hebt in je Suricata-logs, zal de pagina in plaats daarvan worden bijgewerkt met een grafiek die meldingen van de afgelopen maand laat zien. Je pagina zou er ongeveer zo uit moeten zien als de volgende screenshot:
Klik op Doorgaan om door te gaan naar het toevoegen van een naam aan het veld Regelnaam, wat vereist is voor elke regel die je toevoegt. Voeg een naam toe aan het veld Regelnaam. In dit voorbeeld gebruiken we de berichtbeschrijving van de Suricata-regel SSH TRAFFIC on non-SSH port
. Voeg ook een beschrijving toe voor de regel. We zullen Controleren op SSH-verbindingspogingen op niet-standaard poorten
in dit voorbeeld gebruiken.
Je kunt ook de sectie Geavanceerde instellingen uitklappen en details over de regel toevoegen. Bijvoorbeeld, je zou een uitleg kunnen toevoegen over hoe om te gaan met een melding die door de regel wordt gegenereerd, of een link naar artikelen van beveiligingsonderzoekers over een bepaald type aanval kunnen toevoegen.
Wanneer u klaar bent met het toevoegen van de regelnaam, beschrijving en optionele extra velden, klikt u op Doorgaan om door te gaan naar stap 3 van het maken van de regel.
Laat de volgende sectie instellingen voor Geplande regel staan met hun standaardwaarden en klik op Doorgaan.
Tenslotte, op de Regelacties stap, klik op Regel maken & activeren.
U wordt doorgestuurd naar een nieuwe pagina met details over de regel:
Opmerking: Het kan enkele minuten duren voordat alertgegevens in eerste instantie worden weergegeven. Deze vertraging komt doordat de standaardschema van de regel is om elke 5 minuten uit te voeren.
Als er andere Suricata-regels zijn waarover u meldingen wilt ontvangen, herhaal dan de bovenstaande stappen en vervang de sid
van de handtekening in het aangepaste queryveld rule.id
van Kibana.
Zodra u een regel of regels hebt ingesteld, bent u klaar om door te gaan naar de volgende stap waarbij u meldingen bekijkt en een zaak of zaken maakt om deze te beheren.
Stap 3 — Het maken van een tijdslijn om SSH-verkeersgerelateerde meldingen bij te houden
Nu je een regel of regels geconfigureerd hebt om meldingen te genereren in de SIEM-app van Kibana, heb je een manier nodig om meldingen verder te groeperen en te beheren. Om te beginnen, bezoek het dashboard van Kibana’s meldingen: http://127.0.0.1:5601/app/security/alerts.
Zorg ervoor dat je wat ongeldig verkeer hebt gegenereerd dat overeenkomt met de Suricata-handtekening of handtekeningen die je gebruikt. Je zou bijvoorbeeld de Suricata-regel met het voorbeeld sid:1000000
kunnen triggeren door een opdracht uit te voeren zoals de volgende vanaf je lokale machine:
Deze opdracht zal proberen verbinding te maken met je server via SSH op poort 80, in plaats van de standaardpoort 22 en zou een melding moeten triggeren. Het kan een paar minuten duren voordat de melding verschijnt in Kibana, aangezien deze moet worden verwerkt door Elasticsearch en de regel die je hebt gemaakt in Kibana.
Vervolgens voeg je het veld comnunity_id
toe aan de tabel met meldingen die onderaan de pagina wordt weergegeven. Herinner je je nog uit de eerste tutorial dat dit veld wordt gegenereerd door Suricata en de unieke IP-adressen en poorten vertegenwoordigt die zijn opgenomen in een netwerkstroom. Klik op de Velden-knop en voer in het modale dialoogvenster dat verschijnt network.community_id
in en vink vervolgens het selectievakje naast de veldnaam aan:
Sluit het modale venster en het veld wordt toegevoegd aan de tabel met meldingen. Houd nu de muisaanwijzer boven een van de meldingen met dezelfde community_id
-waarde en klik op het pictogram Toevoegen aan tijdslijnonderzoek. Hiermee wordt ervoor gezorgd dat alle meldingen die dezelfde community_id
delen die Suricata aan het evenement heeft toegevoegd, worden toegevoegd aan een tijdslijn voor verder onderzoek:
Klik vervolgens op de Naamloze Tijdlijn link onderaan links van uw browser. Deze link brengt u naar een pagina die alleen meldingen weergeeft met het Suricata community_id
veld dat u wilt onderzoeken.
De tijdlijn pagina toont u meer details over individuele pakketten die geassocieerd zijn met een melding of netwerkstroom. U kunt de tijdlijn gebruiken om een beter idee te krijgen van wanneer een verdachte netwerkstroom begon, waar het vandaan kwam, en hoe lang het duurde.
Klik op de Alle gegevensbronnen knop aan de rechterkant van de pagina en selecteer de Detectie Meldingen knop, klik dan op Opslaan. Deze optie zal de tijdlijn beperken om alleen meldingen weer te geven die Kibana genereert. Zonder deze optie zullen ook de meldingen van Suricata in de tijdlijn worden opgenomen.
Om uw nieuwe tijdlijn op te slaan, klikt u op het potloodpictogram linksboven op de tijdlijn pagina. De volgende screenshot markeert waar het potloodpictogram te vinden is, en de Alle gegevensbronnen knop:
U kunt tekst toevoegen aan het beschrijvingsveld als er aanvullende informatie is die u aan de tijdlijn wilt toevoegen. Zodra u klaar bent met het bewerken van de tijdlijnnaam en -beschrijving, klikt u op de Opslaan knop rechtsonder in het modale dialoogvenster.
Herhaal de bovenstaande stappen om tijdlijnen te maken voor andere meldingen die u later meer in detail wilt onderzoeken.
In de volgende stap zult u uw tijdlijnweergaven van gebeurtenissen gebruiken om meldingen aan de Cases app van Kibana in de SIEM-suite van tools te koppelen.
Stap 4 – Het maken en beheren van SIEM-gevallen
In de vorige stap heb je een tijdlijn gemaakt om individuele waarschuwingen en pakketten te groeperen op basis van het veld community_id
van Suricata. In dit gedeelte van de handleiding maak je een geval om de waarschuwingen in je tijdlijn bij te houden en te beheren.
Om een nieuw geval vanuit je tijdlijn te maken, zorg ervoor dat je op een tijdlijnpagina in je browser bent. Klik op de knop Aan geval koppelen rechtsboven op de tijdlijnpagina, en vervolgens op de knop Koppelen aan nieuw geval in de lijst die verschijnt.
Je wordt doorgestuurd naar een pagina waar je informatie kunt invoeren over het incident dat je onderzoekt. In het volgende voorbeeld screenshot is het geval onze voorbeeld SSH-verkeer op niet-SSH-poort waarschuwingen:
Vul de velden in met een beschrijvende naam en optionele tag(s). In dit voorbeeld is de naam van het geval SSH VERKEER op niet-SSH-poort vanaf 203.0.113.5
, aangezien dat het specifieke type verkeer en de host is die we onderzoeken. Met veel gebeurtenissen om te onderzoeken in je SIEM-systeem, zal een benamingsschema zoals dit je helpen bij het bijhouden van gevallen, tijdlijnen en waarschuwingen, aangezien de naam overeenkomt met de Kibana-waarschuwing en het berichtenveld van de Suricata-handtekening.
Ga naar de onderkant van de pagina en klik op de Case aanmaken knop. Je browser zal op een pagina zijn die de opgeslagen case laat zien. Je kunt opmerkingen toevoegen in Markdown-formaat met aanvullende informatie, en ook de case bewerken vanaf deze pagina.
Vervolgens klik je op de link in de beschrijving om naar de tijdlijn van de case te gaan die je in de vorige stap van deze handleiding hebt toegevoegd.
Voor elke alert die je in de case wilt opnemen, klik je op het Meer acties icoon op de alert. Klik op Toevoegen aan bestaande case.
Klik op de casenaam in het pop-upvenster om de alert aan de case toe te voegen. Zorg ervoor dat je de case selecteert die overeenkomt met de tijdlijn en de alerts die je onderzoekt. Herhaal het toevoegen van elke alert in de lijst aan de bestaande case.
Bezoek nu opnieuw de Cases app in Kibana](http://localhost:5601/app/security/cases) met behulp van het navigatiemenu aan de linkerkant van de pagina. Klik op je case en let op hoe de alerts die je hebt toegevoegd worden vermeld in de casusdetails:
Vanaf hier kun je naar de onderkant van de case scrollen en eventuele aanvullende informatie toevoegen die je wilt. Bijvoorbeeld, eventuele stappen die je hebt genomen om een alert of alerts te onderzoeken, configuratiewijzigingen aan Suricata zoals een nieuwe of bewerkte regel, escalatie naar een ander teamlid of iets anders wat relevant is voor de case.
Zodra je comfortabel bent met het aanmaken van cases voor de verschillende soorten alerts die je wilt bijhouden, kun je nu de SIEM-tools van Kibana gebruiken om het onderzoeken van elke alert op één centrale locatie te organiseren en coördineren.
Conclusie
In deze tutorial heb je je bestaande Suricata en Elastic Stack SIEM-systeem uitgebreid door regels toe te voegen aan Kibana die waarschuwingen genereren over specifiek verkeer van interesse. Je hebt ook een tijdbalk of tijdbalken gemaakt om sets waarschuwingen te groeperen op basis van hun community_id
. Ten slotte heb je een zaak gemaakt en je tijdbalk eraan gekoppeld, samen met de individuele waarschuwingen van interesse.
Met dit SIEM-systeem kun je nu beveiligingsgebeurtenissen op al je systemen bijhouden op vrijwel elke schaal. Naarmate je meer vertrouwd raakt met Suricata en de waarschuwingen die het genereert in je Kibana SIEM volgt, kun je de Suricata-waarschuwingen aanpassen en de standaardacties die het onderneemt aanpassen aan je specifieke netwerk.
Voor meer informatie over Kibana’s SIEM-tools, bezoek de officiële Elastic Security-documentatie. De handleidingen daar leggen veel gedetailleerder uit hoe je Regels, Waarschuwingen, Tijdbalken en Zaken kunt gebruiken.
Voor een meer lichtgewicht SIEM-interface ben je misschien ook geïnteresseerd in EveBox, dat alle Suricata-gebeurtenisgegevens en SIEM-functionaliteit op één pagina presenteert.