Als we de statistieken mogen geloven, neemt het netwerkverkeer elk jaar met ongeveer 50% toe. Dit leidt tot een verhoogde belasting van apparatuur en verhoogt in het bijzonder de prestatie-eisen aan IDS/IPS. Je kunt dure gespecialiseerde hardware kopen, maar er is ook een goedkopere optie ā de implementatie van een van de open-source systemen. Veel beginnende beheerders denken dat het installeren en configureren van een gratis IPS vrij moeilijk is. In het geval van Suricata is dat echter niet helemaal waar ā het is mogelijk om het te installeren en typische aanvallen met een set gratis regels binnen enkele minuten af te weren.
Waarom is er nog een open IPS nodig?
De lange tijd als standaard beschouwde Snort-systeem wordt sinds het einde van de jaren '90 ontwikkeld en was aanvankelijk enkelvoudig. In de loop der jaren heeft het echter alle moderne functies gekregen, zoals ondersteuning voor IPv6, de mogelijkheid om applicatieprotocollen te analyseren en een universele module voor gegevensaccess.
De basis-engine Snort 2.X leerde om met meerdere kernen te werken, maar bleef enkelvoudig en kan daarom niet optimaal profiteren van de voordelen van moderne hardwareplatforms.
Het probleem werd opgelost in versie drie van het systeem, maar deze werd zo lang voorbereid dat Suricata, die vanaf de grond af was geschreven, al op de markt was verschenen. In 2009 werd het specifiek ontwikkeld als een multi-threaded alternatief voor Snort, met standaard IPS-functies. De code wordt verspreid onder de GPLv2-licentie, maar financiƫle partners van het project hebben toegang tot de gesloten versie van de engine. Sommige schaalbaarheidsproblemen in de eerste versies van het systeem deden zich voor, maar die werden vrij snel opgelost.
Waarom Suricata?
Suricata heeft verschillende modules (net als Snort): voor capture, verzameling, decoding, detectie en output. Standaard wordt het gevangen verkeer in ƩƩn stroom gedecodeerd, hoewel dit de systeembelasting verhoogt. Indien nodig kunnen de stromen in de instellingen worden gesplitst en over de CPU's verdeeld ā Suricata is zeer goed geoptimaliseerd voor specifieke hardware, hoewel dit geen beginnersniveau is. Ook is het vermeldenswaard dat Suricata geavanceerde HTTP-inspectietools op basis van de HTP-bibliotheek heeft. Deze kunnen ook worden gebruikt voor het loggen van verkeer zonder detectie. Het systeem ondersteunt ook IPv6-decoding, inclusief IPv4-in-IPv6 tunnels, IPv6-in-IPv6 en andere.
Er kunnen verschillende interfaces worden gebruikt voor het onderscheppen van verkeer (NFQueue, IPFRing, LibPcap, IPFW, AF_PACKET, PF_RING), en in de Unix Socket-modus kunnen automatisch bestanden van andere sniffer PCAP's worden geanalyseerd. Bovendien vergemakkelijkt de modulaire architectuur van Suricata het aansluiten van nieuwe elementen voor capture, decoding, analyse en verwerking van netwerkpakketten. Het is ook belangrijk op te merken dat in Suricata het blokkeren van verkeer wordt uitgevoerd door de standaardfilter van het besturingssysteem. In GNU/Linux zijn er twee manieren om IPS te laten werken: via de NFQUEUE (NFQ-modus) en via zero copy (AF_PACKET-modus). In het eerste geval wordt het pakket dat in iptables terechtkomt, naar de NFQUEUE gestuurd, waar het op gebruikersniveau kan worden verwerkt. Suricata beoordeelt het op basis van zijn regels en geeft een van de drie uitspraken: NF_ACCEPT, NF_DROP en NF_REPEAT. De eerste twee vereisen geen uitleg, terwijl de laatste het mogelijk maakt om pakketten te markeren en ze naar het begin van de huidige iptables-tabel te sturen. De AF_PACKET-modus biedt hogere prestaties, maar legt een aantal beperkingen op de systeem, namelijk dat het twee netwerkinterfaces moet hebben en als een gateway moet functioneren. Een geblokkeerd pakket wordt simpelweg niet doorgestuurd naar de tweede interface.
Een belangrijke functie van Suricata is de mogelijkheid om gebruik te maken van de regels voor Snort. De beheerder heeft toegang tot onder andere de Sourcefire VRT-regelsets en OpenSource Emerging Threats, evenals de commerciƫle Emerging Threats Pro. De uniforme output kan geanalyseerd worden met behulp van populaire backends, en de output in PCAP en Syslog wordt ook ondersteund. Systeeminstellingen en regels worden opgeslagen in YAML-bestanden, die gemakkelijk leesbaar zijn en automatisch kunnen worden verwerkt. De Suricata-engine herkent veel protocollen, zodat het niet nodig is om regels aan een poortnummer te koppelen. Daarnaast wordt in de regels van Suricata actief gebruikgemaakt van het concept flowbits. Voor het volgen van triggers worden sessievariabelen gebruikt, die het mogelijk maken om verschillende tellers en vlaggen te creƫren en toe te passen. Veel IDS beschouwen verschillende TCP-verbindingen als afzonderlijke entiteiten en kunnen de relatie tussen hen, die duidt op het begin van een aanval, mogelijk niet zien. Suricata probeert het geheel te zien en herkent in veel gevallen kwaadaardig verkeer dat over verschillende verbindingen is verspreid. We kunnen lang praten over de voordelen, maar laten we overgaan tot installatie en configuratie.
Hoe te installeren?
We gaan Suricata installeren op een virtuele server die draait op Ubuntu 18.04 LTS. Alle commando's moeten worden uitgevoerd als supergebruiker (root). De meest veilige optie is om verbinding te maken met de server via SSH met een gewone gebruiker en vervolgens de sudo-tool te gebruiken om de privileges te verhogen. Begin met het installeren van de pakketten die we nodig hebben:
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-httpsVoeg de externe repository toe:
sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get updateInstalleer de laatste stabiele versie van Suricata:
sudo apt-get install suricataIndien nodig passen we de configuratiebestanden aan door de standaard naam eth0 te vervangen door de daadwerkelijke naam van de externe interface van de server. De standaardinstellingen zijn opgeslagen in het bestand /etc/default/suricata en de gebruikersinstellingen in /etc/suricata/suricata.yaml. De configuratie van de IDS beperkt zich grotendeels tot het bewerken van dit configuratiebestand. Het bevat veel parameters waarvan de naam en betekenis overeenkomen met de analogieƫn van Snort. De syntaxis is echter volledig anders, maar het bestand is veel gemakkelijker te lezen dan de configuraties van Snort en is bovendien goed gecommentarieerd.
sudo nano /etc/default/suricata 
en
sudo nano /etc/suricata/suricata.yaml 
Let op! Voordat we starten, moeten we de waarden van de variabelen in het gedeelte vars controleren.
Om de configuratie te voltooien, moet suricata-update worden geĆÆnstalleerd voor het bijwerken en laden van regels. Dit is vrij eenvoudig te doen:
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-updateDaarna moeten we het commando suricata-update uitvoeren om de set Emerging Threats Open-regels te installeren:
sudo suricata-update 
Om de lijst met regelbronnen te bekijken, voeren we de volgende opdracht uit:
sudo suricata-update list-sources 
We updaten de regelbronnen:
sudo suricata-update update-sources 
We bekijken de bijgewerkte bronnen opnieuw:
sudo suricata-update list-sourcesIndien nodig kunnen we de beschikbare gratis bronnen inschakelen:
sudo suricata-update enable-source ptresearch/attackdetection
sudo suricata-update enable-source oisf/trafficid
sudo suricata-update enable-source sslbl/ssl-fp-blacklistDaarna is het noodzakelijk om de regels opnieuw te updaten:
sudo suricata-updateMet dit is de installatie en initiƫle configuratie van Suricata op Ubuntu 18.04 LTS voltooid. Hierna begint het meest interessante: in het volgende artikel zullen we de virtuele server verbinden met het kantoor netwerk via VPN en beginnen met het analyseren van al het inkomende en uitgaande verkeer. We besteden speciale aandacht aan het blokkeren van DDoS-aanvallen, kwaadaardige software en pogingen om kwetsbaarheden in de op openbare netwerken beschikbare diensten te exploiteren. Voor de duidelijkheid zullen we aanvallen van de meest voorkomende typen simuleren.
Bron: habr.com
