评估和测试 SUSE® Security

示例应用程序

在您部署了 SUSE® Security 组件后,您可以使用我们提供的示例测试应用程序进行评估。这些位于 docker hub 的 'nvbeta 储存库中。

一个典型的基于 Kubernetes 的测试环境将有一个主节点和两个到三个工作节点。您可以控制应用程序 pod 和 SUSE® Security 容器是否部署在主节点上(默认关闭)。

Kubernetes 测试计划

要使用 Nginx、Nodejs 和 Redis 部署多层应用程序,请使用以下示例(按以下顺序)。这些可能需要为在 OpenShift、Rancher 和其他基于 Kubernetes 的工具上部署而进行编辑。

创建一个演示名称空间

kubectl create namespace demo

下面的示例使用 Kubernetes 1.16+ 所需的 apiVersion: apps/v1。

使用以下 yaml 创建 Redis 服务和部署:

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

使用以下 yaml 创建 Nodejs 服务和部署:

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

使用以下 yaml 创建 Nginx 服务和部署:

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

要从外部访问 Nginx-webui 服务,请通过 NodePort 找到分配给它的随机端口(映射到端口 80):

kubectl get svc -n demo

然后连接到其中一个 Kubernetes 节点的公共 IP 地址/端口,例如 http://(public_IP):(NodePort)

在部署 SUSE® Security 后,您可以通过演示应用程序运行测试流量以生成白名单规则,然后将所有服务移动到监控或保护模式,以查看违规和攻击。

在 Kubernetes 上生成网络违规

要从 Nodejs pod 生成违规,请找到一个 pod:

kubectl get pod -n demo

然后尝试一些违规行为(替换 node-pod-name):

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

或者找到另一个 node pod 的内部 IP 地址,例如下面示例中的 172.30.2.21,以便从一个节点连接到另一个节点:

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

生成威胁/攻击

要模拟攻击,请登录到容器,然后尝试进行ping攻击:

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

使用另一个 node pod 的内部 IP:

ping 172.30.2.21 -s 40000

对于上述所有内容,您可以在SUSE® Security控制台的网络活动图中查看安全事件,以及通知选项卡。

进程和文件保护测试

通过执行 exec 命令进入容器并运行诸如 apt-get update、ssh、scp 或其他命令,尝试各种进程和文件活动。任何不允许的进程活动或文件访问将会在通知中生成警报。

注册表扫描和准入控制

一个常见的测试是配置资产 → 注册表中的镜像扫描。扫描完成后,在策略中配置一个准入控制规则。确保启用准入控制,并在图像中存在高漏洞时设置拒绝规则。然后选择一个具有高漏洞的镜像,并尝试在 Kubernetes 中部署它。在保护模式下,部署将被阻止,您将在通知→安全风险中看到一个事件。

可以使用规则中的不同标准或组合标准进行更高级的准入控制测试。

部署另一个APP

Kubernetes Guestbook演示应用程序也可以在Kubernetes上部署。建议将其部署到自己的名称空间,以便您可以在 SUSE® Security 控制台中看到基于名称空间的过滤。

Docker原生测试计划

在部署SUSE® Security组件和示例应用程序后,您将能够发现、监控和保护正在运行的容器。下面的测试计划提供了生成允许的应用程序行为的运行时违规和扫描容器漏洞的建议。

如果上面的链接无法使用,您可以从我们的网站 下载,密码为nv1851blvd。

SUSE® Security 还可以检测到对您的容器的威胁,例如DDOS攻击。如果您运行一个工具来对您的容器生成此类攻击,这些结果将在网络活动和仪表板中显示。

例如,一个高负载的简单ping命令将在控制台中显示Ping.Death攻击。要尝试此操作,请对其中一个容器的IP地址(容器的内部IP)执行以下操作。

ping <container_ip> -s 40000

在Kubernetes中,您可以从任何节点执行此操作,包括主节点。在其他环境中,您可能需要登录到容器运行的节点。