Dela via


Utföra identifiering av nätverksintrång med hjälp av Azure Network Watcher och verktyg med öppen källkod

Paketinsamlingar är en viktig komponent för att implementera system för identifiering av nätverksintrång (IDS) och utföra övervakning av nätverkssäkerhet. Flera IDS-verktyg med öppen källkod bearbetar paketinsamlingar och letar efter signaturer för möjliga nätverksintrång och skadlig aktivitet. Genom att använda de paketinsamlingar som Azure Network Watcher tillhandahåller kan du analysera nätverket efter skadliga intrång eller sårbarheter.

Ett sådant verktyg med öppen källkod är Suricata, en IDS-motor som använder regeluppsättningar för att övervaka nätverkstrafik och utlöser aviseringar när misstänkta händelser inträffar. Suricata erbjuder en flertrådad motor för att utföra nätverkstrafikanalys med ökad hastighet och effektivitet. Mer information om Suricata och dess funktioner finns på Suricata-webbplatsen.

Scenario

Den här artikeln beskriver hur du konfigurerar din miljö för att utföra identifiering av nätverksintrång med hjälp av Network Watcher, Suricata och Elastic Stack.

Network Watcher ger dig paketinsamlingar för att utföra identifiering av nätverksintrång. Suricata bearbetar paketets aviseringar och utlöser aviseringar baserat på paket som matchar dess regeluppsättning av hot. Suricata lagrar dessa aviseringar i en loggfil på den lokala datorn.

Genom att använda Elastic Stack kan du indexeras loggarna som Suricata genererar och sedan använda dem för att skapa en Kibana-instrumentpanel. En instrumentpanel ger en visuell representation av loggarna och ett sätt att snabbt få insikter om potentiella nätverkssårbarheter.

Diagram that shows a simple web application scenario.

Du kan konfigurera båda verktygen med öppen källkod på en virtuell Azure-dator (VM), så att du kan utföra den här analysen i din egen Azure-nätverksmiljö.

Installera Suricata

  1. Kör följande kommandon på den virtuella datorns kommandoradsterminal:

    sudo add-apt-repository ppa:oisf/suricata-stable
    sudo apt-get update
    sudo apt-get install suricata
    
  2. Kontrollera installationen genom att köra kommandot suricata -h för att se hela listan med kommandon.

Andra installationsmetoder finns i snabbstartsguiden för Suricata-installation.

Ladda ned regeln för nya hot

I det här skedet har du inga regler för Suricata att köra. Du kan skapa egna regler om du vill identifiera specifika hot mot nätverket. Du kan också använda utvecklade regeluppsättningar från olika leverantörer, till exempel Nya hot eller Talos-regler från Snort. I den här artikeln använder du den fritt tillgängliga regeln för nya hot.

Ladda ned regeluppsättningen och kopiera den till katalogen:

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

Bearbeta paketinsamlingar med hjälp av Suricata

Kör följande kommando för att bearbeta paketinsamlingar med hjälp av Suricata:

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

Om du vill kontrollera de resulterande aviseringarna läser du filen fast.log :

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

Konfigurera Elastic Stack

Loggar som Suricata skapar innehåller värdefull information om vad som händer i nätverket, men de här loggfilerna är inte lättast att läsa och förstå. Genom att ansluta Suricata till Elastic Stack kan du skapa en Kibana-instrumentpanel för att söka, grafera, analysera och härleda insikter från dina loggar.

Installera Elasticsearch

  1. Elastic Stack version 5.0 och senare kräver Java 8. Kör kommandot java -version för att kontrollera din version. Om du inte har Java installerat kan du läsa dokumentationen om Java Development Kits som stöds av Azure.

  2. Ladda ned rätt binärpaket för systemet:

    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
    

    Du hittar andra installationsmetoder på elastic-webbsidan för att installera Elasticsearch.

  3. Kontrollera att Elasticsearch körs med hjälp av det här kommandot:

    curl http://127.0.0.1:9200
    

    Du bör få ett svar som liknar det här exemplet:

    {
    "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"
    }
    

Mer information om hur du installerar Elasticsearch finns på elastic webbsidan om installation.

