Hoe Suricata installeren op CentOS 8 Stream

Inleiding

Suricata is een tool voor Netwerkbeveiligingsmonitoring (NSM) die sets van door de gemeenschap gecreëerde en door gebruikers gedefinieerde handtekeningen (ook wel regels genoemd) gebruikt om netwerkverkeer te onderzoeken en te verwerken. Suricata kan loggebeurtenissen genereren, waarschuwingen activeren en verkeer laten vallen wanneer het verdachte pakketten of verzoeken detecteert naar een willekeurig aantal verschillende services die op een server worden uitgevoerd.

Standaard werkt Suricata als een passief Intrusiedetectiesysteem (IDS) om verdacht verkeer op een server of netwerk te scannen. Het genereert en logt waarschuwingen voor verder onderzoek. Het kan ook worden geconfigureerd als een actief Intrusiepreventiesysteem (IPS) om verkeer dat overeenkomt met specifieke regels te loggen, te waarschuwen en volledig te blokkeren.

U kunt Suricata implementeren op een gateway-host in een netwerk om al het inkomende en uitgaande netwerkverkeer van andere systemen te scannen, of u kunt het lokaal uitvoeren op individuele machines in beide modi.

In deze tutorial leert u hoe u Suricata installeert en hoe u enkele van de standaardinstellingen ervan op Centos 8 Stream aanpast om aan uw behoeften te voldoen. U leert ook hoe u bestaande sets handtekeningen (meestal aangeduid als regelsets) downloadt die Suricata gebruikt om netwerkverkeer te scannen. Ten slotte leert u hoe u kunt testen of Suricata correct werkt wanneer het verdachte verzoeken en gegevens in een respons detecteert.

Vereisten

Afhankelijk van uw netwerkconfiguratie en hoe u van plan bent Suricata te gebruiken, heeft u mogelijk meer of minder CPU en RAM nodig voor uw server. Over het algemeen moet u meer middelen toewijzen aan Suricata naarmate u meer verkeer van plan bent te inspecteren. In een productieomgeving is het raadzaam om te beginnen met minimaal 2 CPU’s en 4 of 8 GB RAM. Van daaruit kunt u de middelen opschalen volgens de prestaties van Suricata en de hoeveelheid verkeer die u moet verwerken.

Als u van plan bent Suricata te gebruiken om de server te beschermen waarop het draait, heeft u het volgende nodig:

Als u echter van plan bent Suricata te gebruiken op een gateway-host om meerdere servers te bewaken en te beschermen, moet u ervoor zorgen dat de netwerkconfiguratie van de host correct is ingesteld.

Als u DigitalOcean gebruikt, kunt u deze handleiding volgen over Hoe u een droplet configureert als een VPC-gateway. Deze instructies zouden ook moeten werken voor de meeste CentOS-, Fedora- en andere op RedHat gebaseerde servers.

Stap 1 — Suricata installeren

Om te beginnen met het installeren van Suricata, moet je de software repository-informatie van de Open Information Security Foundation (OISF) toevoegen aan je CentOS-systeem. Je kunt het dnf copr enable-commando gebruiken om dit te doen. Je moet ook het Extra Packages for Enterprise Linux (EPEL) -repository toevoegen.

Om de subopdracht Gemeenschapsprojecten (copr) voor de dnf -pakkettool in te schakelen, voer je het volgende uit:

  1. sudo dnf install 'dnf-command(copr)'

Je wordt gevraagd om enkele extra afhankelijkheden te installeren, evenals om de GPG-sleutel voor de CentOS Linux-distributie te accepteren. Druk telkens op y en ENTER om het installeren van het copr-pakket te voltooien.

Voer vervolgens het volgende commando uit om de OISF-repository aan je systeem toe te voegen en de lijst met beschikbare pakketten bij te werken:

  1. sudo dnf copr enable @oisf/suricata-6.0

Druk op y en ENTER wanneer je wordt gevraagd om te bevestigen dat je de repository wilt toevoegen.

Voeg nu het epel-release-pakket toe, waarmee enkele extra afhankelijkheidspakketten beschikbaar worden gemaakt voor Suricata:

  1. sudo dnf install epel-release

Wanneer je wordt gevraagd om de GPG-sleutel te importeren, druk je op y en ENTER om te accepteren.

Nu je de vereiste software repositories hebt ingeschakeld, kun je het suricata-pakket installeren met het dnf-commando:

  1. sudo dnf install suricata

Wanneer u wordt gevraagd om de GPG-sleutel voor het OISF-opslagplaats toe te voegen, drukt u op y en ENTER. Het pakket en de bijbehorende afhankelijkheden worden nu gedownload en geïnstalleerd.

Vervolgens schakelt u de suricata.service in, zodat deze wordt uitgevoerd wanneer uw systeem opnieuw wordt opgestart. Gebruik het systemctl-commando om het in te schakelen:

  1. sudo systemctl enable suricata.service

U zou output moeten ontvangen zoals het volgende, wat aangeeft dat de service is ingeschakeld:

Output
Created symlink /etc/systemd/system/multi-user.target.wants/suricata.service → /usr/lib/systemd/system/suricata.service.

Voordat u doorgaat naar het volgende gedeelte van deze handleiding, waarin wordt uitgelegd hoe u Suricata configureert, stopt u de service met behulp van systemctl:

  1. sudo systemctl stop suricata.service

Het stoppen van Suricata zorgt ervoor dat wanneer u het configuratiebestand bewerkt en test, eventuele wijzigingen die u aanbrengt worden gevalideerd en geladen wanneer Suricata opnieuw wordt gestart.

Stap 2 — Suricata voor de eerste keer configureren

Het Suricata-pakket van de OISF-opslagplaatsen wordt geleverd met een configuratiebestand dat een breed scala aan gebruiksscenario’s behandelt. De standaardmodus voor Suricata is IDS-modus, dus er wordt geen verkeer verwijderd, alleen gelogd. Het is een goed idee om deze modus op de standaardwaarde te laten staan terwijl u Suricata leert kennen. Nadat u Suricata hebt geconfigureerd en geïntegreerd in uw omgeving, en een goed idee hebt van de soorten verkeer waarover het u zal waarschuwen, kunt u ervoor kiezen om de IPS-modus in te schakelen.

De standaardconfiguratie heeft echter nog een paar instellingen die u mogelijk moet aanpassen, afhankelijk van uw omgeving en behoeften.

(Optioneel) Activeren van Community Flow ID

Suricata kan een veld Community ID bevatten in zijn JSON-uitvoer om het gemakkelijker te maken individuele gebeurtenisrecords te koppelen aan records in datasets die zijn gegenereerd door andere tools.

Als je van plan bent Suricata te gebruiken met andere tools zoals Zeek of Elasticsearch, is het nu toevoegen van de Community ID een goed idee.

Om de optie in te schakelen, open je /etc/suricata/suricata.yaml met vi of je voorkeurseditor:

  1. sudo vi /etc/suricata/suricata.yaml

Zoek regel 120, die leest # Community Flow ID. Als je vi gebruikt, typ dan 120gg om direct naar de regel te gaan. Onder die regel staat de sleutel community-id. Stel deze in op true om de instelling in te schakelen:

/etc/suricata/suricata.yaml
. . .
      # Community Flow ID
      # Voegt een 'community_id'-veld toe aan EVE-records. Deze zijn bedoeld om
      # records een voorspelbaar stroom-ID te geven die kan worden gebruikt om records te koppelen aan
      # uitvoer van andere tools zoals Zeek (Bro).
      #
      # Neemt een 'seed' die hetzelfde moet zijn over sensoren en tools
      # om de id minder voorspelbaar te maken.

      # schakel de community id-functie in/uit.
      community-id: true
. . .

Nu, wanneer je gebeurtenissen onderzoekt, zullen ze een ID hebben zoals 1:S+3BA2UmrHK0Pk+u3XH78GAFTtQ= die je kunt gebruiken om records te correleren over verschillende NMS-tools.

Sluit en bewaar het bestand /etc/suricata/suricata.yaml. Als je vi gebruikt, kun je dit doen met ESC en vervolgens :x dan ENTER om het bestand op te slaan en af ​​te sluiten.

Bepalen welke netwerkinterface(s) te gebruiken

Je moet mogelijk de standaardnetwerkinterface of interfaces overschrijven die je wilt laten controleren op verkeer door Suricata. Het configuratiebestand dat bij het OISF Suricata-pakket wordt geleverd, controleert standaard het verkeer op een apparaat genaamd eth0. Als je systeem een ​​andere standaardnetwerkinterface gebruikt, of als je het verkeer op meer dan één interface wilt controleren, moet je deze waarde wijzigen.

Om de apparaatnaam van je standaardnetwerkinterface te bepalen, kun je het ip-commando als volgt gebruiken:

  1. ip -p -j route show default

De -p-vlag formatteert de uitvoer zodat deze leesbaarder is, en de -j-vlag geeft de uitvoer weer als JSON.

Je zou uitvoer moeten ontvangen zoals het volgende:

Output
[ { "dst": "default", "gateway": "203.0.113.254", "dev": "eth0", "protocol": "static", "metric": 100, "flags": [ ] } ]

De dev-regel geeft het standaardapparaat aan. In deze voorbeelduitvoer is het apparaat de gemarkeerde eth0-interface. Uw uitvoer kan een apparaatnaam zoals ens... of eno... laten zien. Wat de naam ook is, maak er een notitie van.

Nu kunt u de configuratie van Suricata bewerken en de interface-naam controleren of wijzigen. Open het configuratiebestand /etc/suricata/suricata.yaml met vi of uw voorkeurseditor:

  1. sudo vi /etc/suricata/suricata.yaml

Blader door het bestand totdat u bij een regel komt die af-packet: leest, ongeveer op regel 580. Als u vi gebruikt, kunt u ook direct naar de regel gaan door 580gg in te voeren. Onder die regel staat de standaardinterface die Suricata zal gebruiken om het verkeer te inspecteren. Bewerk de regel om overeen te komen met uw interface, zoals het gemarkeerde voorbeeld dat volgt:

/etc/suriata/suricata.yaml
# Linux high speed capture support
af-packet:
  - interface: eth0
    # Aantal ontvangsthreads. "auto" gebruikt het aantal kernen
    #threads: auto
    # Standaard cluster-ID. AF_PACKET verdeelt pakketten op basis van de stroom.
    cluster-id: 99
. . .

Als u het verkeer op extra interfaces wilt inspecteren, kunt u meer - interface: eth... YAML-objecten toevoegen. Om bijvoorbeeld een apparaat met de naam enp0s1 toe te voegen, scrolt u naar de onderkant van de af-packet-sectie, ongeveer op regel 650. Voeg een nieuwe interface toe door deze voor de - interface: default-sectie in te voegen, zoals in het volgende gemarkeerde voorbeeld:

/ec/suricata/suricata.yaml
    # Voor eBPF en XDP setup inclusief bypass, filter en load balancing, zie
    # de doc/userguide/capture-hardware/ebpf-xdp.rst voor meer informatie.

  - interface: enp0s1
cluster-id: 98

  - interface: default
    #threads: auto
    #use-mmap: nee
    #tpacket-v3: ja

Zorg ervoor dat je een unieke cluster-id waarde kiest voor elk - interface object.

Houd je editor open en ga door naar het volgende gedeelte waar je live regelherladen gaat configureren. Als je die instelling niet wilt inschakelen, dan kun je het /etc/suricata/suricata.yaml bestand opslaan en sluiten. Als je vi gebruikt, kun je dit doen met ESC, dan :x en ENTER om op te slaan en af te sluiten.

Configuratie van Live Regelherladen

Suricata ondersteunt live regelherladen, wat betekent dat je regels kunt toevoegen, verwijderen en bewerken zonder het lopende Suricata proces te hoeven herstarten. Om de live herlaad optie in te schakelen, scroll naar de onderkant van het configuratiebestand en voeg de volgende regels toe:

/etc/suricata/suricata.yaml
. . .

detect-engine:
  - rule-reload: true

Met deze instelling op zijn plaats, kun je het SIGUSR2 systeemsignaal naar het lopende proces sturen, en Suricata zal alle gewijzigde regels opnieuw in het geheugen laden.

A command like the following will notify the Suricata process to reload its rulesets, without restarting the process:

  1. sudo kill -usr2 $(pidof suricata)

Het deel $(pidof suricata) van de opdracht roept een subshell aan en zoekt het proces-ID van de actieve Suricata-daemon. Het begin van de opdracht sudo kill -usr2 gebruikt het hulpprogramma kill om het SIGUSR2-signaal naar het proces-ID te sturen dat wordt gerapporteerd door de subshell.

Je kunt deze opdracht altijd uitvoeren wanneer je suricata-update uitvoert of wanneer je je eigen aangepaste regels toevoegt of bewerkt.

Sla het bestand /etc/suricata/suricata.yaml op en sluit het af. Als je vi gebruikt, kun je dit doen met ESC, gevolgd door :x en ENTER om te bevestigen.

Stap 3 — Bijwerken van Suricata-regelsets

Op dit punt in de tutorial zou je bij het starten van Suricata een waarschuwingsbericht ontvangen zoals het volgende in de logs, dat er geen geladen regels zijn:

Output
<Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /var/lib/suricata/rules/suricata.rules

Standaard bevat het Suricata-pakket een beperkte set detectieregels (in de map /etc/suricata/rules), dus Suricata inschakelen op dit punt zou slechts een beperkte hoeveelheid slecht verkeer detecteren.

Suricata bevat een hulpprogramma genaamd suricata-update dat regelsets van externe providers kan ophalen. Voer het als volgt uit om een bijgewerkte regelset te downloaden voor je Suricata-server:

  1. sudo suricata-update

Je zou output zoals het volgende moeten ontvangen:

Output
19/10/2021 -- 19:31:03 - <Info> -- Using data-directory /var/lib/suricata. 19/10/2021 -- 19:31:03 - <Info> -- Using Suricata configuration /etc/suricata/suricata.yaml 19/10/2021 -- 19:31:03 - <Info> -- Using /usr/share/suricata/rules for Suricata provided rules. . . . 19/10/2021 -- 19:31:03 - <Info> -- No sources configured, will use Emerging Threats Open 19/10/2021 -- 19:31:03 - <Info> -- Fetching https://rules.emergingthreats.net/open/suricata-6.0.3/emerging.rules.tar.gz. 100% - 3062850/3062850 . . . 19/10/2021 -- 19:31:06 - <Info> -- Writing rules to /var/lib/suricata/rules/suricata.rules: total: 31011; enabled: 23649; added: 31011; removed 0; modified: 0 19/10/2021 -- 19:31:07 - <Info> -- Writing /var/lib/suricata/rules/classification.config 19/10/2021 -- 19:31:07 - <Info> -- Testing with suricata -T. 19/10/2021 -- 19:31:32 - <Info> -- Done.

De gemarkeerde regels geven aan dat suricata-update de gratis Emerging Threats ET Open-regels heeft opgehaald en ze heeft opgeslagen in het bestand /var/lib/suricata/rules/suricata.rules van Suricata. Het geeft ook aan hoeveel regels er zijn verwerkt, in dit voorbeeld werden er 31011 toegevoegd en daarvan waren er 23649 ingeschakeld.

Providers van regelsets toevoegen

De suricata-update-tool kan regels ophalen van verschillende gratis en commerciële aanbieders van regelsets. Sommige regelsets, zoals de ET Open-set die je al hebt toegevoegd, zijn gratis beschikbaar, terwijl andere een betaald abonnement vereisen.

Je kunt de standaard set van regelproviders weergeven met de list-sources-vlag voor suricata-update zoals dit:

  1. sudo suricata-update list-sources

Je ontvangt dan een lijst van bronnen zoals de volgende:

Output
. . . 19/10/2021 -- 19:27:34 - <Info> -- Adding all sources 19/10/2021 -- 19:27:34 - <Info> -- Saved /var/lib/suricata/update/cache/index.yaml Name: et/open Vendor: Proofpoint Summary: Emerging Threats Open Ruleset License: MIT . . .

Als je bijvoorbeeld de regelset tgreen/hunting wilt toevoegen, kun je deze inschakelen met het volgende commando:

  1. sudo suricata-update enable-source tgreen/hunting

Voer vervolgens opnieuw suricata-update uit en de nieuwe set regels wordt toegevoegd, naast de bestaande ET Open-regels en eventuele andere die je hebt gedownload.

Stap 4 — Valideren van de configuratie van Suricata

Nu je de configuratiebestand van Suricata hebt bewerkt om de optionele Community ID op te nemen, de standaard netwerkinterface te specificeren en het live herladen van regels hebt ingeschakeld, is het een goed idee om de configuratie te testen.

Suricata heeft een ingebouwde testmodus die het configuratiebestand en eventuele opgenomen regels controleert op geldigheid. Valideer je wijzigingen uit de vorige sectie met behulp van de -T vlag om Suricata in de testmodus uit te voeren. De -v vlag zal wat aanvullende informatie afdrukken, en de -c vlag vertelt Suricata waar het zijn configuratiebestand kan vinden:

  1. sudo suricata -T -c /etc/suricata/suricata.yaml -v

De test kan enige tijd in beslag nemen, afhankelijk van de hoeveelheid CPU die je hebt toegewezen aan Suricata en het aantal regels dat je hebt toegevoegd, dus wees bereid om een ​​minuut of twee te wachten totdat deze is voltooid.

Met de standaard ET Open-regelset zou je output moeten ontvangen zoals het volgende:

Output
21/10/2021 -- 15:00:40 - <Info> - Running suricata under test mode 21/10/2021 -- 15:00:40 - <Notice> - This is Suricata version 6.0.3 RELEASE running in SYSTEM mode 21/10/2021 -- 15:00:40 - <Info> - CPUs/cores online: 2 21/10/2021 -- 15:00:40 - <Info> - fast output device (regular) initialized: fast.log 21/10/2021 -- 15:00:40 - <Info> - eve-log output device (regular) initialized: eve.json 21/10/2021 -- 15:00:40 - <Info> - stats output device (regular) initialized: stats.log 21/10/2021 -- 15:00:46 - <Info> - 1 rule files processed. 23879 rules successfully loaded, 0 rules failed 21/10/2021 -- 15:00:46 - <Info> - Threshold config parsed: 0 rule(s) found 21/10/2021 -- 15:00:47 - <Info> - 23882 signatures processed. 1183 are IP-only rules, 4043 are inspecting packet payload, 18453 inspect application layer, 107 are decoder event only 21/10/2021 -- 15:01:13 - <Notice> - Configuration provided was successfully loaded. Exiting. 21/10/2021 -- 15:01:13 - <Info> - cleaning up signature grouping structure... complete

Als er een fout is in je configuratiebestand, zal de testmodus een specifieke foutcode en bericht genereren dat je kunt gebruiken om te helpen bij het oplossen van problemen. Bijvoorbeeld, het opnemen van een regelbestand dat niet bestaat, genaamd test.rules, zou een fout genereren zoals het volgende:

Output
21/10/2021 -- 15:10:15 - <Info> - Running suricata under test mode 21/10/2021 -- 15:10:15 - <Notice> - This is Suricata version 6.0.3 RELEASE running in SYSTEM mode 21/10/2021 -- 15:10:15 - <Info> - CPUs/cores online: 2 21/10/2021 -- 15:10:15 - <Info> - eve-log output device (regular) initialized: eve.json 21/10/2021 -- 15:10:15 - <Info> - stats output device (regular) initialized: stats.log 21/10/2021 -- 15:10:21 - <Warning> - [ERRCODE: SC_ERR_NO_RULES(42)] - No rule files match the pattern /var/lib/suricata/rules/test.rules

Met die fout zou je vervolgens je configuratiebestand kunnen bewerken om het juiste pad op te nemen, of ongeldige variabelen en configuratieopties kunnen corrigeren.

Zodra uw Suricata testmodus succesvol is voltooid, kunt u doorgaan naar de volgende stap, namelijk het starten van Suricata in daemonmodus.

Stap 5 — Suricata uitvoeren

Nu u een geldige Suricata-configuratie en regelset heeft, kunt u de Suricata-server starten. Voer het volgende systemctl-commando uit:

  1. sudo systemctl start suricata.service

U kunt de status van de service controleren met het systemctl status-commando:

  1. sudo systemctl status suricata.service

U zou output moeten ontvangen zoals het volgende:

Output
● suricata.service - Suricata Intrusion Detection Service Loaded: loaded (/usr/lib/systemd/system/suricata.service; enabled; vendor preset: disabled) Active: active (running) since Thu 2021-10-21 18:22:56 UTC; 1min 57s ago Docs: man:suricata(1) Process: 24588 ExecStartPre=/bin/rm -f /var/run/suricata.pid (code=exited, status=0/SUCCESS) Main PID: 24590 (Suricata-Main) Tasks: 1 (limit: 23473) Memory: 80.2M CGroup: /system.slice/suricata.service └─24590 /sbin/suricata -c /etc/suricata/suricata.yaml --pidfile /var/run/suricata.pid -i eth0 --user suricata Oct 21 18:22:56 suricata systemd[1]: Starting Suricata Intrusion Detection Service.. Oct 21 18:22:56 suricata systemd[1]: Started Suricata Intrusion Detection Service. . . .

Net als bij het commando voor de testmodus, zal het Suricata een minuut of twee duren om alle regels te laden en te parseren. U kunt het tail-commando gebruiken om te kijken naar een specifieke boodschap in de logboeken van Suricata die aangeeft dat het opstarten is voltooid:

  1. sudo tail -f /var/log/suricata/suricata.log

U ontvangt een aantal regels met output en de terminal lijkt mogelijk vast te zitten terwijl Suricata wordt geladen. Blijf wachten op output totdat u een regel zoals de volgende ontvangt:

Output
19/10/2021 -- 19:22:39 - <Info> - All AFP capture threads are running.

Deze regel geeft aan dat Suricata actief is en klaar is om het verkeer te inspecteren. U kunt het tail-commando verlaten met CTRL+C.

Nu u hebt geverifieerd dat Suricata actief is, is de volgende stap in deze handleiding om te controleren of Suricata een verzoek detecteert naar een test-URL die is ontworpen om een waarschuwing te genereren.

Stap 6 — Testen van Suricata-regels

De ET Open-regelset die je hebt gedownload bevat meer dan 30000 regels. Een volledige uitleg over hoe Suricata-regels werken, en hoe je ze moet opbouwen, valt buiten de scope van deze introductietutorial. Een volgende tutorial in deze serie zal uitleggen hoe regels werken en hoe je je eigen regels kunt maken.

Voor de doeleinden van deze tutorial is het voldoende om te testen of Suricata verdacht verkeer detecteert met de configuratie die je hebt gegenereerd. De Suricata Quickstart raadt aan om de ET Open-regel met nummer 2100498 te testen met behulp van het curl-commando.

Voer het volgende uit om een HTTP-verzoek te genereren, dat een respons zal retourneren die overeenkomt met de alertregel van Suricata:

  1. curl http://testmynids.org/uid/index.html

Het curl-commando zal een respons vergelijkbaar met de volgende uitvoeren:

Output
uid=0(root) gid=0(root) groups=0(root)

Deze voorbeeldrespons is ontworpen om een ​​alert te activeren door te doen alsof het de uitvoer van een commando zoals id retourneert dat zou kunnen worden uitgevoerd op een gecompromitteerd extern systeem via een webshell.

Nu kun je Suricata-logs controleren op een overeenkomstige alert. Er zijn twee logs die zijn ingeschakeld met de standaard Suricata-configuratie. De eerste bevindt zich in /var/log/suricata/fast.log en de tweede is een machinaal leesbaar logbestand in /var/log/suricata/eve.log.

Het controleren van /var/log/suricata/fast.log

Om een logboekvermelding in /var/log/suricata/fast.log te controleren die overeenkomt met uw curl-verzoek, gebruikt u het grep-commando. Gebruik het volgende commando om te zoeken naar vermeldingen die overeenkomen met de 2100498 regelidentificator uit de Quickstart-documentatie:

  1. grep 2100498 /var/log/suricata/fast.log

Als uw verzoek IPv6 heeft gebruikt, zou u output moeten ontvangen zoals het volgende, waarbij 2001:DB8::1 het openbare IPv6-adres van uw systeem is:

