Evaluierung und Testen SUSE® Security

Beispielanwendungen

Nachdem Sie die SUSE® Security-Komponenten bereitgestellt haben, können Sie diese mit den bereitgestellten Beispiel-Testanwendungen evaluieren. Diese befinden sich im Repository des 'nvbeta auf Docker Hub.

Eine typische Kubernetes-basierte Testumgebung hätte einen Master-Knoten und zwei bis drei Arbeitsknoten. Sie können steuern, ob Anwendungs-Pods und SUSE® Security-Container auf einem Master-Knoten bereitgestellt werden (standardmäßig deaktiviert).

Kubernetes-Testplan

Um eine mehrschichtige Anwendung mit Nginx, Nodejs und Redis bereitzustellen, verwenden Sie die untenstehenden Beispiele (in der angegebenen Reihenfolge). Diese müssen möglicherweise für die Bereitstellung auf OpenShift, Rancher und anderen Kubernetes-basierten Tools bearbeitet werden.

Erstellen Sie einen Demo-Namespace

kubectl create namespace demo

Das folgende Beispiel verwendet apiVersion: apps/v1, die von Kubernetes 1.16+ erforderlich ist.

Erstellen Sie den Redis-Dienst und die Implementierung mit diesem YAML:

apiVersion: v1
kind: Service
metadata:
  name: redis
  namespace: demo
spec:
  ports:
  - port: 6379
    protocol: "TCP"
    name: "cluster-tcp-6379"
  clusterIP: None
  selector:
    app: redis-pod

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis-pod
  namespace: demo
spec:
  selector:
    matchLabels:
      app: redis-pod
  template:
    metadata:
      labels:
        app: redis-pod
    spec:
      containers:
      - name: redis-pod
        image: redis

Erstellen Sie den Nodejs-Dienst und die Implementierung mit diesem YAML:

apiVersion: v1
kind: Service
metadata:
  name: node
  namespace: demo
spec:
  ports:
  - port: 8888
    protocol: "TCP"
    name: "cluster-tcp-8888"
  clusterIP: None
  selector:
    app: node-pod

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: node-pod
  namespace: demo
spec:
  selector:
    matchLabels:
      app: node-pod
  replicas: 3
  template:
    metadata:
      labels:
        app: node-pod
    spec:
      containers:
      - name: node-pod
        image: nvbeta/node

Erstellen Sie den Nginx-Dienst und die Implementierung mit diesem YAML:

apiVersion: v1
kind: Service
metadata:
  name: nginx-webui
  namespace: demo
spec:
  ports:
    - port: 80
      name: webui
      protocol: TCP
  type: NodePort
  selector:
    app: nginx-pod

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-pod
  namespace: demo
spec:
  selector:
    matchLabels:
      app: nginx-pod
  template:
    metadata:
      labels:
        app: nginx-pod
    spec:
      containers:
      - name: nginx-pod
        image: nvbeta/swarm_nginx
        ports:
        - containerPort: 80
          protocol: TCP

Um auf den Nginx-Webui-Dienst extern zuzugreifen, finden Sie den zufällig zugewiesenen Port (auf Port 80 abgebildet) durch den NodePort:

kubectl get svc -n demo

Verbinden Sie sich dann mit der öffentlichen IP-Adresse/Port eines der Kubernetes-Knoten, z.B. http://(public_IP):(NodePort)

Nach der Bereitstellung von SUSE® Security können Sie Testverkehr durch die Demo-Anwendungen leiten, um die Whitelist-Regeln zu generieren, und dann alle Dienste in den Überwachungs- oder Schutzmodus versetzen, um Verstöße und Angriffe zu sehen.

Generierung von Netzwerkverstößen auf Kubernetes

Um einen Verstoß von einem Node.js-Pod zu erzeugen, finden Sie einen Pod:

kubectl get pod -n demo

Versuchen Sie dann einige Verstöße (ersetzen Sie node-pod-name):

kubectl exec node-pod-name curl www.google.com -n demo

Oder finden Sie die interne IP-Adresse eines anderen Node-Pods, wie 172.30.2.21 im folgenden Beispiel, um von einem Knoten zu einem anderen zu verbinden:

kubectl exec node-pod-name curl 172.30.2.21:8888 -n demo

Erzeugen Sie eine Bedrohung bzw. einen Angriff

Um einen Angriff zu simulieren, melden Sie sich in einem Container an und versuchen Sie einen Ping-Angriff:

kubectl exec -it node-pod-name bash -n demo

Verwenden Sie die interne IP eines anderen Node-Pods:

ping 172.30.2.21 -s 40000

Für all das oben Genannte können Sie die Sicherheitsereignisse in der SUSE® Security Konsole im Netzwerkaktivitätsdiagramm sowie im Tab "Benachrichtigungen" einsehen.

Prozess- und Dateischutztests

Versuchen Sie verschiedene Prozess- und Dateiaktivitäten, indem Sie in einen Container wechseln (exec) und Befehle wie apt-get update, ssh, scp oder andere ausführen. Jede nicht erlaubte Prozessaktivität oder Dateizugriff wird Benachrichtigungen auslösen.

Registry-Scanning und Zulassungssteuerung

Ein beliebter Test besteht darin, das Scannen von Images in Assets → Registries zu konfigurieren. Nachdem der Scan abgeschlossen ist, konfigurieren Sie eine Zulassungssteuerungsregel in der Richtlinie. Stellen Sie sicher, dass Sie die Zulassungssteuerungen aktivieren und eine Regel zum Verweigern festlegen, wenn es hohe Schwachstellen in einem Bild gibt. Wählen Sie dann ein Bild mit hohen Schwachstellen aus und versuchen Sie, es in Kubernetes bereitzustellen. Die Bereitstellung wird im Schutzmodus blockiert und Sie werden ein Ereignis in den Benachrichtigungen → Sicherheitsrisiken sehen.

Fortgeschrittene Tests der Zulassungssteuerung können unter Verwendung verschiedener Kriterien in Regeln oder durch Kombination von Kriterien durchgeführt werden.

Eine andere App bereitstellen

Die Kubernetes Guestbook-Demo-Anwendung kann ebenfalls auf Kubernetes bereitgestellt werden. Es wird empfohlen, sie in ihrem eigenen Namespace bereitzustellen, damit Sie die namespacebasierte Filterung in der SUSE® Security Konsole sehen können.

Docker-native Testplan

Nach der Bereitstellung der SUSE® Security Komponenten und der Beispielanwendung(en) können Sie laufende Container entdecken, überwachen und schützen. Der folgende Testplan bietet Vorschläge zur Erzeugung von Laufzeitverstößen des erlaubten Anwendungsverhaltens und zum Scannen von Containern auf Schwachstellen.

Wenn der obige Link nicht funktioniert, können Sie ihn herunterladen von unserer Website mit dem Passwort nv1851blvd.

SUSE® Security kann auch Bedrohungen für Ihre Container wie DDOS-Angriffe erkennen. Wenn Sie ein Tool ausführen, um solche Angriffe auf Ihre Container zu erzeugen, werden diese Ergebnisse in der Netzwerkaktivität und im Dashboard angezeigt.

Zum Beispiel wird ein einfacher Ping-Befehl mit hohem Payload den Ping.Death-Angriff in der Konsole anzeigen. Um dies auszuprobieren, wenden Sie Folgendes auf die IP-Adresse eines der Container (interne IP des Containers) an.

ping <container_ip> -s 40000

In Kubernetes können Sie dies von jedem Knoten, einschließlich des Masters, ausführen. In anderen Umgebungen müssen Sie möglicherweise in den Knoten eingeloggt sein, auf dem der Container läuft.