Installera Logstash

  1. Installera Logstash genom att köra följande kommandon:

    curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb
    sudo dpkg -i logstash-5.2.0.deb
    
  2. Konfigurera Logstash att läsa från utdata från eve.json-filen. Skapa en logstash.conf-fil med hjälp av det här kommandot:

    sudo touch /etc/logstash/conf.d/logstash.conf
    
  3. Lägg till följande innehåll i filen. Kontrollera att sökvägen till eve.json filen är korrekt.

    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. Ge rätt behörigheter till eve.json-filen så att Logstash kan mata in filen:

    sudo chmod 775 /var/log/suricata/eve.json
    
  5. Starta Logstash genom att köra det här kommandot:

    sudo /etc/init.d/logstash start
    

Mer information om hur du installerar Logstash finns i den officiella Elastic-dokumentationen.

Installera Kibana

  1. Kör följande kommandon för att installera Kibana:

    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. Kör Kibana med följande kommandon:

    cd kibana-5.2.0-linux-x86_64/
    ./bin/kibana
    
  3. Visa ditt Kibana-webbgränssnitt genom att gå till http://localhost:5601.

    I det här scenariot är logstash-*indexmönstret som används för Suricata-loggarna .

  4. Om du vill visa Kibana-instrumentpanelen via fjärranslutning skapar du en regel för inkommande nätverkssäkerhetsgrupp (NSG) som ger åtkomst till port 5601.

Skapa en Kibana-instrumentpanel

Den här artikeln innehåller en exempelinstrumentpanel där du kan visa trender och information i dina aviseringar. Så här använder du den:

  1. Ladda ned instrumentpanelsfilen, visualiseringsfilen och den sparade sökfilen.

  2. På fliken Hantering i Kibana går du till Sparade objekt och importerar alla tre filerna. På fliken Instrumentpanel kan du sedan öppna och läsa in exempelinstrumentpanelen.

Du kan också skapa egna visualiseringar och instrumentpaneler som är skräddarsydda för mått av eget intresse. Läs mer om att skapa Kibana-visualiseringar från Kibanas officiella dokumentation.

Screenshot that shows a Kibana dashboard.

Visualisera IDS-aviseringsloggar

Exempelinstrumentpanelen innehåller flera visualiseringar av Suricata-aviseringsloggarna:

  • Avisering efter GeoIP: En karta som visar distributionen av aviseringar efter deras ursprungsland/ursprungsregion baserat på geografisk plats (bestäms av IP).

    Screenshot shows a map for geographic IP alerts.

  • Topp 10-aviseringar: En sammanfattning av de 10 mest utlösta aviseringarna och deras beskrivningar. Om du väljer en enskild avisering filtreras instrumentpanelen till den information som gäller för den specifika aviseringen.

    Screenshot that shows the most frequently triggered alerts.

  • Antal aviseringar: Det totala antalet aviseringar som regeluppsättningen utlöste.

    Screenshot shows the number of alerts.

  • Topp 20 ScrIP - Aviseringar, Topp 20 DestIP - Aviseringar, Topp 20 SrcPort - Aviseringar, Topp 20 DestPort - Aviseringar: Cirkeldiagram som visar källorna och destinationerna för de 20 främsta IP-adresserna och portarna som aviseringar utlöstes på. Du kan filtrera på specifika IP-adresser eller portar för att se hur många och vilka typer av aviseringar som utlöses.

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

  • Aviseringssammanfattning: En tabell som sammanfattar specifik information om varje avisering. Du kan anpassa den här tabellen för att visa andra parametrar av intresse för varje avisering.

    Screenshot shows a summary table with details about individual alerts.

Mer information om hur du skapar anpassade visualiseringar och instrumentpaneler finns i Kibanas officiella dokumentation.

Slutsats

Genom att kombinera paketinsamlingar från Network Watcher och IDS-verktyg med öppen källkod, till exempel Suricata, kan du utföra identifiering av nätverksintrång för en mängd olika hot.

Instrumentpaneler hjälper dig att snabbt upptäcka trender och avvikelser i nätverket. Du kan också använda instrumentpaneler för att undersöka data för att identifiera rotorsakerna till aviseringar, till exempel skadliga användaragenter eller sårbara portar. Med dessa extraherade data kan du fatta välgrundade beslut om hur du:

  • Reagera på och skydda nätverket mot skadliga intrångsförsök.
  • Skapa regler för att förhindra framtida intrång i nätverket.

Gå vidare

Lär dig hur du utlöser paketinsamlingar baserat på aviseringar: