Wizualizacja logów zaawansowanego wykrywania zagrożeń DNS Armor za pomocą wskaźników opartych na logach i niestandardowego panelu

1. Wstęp i omówienie

DNS Armor, oparta na technologii Infoblox, to w pełni zarządzana usługa, która zapewnia zabezpieczenia na poziomie DNS dla Twoich zbiorów zadań w Google Cloud. Zaawansowany detektor zagrożeń został zaprojektowany tak, aby wykrywać szkodliwą aktywność na najwcześniejszym etapie łańcucha ataku – w zapytaniu DNS – bez zwiększania złożoności operacyjnej ani obciążenia wydajności.

To ćwiczenie zawiera szczegółowe instrukcje konfigurowania i testowania usługi DNS Armor. Skonfigurujesz niezbędną infrastrukturę sieciową, utworzysz detektor zagrożeń, przetestujesz usługę, symulując zagrożenia DNS, a na koniec zwizualizujesz i przeanalizujesz logi zagrożeń za pomocą niestandardowego panelu Cloud Monitoring.

Co utworzysz

W tym ćwiczeniu w Codelabs utworzysz te zasoby:

  • Jedna sieć VPC (network-a) z podsieciami i maszynami wirtualnymi w regionach us-east4 i us-central1.
  • Detektor zaawansowanych zagrożeń DNS Armor skonfigurowany do sprawdzania zapytań DNS.
  • Wskaźniki oparte na logach na podstawie logów zagrożeń DNS.
  • Niestandardowy panel do wizualizacji logów zagrożeń DNS.

cfe28f2c17ca2660.png

Czego się nauczysz

  • jak udostępnić niezbędne zasoby sieciowe, w tym sieci VPC i maszyny wirtualne;
  • Jak wdrożyć zaawansowany detektor zagrożeń i wykluczyć określone sieci.
  • Jak zweryfikować konfigurację wykrywania zagrożeń za pomocą skryptu symulacji zagrożeń.
  • Jak wizualizować logi zagrożeń DNS za pomocą wskaźników opartych na logach i niestandardowego panelu.

Czego potrzebujesz

  • Projekt Google Cloud.
  • Dostęp do narzędzia wiersza poleceń gcloud.

2. Wymagania wstępne

W tej sekcji wykonasz te czynności:

  • Sprawdź, czy Twój projekt w chmurze Google spełnia wymagane ograniczenia zasad organizacji.
  • Sprawdź, czy Twoje konto użytkownika ma wymagane role i uprawnienia IAM.
  • Włącz interfejsy Google Cloud API niezbędne do tego ćwiczenia.
  • Przypisz do konta usługi Compute Engine rolę uprawnień roles/logging.viewer.

Ograniczenia zasad organizacji

Aby ukończyć to ćwiczenie w Codelabs, sprawdź ograniczenia zasad organizacji zastosowane w Twoim projekcie. Niektóre zasady mogą utrudniać udostępnianie niezbędnych zasobów. Na konfigurację tego laboratorium mogą mieć wpływ te ograniczenia:

  • constraints/gcp.resourceLocations: ogranicza regiony, w których możesz tworzyć zasoby. Ćwiczenia z programowania wymagają us-east4us-central1.
  • constraints/compute.vmExternalIpAccess: uniemożliwia tworzenie maszyn wirtualnych z publicznymi adresami IP, co może zakłócić konfigurację, jeśli nie będziesz postępować zgodnie z instrukcjami w samouczku dotyczącymi używania flagi --no-address .
  • constraints/compute.shieldedVm: wymusza tworzenie chronionych maszyn wirtualnych, których polecenia tworzenia maszyn wirtualnych w tym samouczku nie określają, co może powodować błąd.
  • constraints/gcp.restrictServiceUsage: ogranicza liczbę interfejsów Google Cloud API, które można włączyć, i może zablokować codelab, jeśli nie zezwala na compute.googleapis.com, networksecurity.googleapis.com, logging.googleapis.commonitoring.googleapis.com.

