Detectie van netwerkinbraak uitvoeren met behulp van Azure Network Watcher en opensource-hulpprogramma's
Pakketopnamen zijn een belangrijk onderdeel voor het implementeren van inbraakdetectiesystemen (IDS's) van het netwerk en het uitvoeren van netwerkbeveiligingsbewaking. Verschillende opensource IDS-hulpprogramma's verwerken pakketopnamen en zoeken naar handtekeningen van mogelijke netwerkinbraak en schadelijke activiteiten. Met behulp van de pakketopnamen die Azure Network Watcher biedt, kunt u uw netwerk analyseren op schadelijke inbraak of beveiligingsproblemen.
Een van deze opensource-hulpprogramma's is Suricata, een IDS-engine die gebruikmaakt van regelsets om netwerkverkeer te bewaken en waarschuwingen te activeren wanneer er verdachte gebeurtenissen optreden. Suricata biedt een multithreaded engine voor het uitvoeren van een analyse van netwerkverkeer met hogere snelheid en efficiëntie. Ga naar de website van Suricata voor meer informatie over Suricata en de mogelijkheden ervan.
Scenario
In dit artikel wordt uitgelegd hoe u uw omgeving instelt om inbraakdetectie van het netwerk uit te voeren met behulp van Network Watcher, Suricata en de Elastic Stack.
Network Watcher biedt u de pakketopnamen voor het uitvoeren van detectie van netwerkinbraak. Suricata verwerkt het pakket vastleggen en activeert waarschuwingen op basis van pakketten die overeenkomen met de regelset bedreigingen. Suricata slaat deze waarschuwingen op in een logboekbestand op uw lokale computer.
Met behulp van de Elastic Stack kunt u de logboeken indexeren die Suricata genereert en deze vervolgens gebruiken om een Kibana-dashboard te maken. Een dashboard biedt een visuele weergave van de logboeken en een manier om snel inzicht te krijgen in mogelijke netwerkproblemen.
U kunt beide opensource-hulpprogramma's instellen op een virtuele Azure-machine (VM), zodat u deze analyse in uw eigen Azure-netwerkomgeving kunt uitvoeren.
Suricata installeren
Voer in de opdrachtregelterminal van uw VIRTUELE machine de volgende opdrachten uit:
sudo add-apt-repository ppa:oisf/suricata-stable sudo apt-get update sudo apt-get install suricata
Als u de installatie wilt controleren, voert u de opdracht
suricata -h
uit om de volledige lijst met opdrachten weer te geven.
Zie de quickstartgids voor de installatie van Suricata voor andere installatiemethoden.
De regelset voor nieuwe bedreigingen downloaden
In deze fase hebt u geen regels om Suricata uit te voeren. U kunt uw eigen regels maken als u specifieke bedreigingen voor uw netwerk wilt detecteren. U kunt ook ontwikkelde regelsets van verschillende providers gebruiken, zoals opkomende bedreigingen of Talos-regels van Snort. In dit artikel gebruikt u de vrij beschikbare regelset voor nieuwe bedreigingen.
Download de regelset en kopieer deze naar de map:
wget https://rules.emergingthreats.net/open/suricata/emerging.rules.tar.gz
tar zxf emerging.rules.tar.gz
sudo cp -r rules /etc/suricata/
Pakketopnamen verwerken met behulp van Suricata
Voer de volgende opdracht uit om pakketopnamen te verwerken met behulp van Suricata:
sudo suricata -c /etc/suricata/suricata.yaml -r <location_of_pcapfile>
Lees het fast.log-bestand om de resulterende waarschuwingen te controleren:
tail -f /var/log/suricata/fast.log
De elastische stack instellen
Logboeken die Suricata produceert, bevatten waardevolle informatie over wat er op uw netwerk gebeurt, maar deze logboekbestanden zijn niet het eenvoudigst te lezen en te begrijpen. Door Suricata te verbinden met de elastische stack, kunt u een Kibana-dashboard maken om inzichten uit uw logboeken te zoeken, te grafieken, te analyseren en af te leiden.
Elasticsearch installeren
Voor Elastic Stack versie 5.0 en hoger is Java 8 vereist. Voer de opdracht
java -version
uit om uw versie te controleren. Als u Java niet hebt geïnstalleerd, raadpleegt u de documentatie over de door Azure ondersteunde Java Development Kits.Download het juiste binaire pakket voor uw systeem:
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
U vindt andere installatiemethoden op de Elastic-webpagina voor het installeren van Elasticsearch.
Controleer of Elasticsearch wordt uitgevoerd met behulp van deze opdracht:
curl http://127.0.0.1:9200
U krijgt een antwoord dat vergelijkbaar is met dit voorbeeld:
{ "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" }
Raadpleeg de elastic webpagina over de installatie voor meer instructies over het installeren van Elasticsearch.
Logstash installeren
Installeer Logstash door de volgende opdrachten uit te voeren:
curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb sudo dpkg -i logstash-5.2.0.deb
Configureer Logstash om te lezen uit de uitvoer van het eve.json-bestand . Maak een logstash.conf-bestand met behulp van deze opdracht:
sudo touch /etc/logstash/conf.d/logstash.conf
Voeg de volgende inhoud toe aan het bestand. Zorg ervoor dat het pad naar het eve.json-bestand juist is.
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" } }
Geef de juiste machtigingen aan het eve.json-bestand , zodat Logstash het bestand kan opnemen:
sudo chmod 775 /var/log/suricata/eve.json
Start Logstash door deze opdracht uit te voeren:
sudo /etc/init.d/logstash start
Raadpleeg de officiële Elastic-documentatie voor meer instructies over het installeren van Logstash.
Kibana installeren
Voer de volgende opdrachten uit om Kibana te installeren:
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
Voer Kibana uit met behulp van deze opdrachten:
cd kibana-5.2.0-linux-x86_64/ ./bin/kibana
Bekijk uw Kibana-webinterface door naar
http://localhost:5601
.Voor dit scenario is
logstash-*
het indexpatroon dat wordt gebruikt voor de Suricata-logboeken.Als u het Kibana-dashboard extern wilt weergeven, maakt u een NSG-regel (inkomende netwerkbeveiligingsgroep) die toegang tot poort 5601 toestaat.
Een Kibana-dashboard maken
Dit artikel bevat een voorbeelddashboard waarin u trends en details in uw waarschuwingen kunt bekijken. U gebruikt deze als volgt:
Download het dashboardbestand, het visualisatiebestand en het opgeslagen zoekbestand.
Ga op het tabblad Beheer van Kibana naar Opgeslagen objecten en importeer alle drie de bestanden. Vervolgens kunt u op het tabblad Dashboard het voorbeelddashboard openen en laden.
U kunt ook uw eigen visualisaties en dashboards maken die zijn afgestemd op metrische gegevens van uw eigen belang. Lees meer over het maken van Kibana-visualisaties uit de officiële documentatie van Kibana.
IdS-waarschuwingslogboeken visualiseren
Het voorbeelddashboard biedt verschillende visualisaties van de Suricata-waarschuwingslogboeken:
Waarschuwing per GeoIP: een kaart met de distributie van waarschuwingen per land/regio van herkomst op basis van geografische locatie (bepaald door IP).
Top 10 waarschuwingen: een samenvatting van de tien meest geactiveerde waarschuwingen en hun beschrijvingen. Als u een afzonderlijke waarschuwing selecteert, wordt het dashboard gefilterd op de informatie die betrekking heeft op die specifieke waarschuwing.
Aantal waarschuwingen: het totale aantal waarschuwingen dat door de regelset is geactiveerd.
Top 20 ScrIP - Waarschuwingen, Top 20 DestIP - Waarschuwingen, Top 20 SrcPort - Waarschuwingen, Top 20 DestPort - Waarschuwingen: Cirkeldiagrammen met de bronnen en bestemmingen voor de top 20 IP's en poorten waarop waarschuwingen zijn geactiveerd. U kunt filteren op specifieke IP-adressen of poorten om te zien hoeveel en welke soorten waarschuwingen worden geactiveerd.
Samenvatting van waarschuwingen: een tabel met specifieke details van elke waarschuwing. U kunt deze tabel aanpassen om andere interessante parameters voor elke waarschuwing weer te geven.
Zie de officiële documentatie van Kibana voor meer informatie over het maken van aangepaste visualisaties en dashboards.
Conclusie
Door pakketopnamen van Network Watcher en opensource-IDS-hulpprogramma's zoals Suricata te combineren, kunt u inbraakdetectie voor netwerken uitvoeren voor een breed scala aan bedreigingen.
Dashboards helpen u snel trends en afwijkingen in uw netwerk te herkennen. U kunt dashboards ook gebruiken om de gegevens te onderzoeken om de hoofdoorzaken van waarschuwingen te detecteren, zoals schadelijke gebruikersagenten of kwetsbare poorten. Met deze geëxtraheerde gegevens kunt u weloverwogen beslissingen nemen over het volgende:
- Reageer op en bescherm uw netwerk tegen schadelijke inbraakpogingen.
- Regels maken om toekomstige inbraak in uw netwerk te voorkomen.
Volgende stap
Meer informatie over het activeren van pakketopnamen op basis van waarschuwingen: