Om man skall tro statistiken ökar nĂ€tverkstrafiken med ungefĂ€r 50% varje Ă„r. Detta leder till en ökad belastning pĂ„ utrustningen och, sĂ€rskilt, ökar kraven pĂ„ prestanda för IDS/IPS. Man kan köpa dyr specialistutrustning, men det finns ett billigare alternativ â att implementera ett av de mĂ„nga systemen med öppen kĂ€llkod. MĂ„nga nybörjaradministratörer tror att det Ă€r ganska komplicerat att installera och konfigurera en kostnadsfri IPS. I fallet med Suricata Ă€r detta inte helt korrekt â det gĂ„r att installera den och börja avvĂ€rja typiska attacker med ett paket gratis regler pĂ„ bara nĂ„gra minuter.
Varför behövs ytterligare en öppen IPS?
Under lÄng tid har Snort-systemet, som betraktades som standard, utvecklats sedan slutet av 90-talet, vilket gjorde att det frÄn början var enkeltrÄdat. Under Ären har den fÄtt alla moderna funktioner, som stöd för IPv6, möjlighet att analysera applikationsprotokoll eller en universell datatillgÄngsmodul.
Den grundlÀggande motorn Snort 2.X lÀrde sig att arbeta med flera kÀrnor, men förblev enkeltrÄdad och kan dÀrför inte optimalt utnyttja fördelarna med moderna hÄrdvaruplattformar.
Problemet löstes i systemets tredje version, men den förberedes sÄ lÀnge att det pÄ marknaden hade dykt upp Suricata, som utvecklades helt frÄn grunden. à r 2009 började den utvecklas som ett flerdimensionellt alternativ till Snort, som har IPS-funktioner frÄn grunden. Koden distribueras under GPLv2-licensen, men projektets finansiella partners har tillgÄng till en sluten version av motorn. Vissa skalbarhetsproblem i de första versionerna av systemet uppstod, men de löstes ganska snabbt.
Varför Suricata?
Suricata har flera moduler (precis som Snort): fĂ„ngst, insamling, avkodning, upptĂ€ckte och utdata. Som standard förs den fĂ„ngade trafiken fram till avkodningen i en enda ström, vilket kan belasta systemet mer. Vid behov kan strömmarna delas upp i instĂ€llningarna och fördelas över processorerna â Suricata Ă€r mycket vĂ€linstĂ€lld för specifik hĂ„rdvara, Ă€ven om detta inte Ă€r pĂ„ nybörjarnivĂ„. Det Ă€r ocksĂ„ vĂ€rt att nĂ€mna att Suricata har avancerade HTTP-inspektionsverktyg baserade pĂ„ HTP-biblioteket. Dessa kan ocksĂ„ anvĂ€ndas för att logga trafiken utan att upptĂ€ckas. Systemet stöder ocksĂ„ avkodning av IPv6, inklusive tunnlar av IPv4-in-IPv6, IPv6-in-IPv6 och andra.
Olika grÀnssnitt kan anvÀndas för att fÄnga trafik (NFQueue, IPFRing, LibPcap, IPFW, AF_PACKET, PF_RING), och i Unix Socket-lÀge kan fÄngad data frÄn en annan sniffer analyseras automatiskt och generera PCAP-filer. Dessutom förenklar Suricatas modulÀra arkitektur integreringen av nya element för fÄngst, avkodning, analys och bearbetning av nÀtverkspaket. Det Àr ocksÄ viktigt att notera att i Suricata blockeras trafiken med hjÀlp av operativsystemets inbyggda filter. I GNU/Linux finns det tvÄ sÀtt att arbeta IPS: via NFQUEUE (NFQ-lÀge) eller zero copy (AF_PACKET-lÀge). I det första fallet skickas paket som fÄngas av iptables till NFQUEUE-kön, dÀr det kan behandlas pÄ anvÀndarnivÄ. Suricata kör det genom sina regler och ger ett av tre utlÄtanden: NF_ACCEPT, NF_DROP och NF_REPEAT. De första tvÄ krÀver ingen förklaring, medan den sista tillÄter mÀrkning av paket och att skicka dem till början av den aktuella iptables-tabellen. AF_PACKET-lÀget skiljer sig genom högre hastighet, men pÄlÀgger systemet vissa begrÀnsningar: det mÄste ha tvÄ nÀtverksgrÀnssnitt och fungera som en gateway. Det blockerade paketet vidarebefordras helt enkelt inte till det andra grÀnssnittet.
En viktig funktion hos Suricata Àr möjligheten att anvÀnda arbeten frÄn Snort. För administratören Àr tillgÀngliga, bland annat, regeluppsÀttningarna Sourcefire VRT och OpenSource Emerging Threats, samt de kommersiella Emerging Threats Pro. Den enhetliga utdata kan analyseras med hjÀlp av populÀra backend-lösningar, och utdata i PCAP och Syslog stöds ocksÄ. SysteminstÀllningar och regler lagras i YAML-filer som Àr lÀttlÀsta och kan behandlas automatiskt. Suricata-motorn kÀnner igen mÄnga protokoll, dÀrför finns det inget behov av att binda regler till portnummer. Dessutom tillÀmpas begreppet flowbits aktivt i Suricatas regler. För att spÄra utlöst aktivitet anvÀnds sessionsvariabler, vilket möjliggör skapandet och tillÀmpningen av olika rÀknare och flaggor. MÄnga IDS betraktar olika TCP-anslutningar som separata enheter och kan misslyckas med att se relationen mellan dem som indikerar början av en attack. Suricata försöker se helheten och kÀnner i mÄnga fall igen skadlig trafik distribuerad över olika anslutningar. Man kan diskutera dess fördelar lÀnge, men lÄt oss istÀllet gÄ över till installation och konfiguration.
Hur installerar man det?
Vi kommer att installera Suricata pÄ en virtuell server som kör Ubuntu 18.04 LTS. Alla kommandon mÄste utföras som superanvÀndare (root). Den sÀkraste metoden Àr att ansluta till servern via SSH som en vanlig anvÀndare, och sedan anvÀnda verktyget sudo för att höja rÀttigheterna. För att börja behöver vi installera de paket vi kommer att anvÀnda:
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-httpsAnslut den externa repositoriet:
sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get updateInstallera den senaste stabila versionen av Suricata:
sudo apt-get install suricataOm nödvÀndigt justerar vi konfigurationsfilerna genom att ersÀtta det standardanvÀnda namnet eth0 med det faktiska namnet pÄ serverns externa grÀnssnitt. StandardinstÀllningarna lagras i filen /etc/default/suricata, medan anvÀndarinstÀllningar finns i /etc/suricata/suricata.yaml. Konfigurationen av IDS begrÀnsas till stor del av redigeringen av denna konfigurationsfil. Den innehÄller mÄnga parametrar vars namn och syfte överensstÀmmer med motsvarigheterna i Snort. Syntaxen Àr dock helt annorlunda, men filen Àr mycket enklare att lÀsa Àn Snorts konfigurationer, dessutom Àr den vÀl kommenterad.
sudo nano /etc/default/suricata 
och
sudo nano /etc/suricata/suricata.yaml 
Varning! Innan du kör bör du kontrollera vÀrdena för variablerna i avsnittet vars.
För att slutföra konfigurationen behöver vi installera suricata-update för att uppdatera och ladda ner regler. Det Àr ganska enkelt att göra:
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-updateDÀrefter behöver vi köra kommandot suricata-update för att installera uppsÀttningen regler frÄn Emerging Threats Open:
sudo suricata-update 
För att visa listan över reglernas kÀllor kör vi följande kommando:
sudo suricata-update list-sources 
Uppdaterar reglernas kÀllor:
sudo suricata-update update-sources 
Granskar de uppdaterade kÀllorna igen:
sudo suricata-update list-sourcesVid behov kan man aktivera tillgÀngliga gratis kÀllor:
sudo suricata-update enable-source ptresearch/attackdetection
sudo suricata-update enable-source oisf/trafficid
sudo suricata-update enable-source sslbl/ssl-fp-blacklistEfter detta mÄste vi uppdatera reglerna igen:
sudo suricata-updateMed detta kan installationen och den initiala konfigurationen av Suricata pÄ Ubuntu 18.04 LTS anses vara avslutad. DÀrefter börjar det mest intressanta: i nÀsta artikel kommer vi att ansluta den virtuella servern till kontorsnÀtverket via VPN och börja analysera hela den inkommande och utgÄende trafiken. Vi kommer sÀrskilt att fokusera pÄ att blockera DDoS-attacker, aktivitet frÄn skadlig programvara och försök att utnyttja sÄrbarheter i tjÀnster som Àr tillgÀngliga frÄn offentliga nÀtverk. För tydlighetens skull kommer vi att simulera attacker av de mest förekommande typerna.
KĂ€lla: habr.com