Role i uprawnienia

Aby ukończyć to ćwiczenie w Codelabs, sprawdź role i uprawnienia IAM przyznane Twojemu użytkownikowi. Aby ukończyć ten Codelab, musisz mieć te role i uprawnienia.

  • Administrator wykorzystania usług (roles/serviceusage.serviceUsageAdmin): aby włączyć wymagane Cloud APIs Google Cloud na potrzeby ćwiczenia.
  • Administrator sieci Compute (roles/compute.networkAdmin): umożliwia tworzenie sieci VPC, podsieci i Cloud NAT oraz zarządzanie nimi.
  • Administrator zabezpieczeń Compute (roles/compute.securityAdmin): do konfigurowania reguł zapory sieciowej dla dostępu SSH do maszyn wirtualnych.
  • Administrator instancji Compute (v1) (roles/compute.instanceAdmin.v1): umożliwia tworzenie maszyn wirtualnych wymaganych w laboratorium i zarządzanie nimi.
  • Użytkownik tunelu zabezpieczonego przez IAP (roles/iap.tunnelResourceAccessor): umożliwia łączenie się z maszynami wirtualnymi za pomocą SSH przez Identity-Aware Proxy (IAP).
  • Administrator zabezpieczeń sieci (roles/networksecurity.admin): może tworzyć detektor zagrożeń DNS Armor i nim zarządzać.
  • Wyświetlający logi (roles/logging.viewer): umożliwia wyświetlanie i analizowanie logów zagrożeń w Eksploratorze logów.

Interfejsy Google Cloud APIs

Sprawdź, czy w projekcie są włączone wymagane interfejsy API Google Cloud.

1. Włącz niezbędne interfejsy API, uruchamiając w Cloud Shell te gcloud polecenia.

gcloud services enable compute.googleapis.com \
networksecurity.googleapis.com \
logging.googleapis.com \
monitoring.googleapis.com

2. Sprawdź, czy interfejsy API są włączone, uruchamiając w Cloud Shell te poleceniagcloud.

gcloud services list --enabled

Konto usługi Compute Engine

Skrypt symulacji zagrożeń wymaga uprawnień do odczytywania wygenerowanych dzienników zagrożeń z Cloud Logging i tworzenia na ich podstawie raportów. Skrypt będzie wykonywany na maszynie wirtualnej korzystającej z domyślnego konta usługi Compute Engine, dlatego do tego konta usługi musi być przypisana rola uprawnień roles/logging.viewer.

1. Ustaw zmienne środowiskowe, uruchamiając w Cloud Shell te polecenia:

export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')

2. Przyznaj kontu usługi Compute Engine rolę wyświetlającego logi. Uruchom w Cloud Shell te polecenia gcloud:

gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:${PROJECT_NUMBER}-compute@developer.gserviceaccount.com" \
--role="roles/logging.viewer"

3. Obsługa administracyjna zasobów sieciowych i obliczeniowych

W tej sekcji wykonasz te czynności:

  • Utwórz sieć VPCnetwork-a z niestandardowymi podsieciami.
  • Skonfiguruj routery Cloud Router i Cloud NAT na potrzeby ruchu wychodzącego z internetu w network-a.
  • Utwórz reguły zapory sieciowej, które zezwalają na dostęp SSH do maszyn wirtualnych z zakresu adresów IP IAP dla network-a.
  • wdrażać maszyny wirtualne z systemem Linux w network-a bez publicznych adresów IP;

Tworzenie sieci VPC i podsieci

1. Utwórz sieć-a i jej podsieci w regionach us-east4 i us-central1. Uruchom w Cloud Shell te polecenia gcloud.

gcloud compute networks create network-a --subnet-mode=custom
gcloud compute networks subnets create subnet-a-use4 \
--network=network-a \
--range=10.10.0.0/24 \
--region=us-east4
gcloud compute networks subnets create subnet-a-usc1 \
--network=network-a \
--range=10.10.1.0/24 \
--region=us-central1

