Suure jõudlusega sissetungi tuvastuse süsteemi lahendus S4A tarkvara jaoks
Date
2012
Authors
Journal Title
Journal ISSN
Volume Title
Publisher
Tartu Ülikool
Abstract
Riigi Infosüsteemi Ameti (RIA) infoturbeintsidentide käsitlemise osakond tegutseb Eestis rahvusliku CERT (Computer Emergency Response Team) ülesannetes ning talitleb rahvusvahelise kontaktpunktina. CERT Eesti tuvastab, jälgib ja lahendab Eesti riigi arvutivõrkudes toimuvaid turvaintsidente, teavitab ohtudest ning korraldab ennetustegevusi.
S4A on võrguliikluse analüsaatori ja ründeprofiilide baasil loodud avatud lähtekoodiga tarkvara. Tarkvara võimaldab koguda keskselt statistikat võrguaadresside transleerimist (NAT) kasutavates sisevõrkudes esinevate turvarikete kohta, samas nende võrkude ehitust statistiku eest salajasse jättes. Selle tulemusena omandab CERT Eesti reaalajas pildi riigivõrgus aset leidvatest turvariketest. Kohaliku võrgu administraatorile annab S4A detailse pildi kohtvõrgus aset leidvatest turvariketest ning lihtsustab tunduvalt rikete lähtekoha leidmist.
S4A kasutab keskse komponendina tuvastusplatvormi, millel on operatsioonisüsteem OpenBSD ja sissetungi tuvastuse süsteem Snort. Sissetungi tuvastuse süsteemi (Intrusion Detection System ehk IDS) juures on oluliseks omaduseks selle jõudlus – et süsteem suudaks suure võrguliikluse mahu korral reaalajas analüüsida kogu võrguliikluse sisu või võimalikult suurt osa võrguliikluse sisust. Mida suurem osa võrguliikluse sisust analüüsimata jääb, seda rohkem ründeid jääb märkamata. Kui piisavalt suur osa võrguliikluse sisust jääb analüüsimata, siis on sissetungijal väga hea tõenäosus märkamatult tegutseda isegi tuntud ründemeetodit kasutades.
Põhiline valupunkt olemasoleva S4A lahenduse jõudluse juures on, et sissetungi tuvastuse tarkvara Snort on ühelõimeline ja seega ei suuda kasutada rohkem kui ühe protsessorituuma ressurssi. Riistvaralise jõudluse suurendamine on aga oluliselt odavam horisontaalselt skaleerides (suurendades protsessori tuumade arvu) kui vertikaalselt skaleerides (suurendades iga protsessorituuma jõudlust).
Käesoleva töö eesmärk on leida võimalusi S4A võrguliikluse sissetungi tuvastuse süsteemi jõudluse suurendamiseks.
Käesoleva töö käigus tutvuti S4A süsteemi ülesehitusega ja Snort tööpõhimõttega. Viimase alusel analüüsiti selle jõudlust mõjutavaid tegureid. Leitud tegurite alusel pakuti välja erinevad võimalused S4A süsteemi jõudluse suurendamiseks. Detailsemaks analüüsiks kaaluti tarkvara implementatsiooni muutvaid võimalusi – vahetada operatsioonisüsteemi (OpenBSD, Linux), võrgupakettide hõlmelahendust (PCAP, AF_PACKET, PF_RING) ning tarkvara ennast (Snort, Suricata).
Analüüsimiseks valitud võimaluste kohta sooritati jõudluse mõõtmised erinevate võrguliikluse ribalaiuste juures, jättes muud tegurid nagu reeglite arv ja seadistused jt samaks. Mõõtmistulemused kinnitasid enne mõõtmisi välja pakutud hüpoteese, et võrguliikluse ribalaiuse kasvades kasvab CPU koormus ning võrguliikluse ribalaiusest ei sõltu muutmälu hõivatus. Mõõtmistulemused näitasid, et analüüsitud pakettide osakaal püsib ühtlaselt kõrgel seni, kuni CPU koormus püsib teatud piirist madalamal. Mõõtmistulemuste põhjal selgus, et tuvastatud hoiatuste arvu sõltuvus võrguliikluse ribalaiusest ei vasta püstitatud hüpoteesile. Nimetatud sõltuvuse lähem analüüs jäi praeguse töö eesmärkidest välja, kuid väärib kindlasti lähemat uurimist edasises töös.
Mõõtmistulemuste alusel loodi võrdlus, kus leiti, et mõõtmiste käigus kasutatud seadistuste ja 5373 reegli korral on OpenBSD peal Suricata jõudlus Snort'i omast oluliselt halvem; Linux'il on Suricata jõudlus Snort'i omaga samas suurusjärgus ja isegi ületab seda minimaalselt; 1 CPU pealt 2 CPU peale vahetamisel suureneb mõlema tarkvara jõudlus samas suurusjärgus; Snort'i jõudlus Linux'il on minimaalselt suurem kui OpenBSD peal; Suricata jõudlus Linux'il on mitu korda suurem kui OpenBSD peal.
Võrdluste alusel tehti järeldused ja ettepanekud S4A lahenduse jaoks. Esmane ettepanek on võtta OpenBSD asemel kasutusele Linux koos PF_RING võrgupakettide hõlmelahendusega ja masinas käivitada paralleelselt sama palju Snort protsesse, kui on masinas CPU tuumasid. See võib anda tüüpilise 2 CPU tuumalise S4A juurutuse puhul jõudluse kasvu 2,2 korda. Teine ettepanek on Linux'il kasutada Snort'i asemel Suricata't, mis annab vähemalt sama suure jõudluse kasvu kui esimene ettepanek. Kummalgi lahendusel on omad positiivsed ja negatiivsed küljed, mida tuleks konkreetses süsteemis rakendamisel kaaluda.
S4A is a distributed real-time network security monitoring system. The purpose of this thesis is to find ways to increase S4A system performance. S4A system consists of one center and several detectors. Detectors are computers that run specialized software and are installed into various government organization computer networks. All network traffic passing between the organization's internal network and public Internet needs to mirrored to detector machine's network interface in order network security monitoring to work. Detector software consists of OpenBSD operating system, Snort intrusion detection system (IDS) and S4A specific helper programs. One of the most important qualities of an IDS is its performance – the more traffic it can analyze, the higher are chances of detecting suspicious traffic. Main bottleneck of current S4A system is that Snort is a single-threaded application and thus can only utilize one CPU core at a time, even though there are two CPU cores available in a typical S4A installation. In this thesis we first give an overview of Snort's architecture and look at the properties that affect it's performance the most. For the most effective ways to increase its performance we consider the following: changing operating system to Linux; using an alternative network packet capture library on Linux to allow multiple simultaneous Snort processes so that all CPU cores would be utilized; using an alternative IDS Suricata instead of Snort. Then we measure each option's performance, replaying network traffic at different bandwidths. During these tests we observe CPU usage, memory usage, disk I/O usage, analyzed packet count and detected alert count. We draw some conclusions on how they behave. The main find is that using our configuration and detection rules, on Linux the latest version of Suricata has at least the same performance as multiple processes of the latest version of Snort, even slightly higher. On OpenBSD, Suricata performs much worse than Snort. We make two suggestions for increasing S4A performance: 1) switching to Linux and multiple Snort processes with PF_RING may provide up to 2,2 times better performance; 2) switching to Linux and Snort should provide the same increase in performance as the first suggestion. Both options have some positive and negative effects that need to be considered before applying them.
S4A is a distributed real-time network security monitoring system. The purpose of this thesis is to find ways to increase S4A system performance. S4A system consists of one center and several detectors. Detectors are computers that run specialized software and are installed into various government organization computer networks. All network traffic passing between the organization's internal network and public Internet needs to mirrored to detector machine's network interface in order network security monitoring to work. Detector software consists of OpenBSD operating system, Snort intrusion detection system (IDS) and S4A specific helper programs. One of the most important qualities of an IDS is its performance – the more traffic it can analyze, the higher are chances of detecting suspicious traffic. Main bottleneck of current S4A system is that Snort is a single-threaded application and thus can only utilize one CPU core at a time, even though there are two CPU cores available in a typical S4A installation. In this thesis we first give an overview of Snort's architecture and look at the properties that affect it's performance the most. For the most effective ways to increase its performance we consider the following: changing operating system to Linux; using an alternative network packet capture library on Linux to allow multiple simultaneous Snort processes so that all CPU cores would be utilized; using an alternative IDS Suricata instead of Snort. Then we measure each option's performance, replaying network traffic at different bandwidths. During these tests we observe CPU usage, memory usage, disk I/O usage, analyzed packet count and detected alert count. We draw some conclusions on how they behave. The main find is that using our configuration and detection rules, on Linux the latest version of Suricata has at least the same performance as multiple processes of the latest version of Snort, even slightly higher. On OpenBSD, Suricata performs much worse than Snort. We make two suggestions for increasing S4A performance: 1) switching to Linux and multiple Snort processes with PF_RING may provide up to 2,2 times better performance; 2) switching to Linux and Snort should provide the same increase in performance as the first suggestion. Both options have some positive and negative effects that need to be considered before applying them.