Output
10/21/2021-18:35:54.950106 [**] [1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**] [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 2600:9000:2000:4400:0018:30b3:e400:93a1:80 -> 2001:DB8::1:34628

Als uw verzoek IPv4 heeft gebruikt, zou uw logboek een bericht moeten hebben zoals dit, waarbij 203.0.113.1 het openbare IPv4-adres van uw systeem is:

Output
10/21/2021-18:35:57.247239 [**] [1:2100498:7] GPL ATTACK_RESPONSE id check returned root [**] [Classification: Potentially Bad Traffic] [Priority: 2] {TCP} 204.246.178.81:80 -> 203.0.113.1:36364

Merk op de gemarkeerde 2100498 waarde in de output, dit is de Signature ID (sid) die Suricata gebruikt om een regel te identificeren.

Het controleren van /var/log/suricata/eve.log

Suricata logt ook gebeurtenissen naar /var/log/suricata/eve.log (bijgenaamd het EVE-logboek) met JSON om vermeldingen te formatteren.

De Suricata-documentatie beveelt aan om het jq-hulpprogramma te gebruiken om de vermeldingen in dit bestand te lezen en te filteren. Installeer jq als je het niet op je systeem hebt met behulp van de volgende dnf-opdracht:

  1. sudo dnf install jq

Zodra je jq hebt geïnstalleerd, kun je de gebeurtenissen in het EVE-logboek filteren door te zoeken naar de handtekening 2100498 met de volgende opdracht:

  1. jq 'select(.alert .signature_id==2100498)' /var/log/suricata/eve.json

De opdracht onderzoekt elke JSON-vermelding en geeft alle vermeldingen weer die een alert-object hebben, met een signature_id-sleutel die overeenkomt met de waarde 2100498 waar je naar op zoek bent. De uitvoer zal lijken op het volgende:

Output
{ "timestamp": "2021-10-21T19:42:47.368856+0000", "flow_id": 775889108832281, "in_iface": "eth0", "event_type": "alert", "src_ip": "203.0.113.1", "src_port": 80, "dest_ip": "147.182.148.159", "dest_port": 38920, "proto": "TCP", "community_id": "1:vuSfAFyy7oUq0LQC5+KNTBSuPxg=", "alert": { "action": "allowed", "gid": 1, "signature_id": 2100498, "rev": 7, "signature": "GPL ATTACK_RESPONSE id check returned root", "category": "Potentially Bad Traffic", . . . }

Merk op de gemarkeerde regel "signature_id": 2100498,, dit is de sleutel waar jq naar zoekt. Let ook op de gemarkeerde regel "community_id": "1:vuSfAFyy7oUq0LQC5+KNTBSuPxg=", in de JSON-uitvoer. Deze sleutel is de gegenereerde Community Flow Identifier die je hebt ingeschakeld in het configuratiebestand van Suricata.

Elke waarschuwing genereert een unieke Community Flow Identifier. Andere NMS-tools kunnen ook dezelfde identifier genereren om een Suricata-waarschuwing te koppelen aan uitvoer van andere tools.

A matching log entry in either log file means that Suricata successfully inspected the network traffic, matched it against a detection rule, and generated an alert for subsequent analysis or logging. A future tutorial in this series will explore how to send Suricata alerts to a Security Information Event Management (SIEM) system for further processing.

Stap 7 — Suricata-waarschuwingen verwerken

Zodra u waarschuwingen heeft ingesteld en getest, kunt u kiezen hoe u ze wilt afhandelen. Voor sommige gebruiksscenario’s kan het loggen van waarschuwingen voor auditdoeleinden voldoende zijn; of u geeft er misschien de voorkeur aan een actievere benadering te hanteren om het verkeer van systemen die herhaalde waarschuwingen genereren, te blokkeren.

Als u het verkeer wilt blokkeren op basis van de waarschuwingen die Suricata genereert, is een benadering om invoergegevens uit het EVE-logboek te gebruiken en vervolgens firewallregels toe te voegen om de toegang tot uw systeem of systemen te beperken. U kunt de jq-tool gebruiken om specifieke velden uit een waarschuwing te extraheren, en vervolgens UFW- of IPtables-regels toevoegen om verzoeken te blokkeren.

Nogmaals, dit voorbeeld is een hypothetisch scenario waarbij opzettelijk gecreëerde verzoek- en responsgegevens worden gebruikt. Uw kennis van de systemen en protocollen waartoe uw omgeving toegang moet hebben, is essentieel om te bepalen welk verkeer legitiem is en welk verkeer kan worden geblokkeerd.

Conclusie

In deze zelfstudie heeft u Suricata geïnstalleerd vanuit de OISF-softwarerepositories. Door Suricata op deze manier te installeren, zorgt u ervoor dat u updates kunt ontvangen wanneer er een nieuwe versie van Suricata wordt uitgebracht. Nadat u Suricata heeft geïnstalleerd, heeft u de standaardconfiguratie bewerkt om een Community Flow ID toe te voegen voor gebruik met andere beveiligingstools. U heeft ook live regelherladen ingeschakeld en een eerste set regels gedownload.

Nadat je de configuratie van Suricata hebt gevalideerd, ben je het proces gestart en heb je wat test-HTTP-verkeer gegenereerd. Je hebt geverifieerd dat Suricata verdacht verkeer kon detecteren door beide standaardlogs te onderzoeken om er zeker van te zijn dat ze een waarschuwing bevatten die overeenkomt met de regel die je aan het testen was.

Voor meer informatie over Suricata, bezoek de officiële Suricata-website. Voor meer details over een van de configuratieopties die je hebt ingesteld in deze tutorial, raadpleeg de Suricata-gebruikershandleiding.

Nu je Suricata hebt geïnstalleerd en geconfigureerd, kun je doorgaan naar de volgende tutorial in deze serie Het begrijpen van Suricata-handtekeningen, waarin je leert hoe je je eigen aangepaste Suricata-regels kunt schrijven. Je leert over verschillende manieren om waarschuwingen te creëren, of zelfs hoe je verkeer volledig kunt laten vallen, op basis van criteria zoals ongeldige TCP/IP-pakketten, de inhoud van DNS-query’s, HTTP-verzoeken en -reacties, en zelfs TLS-handshakes.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-suricata-on-centos-8-stream