Konfigurowanie ruchu wychodzącego z internetu

1. Utwórz router Cloud Router i Cloud NAT dla network-a, aby umożliwić maszynom wirtualnym bez publicznych adresów IP wychodzenie z internetu.

gcloud compute routers create router-a-use4 \
--network=network-a \
--region=us-east4
gcloud compute routers nats create nat-a-use4 \
--router=router-a-use4 \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges \
--region=us-east4
gcloud compute routers create router-a-usc1 \
--network=network-a \
--region=us-central1
gcloud compute routers nats create nat-a-usc1 \
--router=router-a-usc1 \
--auto-allocate-nat-external-ips \
--nat-all-subnet-ip-ranges \
--region=us-central1

Konfigurowanie reguł zapory sieciowej

1. Utwórz reguły zapory sieciowej dla network-a, aby zezwolić na dostęp SSH z zakresu adresów IP IAP. Uruchom w Cloud Shell te polecenia gcloud.

gcloud compute firewall-rules create allow-ssh-iap-a \
--network=network-a \
--allow=tcp:22 \
--source-ranges=35.235.240.0/20

Tworzenie maszyn wirtualnych

1. Tworzenie maszyn wirtualnych z systemem Linux w regionie network-a.

gcloud compute instances create vm-a-use4 \
--zone=us-east4-c \
--network=network-a \
--subnet=subnet-a-use4 \
--no-address \
--scopes=cloud-platform
gcloud compute instances create vm-a-usc1 \
--zone=us-central1-a \
--network=network-a \
--subnet=subnet-a-usc1 \
--no-address \
--scopes=cloud-platform

4. Tworzenie detektora zagrożeń DNS

W tej sekcji wykonasz te czynności:

  • Utwórz detektor zagrożeń.
  • Wyświetl listę detektorów zagrożeń.

Po utworzeniu sieci VPC, podsieci i maszyn wirtualnych następnym krokiem jest utworzenie detektora zagrożeń DNS.

1. Utwórz detektor zagrożeń za pomocą polecenia gcloud beta network-security dns-threat-detectors create.

gcloud beta network-security dns-threat-detectors create my-dns-threat-detector \
--location=global \
--provider=infoblox

2. Wyświetl listę detektorów zagrożeń, aby potwierdzić utworzenie.

gcloud beta network-security dns-threat-detectors list --location=global

5. Tworzenie wskaźników opartych na logach

W tej sekcji wykonasz te czynności:

  • Informacje o wpisie logu.
  • Utwórz plik config.yaml.
  • Utwórz wskaźnik oparty na logach.

1. Omówienie wpisu logu. Tabelę ze wszystkimi polami w dziennikach DNS Armor znajdziesz w dokumentacji dzienników zagrożeń. W tej sekcji skupimy się na konkretnych polach, które będą używane do tworzenia wskaźników opartych na logach.

Do utworzenia wskaźników opartych na logach zostaną użyte te pola:

  • vmInstanceId: nazwa maszyny wirtualnej Compute Engine. Dotyczy tylko zapytań inicjowanych przez maszyny wirtualne Compute Engine.
  • queryName: nazwa zapytania DNS.
  • severity: waga (wysoka, średnia, niska lub informacyjna) powiązana z wykrytym zagrożeniem. Więcej informacji znajdziesz w definicji poziomu ważności Infoblox.
  • location: region Google Cloud, z którego została obsłużona odpowiedź.
  • threat: nazwa wykrytego zagrożenia.
  • threatId: unikalny identyfikator zagrożenia.

2. Utwórz plik config.yaml. Najpierw utwórz pusty plik config.yaml za pomocą polecenia touch.

touch config.yaml

3. Wypełnij plik config.yaml. Ten plik określa, jak utworzyć wskaźnik oparty na logach dla logów zagrożeń DNS Armor. Określa, które wpisy w dzienniku mają być filtrowane, jakie etykiety mają być z nich wyodrębniane oraz jakie są właściwości samej wartości.

