Hvis man skal tro statistikken, stiger mængden af netværkstrafik med cirka 50% hvert år. Det fører til øget belastning på udstyret og hæver navnlig kravene til ydeevnen af IDS/IPS. Man kan købe dyrt specialiseret hardware, men der er en billigere løsning — at implementere et af de open source-systemer. Mange nybegyndere tror, at det er ret svært at installere og konfigurere en gratis IPS. Med Suricata er det ikke helt rigtigt — det er muligt at installere den og begynde at afværge standardangreb med et sæt gratis regler på få minutter.
Hvorfor har vi brug for endnu en open source IPS?
Systemet Snort, som længe har været anset som standard, er blevet udviklet siden slutningen af 90'erne, og det var oprindeligt en enkelttrådet løsning. Gennem mange år er der blevet tilføjet moderne funktioner som støtte til IPv6, mulighed for analyse af applikationsprotokoller og en universel datatilgangsmodul.
Den grundlæggende Snort 2.X-motor har lært at arbejde med flere kerner, men den er stadig enkelttrådet og kan derfor ikke udnytte fordelene ved moderne hardwarer.
Problemet blev løst i den tredje version af systemet, men udviklingen tog så lang tid, at der på markedet allerede var kommet en helt nyudviklet Suricata. I 2009 begyndte man at udvikle den netop som en multitrådet alternativ til Snort, fra starten med IPS-funktioner. Koden distribueres under GPLv2-licensen, men finansielle partnere i projektet har adgang til en lukket version af motoren. Nogle skaleringsproblemer i de tidlige versioner af systemet opstod, men de blev hurtigt løst.
Hvorfor Suricata?
I Suricata findes der flere moduler (ligesom i Snort): indfangning, indsamling, dekodning, opdagelse og output. Som standard går den indfangede trafik til dekodning i én strøm, selvom dette belaster systemet mere. Om nødvendigt kan strømme opdeles i indstillingerne og fordeles på processorer – Suricata er meget godt optimeret til specifik hardware, selvom det ikke er på niveau med en HOWTO for begyndere. Det er også værd at bemærke tilstedeværelsen af avancerede HTTP-inspektionsværktøjer baseret på HTP-biblioteket i Suricata. Disse kan også bruges til at logge trafik uden detektion. Systemet understøtter også dekodning af IPv6, herunder tunneler IPv4-in-IPv6, IPv6-in-IPv6 og andre.
Der kan anvendes forskellige interfaces (NFQueue, IPFRing, LibPcap, IPFW, AF_PACKET, PF_RING) til at opfange trafik, og i Unix Socket-tilstand kan indfangede filer fra en anden sniffer automatisk analyseres. Derudover forenkler Suricatas modulære arkitektur tilføjelsen af nye elementer til indfangning, dekodning, analyse og behandling af netværkspakker. Det er også vigtigt at bemærke, at trafikblokering i Suricata udføres ved hjælp af operativsystemets indbyggede filter. I GNU/Linux er der to arbejdsmetoder til IPS: gennem NFQUEUE (NFQ-tilstand) og gennem zero copy (AF_PACKET-tilstand). I det første tilfælde sendes det, der rammer iptables-pakken, til NFQUEUE, hvor det kan behandles på brugerniveau. Suricata kører det gennem sine regler og afgør en af de tre domme: NF_ACCEPT, NF_DROP og NF_REPEAT. De første to kræver ingen forklaring, mens den sidste tillader mærkning af pakker og sender dem til begyndelsen af den nuværende iptables-tabel. AF_PACKET-tilstanden er kendetegnet ved højere ydeevne, men pålægger systemet en række begrænsninger: det skal have to netværksinterface og fungere som en gateway. Den blokerede pakke sendes simpelthen ikke videre til det andet interface.
En vigtig funktion ved Suricata er muligheden for at bruge Snorts værktøjer. Administratoren har adgang til blandt andet Sourcefire VRTs regelsæt og OpenSource Emerging Threats, samt de kommercielle Emerging Threats Pro. Den samlede output kan analyseres ved hjælp af populære backend-systemer, og der understøttes også output i PCAP og Syslog. Systemindstillinger og regler opbevares i YAML-filer, der er letlæselige og kan behandles automatisk. Suricata-motoren genkender mange protokoller, så der er ikke behov for at knytte reglerne til en portnummer. Derudover praktiseres konceptet flowbits aktivt i Suricatas regler. Til at spore udløsninger anvendes session variabler, der gør det muligt at oprette og anvende forskellige tællere og flags. Mange IDS betragter forskellige TCP-forbindelser som separate enheder og kan overse forbindelse mellem dem, der indikerer begyndelsen på et angreb. Suricata stræber efter at se det store billede og genkender i mange tilfælde ondsindet trafik, der er fordelt på forskellige forbindelser. Der kan diskuteres længe om dens fordele, men lad os bedre komme til installation og opsætning.
Hvordan installerer man?
Vi vil installere Suricata på en virtuel server, der kører Ubuntu 18.04 LTS. Alle kommandoer skal udføres som superbruger (root). Den sikreste mulighed er at oprette forbindelse til serveren via SSH som almindelig bruger og derefter anvende sudo-værktøjet til at hæve privilegierne. Først skal vi installere de pakker, vi får brug for:
sudo apt -y install libpcre3 libpcre3-dev build-essential autoconf automake libtool libpcap-dev libnet1-dev libyaml-0-2 libyaml-dev zlib1g zlib1g-dev libmagic-dev libcap-ng-dev libjansson-dev pkg-config libnetfilter-queue-dev geoip-bin geoip-database geoipupdate apt-transport-httpsTilføj den eksterne repository:
sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get updateInstaller den nyeste stabile version af Suricata:
sudo apt-get install suricataOm nødvendigt retter vi konfigurationsfilerne ved at erstatte det standardnavn, der anvendes, eth0, med det faktiske navn på serverens eksterne interface. Standardindstillingerne opbevares i filen /etc/default/suricata, mens brugerdefinerede indstillinger findes i /etc/suricata/suricata.yaml. Konfigurationen af IDS begrænses for det meste til at redigere denne konfigurationsfil. Der er mange parametre, hvis navne og formål svarer til dem fra Snort. Syntaksen er dog helt anderledes, men filen er meget lettere at læse end Snorts konfigurationer, og den er også godt kommenteret.
sudo nano /etc/default/suricata 
og
sudo nano /etc/suricata/suricata.yaml 
Advarsel! Før opstart skal værdierne fra sektionen vars kontrolleres.
For at afslutte konfigurationen er det nødvendigt at installere suricata-update for at opdatere og downloade regler. Det er ret enkelt:
sudo apt install python-pip
sudo pip install pyyaml
sudo pip install <a href="https://github.com/OISF/suricata-update/archive/master.zip">https://github.com/OISF/suricata-update/archive/master.zip</a>
sudo pip install --pre --upgrade suricata-updateDerefter skal vi køre kommandoen suricata-update for at installere sætningen Emerging Threats Open regler:
sudo suricata-update 
For at se listen over regelskilder, kører vi følgende kommando:
sudo suricata-update list-sources 
Opdaterer regelskilderne:
sudo suricata-update update-sources 
Gennemgår de opdaterede kilder igen:
sudo suricata-update list-sourcesHvis nødvendigt kan de tilgængelige gratis kilder aktiveres:
sudo suricata-update enable-source ptresearch/attackdetection
sudo suricata-update enable-source oisf/trafficid
sudo suricata-update enable-source sslbl/ssl-fp-blacklistHerefter skal reglerne opdateres igen:
sudo suricata-updateInstallation og grundlæggende konfiguration af Suricata på Ubuntu 18.04 LTS kan betragtes som færdig. Det interessante starter nu: i næste artikel vil vi forbinde den virtuelle server med kontornettet via VPN og begynde at analysere al indkommende og udgående trafik. Der vil blive lagt særlig vægt på at blokere DDoS-angreb, aktiviteter fra ondsindet software og forsøg på at udnytte sårbarheder i tjenester, der er tilgængelige fra offentlige netværk. Der vil blive simuleret angreb af de mest almindelige typer for at være illustrative.
Kilde: habr.com
