关于kubernetes:快速上手云原生安全平台-NeuVector

63次阅读

共计 5395 个字符,预计需要花费 14 分钟才能阅读完成。

作者简介
万绍远,CNCF 基金会官网认证 Kubernetes CKA&CKS 工程师,云原生解决方案架构师。对 ceph、Openstack、Kubernetes、prometheus 技术和其余云原生相干技术有较深刻的钻研。参加设计并施行过多个金融、保险、制造业等多个行业 IaaS 和 PaaS 平台设计和利用云原生革新领导。

前 言

NeuVector 是业界首个端到端的开源容器平安平台,惟一为容器化工作负载提供企业级零信赖平安的解决方案。NeuVector 能够提供实时深刻的容器网络可视化、东西向容器网络监控、被动隔离和爱护、容器主机平安以及容器外部平安,容器治理平台无缝集成并且实现利用级容器平安的自动化,实用于各种云环境、跨云或者本地部署等容器生产环境。

此前,咱们介绍了 NeuVector 的装置部署、高可用架构设计和多云平安治理,本篇将演示 NeuVector 的根底性能,次要包含:

  1. 安全漏洞治理
  2. 合规性检查和机密性查看
  3. 策略管理
  4. 准入控制策略
  5. 动静平安响应
  6. 行为监控

我的项目地址:https://github.com/neuvector/…

本文次要基于 NeuVector 首个开源版 NeuVector:5.0.0-preview.1 进行介绍。

1. 安全漏洞治理

NeuVector 集成了 CVE 破绽库,每天自动更新,反对对平台(Kubernetes)、主机、容器、镜像仓库进行安全漏洞扫描。

配置主动扫描,当平台破绽库有更新,或有新的节点和容器退出时,会主动进行扫描。

针对不同破绽,有不同的危险级别提醒、对应的组件版本提醒和修复版本提醒。

针对每个破绽,NeuVector 能够展现对应的破绽公布工夫、破绽影响范畴、对应的组件影响版本。

对破绽进行过滤,检测是否曾经修复,以及破绽等级、公布工夫等。

1.1. 配置对接镜像仓库破绽扫描

反对对接多种镜像仓库如 docker-registry(harbor)、JFrog Artifactory、Nexus 等。