Otwórz plik config.yaml w wybranym edytorze tekstu i wklej podaną niżej treść.

filter: |
  resource.type="networksecurity.googleapis.com/DnsThreatDetector"
  jsonPayload.dnsQuery.projectNumber="PROJECT_NUMBER"
labelExtractors:
  InstanceId: EXTRACT(jsonPayload.dnsQuery.vmInstanceId)
  QueryName: EXTRACT(jsonPayload.dnsQuery.queryName)
  Severity: EXTRACT(jsonPayload.threatInfo.severity)
  region: EXTRACT(jsonPayload.dnsQuery.location)
  threat: EXTRACT(jsonPayload.threatInfo.threat)
  threatId: EXTRACT(jsonPayload.threatInfo.threatId)
metricDescriptor:
  labels:
  - key: InstanceId
  - key: threat
  - key: Severity
  - key: threatId
  - key: region
  - key: QueryName
  metricKind: DELTA
  unit: '1'
  valueType: INT64

4. Zaktualizuj numer projektu. Użyj poniższego polecenia sed, aby zastąpić element zastępczy PROJECT_NUMBER wartością ze zmiennej środowiskowej.

sed -i "s/PROJECT_NUMBER/$PROJECT_NUMBER/g" config.yaml

5. Utwórz wskaźnik oparty na logach. Na koniec uruchom w Cloud Shell to polecenie gcloud, aby utworzyć rodzaj wartości.

gcloud logging metrics create dns-armor-log-based-metric --config-from-file=config.yaml

6. Tworzenie panelu niestandardowego

W tej sekcji wykonasz te czynności:

  • Utwórz plik dashboard.json.
  • Tworzenie panelu niestandardowego

1. Utwórz plik dashboard.json. Najpierw utwórz pusty plik dashboard.json za pomocą polecenia touch.

touch dashboard.json

2. Wypełnij plik dashboard.json. Plik dashboard.json konfiguruje niestandardowy panel monitorowania, definiując widżety, właściwości wyświetlania oraz sposób wizualizacji, agregacji i filtrowania wskaźników opartych na logach.

Otwórz plik dashboard.json w wybranym edytorze tekstu i wklej podaną niżej treść.

