Hálózati behatolásészlelés végrehajtása az Azure Network Watcher és a nyílt forráskódú eszközök használatával

A csomagrögzítések kulcsfontosságú összetevők a hálózati behatolásészlelő rendszerek (IDS-ek) implementálásához és a hálózati biztonság monitorozásához. Számos nyílt forráskódú IDS-eszköz dolgozza fel a csomagrögzítéseket, és megkeresi a lehetséges hálózati behatolások és rosszindulatú tevékenységek aláírását. Az Azure Network Watcher által biztosított csomagrögzítések használatával elemezheti a hálózatot a káros behatolások és biztonsági rések miatt.

Ilyen nyílt forráskódú eszköz a Suricata, egy olyan IDS-motor, amely szabálykészletekkel figyeli a hálózati forgalmat, és riasztásokat aktivál, amikor gyanús események történnek. A Suricata többszálú motort kínál a hálózati forgalom elemzéséhez, nagyobb sebességgel és hatékonysággal. A Suricata-ról és képességeiről további információt a Suricata webhelyén talál.

Eset

Ez a cikk bemutatja, hogyan állíthatja be a környezetet a hálózati behatolás észlelésére a Network Watcher, Suricata és az Elastic Stack használatával.

A Network Watcher csomagrögzítéseket biztosít a hálózati behatolás észleléséhez. A Suricata feldolgozza a csomagrögzítéseket, és riasztásokat indít el a szabálykészletének megfelelő csomagok alapján. A Suricata ezeket a riasztásokat egy naplófájlban tárolja a helyi gépen.

Az Elastic Stack használatával indexelheti a Suricata által létrehozott naplókat, majd felhasználhatja őket egy Kibana-irányítópult létrehozásához. Az irányítópult vizuálisan ábrázolja a naplókat, és lehetővé teszi a lehetséges hálózati biztonsági rések gyors elemzését.

Diagram that shows a simple web application scenario.

Mindkét nyílt forráskódú eszközt beállíthatja egy Azure-beli virtuális gépen (VM), így ezt az elemzést saját Azure-hálózati környezetében is elvégezheti.

Suricata telepítése

  1. Futtassa a következő parancsokat a virtuális gép parancssori terminálján:

    sudo add-apt-repository ppa:oisf/suricata-stable
    sudo apt-get update
    sudo apt-get install suricata
    
  2. A telepítés ellenőrzéséhez futtassa a parancsot suricata -h a parancsok teljes listájának megtekintéséhez.

További telepítési módszerekért tekintse meg a Suricata telepítési rövid útmutatóját.

Az újonnan megjelenő fenyegetések szabálykészletének letöltése

Ebben a szakaszban nincs semmilyen szabálya Suricata futtatásához. Saját szabályokat hozhat létre, ha a hálózatra vonatkozó konkrét fenyegetéseket szeretne észlelni. Különböző szolgáltatók által fejlesztett szabálykészleteket is használhat, például a Feltörekvő fenyegetések vagy a Snort Talos-szabályai. Ebben a cikkben a szabadon elérhető Új fenyegetések szabálykészletet használja.

Töltse le a szabálykészletet, és másolja a könyvtárba:

wget https://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz
tar zxf emerging.rules.tar.gz
sudo cp -r rules /etc/suricata/

Csomagrögzítések feldolgozása Suricata használatával

Ha a Suricata használatával szeretné feldolgozni a csomagrögzítéseket, futtassa a következő parancsot:

sudo suricata -c /etc/suricata/suricata.yaml -r <location_of_pcapfile>

Az eredményként kapott riasztások ellenőrzéséhez olvassa el a fast.log fájlt:

tail -f /var/log/suricata/fast.log

Az Elastic Stack beállítása

A Suricata által előállított naplók értékes információkat tartalmaznak arról, hogy mi történik a hálózaton, de ezek a naplófájlok nem a legkönnyebben olvashatók és értelmezhetők. A Suricata és az Elastic Stack összekapcsolásával létrehozhat egy Kibana-irányítópultot a naplók alapján történő kereséshez, gráfozáshoz, elemzéshez és elemzéshez.

Az Elasticsearch telepítése

  1. Az Elastic Stack 5.0-s és újabb verziójához Java 8 szükséges. Futtassa a parancsot java -version a verzió ellenőrzéséhez. Ha nincs telepítve a Java, tekintse meg az Azure által támogatott Java fejlesztői készletek dokumentációját.

  2. Töltse le a rendszer megfelelő bináris csomagját:

    curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.0.deb
    sudo dpkg -i elasticsearch-5.2.0.deb
    sudo /etc/init.d/elasticsearch start
    

    Az Elastic weblapján további telepítési módszereket is találhat az Elasticsearch telepítéséhez.

  3. Ellenőrizze, hogy az Elasticsearch fut-e a következő paranccsal:

    curl http://127.0.0.1:9200
    

    Az alábbi példához hasonló választ kell kapnia:

    {
    "name" : "Angela Del Toro",
    "cluster_name" : "elasticsearch",
    "version" : {
        "number" : "5.2.0",
        "build_hash" : "8ff36d139e16f8720f2947ef62c8167a888992fe",
        "build_timestamp" : "2016-01-27T13:32:39Z",
        "build_snapshot" : false,
        "lucene_version" : "6.1.0"
    },
    "tagline" : "You Know, for Search"
    }
    

Az Elasticsearch telepítésével kapcsolatos további utasításokért tekintse meg az Elastic webhelyet a telepítéssel kapcsolatban.

A Logstash telepítése

  1. Telepítse a Logstash-t a következő parancsok futtatásával:

    curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb
    sudo dpkg -i logstash-5.2.0.deb
    
  2. Konfigurálja a Logstash-t a eve.json fájl kimenetéből való olvasásra. Hozzon létre egy logstash.conf fájlt a következő paranccsal:

    sudo touch /etc/logstash/conf.d/logstash.conf
    
  3. Adja hozzá a következő tartalmat a fájlhoz. Győződjön meg arról, hogy a eve.json fájl elérési útja helyes.

    input {
    file {
        path => ["/var/log/suricata/eve.json"]
        codec =>  "json"
        type => "SuricataIDPS"
    }
    
    }
    
    filter {
    if [type] == "SuricataIDPS" {
        date {
        match => [ "timestamp", "ISO8601" ]
        }
        ruby {
        code => "
            if event.get('[event_type]') == 'fileinfo'
            event.set('[fileinfo][type]', event.get('[fileinfo][magic]').to_s.split(',')[0])
            end
        "
        }
    
        ruby{
        code => "
            if event.get('[event_type]') == 'alert'
            sp = event.get('[alert][signature]').to_s.split(' group ')
            if (sp.length == 2) and /\A\d+\z/.match(sp[1])
                event.set('[alert][signature]', sp[0])
            end
            end
            "
        }
    }
    
    if [src_ip]  {
        geoip {
        source => "src_ip"
        target => "geoip"
        #database => "/opt/logstash/vendor/geoip/GeoLiteCity.dat"
        add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
        add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]
        }
        mutate {
        convert => [ "[geoip][coordinates]", "float" ]
        }
        if ![geoip.ip] {
        if [dest_ip]  {
            geoip {
            source => "dest_ip"
            target => "geoip"
            #database => "/opt/logstash/vendor/geoip/GeoLiteCity.dat"
            add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
            add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}"  ]
            }
            mutate {
            convert => [ "[geoip][coordinates]", "float" ]
            }
        }
        }
    }
    }
    
    output {
    elasticsearch {
        hosts => "localhost"
    }
    }
    
  4. Adja meg a megfelelő engedélyeket a eve.json fájlhoz, hogy a Logstash betölthesse a fájlt:

    sudo chmod 775 /var/log/suricata/eve.json
    
  5. Indítsa el a Logstash parancsot a következő paranccsal:

    sudo /etc/init.d/logstash start
    

A Logstash telepítésével kapcsolatos további utasításokért tekintse meg a hivatalos Elastic-dokumentációt.

