公众号关注 「奇妙的 Linux 世界」
设为「星标」,每天带你玩转 Linux !
NeuVector 是唯一的 100% 开放源代码、零信任容器安全平台。在整个容器生命周期中持续扫描。消除安全障碍。在一开始就制定安全性策略,最大限度地提高开发人员的灵活性。
NeuVector 介绍
Neuvector 是像 Sysdig 一样的 Kubernetes 安全容器平台之一,但 Neuvector 是一个云原生应用程序。
根据NeuVector官网[1]:
NeuVector 提供唯一的云原生 Kubernetes 安全平台,提供从 DevOps 漏洞保护到运行时安全的毫不妥协的端到端保护,并具有真正的第 7 层容器防火墙。
NeuVector 是一家提供全生命周期容器安全平台的公司。这意味着他们的平台提供了各种安全功能和工具,可用于在容器化环境的整个生命周期(包括开发、部署和运维期间)保护容器化环境。这可以包括漏洞扫描、运行时安全、网络和事件响应等功能。NeuVector 平台的目标是帮助组织保护其容器化环境并降低违规或其他安全事件的风险。
NeuVector 特征
Neuvector有以下特点
1. CI/CD 漏洞管理和准入控制。使用 Jenkins 插件扫描镜像、扫描镜像仓库并强制执行准入控制规则以部署到生产中。
2. 违规保护。发现行为并创建基于白名单的策略来检测违反正常行为的行为。
3. 威胁检测。检测常见的应用程序攻击,例如针对容器的 DDoS 和 DNS 攻击。
4. DLP 和 WAF 检测。检查网络流量以防止敏感数据丢失,并检测常见的 OWASP Top10 WAF 攻击。
5. 运行时漏洞扫描。扫描镜像仓库、镜像以及正在运行的容器编排平台和主机,以查找常见 (CVE) 以及应用程序特定的漏洞。
6. 合规与审计。自动运行 Docker Bench 测试和 Kubernetes CIS Benchmarks。
7. 端点/主机安全。检测权限升级,监视主机上和容器内的进程和文件活动,并监视容器文件系统是否存在可疑活动。
8. 多集群管理。从单个控制台监控和管理多个 Kubernetes 集群。
从上可知,NeuVector 开源的并非某个组件或者安全工具,而是一套完整的容器安全平台。这与其他各大云原生安全厂商的开源策略有很大的区别。
开源云原生安全产品现状
项目 | 厂商 | 链接 | Star | 类型 | 开源时间 |
clair | Quay | https://github.com/quay/clair | 8.4k | 镜像扫描 | 2015-11-13 |
trivy | Aqua | https://github.com/aquasecurity/trivy | 10.1k | 镜像扫描 | 2019-04-11 |
kube-hunter | Aqua | https://github.com/aquasecurity/kube-hunter/ | 3.4k | 漏洞扫描 | 2018-07-18 |
kube-bench | Aqua | https://github.com/aquasecurity/kube-bench | 4.5k | CIS 安全基线 | 2017-06-19 |
starboard | Aqua | https://github.com/aquasecurity/starboard | 968 | Dashboard | 2020-03-17 |
tracee | Aqua | https://github.com/aquasecurity/tracee | 1.5k | 基于 eBPF 的系统事件追踪 | 2019-09-18 |
anchore-engine | anchore | https://github.com/anchore/anchore-engine | 1.4k | 漏洞扫描 | 2017-09-06 |
kyverno | kyverno.io | https://github.com/kyverno/kyverno | 1.8k | Kubernetes 策略与审计 | 2019-02-04 |
GateKeeper | OPA (sysdig) | https://github.com/open-policy-agent/gatekeeper | 1.3k | Kubernetes 策略与审计 | 2018-10-26 |
falco | falcosecurity(sysdig) | https://github.com/falcosecurity/falco | 4.4k | 基于内核模块的系统事件追踪、警告 | 2016-01-19 |
terrascan | accurics.com | https://github.com/accurics/terrascan | 2.7k | 通用的 IaS 配置扫描 | 2017-09-11 |
Kubei | portshift | https://github.com/cisco-open/kubei | 489 | 镜像扫描(带面板) | 2020-03-22 |
Polaris | Fairwinds | https://github.com/FairwindsOps/polaris | 2.4k | 配置扫描与策略 | 2018-11-15 |
kubesec | controlplaneio | https://github.com/controlplaneio/kubesec | 667 | Kubernetes 配置扫描 | 2017-10-10 |
KubeEye | KubeSphere | https://github.com/kubesphere/kubeeye | 424 | 基于策略的 Kubernetes 集群配置扫描 | 2020-11-07 |
kube-linter | Stackrox(RedHat) | https://github.com/stackrox/kube-linter | 1.8k | Kubernetes 配置扫描 | 2020-08-13 |
上表中,我们列举出了来自各个安全厂商的主要开源项目。从上面的表格中我们可以看出,目前开源安全软件集中在四大类别:
1. 镜像漏洞扫描
2. 合规、基线扫描
3. Kubernetes 安全策略、配置管理
4. 威胁检测
这些工具目前都处于相对割裂的状态。除 starboard 项目是整合了 Aqua 开源安全产品线的简易安全平台外,其他厂商并未开源类似 NeuVector 的平台级别项目。
NeuVector 功能
接下来,我们看一下作为云原生容器安全平台的 NeuVector 究竟有哪些独一无二的开源功能。
统一平台
首先,作为一个平台应具备统一的安装部署能力,而不需要用户去思考如何去集成各类安全组件从而达到相应的安全需求。
目前,可以通过官方提供的 Helm 安装包或 yaml 文件在已有的 Kubernetes 集群上可轻松的部署 NeuVector。
其次,统一的管理平面。能够管理 Kubernetes 平台中的各种资产,如容器、镜像、主机、进程等。针对各种组件配置规则,策略。执行计划任务,如合规扫描,镜像扫描等。
NeuVector 目前功能已经相对比较完善,与 Sysdig、Aqua 等商业平台的主要功能类似。成功安装 NeuVector 后,用户即可通过浏览器打开 NeuVector 的控制台。在控制台的导航栏中包含了,资产管理、策略管理、安全风险、通知、平台设置及联邦集群等五项核心功能,依次展开后便可窥见它强大的功能了。
Assets(资产管理) | Policy(策略管理) | Security Risks(安全风险) | Notifications(通知) | Settings(平台设置) |
Platforms | Admission Control | Vulnerabilities | Security Events | Users & Roles |
Nodes | Groups | Vulnerabilities Profile | Risk Reports | Configuration |
Containers | Network Rules | Compliance | Events | LDAP/AD Settings |
Registries | Response Rules | Compliance Profile | - | SAML Setting |
System Components | DLP Sensors | - | - | OIDC Settings |
-- | WAF Sensors | - | - | - |
再次,组件之间的联动能力。NeuVector 能自动发现应用程序、容器和服务的行为。通过学习模式、监控模式、保护模式的转换有效的提升了效率。
对已知的容器行为建模后,违反规则的行为都将触发安全事件。这些的安全事件会被汇总到Security Events
模块,并通过于 Response Rules
配置事件的响应规则,执行通知告警、自动阻断等响应动作。
可视化安全威胁分析面板
NeuVector 的可视化面板能有效的帮助管理员分析当前系统存在的风险。汇总显示了系统中的安全事件,主机/容器漏洞,Ingress/Egress 流量等。还支持 pdf、csv 导出功能,方便用户生成报告和分析。
资产管理
资产管理显示了节点、容器、镜像仓库、NeuVector 自身组件的相关信息。以不同的视角查看相关资产的安全风险,针对不同资产执行扫描任务。
事件通知
NeuVector 的通知模块包含了安全事件、风险(合规与漏洞)事件与系统事件。
安全事件中记录了违反白名单的事件或匹配的黑名单事件。例如,我们可以在网络规则中设置白名单,所有未在白名单中允许的网络连接都将被拦截,并记录安全事件。在安全事件中,还可以查看网络、进程、文件事件等各类事件。并修改事件规则,将误报加入信任事件中。
用户权限管理与认证系统集成
NeuVector 控制台具有用户管理功能,对用户权限进行限制。并且可以与第三方用户管理系统进行集成,如 LDAP、SAML、OIDC 等,可以通过与用户管理系统内的用户组权限进行匹配,简化用户授权的流程。方法用户集成已有的用户授权基础设施。
联邦集群管理
NeuVector 支持多集群管理功能,创建主集群后,即可在主集群中配置联邦规则。这些规则可以被自动的分发到其他集群中。通过联邦集群可以统一的部署管理各个集群的安全策略与规则,简化管理流程。被纳管集群无权求改这些联邦规则,保证了纳管集群不会违反安全规则,提升了纳管集群的安全性。
NeuVector 架构
具体参考:NeuVector 架构[2]
NeuVector 安全解决方案包含四种类型的安全容器,分别是 Controller、Enforcer、Manager 和 Scanner。它还提供了一个称为 All-in-One 的特殊容器(主要用于 Docker 原生部署),能将 Controller、Enforcer 和 Manager 功能组合在一个容器中。此外,还有一个 Updater,运行该程序时会更新 CVE 数据库。
• Controller:管理 NeuVector Enforcer 容器;为管理控制台提供 REST API。
• Enforcer:执行安全策略。
• Manager:提供一个 web-UI 和 CLI 控制台来管理 NeuVector 平台。
• All-in-One:包括 Controller、Enforcer 和 Manager。
• Scanner:对镜像、容器和节点执行漏洞和合规性扫描。
• Updater:更新 Neuvector 的 CVE 数据库(运行的时候);重新部署 scanner pod。
NeuVector 安全容器:
NeuVector 架构:
NeuVector 安装
具体参考:NeuVector 安装[3]
软件版本:
• OS:Ubuntu18.04
• Kubernetes:1.20.14
• Rancher:2.5.12
• Docker:19.03.15
• NeuVector:5.0.0-b1
快速部署
创建namespace
kubectl create namespace neuvector
部署CRD(Kubernetes 1.19+版本)
kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/crd-k8s-1.19.yaml
kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/waf-crd-k8s-1.19.yaml
kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/dlp-crd-k8s-1.19.yaml
kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/admission-crd-k8s-1.19.yaml
部署CRD(Kubernetes 1.18或更低版本)
kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/crd-k8s-1.16.yaml
kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/waf-crd-k8s-1.16.yaml
kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/dlp-crd-k8s-1.16.yaml
kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/admission-crd-k8s-1.16.yaml
配置RBAC
kubectl create clusterrole neuvector-binding-app --verb=get,list,watch,update --resource=nodes,pods,services,namespaces
kubectl create clusterrole neuvector-binding-rbac --verb=get,list,watch --resource=rolebindings.rbac.authorization.k8s.io,roles.rbac.authorization.k8s.io,clusterrolebindings.rbac.authorization.k8s.io,clusterroles.rbac.authorization.k8s.io
kubectl create clusterrolebinding neuvector-binding-app --clusterrole=neuvector-binding-app --serviceaccount=neuvector:default
kubectl create clusterrolebinding neuvector-binding-rbac --clusterrole=neuvector-binding-rbac --serviceaccount=neuvector:default
kubectl create clusterrole neuvector-binding-admission --verb=get,list,watch,create,update,delete --resource=validatingwebhookconfigurations,mutatingwebhookconfigurations
kubectl create clusterrolebinding neuvector-binding-admission --clusterrole=neuvector-binding-admission --serviceaccount=neuvector:default
kubectl create clusterrole neuvector-binding-customresourcedefinition --verb=watch,create,get,update --resource=customresourcedefinitions
kubectl create clusterrolebinding neuvector-binding-customresourcedefinition --clusterrole=neuvector-binding-customresourcedefinition --serviceaccount=neuvector:default
kubectl create clusterrole neuvector-binding-nvsecurityrules --verb=list,delete --resource=nvsecurityrules,nvclustersecurityrules
kubectl create clusterrolebinding neuvector-binding-nvsecurityrules --clusterrole=neuvector-binding-nvsecurityrules --serviceaccount=neuvector:default
kubectl create clusterrolebinding neuvector-binding-view --clusterrole=view --serviceaccount=neuvector:default
kubectl create rolebinding neuvector-admin --clusterrole=admin --serviceaccount=neuvector:default -n neuvector
kubectl create clusterrole neuvector-binding-nvwafsecurityrules --verb=list,delete --resource=nvwafsecurityrules
kubectl create clusterrolebinding neuvector-binding-nvwafsecurityrules --clusterrole=neuvector-binding-nvwafsecurityrules --serviceaccount=neuvector:default
kubectl create clusterrole neuvector-binding-nvadmissioncontrolsecurityrules --verb=list,delete --resource=nvadmissioncontrolsecurityrules
kubectl create clusterrolebinding neuvector-binding-nvadmissioncontrolsecurityrules --clusterrole=neuvector-binding-nvadmissioncontrolsecurityrules --serviceaccount=neuvector:default
kubectl create clusterrole neuvector-binding-nvdlpsecurityrules --verb=list,delete --resource=nvdlpsecurityrules
kubectl create clusterrolebinding neuvector-binding-nvdlpsecurityrules --clusterrole=neuvector-binding-nvdlpsecurityrules --serviceaccount=neuvector:default
检查是否有以下RBAC对象
kubectl get clusterrolebinding | grep neuvector
kubectl get rolebinding -n neuvector | grep neuvector
kubectl get clusterrolebinding | grep neuvector
neuvector-binding-admission ClusterRole/neuvector-binding-admission 44h
neuvector-binding-app ClusterRole/neuvector-binding-app 44h
neuvector-binding-customresourcedefinition ClusterRole/neuvector-binding-customresourcedefinition 44h
neuvector-binding-nvadmissioncontrolsecurityrules ClusterRole/neuvector-binding-nvadmissioncontrolsecurityrules 44h
neuvector-binding-nvsecurityrules ClusterRole/neuvector-binding-nvsecurityrules 44h
neuvector-binding-nvwafsecurityrules ClusterRole/neuvector-binding-nvwafsecurityrules 44h
neuvector-binding-rbac ClusterRole/neuvector-binding-rbac 44h
neuvector-binding-view ClusterRole/view 44h
kubectl get rolebinding -n neuvector | grep neuvector
neuvector-admin ClusterRole/admin 44h
部署NeuVector--底层runtime为Docker
kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/neuvector-docker-k8s.yaml
部署NeuVector--底层runtime为containerd(对于k3s和rke2可以使用此yaml文件)
kubectl apply -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/neuvector-containerd-k8s.yaml
1.21以下的Kubernetes版本会提示以下错误,将yaml文件下载将batch/v1修改为batch/v1beta1
error: unable to recognize "https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/neuvector-docker-k8s.yaml": no matches for kind "CronJob" in version "batch/v1"
1.20.x cronjob还处于beta阶段没有正式GA,1.21版本开始cronjob才进入正式版。
默认部署web-ui使用的是loadblance类型的Service,为了方便访问修改为NodePort,也可以通过Ingress对外提供服务
kubectl patch svc neuvector-service-webui -n neuvector --type='json' -p '[{"op":"replace","path":"/spec/type","value":"NodePort"},{"op":"add","path":"/spec/ports/0/nodePort","value":30888}]'
访问https://node_ip:30888
默认密码为admin/admin
点击头像旁的My profile页面进入设置页面,设置密码和语言
Helm部署
添加repo
helm repo add neuvector https://neuvector.github.io/neuvector-helm/
helm search repo neuvector/core
创建namespace
kubectl create namespace neuvector
创建ServiceAccount
kubectl create serviceaccount neuvector -n neuvector
helm安装
helm install neuvector --namespace neuvector neuvector/core --set registry=docker.io --set tag=5.0.0-preview.1 --set=controller.image.repository=neuvector/controller.preview --set=enforcer.image.repository=neuvector/enforcer.preview --set manager.image.repository=neuvector/manager.preview --set cve.scanner.image.repository=neuvector/scanner.preview --set cve.updater.image.repository=neuvector/updater.preview
NeuVector基础使用
下面,我将实际结合NeuVector的基础功能进行操作演示,主要包含对于NeuVector安全漏洞管理、合规性和机密性检查、策略管理、准入控制策略、动态安全响应和行为监控。
版本为以NeuVector首个开源版NeuVector:5.0.0-preview.1为主
安全漏洞管理
集成CVE漏洞库,每天自动更新,支持对平台(Kubernetes)、主机、容器、镜像仓库进行安全漏洞扫描。
配置自动扫描,当平台漏洞库有更新或有新的节点和容器加入时会自动进行扫描。
针对不同漏洞有不同风险级别,以及对应的组件版本和修复版本提示
每个漏洞可以展示对应的漏洞发布时间、漏洞影响范围、对应的组件影响版本。
对漏洞进行过滤,是否已经修复,漏洞等级、发布时间等
配置对接镜像仓库扫描
支持对接多种镜像仓库如(docker-registry(harbor)、JFrog Artifactory、Nexus等)
以对接Harbor为例,配置连接方式,填写连接方式和认证信息,过滤器表示你需要扫描的范围如扫描uat项目下全部镜像则uat/*
,如果需要扫描整个Harbor内全部镜像则*。测试设置可以验证编写的表达式的关联情况。
合规性检查和机密性检查
NeuVector的合规性审核包括 CIS 基线测试、自定义检查、机密审核以及 PCI、GDPR 和其他法规的行业标准模板扫描。
类型这表示对应的那个基线标准如K.4.1.1对应Kubernetes CIS基线测试4.1.1 容器对应的基线标准为D开头的,镜像对应的基线标准为I开头
注:《通用数据保护条例》(General Data Protection Regulation,简称GDPR)为欧洲联盟的条例
在合规性检查中也会检查是否存在密文泄漏情况
包括
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
策略管理
在NeuVector中通过组的方式对容器和主机进行管理。通过对组进行合规性检查、网络规则、进程和文件访问规则、DLP/WAF的检测配置。
NeuVector会自动将当前集群主机加入到nodes组,对于集群内容器会自动创建以nv.开头的组
NeuVector的组支持3种模式,学习模式、监控模式、保护模式。各个模式实现作用如下。
学习模式:
• 学习和记录容器、主机间网络连接情况和进程执行信息。
• 自动构建网络规则白名单,保护应用网络正常行为。
• 为每个服务的容器中运行的进程设定安全基线,并创建进程配置文件规则白名单
监控模式:
• NeuVector监视容器和主机网络和进程运行情况,遇到非学习模式下记录的行为将在NeuVector中进行告警。
保护模式:
• NeuVector监视容器和主机网络和进程运行情况,遇到非学习模式下记录的行为直接拒绝。
新建的容器业务被自动发现默认为学习模式,也可以通过设置将默认模式设置为监控模式或保护模式。
不同组下策略冲突情况下,适用的有效模式如下表:
源组模式 | 目的组模式 | 有效模式 |
学习模式 | 监控模式 | 学习模式 |
学习模式 | 保护模式 | 学习模式 |
监控模式 | 学习模式 | 学习模式 |
监控模式 | 保护模式 | 监控模式 |
保护模式 | 学习模式 | 学习模式 |
保护模式 | 监控模式 | 监控模式 |
为了保证业务的稳定运行,当出现模式不一致时,有效模式以限制最小的模式运行。
生产环境最佳实践:
1. 上新业务时先学习模式运行一段时间,进行完整的功能测试和调用测试得到实际运行此业务的网络连接情况和进程执行情况信息。
2. 监控模式运行一段时间,看看有没有额外的特殊情况,进行判断添加规则。
3. 最后全部容器都切换到保护模式确定最终形态。
动态微隔离
使用场景: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也内置网络威胁检测,能够快速识别常用网络攻击,保护业务容器安全运行。
无论保护模式如何。在”学习和监视”模式下,将发出警报,并且可以在”通知”->安全事件中找到这些威胁。在保护模式下,这些将收到警报和阻止。还可以根据威胁检测创建响应规则。
包含的威胁检测如下:
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
进程管理
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
准入策略控制
NeuVector支持与Kubernetes准入控制(admission-control)功能对接,实现UI配置准入控制规则,对请求进行拦截,用于对请求的资源对象进行校验。 NeuVector支持多种准入控制策率配置如镜像CVE漏洞情况限制、部署特权模式、镜像内使用root用户、特定标签等。
在策略-准入控制中开启此功能,注意:需要Kubernetes集群提前开启admission-control功能
NeuVector准入策略控制,支持两种模式,监控模式和保护模式,对应含义和组的模式一样的。这里我们直接切换到保护模式,添加策略。
添加完后,在Rancher中部署特权模式容器会提示解决,策略生效。
动态安全响应
NeuVector事件响应机制可以配置响应规则根据安全事件情况进行动态响应,包括以下事件:漏洞扫描结果、CIS基准测试、准入控制事件等。
响应动作包括隔离、webhook通知、日志抑制
隔离模式:对应的容器网络进出流量将全部被切断。webhook通知:将触发信息通过webhook方式进行告警。日志抑制:对触发告警信息进行抑制。以CVE漏洞配置为例,配置包含CVE漏洞名称为CVE-2020-16156的容器进入隔离模式。
组名对应的是影响范围,如果为空,表示对全部的组都生效,填写组名可以设置对特定组生效。
配置策略后,在集群去curl nginx容器,发现无法访问,在NeuVector中查看容器状态为隔离状态。
删除策略时,也可以配置将对应隔离状态容器解除隔离。
注意:1、隔离操作不适用于为主机事件触发的规则 2、每个规则可以有多个操作。
行为监控
网络流量可视化
网络流量可视化,可以清晰可见容器集群内网络连接关系,当前容器连接会话并且可以过滤网络连接信息,进行图标展示。能够快速进行网络问题定位。
流量抓包
针对容器可进行网络抓包,方便故障不需要进入主机获取高权限,就能使进行网络问题深入排查。
采集到的数据包可直接下载通过Wireshark进行解包分析。
NeuVector 其他配置
升级
若是采用 yaml 文件方式部署的 NeuVector 直接更新对应的组件镜像 tag 即可完成升级。如
kubectl set imagedeployment/neuvector-controller-podneuvector-controller-pod=neuvector/controller:2.4.1 -n neuvector
kubectl set image -n neuvectords/neuvector-enforcer-pod neuvector-enforcer-pod=neuvector/enforcer:2.4.1
若是采用 Helm 部署的 NeuVector,则直接执行 helm update 配置对应参数即可。
卸载
删除部署的组件
kubectl delete -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/neuvector-docker-k8s.yaml
删除配置的 RBAC
kubectl get clusterrolebinding | grep neuvector|awk '{print $1}'|xargs kubectl delete clusterrolebinding
kubectl get rolebinding -n neuvector | grep neuvector|awk '{print $1}'|xargs kubectl delete rolebinding -n neuvector
删除对应的 CRD
kubectl delete -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/crd-k8s-1.19.yaml
kubectl delete -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/waf-crd-k8s-1.19.yaml
kubectl delete -f https://raw.githubusercontent.com/neuvector/manifests/main/kubernetes/5.0.0/admission-crd-k8s-1.19.yaml
参考链接
[1]
NeuVector官网: https://www.suse.com/neuvector/[2]
NeuVector 架构: https://open-docs.neuvector.com/basics/overview#architecture[3]
NeuVector 安装: https://open-docs.neuvector.com/deploying
本文转载自:「云原生百宝箱」,原文:https://url.hi-linux.com/dRrO3,版权归原作者所有。欢迎投稿,投稿邮箱: editor@hi-linux.com。
最近,我们建立了一个技术交流微信群。目前群里已加入了不少行业内的大神,有兴趣的同学可以加入和我们一起交流技术,在 「奇妙的 Linux 世界」 公众号直接回复 「加群」 邀请你入群。
你可能还喜欢
点击下方图片即可阅读
Datav: 一款平替 Grafana 的可视化和可观测性平台
点击上方图片,『美团|饿了么』外卖红包天天免费领
更多有趣的互联网新鲜事,关注「奇妙的互联网」视频号全了解!