{
  "displayName": "DNS Armor - Custom Dashboard",
  "dashboardFilters": [],
  "description": "",
  "labels": {},
  "mosaicLayout": {
    "columns": 48,
    "tiles": [
      {
        "height": 20,
        "width": 24,
        "widget": {
          "title": "Threat Logs",
          "id": "",
          "xyChart": {
            "chartOptions": {
              "displayHorizontal": false,
              "mode": "COLOR",
              "showLegend": false
            },
            "dataSets": [
              {
                "breakdowns": [],
                "dimensions": [],
                "legendTemplate": "",
                "measures": [],
                "minAlignmentPeriod": "60s",
                "plotType": "STACKED_BAR",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "outputFullDuration": false,
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": [],
                      "perSeriesAligner": "ALIGN_SUM"
                    },
                    "filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
                  },
                  "unitOverride": ""
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        }
      },
      {
        "xPos": 24,
        "height": 20,
        "width": 24,
        "widget": {
          "title": "Threat Logs per region",
          "id": "",
          "xyChart": {
            "chartOptions": {
              "displayHorizontal": false,
              "mode": "COLOR",
              "showLegend": false
            },
            "dataSets": [
              {
                "breakdowns": [],
                "dimensions": [],
                "legendTemplate": "",
                "measures": [],
                "minAlignmentPeriod": "60s",
                "plotType": "STACKED_BAR",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "outputFullDuration": false,
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": [
                        "metric.label.\"region\""
                      ],
                      "perSeriesAligner": "ALIGN_SUM"
                    },
                    "filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
                  },
                  "unitOverride": ""
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        }
      },
      {
        "yPos": 20,
        "height": 20,
        "width": 24,
        "widget": {
          "title": "Group by Threat",
          "id": "",
          "pieChart": {
            "chartType": "DONUT",
            "dataSets": [
              {
                "breakdowns": [],
                "dimensions": [],
                "measures": [],
                "minAlignmentPeriod": "60s",
                "sliceNameTemplate": "",
                "timeSeriesQuery": {
                  "outputFullDuration": true,
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": [
                        "metric.label.\"threat\""
                      ],
                      "perSeriesAligner": "ALIGN_SUM"
                    },
                    "filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
                  },
                  "unitOverride": ""
                }
              }
            ],
            "showLabels": false,
            "showTotal": false,
            "sliceAggregatedThreshold": 0
          }
        }
      },
      {
        "yPos": 20,
        "xPos": 24,
        "height": 20,
        "width": 24,
        "widget": {
          "title": "Top List - ThreatID",
          "timeSeriesTable": {
            "columnSettings": [
              {
                "column": "threatId",
                "visible": true
              },
              {
                "column": "threat",
                "visible": true
              },
              {
                "column": "project_id",
                "visible": false
              },
              {
                "column": "value",
                "visible": true
              }
            ],
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "timeSeriesQuery": {
                  "outputFullDuration": true,
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": [
                        "metric.label.\"threatId\"",
                        "metric.label.\"threat\""
                      ],
                      "perSeriesAligner": "ALIGN_SUM"
                    },
                    "filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\"",
                    "pickTimeSeriesFilter": {
                      "direction": "TOP",
                      "numTimeSeries": 30,
                      "rankingMethod": "METHOD_MEAN"
                    }
                  }
                }
              }
            ],
            "metricVisualization": "BAR"
          }
        }
      },
      {
        "yPos": 40,
        "height": 20,
        "width": 24,
        "widget": {
          "title": "Group by Severity",
          "id": "",
          "pieChart": {
            "chartType": "DONUT",
            "dataSets": [
              {
                "breakdowns": [],
                "dimensions": [],
                "measures": [],
                "minAlignmentPeriod": "60s",
                "sliceNameTemplate": "",
                "timeSeriesQuery": {
                  "outputFullDuration": true,
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": [
                        "metric.label.\"Severity\""
                      ],
                      "perSeriesAligner": "ALIGN_SUM"
                    },
                    "filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
                  },
                  "unitOverride": ""
                }
              }
            ],
            "showLabels": false,
            "showTotal": false,
            "sliceAggregatedThreshold": 0
          }
        }
      },
      {
        "yPos": 40,
        "xPos": 24,
        "height": 20,
        "width": 24,
        "widget": {
          "title": "Top List - Source",
          "id": "",
          "timeSeriesTable": {
            "columnSettings": [
              {
                "column": "InstanceId",
                "visible": true
              },
              {
                "column": "region",
                "visible": true
              },
              {
                "column": "project_id",
                "visible": true
              },
              {
                "column": "value",
                "visible": true
              }
            ],
            "dataSets": [
              {
                "minAlignmentPeriod": "60s",
                "tableTemplate": "",
                "timeSeriesQuery": {
                  "outputFullDuration": true,
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": [
                        "metric.label.\"InstanceId\"",
                        "metric.label.\"region\""
                      ],
                      "perSeriesAligner": "ALIGN_SUM"
                    },
                    "filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\"",
                    "pickTimeSeriesFilter": {
                      "direction": "TOP",
                      "numTimeSeries": 30,
                      "rankingMethod": "METHOD_MEAN"
                    }
                  },
                  "unitOverride": ""
                }
              }
            ],
            "displayColumnType": false,
            "metricVisualization": "BAR"
          }
        }
      },
      {
        "yPos": 60,
        "height": 20,
        "width": 48,
        "widget": {
          "title": "Group by Domains",
          "id": "",
          "xyChart": {
            "chartOptions": {
              "displayHorizontal": false,
              "mode": "COLOR",
              "showLegend": false
            },
            "dataSets": [
              {
                "breakdowns": [],
                "dimensions": [],
                "legendTemplate": "",
                "measures": [],
                "minAlignmentPeriod": "60s",
                "plotType": "STACKED_BAR",
                "targetAxis": "Y1",
                "timeSeriesQuery": {
                  "outputFullDuration": false,
                  "timeSeriesFilter": {
                    "aggregation": {
                      "alignmentPeriod": "60s",
                      "crossSeriesReducer": "REDUCE_SUM",
                      "groupByFields": [
                        "metric.label.\"QueryName\""
                      ],
                      "perSeriesAligner": "ALIGN_SUM"
                    },
                    "filter": "metric.type=\"logging.googleapis.com/user/dns-armor-log-based-metric\" resource.type=\"networksecurity.googleapis.com/DnsThreatDetector\""
                  },
                  "unitOverride": ""
                }
              }
            ],
            "thresholds": [],
            "yAxis": {
              "label": "",
              "scale": "LINEAR"
            }
          }
        }
      }
    ]
  }
}

2. Utwórz panel niestandardowy. Uruchom w Cloud Shell te polecenia gcloud.

gcloud monitoring dashboards create --config-from-file=dashboard.json

7. Generowanie emulowanych złośliwych zapytań DNS

W tej sekcji wykonasz te czynności:

  • Połącz się z maszynami wirtualnymi przez SSH.
  • Zainstaluj Git na maszynach wirtualnych.
  • Sklonuj repozytorium symulatora wykrywania zagrożeń Infoblox.
  • Uruchom skrypt i przeanalizuj wygenerowane dane wyjściowe.

Sprawdź konfigurację, generując na maszynach wirtualnych emulowane złośliwe zapytania DNS.

1. Połącz się z maszyną wirtualną vm-a-use4 za pomocą SSH. Uruchom w Cloud Shell te polecenia gcloud.

gcloud compute ssh vm-a-use4 --zone=us-east4-c

2. Zainstaluj Git na maszynie wirtualnej.

sudo apt-get install git -y

3. Sklonuj repozytorium symulatora wykrywania zagrożeń Infoblox.

git clone https://github.com/infobloxopen/ib-threat-detection-simulator

4. Przejdź do katalogu symulatora.

cd ib-threat-detection-simulator/threat_detection_simulator/

5. Uruchom skrypt i przeanalizuj wygenerowane dane wyjściowe.

Ustaw skrypt jako wykonywalny.

chmod +x run.sh

Uruchom skrypt.

./run.sh info basic

6. Przykładowe dane wyjściowe

Obraz poniżej przedstawia fragment danych wyjściowych skryptu widocznych na maszynie wirtualnej w network-a. Te dane wyjściowe zawierają szczegółowe informacje o współczynnikach wykrywania różnych typów zagrożeń DNS, które emulował scenariusz testowania.

2ed3402eed85ff0a.png

7. Wróć do Cloud Shell, zamykając sesję SSH.

exit

8. Wyświetlanie panelu niestandardowego

Wyświetlanie panelu

1. Wpisz Panele w polu wyszukiwania u góry konsoli Google Cloud, a następnie w wynikach wyszukiwania kliknij Panele.

b28134f84c44d872.png

2. Wyszukaj DNS Armor - Custom Dashboard w polu wyszukiwania, a następnie kliknij DNS Armor - Custom Dashboard, aby otworzyć panel.

490ec7642ef95ffc.png

3. Wyświetl panel.

4ff503f457f67399.png

Widżety na panelu

W tej sekcji znajdziesz opis różnych widżetów dostępnych na niestandardowym panelu, a także omówienie ich funkcji i danych, które reprezentują.

  • Logi zagrożeń: skumulowany wykres słupkowy przedstawiający logi zagrożeń wygenerowane dla wszystkich sieci w projekcie w określonym przedziale czasu.
  • Dzienniki zagrożeń według regionu: skumulowany wykres słupkowy ilustrujący dzienniki zagrożeń pogrupowane według regionu w określonym przedziale czasu.
  • Grupowanie według zagrożenia: wykres kołowy kategoryzujący logi zagrożeń na podstawie typu zagrożenia w danym przedziale czasu.
  • Lista najpopularniejszych zagrożeń – ThreatID: lista 30 najpopularniejszych identyfikatorów zagrożeń w określonym przedziale czasu.
  • Grupowanie według poziomu ważności: wykres kołowy grupujący logi zagrożeń według poziomu ważności w określonym przedziale czasu.
  • Lista najpopularniejszych – źródło: lista 30 najpopularniejszych identyfikatorów instancji (źródłowych maszyn wirtualnych) w określonym przedziale czasu.
  • Grupuj według domen: Skumulowany wykres słupkowy grupujący logi zagrożeń według nazw domen znalezionych w zapytaniach.

9. Czyszczenie

Aby uniknąć przyszłych opłat, usuń zasoby utworzone w tym ćwiczeniu. Podczas uruchamiania poleceń czyszczenia pamiętaj, aby zamknąć powłokę maszyny wirtualnej i wrócić do Cloud Shell.

1. Usuń panel niestandardowy.

Identyfikator panelu jest generowany dynamicznie podczas tworzenia, więc najpierw musisz pobrać nazwę zasobu za pomocą jego wyświetlanej nazwy.

DASHBOARD_NAME=$(gcloud monitoring dashboards list --filter="displayName='DNS Armor - Custom Dashboard'" --format='value(name)')
gcloud monitoring dashboards delete $DASHBOARD_NAME --quiet

2. Usuń wskaźnik oparty na logach.

gcloud logging metrics delete dns-armor-log-based-metric --quiet

3. Usuń maszyny wirtualne.

gcloud compute instances delete vm-a-use4 --zone=us-east4-c --quiet
gcloud compute instances delete vm-a-usc1 --zone=us-central1-a --quiet

4. Usuń reguły zapory sieciowej.

gcloud compute firewall-rules delete allow-ssh-iap-a --quiet

5. Usuń bramy Cloud NAT.

gcloud compute routers nats delete nat-a-use4 --router=router-a-use4 --region=us-east4 --quiet
gcloud compute routers nats delete nat-a-usc1 --router=router-a-usc1 --region=us-central1 --quiet

6. Usuń routery Cloud Router.

gcloud compute routers delete router-a-use4 --region=us-east4 --quiet
gcloud compute routers delete router-a-usc1 --region=us-central1 --quiet

7. Usuń podsieci.

gcloud compute networks subnets delete subnet-a-use4 --region=us-east4 --quiet
gcloud compute networks subnets delete subnet-a-usc1 --region=us-central1 --quiet

8. Usuń detektor zagrożeń DNS.

gcloud beta network-security dns-threat-detectors delete my-dns-threat-detector --location=global --quiet

9. Usuń sieci VPC.

gcloud compute networks delete network-a --quiet

10. Gratulacje

Gratulacje! Udało Ci się skonfigurować, wdrożyć i wyświetlić logi wykrywania zagrożeń DNS Armor . Zdobyłeś(-aś) praktyczne doświadczenie w zakresie ochrony środowiska Google Cloud przed zagrożeniami opartymi na DNS i tworzenia niestandardowego rozwiązania do monitorowania, które zapewnia wgląd w bezpieczeństwo.

W tych ćwiczeniach z programowania:

  • utworzyć środowisko sieciowe z VPC, podsieciami i maszynami wirtualnymi;
  • Skonfigurowano wychodzący ruch internetowy dla prywatnych maszyn wirtualnych za pomocą Cloud NAT.
  • wdrożono detektor zagrożeń DNS Armor,
  • symulowane zagrożenia DNS i zweryfikowana konfiguracja wykrywania zagrożeń.
  • Utworzono niestandardowe wskaźniki oparte na logach na podstawie logów zagrożeń DNS.
  • Utworzono niestandardowy panel Cloud Monitoring do wizualizacji i analizowania zagrożeń DNS.

Co dalej?

Dokumentacja