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.
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
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
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
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.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.
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
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
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
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" } }
Ge rätt behörigheter till eve.json-filen så att Logstash kan mata in filen:
sudo chmod 775 /var/log/suricata/eve.json
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
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
Kör Kibana med följande kommandon:
cd kibana-5.2.0-linux-x86_64/ ./bin/kibana
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 .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:
Ladda ned instrumentpanelsfilen, visualiseringsfilen och den sparade sökfilen.
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.
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).
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.
Antal aviseringar: Det totala antalet aviseringar som regeluppsättningen utlöste.
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.
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.
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: