Ha hihetünk a statisztikáknak, az internetes forgalom volumene évente körülbelül 50%-kal nő. Ez megnöveli a berendezések terhelését, különösen pedig az IDS/IPS teljesítményigényeit. Lehet drága, speciális hardvert vásárolni, de van egy olcsóbb alternatíva: egy nyílt forráskódú rendszer bevezetése. Sokan, különösen kezdő rendszergazdák azt hiszik, hogy a ingyenes IPS telepítése és konfigurálása meglehetősen nehéz. A Suricata esetében ez nem teljesen igaz – néhány perc alatt telepíthető és elindítható, így a tipikus támadások kivédése ingyenes szabályokkal megoldható.
Miért van szükség egy újabb nyílt IPS-re?
A hosszú ideig szabványnak számító Snort rendszer az 1990-es évek végén kezdődött, így kezdetben egy szálon futott. Az évek során megjelentek benne a modern funkciók, mint például az IPv6 támogatása, a protokollok alkalmazási szintű elemzésének lehetősége, vagy egy univerzális adat-hozzáférési modul.
Az alap Snort 2.X motor megtanult több processzormagot használni, de még mindig egy szálon fut, ezért nem tudja optimálisan kihasználni a modern hardverplatformok előnyeit.
A problémát a rendszer harmadik verziójában oldották meg, de olyan sokáig készült, hogy a piacon megjelent a nulláról fejlesztett Suricata. 2009-ben kezdték el fejleszteni, kifejezetten a Snort több szálú alternatívájaként, beépített IPS funkciókkal. A kód GPLv2 licenc alatt terjed, de a projekt pénzügyi partnerei hozzáférnek a zárt verzióhoz. A rendszer korai verzióiban néhány skálázhatósági probléma merült fel, de ezeket viszonylag gyorsan megoldották.
Miért Suricata?
A Suricatában több modul található (ahogyan a Snort esetében is): rögzítés, gyűjtés, dekódolás, észlelés és kimenet. Alapértelmezés szerint a rögzített forgalom dekódolás előtt egy szálon fut, ami a rendszer túlterhelését jelenti. Szükség esetén a szálakat a beállításokban szétválaszthatjuk és eloszthatjuk a processzorok között — a Suricata nagyon jól optimalizálható a konkrét hardverhez, bár ez már nem a kezdők számára készült útmutató szintje. Érdemes megemlíteni, hogy a Suricata HTTP ellenőrzésére fejlett eszközöket kínál, amelyek az HTP könyvtáron alapulnak. Ezek protokollozási forgalomra is használhatók észlelés nélkül. A rendszer támogatja az IPv6 dekódolást, beleértve az IPv4-in-IPv6, IPv6-in-IPv6 alagútakat és másokat.
A forgalom elfogására különböző interfészek (NFQueue, IPFRing, LibPcap, IPFW, AF_PACKET, PF_RING) használhatók, és Unix Socket módban automatikusan elemezhetjük a másik snifferral rögzített PCAP fájlokat. Ezen kívül a Suricata moduláris architektúrája megkönnyíti új elemek hozzáadását a rögzítéshez, dekódoláshoz, elemzéshez és hálózati csomagok feldolgozásához. Fontos megjegyezni, hogy a Suricata esetében a forgalom blokkolását a rendszer operációs rendszerének beépített szűrői végzik. A GNU/Linux rendszeren két módszer érhető el az IPS működésére: NFQUEUE soron keresztül (NFQ mód) és zero copy módban (AF_PACKET mód). Az első esetben az iptables-be kerülő csomagot a NFQUEUE sorba irányítják, ahol felhasználói szinten feldolgozható. A Suricata a saját szabályai alapján döntést hoz három közül: NF_ACCEPT, NF_DROP és NF_REPEAT. Az első kettő nem igényel magyarázatot, míg az utolsó lehetővé teszi a csomagok címkézését és azok visszaküldését az aktuális iptables táblázat elejére. Az AF_PACKET mód gyorsabb teljesítményt biztosít, de a rendszernek számos korlátozása van: kettő hálózati interfésszel kell rendelkeznie és átjáróként kell működnie. A blokkolt csomag egyszerűen nem kerül továbbításra a második interfész felé.
A Suricata fontos jellemzője a Snort-ra épített megoldások használata. Az adminisztrátorok számára elérhető például a Sourcefire VRT és az OpenSource Emerging Threats szabálycsomag, valamint a kereskedelmi Emerging Threats Pro. Az egységes kimenetet népszerű háttérrendszereken lehet elemezni, és a PCAP és Syslog kimenet is támogatott. A rendszerbeállítások és a szabályok YAML formátumban tárolódnak, amely könnyen olvasható és automatizálható. A Suricata motorja számos protokollt képes felismerni, így nem szükséges a szabályokban a portszámhoz kötni őket. Ezenkívül a Suricata szabályaiban aktívan alkalmazzák a flowbits koncepciót. Az események nyomon követéséhez session változókat használnak, amelyek különféle számlálókat és zászlókat hoznak létre és alkalmaznak. Sok IDS külön entitásként kezeli a különböző TCP kapcsolatokat, és nem látja az összefüggéseket közöttük, amelyek a támadás kezdetére utalnak. A Suricata arra törekszik, hogy a teljes képet lássa, és sok esetben felismeri a különböző kapcsolatokban elosztott rosszindulatú forgalmat. Az előnyeiről hosszasan lehetne beszélgetni, de inkább térjünk át a telepítésre és a beállításra.
Hogyan telepítsük?
A Suricata-t egy Ubuntu 18.04 LTS alapú virtuális szerverre telepítjük. Minden parancsot root felhasználói jogokkal kell végrehajtani. A legbiztonságosabb módszer az, ha SSH-n keresztül csatlakozunk a szerverhez egy normál felhasználóként, majd a sudo segédprogrammal emeljük fel a jogosultságokat. Először telepítenünk kell a szükséges csomagokat:
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-httpsCsatlakoztatjuk a külső tárolót:
sudo add-apt-repository ppa:oisf/suricata-stable
sudo apt-get updateTelepítjük a legújabb stabil Suricata verziót:
sudo apt-get install suricataSzükség esetén módosítsuk a konfigurációs fájlokat, cseréljük ki az alapértelmezett eth0 nevet a szerver valódi külső interfészének nevére. Az alapértelmezett beállítások az /etc/default/suricata fájlban találhatók, míg a felhasználói beállítások az /etc/suricata/suricata.yaml fájlban. Az IDS beállítás java részét a konfigurációs fájl módosítása jelenti. Számos paraméter található benne, amelyek megnevezésük és céljuk szerint megegyeznek a Snort megfelelőivel. A szintaxis azonban teljesen más, de a fájl olvasása sokkal egyszerűbb, mint a Snort konfigurációk, ráadásul jól kommentált.
sudo nano /etc/default/suricata 
és
sudo nano /etc/suricata/suricata.yaml 
Figyelem! A futtatás előtt ellenőrizze a vars szakaszból származó változók értékeit.
A konfigurálás befejezéséhez szükség van a suricata-update telepítésére a szabályok frissítéséhez és letöltéséhez. Ezt viszonylag egyszerű megtenni:
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-updateMost futtassuk a suricata-update parancsot az Emerging Threats Open szabálykészlet telepítéséhez:
sudo suricata-update 
A szabályforrások listájának megtekintéséhez futtassuk a következő parancsot:
sudo suricata-update list-sources 
Frissítjük a szabályforrásokat:
sudo suricata-update update-sources 
Újra átnézzük a frissített forrásokat:
sudo suricata-update list-sourcesSzükség esetén engedélyezheti a rendelkezésre álló ingyenes forrásokat:
sudo suricata-update enable-source ptresearch/attackdetection
sudo suricata-update enable-source oisf/trafficid
sudo suricata-update enable-source sslbl/ssl-fp-blacklistEzután ismét frissíteni kell a szabályokat:
sudo suricata-updateEzzel a Suricata telepítése és kezdeti beállítása az Ubuntu 18.04 LTS rendszerben befejeződött. Ezután kezdődik a legérdekesebb rész: a következő cikkben virtuális szervert csatlakoztatunk az irodai hálózathoz VPN-en keresztül, és elkezdjük elemezni az összes bejövő és kimenő forgalmat. Különös figyelmet fordítunk a DDoS támadások blokkolására, a kártékony programok aktivitására és a nyilvános hálózatokból elérhető szolgáltatásokban található sérülékenységek kihasználására tett kísérletekre. A jobb megértés érdekében a leggyakoribb támadástípusok szimulálására kerül sor.
Forrás: habr.com
