作者简介
万绍远,CNCF 基金会官方认证 Kubernetes CKA&CKS 工程师,云原生办理方案架构师。对 ceph、Openstack、Kubernetes、prometheus 技能和其他云原生相干技能有较深入的研究。加入筹划并实施过多个金融、保险、制造业等多个行业 IaaS 和 PaaS 平台筹划和应用云原生改造引导。
前 言
NeuVector 是业界首个端到端的开源容器安全平台,唯一为容器化工作负载提供企业级零信托安全的办理方案。NeuVector 可以提供及时深入的容器网络可视化、东西向容器网络监控、主动隔离和保护、容器主机安全以及容器内部安全,容器管理平台无缝集成而且实现应用级容器安全的主动化,实用于各种云情况、跨云大概本地摆设等容器生产情况。
此前,我们先容了 NeuVector 的安装摆设、高可用架构筹划和多云安全管理,本篇将演示 NeuVector 的根本功能,重要包罗:
- 安全弊端管理
- 合规性查抄和秘密性查抄
- 战略管理
- 准入控制战略
- 动态安全相应
- 举动监控
项目地址:https://github.com/neuvector/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 KeysGeneral 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 pairsPutty Private keyXml Private keyAWS credentials / IAMFacebook client secretFacebook endpoint secretFacebook app secretTwitter client IdTwitter secret keyGithub secretSquare product IdStripe access keySlack API tokenSlack web hooksLinkedIn client IdLinkedIn secret keyGoogle API keySendGrid API keyTwilio API keyHeroku API keyMailChimp API keyMailGun API key3.战略管理
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=nginxkubectl expose deployment/test-web1 --port=80 --type=NodePortkubectl create deployment test-con1 --image=nginxkubectl create deployment test-con2 --image=nginxkubectl 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 attackICMP flood attackIP Teardrop attackTCP split handshake attackPING death attackDNS flood DDOS attackDetect SSH version 1, 2 or 3Detect SSL TLS v1.0SSL heartbeed attackDetect HTTP negative content-length buffer overflowHTTP smugging attackHTTP Slowloris DDOS attackTCP small window attackDNS buffer overflow attackDetect MySQL access denyDNS zone transfer attackICMP tunneling attackDNS null type attackSQL injection attackApache Struts RCE attackDNS tunneling attackTCP Small MSS attackCipher Overflow attackKubernetes man-in-the-middle attack per CVE-2020-85543.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 的设置战略和管理使用。 |