Hálózati biztonsági csoport folyamatnaplóinak kezelése és elemzése a Network Watcher és a Grafana használatával
Fontos
2027. szeptember 30-án a hálózati biztonsági csoport (NSG) folyamatnaplói megszűnnek. A kivonás részeként 2025. június 30-tól már nem hozhat létre új NSG-folyamatnaplókat. Javasoljuk, hogy migráljon a virtuális hálózati folyamatnaplókba, amelyek leküzdik az NSG-folyamatnaplók korlátait. A kivonási dátum után az NSG-folyamatnaplókkal engedélyezett forgalomelemzések már nem támogatottak, és az előfizetésekben meglévő NSG-folyamatnapló-erőforrások törlődnek. Az NSG-folyamat naplóinak rekordjai azonban nem törlődnek, és továbbra is betartják a vonatkozó adatmegőrzési szabályzatokat. További információért tekintse meg a hivatalos bejelentést.
A hálózati biztonsági csoport (NSG) folyamatnaplói olyan információkat tartalmaznak, amelyek a hálózati adapterek bejövő és kimenő IP-forgalmának megértéséhez használhatók. Ezek a folyamatnaplók NSG-szabály alapján jelenítik meg a kimenő és bejövő folyamatokat, a folyamat által érintett hálózati adaptert, a folyamat 5 rekordos adatait (forrás/cél IP-címe, forrás-/célport, protokoll), valamint azt, hogy a forgalom engedélyezve vagy megtagadva volt-e.
A hálózat számos NSG-jével rendelkezhet, amelyeken engedélyezve van a folyamatnaplózás. Ez a naplózási adatmennyiség nehézkessé teszi a naplók elemzését és elemzését. Ez a cikk megoldást nyújt ezeknek az NSG-folyamatnaplóknak a központi kezelésére a Grafana, egy nyílt forráskód gráfkészítő eszköz, az Elasticsearch, az elosztott keresési és elemzési motor és a Logstash használatával, amely egy nyílt forráskód kiszolgálóoldali adatfeldolgozási folyamat.
Eset
Az NSG-folyamatnaplók engedélyezve vannak a Network Watcher használatával, és az Azure Blob Storage-ban vannak tárolva. A Logstash beépülő modul a blobtárolóból származó folyamatnaplók csatlakoztatására és feldolgozására szolgál, és elküldi őket az Elasticsearchnek. Miután a folyamatnaplókat az Elasticsearch tárolja, elemezhetők és megjeleníthetők a Grafana testreszabott irányítópultjaiban.
A telepítés lépései
Hálózati biztonsági csoport folyamatnaplózásának engedélyezése
Ebben a forgatókönyvben engedélyeznie kell a hálózati biztonsági csoport folyamatnaplózását a fiók legalább egy hálózati biztonsági csoportján. A hálózati biztonsági naplók engedélyezésével kapcsolatos utasításokért tekintse meg a következő cikket a hálózati biztonsági csoportok folyamatnaplózásának bemutatása című cikkben.
Beállítási szempontok
Ebben a példában a Grafana, az Elasticsearch és a Logstash egy Azure-ban üzembe helyezett Ubuntu LTS-kiszolgálón van konfigurálva. Ez a minimális beállítás mind a három összetevő futtatásához használható – mind ugyanazon a virtuális gépen futnak. Ez a beállítás csak teszteléshez és nem kritikus számítási feladatokhoz használható. A Logstash, az Elasticsearch és a Grafana különböző példányok egymástól függetlenül méretezhetők. További információkért tekintse meg az egyes összetevők dokumentációját.
A Logstash telepítése
A Logstash használatával simíthatja a JSON formátumú folyamatnaplókat egy folyamatszintre.
A Logstash Ubuntu-ban való telepítéséhez az alábbi utasítások szolgálnak. A csomag Red Hat Enterprise Linux rendszerben való telepítésével kapcsolatos utasításokért lásd : Telepítés csomagtárakból – yum.
A Logstash telepítéséhez futtassa a következő parancsokat:
curl -L -O https://artifacts.elastic.co/downloads/logstash/logstash-5.2.0.deb sudo dpkg -i logstash-5.2.0.deb
Konfigurálja a Logstashet a folyamatnaplók elemzéséhez és az Elasticsearchnek való elküldéséhez. Hozzon létre egy Logstash.conf fájlt a következő használatával:
sudo touch /etc/logstash/conf.d/logstash.conf
Adja hozzá a következő tartalmat a fájlhoz. Módosítsa a tárfiók nevét és hozzáférési kulcsát a tárfiók adatainak megfelelően:
input { azureblob { storage_account_name => "mystorageaccount" storage_access_key => "VGhpcyBpcyBhIGZha2Uga2V5Lg==" container => "insights-logs-networksecuritygroupflowevent" codec => "json" # Refer https://learn.microsoft.com/azure/network-watcher/network-watcher-read-nsg-flow-logs # Typical numbers could be 21/9 or 12/2 depends on the nsg log file types file_head_bytes => 12 file_tail_bytes => 2 # Enable / tweak these settings when event is too big for codec to handle. # break_json_down_policy => "with_head_tail" # break_json_batch_count => 2 } } filter { split { field => "[records]" } split { field => "[records][properties][flows]"} split { field => "[records][properties][flows][flows]"} split { field => "[records][properties][flows][flows][flowTuples]"} mutate { split => { "[records][resourceId]" => "/"} add_field => { "Subscription" => "%{[records][resourceId][2]}" "ResourceGroup" => "%{[records][resourceId][4]}" "NetworkSecurityGroup" => "%{[records][resourceId][8]}" } convert => {"Subscription" => "string"} convert => {"ResourceGroup" => "string"} convert => {"NetworkSecurityGroup" => "string"} split => { "[records][properties][flows][flows][flowTuples]" => "," } add_field => { "unixtimestamp" => "%{[records][properties][flows][flows][flowTuples][0]}" "srcIp" => "%{[records][properties][flows][flows][flowTuples][1]}" "destIp" => "%{[records][properties][flows][flows][flowTuples][2]}" "srcPort" => "%{[records][properties][flows][flows][flowTuples][3]}" "destPort" => "%{[records][properties][flows][flows][flowTuples][4]}" "protocol" => "%{[records][properties][flows][flows][flowTuples][5]}" "trafficflow" => "%{[records][properties][flows][flows][flowTuples][6]}" "traffic" => "%{[records][properties][flows][flows][flowTuples][7]}" "flowstate" => "%{[records][properties][flows][flows][flowTuples][8]}" "packetsSourceToDest" => "%{[records][properties][flows][flows][flowTuples][9]}" "bytesSentSourceToDest" => "%{[records][properties][flows][flows][flowTuples][10]}" "packetsDestToSource" => "%{[records][properties][flows][flows][flowTuples][11]}" "bytesSentDestToSource" => "%{[records][properties][flows][flows][flowTuples][12]}" } add_field => { "time" => "%{[records][time]}" "systemId" => "%{[records][systemId]}" "category" => "%{[records][category]}" "resourceId" => "%{[records][resourceId]}" "operationName" => "%{[records][operationName]}" "Version" => "%{[records][properties][Version]}" "rule" => "%{[records][properties][flows][rule]}" "mac" => "%{[records][properties][flows][flows][mac]}" } convert => {"unixtimestamp" => "integer"} convert => {"srcPort" => "integer"} convert => {"destPort" => "integer"} add_field => { "message" => "%{Message}" } } date { match => ["unixtimestamp" , "UNIX"] } } output { stdout { codec => rubydebug } elasticsearch { hosts => "localhost" index => "nsg-flow-logs" } }
A megadott Logstash konfigurációs fájl három részből áll: a bemenetből, a szűrőből és a kimenetből. A bemeneti szakasz kijelöli a Logstash által feldolgozandó naplók bemeneti forrását – ebben az esetben egy "azureblob" bemeneti beépülő modult fogunk használni (a következő lépésekben telepítve), amely lehetővé teszi számunkra a blobtárolóban tárolt NSG-folyamatnapló JSON-fájljainak elérését.
A szűrőszakasz ezután simítja az egyes folyamatnapló-fájlokat, hogy az egyes folyamatok és a hozzá tartozó tulajdonságok külön Logstash-eseménysé alakulnak.
Végül a kimeneti szakasz minden Logstash-eseményt továbbít az Elasticsearch-kiszolgálónak. Nyugodtan módosíthatja a Logstash konfigurációs fájlját az igényeinek megfelelően.
Az Azure Blob Storage Logstash bemeneti beépülő moduljának telepítése
Ez a Logstash beépülő modul lehetővé teszi a folyamatnaplók közvetlen elérését a kijelölt Blob Storage-fiókból. A beépülő modul telepítéséhez az alapértelmezett Logstash telepítési könyvtárból (ebben az esetben a /usr/share/logstash/bin) futtassa a következő parancsot:
sudo /usr/share/logstash/bin/logstash-plugin install logstash-input-azureblob
Erről a beépülő modulról további információt az Azure Storage-blobokhoz készült Logstash bemeneti beépülő modulban talál.
Az Elasticsearch telepítése
Az Elasticsearch telepítéséhez a következő szkriptet használhatja. Az Elasticsearch telepítésével kapcsolatos információkért lásd: Elastic Stack.
sudo apt-get install apt-transport-https openjdk-8-jre-headless uuid-runtime pwgen -y
wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://packages.elastic.co/elasticsearch/5.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-5.x.list
sudo apt-get update && apt-get install elasticsearch
sudo sed -i s/#cluster.name:.*/cluster.name:\ grafana/ /etc/elasticsearch/elasticsearch.yml
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch.service
sudo systemctl start elasticsearch.service
A Grafana telepítése
A Grafana telepítéséhez és futtatásához futtassa a következő parancsokat:
wget https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_4.5.1_amd64.deb
sudo apt-get install -y adduser libfontconfig
sudo dpkg -i grafana_4.5.1_amd64.deb
sudo service grafana-server start
További telepítési információkért lásd a Debian/Ubuntu telepítése című témakört.
Az Elasticsearch-kiszolgáló hozzáadása adatforrásként
Ezután hozzá kell adnia a folyamatnaplókat tartalmazó Elasticsearch-indexet adatforrásként. Adatforrás hozzáadásához válassza az Adatforrás hozzáadása lehetőséget, és töltse ki az űrlapot a megfelelő információkkal. A konfiguráció mintája az alábbi képernyőképen található:
Irányítópult létrehozása
Most, hogy sikeresen konfigurálta a Grafana-t az NSG-folyamatnaplókat tartalmazó Elasticsearch-indexből való olvasásra, irányítópultokat hozhat létre és személyre szabhat. Új irányítópult létrehozásához válassza az Első irányítópult létrehozása lehetőséget. Az alábbi mintadiagram-konfiguráció az NSG-szabály szerint szegmentált folyamatokat mutatja be:
Összegzés
A Network Watcher és az Elasticsearch és a Grafana integrálásával mostantól kényelmes és központosított módon kezelheti és vizualizálhatja az NSG-folyamatnaplókat és más adatokat. A Grafana számos egyéb hatékony gráfkezelési funkcióval rendelkezik, amelyek a folyamatnaplók további kezelésére és a hálózati forgalom jobb megértésére is használhatók. Most, hogy beállított egy Grafana-példányt, és csatlakozott az Azure-hoz, nyugodtan folytassa a további funkciók megismerését.
Következő lépés
- További információ a Network Watcher használatáról.