以对接 Harbor 为例。配置连贯形式,填写连贯形式和认证信息,过滤器示意须要扫描的范畴,如扫描 uat 我的项目下全副镜像则 uat/*, 如果须要扫描整个 Harbor 内全副镜像则 *。测试设置能够验证编写的表达式的关联状况。

2. 合规性检查和机密性查看

NeuVector 的合规性审核包含 CIS 基线测试、自定义查看、秘密审核以及 PCI、GDPR 和其余法规的行业标准模板扫描。

“类型”示意对应的那个基线规范,如 K.4.1.1 对应 Kubernetes CIS 基线测试,4.1.1 容器对应的基线规范为 D 结尾,镜像对应的基线规范为 I 结尾。注:GDPR(General Data Protection Regulation,《通用数据保护条例》)为欧盟条例。在合规性查看中也会查看是否存在密文透露状况。

包含如以下密文透露状况:

General Private Keys
General detection of credentials including 'apikey', 'api_key', 'password', 'secret', 'passwd' etc.
General passwords in yaml files including 'password', passwd','api_token' etc.
General secrets keys in key/value pairs
Putty Private key
Xml Private key
AWS credentials / IAM
Facebook client secret
Facebook endpoint secret
Facebook app secret
Twitter client Id
Twitter secret key
Github secret
Square product Id
Stripe access key
Slack API token
Slack web hooks
LinkedIn client Id
LinkedIn secret key
Google API key
SendGrid API key
Twilio API key
Heroku API key
MailChimp API key
MailGun API key

3. 策略管理

NeuVector 通过组的形式对容器和主机进行治理,对组进行合规性查看、网络规定、过程和文件拜访规定、DLP/WAF 的检测配置。

NeuVector 会主动将以后集群主机退出到 nodes 组,对于集群内容器会主动创立以 nv. 结尾的组。

NeuVector 的组反对 3 种模式:学习模式、监控模式和保护模式;各个模式实现作用如下:

  • 学习模式
    学习和记录容器、主机间网络连接状况和过程执行信息。
    主动构建网络规定白名单,爱护利用网络失常行为。
    为每个服务的容器中运行的过程设定平安基线,并创立过程配置文件规定白名单。
  • 监控模式
    NeuVector 监督容器和主机的网络和过程运行状况,遇到非学习模式下记录的行为将在 NeuVector 中进行告警。
  • 保护模式
    NeuVector 监督容器和主机的网络和过程运行状况,遇到非学习模式下记录的行为间接回绝。

新建的容器业务被主动发现默认为学习模式,也能够通过设置将默认模式设置为监控模式或保护模式。不同组策略抵触状况下,实用的无效模式如下表:

为了保障业务的稳固运行,当呈现模式不统一时,无效模式以限度最小的模式运行。生产环境最佳实际应用门路能够是:

  • 上新业务时,先学习模式运行一段时间,进行残缺的功能测试和调用测试,失去理论运行此业务的网络连接状况和过程执行状况信息。
  • 监控模式运行一段时间,看看有没有额定的非凡状况,进行判断,增加规定。
  • 最初全副容器都切换到保护模式,确定最终状态。

3.1. 动静微隔离

应用场景一:POD 间通过网络策略相互隔离

在 Kubernetes 平台中创立四个 Nginx,名称和用处如下:
workload_name:test-web1 image:nginx   用处:web 服务器
workload_name:test-con1 image:nginx   用处:连贯客户端 1
workload_name:test-con2 image:nginx   用处:连贯客户端 2
workload_name:test-con3 image:nginx   用处:连贯客户端 3

创立 workload

kubectl create deployment test-web1 --image=nginx
kubectl expose deployment/test-web1 --port=80 --type=NodePort
kubectl create deployment test-con1 --image=nginx
kubectl create deployment test-con2 --image=nginx
kubectl create deployment test-con3 --image=nginx

此时在 NeuVector 中会主动生成这几个组:

在 test-con1 中通过 curl 拜访 test-web1

此时能够失常拜访,因为在学习模式下 NeuVector 也会主动增加此拜访规定。

将 test-web1 和 test-con2 都设置为监控模式

而后在 test-con2 中 curl 拜访 test-web1

此时 test-con2 能够失常拜访 test-web1,但在 NeuVector 中会生成告警

同时,相应地,在网络流动拓扑图中也能够看见对应的连贯链路变为红色。

将 test-web1 和 test-con2 都设置为保护模式,在通过 test-con2 去 curl test-web1

因为 curl 在学习模式时没有应用,也不是 NeuVector 默认容许的可执行过程,所以过程间接就无法访问了。

将 test-con1 设置为保护模式,此时 test-con1 无法访问内部网络。

能够通过自定义增加网络规定形式开明拜访。

在网络规定页,此处规定曾经是在学习模式下生成的规定列表。

增加内部拜访规定

NeuVector 深度理解应用程序行为,并将剖析无效负载,以确定应用程序协定。协定包含:HTTP,HTTPS,SSL,SSH,DNS,DNCP,NTP,TFTP,ECHO,RTSP,SIP,MySQL,Redis,Zookeeper,Cassandra,MongoDB,PostgresSQL,Kafka,Couchbase,ActiveMQ,ElasticSearch,RabbitMQ,Radius,VoltDB,Consul,Syslog,Etcd,Spark,Apache,Nginx,Jetty,NodeJS,Oracle,MSSQL 和 GRPC。

当初 test-con1 的 curl 能够失常拜访 www.baidu.com

总结:
除上述策略外,NeuVector 也内置网络威逼检测,可能疾速辨认罕用网络攻击,爱护业务容器平安运行。

无论保护模式如何,在“学习和监督”模式下,NeuVector 将收回警报,并且能够在“告诉 > 安全事件”中找到这些威逼。在保护模式下将收到警报和阻止;还能够依据威逼检测创立响应规定。

蕴含的威逼检测如下:

SYN flood attack
ICMP flood attack
IP Teardrop attack
TCP split handshake attack
PING death attack
DNS flood DDOS attack
Detect SSH version 1, 2 or 3
Detect SSL TLS v1.0
SSL heartbeed attack
Detect HTTP negative content-length buffer overflow
HTTP smugging attack
HTTP Slowloris DDOS attack
TCP small window attack
DNS buffer overflow attack
Detect MySQL access deny
DNS zone transfer attack
ICMP tunneling attack
DNS null type attack
SQL injection attack
Apache Struts RCE attack
DNS tunneling attack
TCP Small MSS attack
Cipher Overflow attack
Kubernetes man-in-the-middle attack per CVE-2020-8554

3.2. 过程治理

NeuVector 反对对容器和主机内过程进行治理,在学习模式下,运行的过程和命令会主动增加到规定中。

此时在 test-con1 中执行 df -h 会发现报错 bash: /bin/df: Operation not permitted 在 nv.test-con1.default 组中增加 df 过程规定:

而后再从新执行即可。

过程治理也反对对 node 节点,能够在 node 组中进行限度,束缚宿主机过程执行。如限度执行 docker cp 执行,通过学习模式得悉是 docker-tar 过程在后端执行,将节点切换到保护模式,限度 docker-tar 过程即可。

这些在节点就无奈执行 docker cp

4. 准入策略管制

NeuVector 反对与 Kubernetes 准入管制(admission-control)性能对接,实现 UI 配置准入管制规定,对申请进行拦挡,对申请的资源对象进行校验。

NeuVector 反对多种准入管制策率配置,如镜像 CVE 破绽状况限度、部署特权模式、镜像内应用 root 用户、特定标签等。

在策略 - 准入管制中开启此性能,留神:须要 Kubernetes 集群提前开启 admission-control 性能

NeuVector 准入策略管制反对两种模式:监控模式和保护模式,对应的含意和组的模式一样的。这里咱们间接切换到保护模式,增加策略。

增加完后,在 Rancher 中部署特权模式,容器会提醒解决,策略失效。

5. 动静平安响应

NeuVector 事件响应机制能够将响应规定设置为依据安全事件状况进行动静响应,包含以下事件:破绽扫描后果、CIS 基准测试、准入管制事件等。

响应动作包含隔离、webhook 告诉和日志克制:

  • 隔离模式:对应的容器网络进出流量将全副被切断。
  • Webhook 告诉:将触发信息通过 webhook 形式进行告警。
  • 日志克制:对触发告警信息进行克制。

6. 行为监控

以 CVE 破绽配置为例,配置蕴含 CVE 破绽名称为 CVE-2020-16156 的容器进入隔离模式。

组名对应的是影响范畴,如果为空,示意对全副的组都失效,填写组名能够设置对特定组失效。

配置策略后,在集群去 curl nginx 容器,发现无法访问,在 NeuVector 中查看容器状态为隔离状态。

删除策略时,也能够配置将对应隔离状态容器解除隔离。

留神:

  • 隔离操作不适用于为主机事件触发的规定。
  • 每个规定能够有多个操作。

6.1. 网络流量可视化

网络流量可视化,能够清晰可见容器集群内的网络连接关系、以后容器连贯会话,并且过滤网络连接信息,进行图标展现;可能疾速进行网络问题定位。

6.2. POD 流量抓包

针对容器可进行网络抓包,让故障无需进入主机获取高权限,就能进行网络问题深刻排查。

采集到的数据包可间接下载,通过 Wireshark 进行解包剖析。

总 结

本次咱们次要解说了 NeuVector 的根底性能,后续将深刻介绍 DLP 和 WAF 的配置策略和治理应用。

正文完
 0