A Kibana telepítése

  1. Futtassa a következő parancsokat a Kibana telepítéséhez:

    curl -L -O https://artifacts.elastic.co/downloads/kibana/kibana-5.2.0-linux-x86_64.tar.gz
    tar xzvf kibana-5.2.0-linux-x86_64.tar.gz
    
  2. Futtassa a Kibana-t az alábbi parancsokkal:

    cd kibana-5.2.0-linux-x86_64/
    ./bin/kibana
    
  3. Tekintse meg a Kibana webes felületét a következő lépéssel http://localhost:5601: .

    Ebben a forgatókönyvben a Suricata-naplókhoz használt indexminta a .logstash-*

  4. Ha távolról szeretné megtekinteni a Kibana-irányítópultot, hozzon létre egy bejövő hálózati biztonsági csoport (NSG) szabályt, amely lehetővé teszi az 5601-s port elérését.

Kibana-irányítópult létrehozása

Ez a cikk egy minta irányítópultot biztosít a riasztások trendjeinek és részleteinek megtekintéséhez. A használatához:

  1. Töltse le az irányítópultfájlt, a vizualizációs fájlt és a mentett keresési fájlt.

  2. A Kibana Felügyeleti lapján lépjen a Mentett objektumok lapra, és importálja mind a három fájlt. Ezután az Irányítópult lapon megnyithatja és betöltheti a minta irányítópultot.

Saját vizualizációkat és irányítópultokat is létrehozhat, amelyek saját érdeklődési körű metrikákhoz igazodnak. További információ a Kibana vizualizációinak létrehozásáról a Kibana hivatalos dokumentációjából.

Screenshot that shows a Kibana dashboard.

IDS-riasztási naplók vizualizációja

A minta irányítópult a Suricata riasztási naplóinak számos vizualizációját tartalmazza:

  • GeoIP által készített riasztás: Térkép, amely a riasztások földrajzi hely (IP-cím alapján meghatározott) alapján történő eloszlását mutatja be a származási ország/régió szerint.

    Screenshot shows a map for geographic IP alerts.

  • A 10 leggyakoribb riasztás: A 10 leggyakrabban aktivált riasztás és azok leírása. Az egyes riasztások kiválasztása az adott riasztásra vonatkozó információkra szűri az irányítópultot.

    Screenshot that shows the most frequently triggered alerts.

  • Riasztások száma: A szabálykészlet által aktivált riasztások teljes száma.

    Screenshot shows the number of alerts.

  • Top 20 ScrIP – Riasztások, Top 20 DestIP – Riasztások, Top 20 SrcPort – Riasztások, Top 20 DestPort – Riasztások: Kördiagramok, amelyek az első 20 IP-cím és port forrásait és célhelyeit jelenítik meg, amelyeken a riasztások aktiválódtak. Az adott IP-címekre vagy portokra szűrve megtekintheti, hogy hány és milyen típusú riasztások aktiválódnak.

    Screenshot that shows pie charts of the top 20 IPs and ports that alerts were triggered on.

  • Riasztás összefoglalása: Az egyes riasztások konkrét részleteit összegző táblázat. Ezt a táblát testreszabhatja úgy, hogy az egyes riasztások szempontjából érdekes egyéb paramétereket jelenítsen meg.

    Screenshot shows a summary table with details about individual alerts.

Az egyéni vizualizációk és irányítópultok létrehozásáról további információt a Kibana hivatalos dokumentációjában talál.

Összegzés

A Network Watcher csomagrögzítéseinek és a nyílt forráskódú IDS-eszközöknek, például a Suricata-nak a kombinálásával számos fenyegetés esetén végezhet hálózati behatolásészlelést.

Az irányítópultok segítségével gyorsan észreveheti a hálózat trendjeit és rendellenességeit. Irányítópultokkal is megvizsgálhatja az adatokat, hogy felderítse a riasztások alapvető okait, például a rosszindulatú felhasználói ügynököket vagy a sebezhető portokat. Ezzel a kinyert adatokkal megalapozott döntéseket hozhat a következőkkel kapcsolatban:

  • Reagáljon a hálózatra, és védje meg a kártékony behatolási kísérleteket.
  • Hozzon létre szabályokat a hálózatba történő jövőbeli behatolás megakadályozása érdekében.

Következő lépés

Megtudhatja, hogyan aktiválhat csomagrögzítéseket riasztások alapján: