前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云原生运行时安全 Falco 入门

云原生运行时安全 Falco 入门

作者头像
CNCF
发布2020-11-09 10:22:48
1.6K0
发布2020-11-09 10:22:48
举报
文章被收录于专栏:CNCFCNCF

Falco(https://falco.org) 是一个开源的运行时安全工具,可以帮助你保护各种环境的安全,最初由 Sysdig 创建,并于2018年成为 CNCF 项目。Falco 的工作方式是查看文件更改、网络活动、进程表和其他数据是否存在可疑行为,然后通过可插拔后端发送警报,通过内核模块或扩展的 BPF 探测器在主机的系统调用级别检查事件。Falco 包含一组丰富的规则,你可以编辑这些规则以标记特定的异常行为,并为正常的计算机操作创建允许列表。

Falco 对容器安全特别有用--尤其是当你使用 Kubernetes 来运行它们的时候。Falco 通过获取 Kubernetes API 审计日志,用于运行时威胁检测和了解应用程序行为。

Falco 通过使用定义意外行为的检测规则来工作,虽然它自带有默认规则,但你可以扩展这些规则来定义自定义规则,以进一步加固你的集群。通过 Falco 我们可以检测下面的场景:

  • 从一个容器中打开一个 shell 会话
  • Host Path 卷挂载
  • 读取 secret 和敏感文件,比如 /etc/shadow 文件
  • 在运行的容器中安装新的软件包
  • 从不属于 CMD 的容器中产生的新进程
  • 打开一个新的端口或意外的网络链接
  • 创建一个特权容器
  • ......

Falco 可以确保我们知道应用什么时候有潜在的违规行为,以便我们可以提前修复这些安全问题,Falco 对现有的 Kubernetes 原生安全措施(如 RBAC 和 Pod 安全策略)进行了补充,这些措施有助于我们预防一些安全问题。

安装

首先当然需要确保我们有一个可访问的 Kubernetes 集群:

代码语言:javascript
复制
$ kubectl get nodes
NAME      STATUS   ROLES    AGE   VERSION
master1   Ready    master   12d   v1.19.3
node1     Ready    <none>   12d   v1.19.3
node2     Ready    <none>   9d    v1.19.3

然后我们使用 Helm 来快速安装,所以我们先安装 Helm,安装 Helm 很简单,下载你的操作系统对应的最新包,解压并将文件移动到 PATH 路径上即可。

代码语言:javascript
复制
$ wget https://get.helm.sh/helm-v3.4.0-linux-amd64.tar.gz
$ tar -xvf helm-v3.4.0-linux-amd64.tar.gz 
$ chmod +x linux-amd64/helm 
$ mv linux-amd64/helm /usr/local/bin/
$ helm version
version.BuildInfo{Version:"v3.4.0", GitCommit:"7090a89efc8a18f3d8178bf47d2462450349a004", GitTreeState:"clean", GoVersion:"go1.14.10"}

现在我们用官方的 Helm Chart 来安装 Falco,先添加 Helm repo 仓库:

代码语言:javascript
复制
$ helm repo add falcosecurity https://falcosecurity.github.io/charts
"falcosecurity" has been added to your repositories
$ helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "falcosecurity" chart repository
Update Complete. ⎈Happy Helming!⎈

现在我们就可以直接使用 Helm Chart 来安装 Falco 了:

代码语言:javascript
复制
$ helm install falco falcosecurity/falco
NAME: falco
LAST DEPLOYED: Thu Oct 29 20:10:01 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Falco agents are spinning up on each node in your cluster. After a few
seconds, they are going to start monitoring your containers looking for
security issues.

No further action should be required.

Helm 会安装一个 Falco DaemonSet 对象,正常我们可以看到每个节点上会启动一个 Falco Pod。

代码语言:javascript
复制
$ kubectl get pods -l app=falco
NAME          READY   STATUS    RESTARTS   AGE
falco-q6mcq   1/1     Running   0          24m
falco-tjmqs   1/1     Running   0          24m
falco-vkrv7   1/1     Running   0          24m

到这里我们就成功安装了 Falco,并在所有节点上运行。

测试

接下来我们进行一个简单的测试,比如创建一个 NGINX 的 Pod,并尝试做一些平时很少执行的操作。

创建 NGINX Pod:

代码语言:javascript
复制
$ kubectl run --generator=run-pod/v1 nginx --image=nginx

上面 Pod 启动后查看运行在哪个节点上:

代码语言:javascript
复制
$ kubectl get pod nginx -o wide
NAME    READY   STATUS    RESTARTS   AGE   IP            NODE    NOMINATED NODE   READINESS GATES
nginx   1/1     Running   0          26s   10.244.2.17   node2   <none>           <none>

我们可以看到 NGINX Pod 运行在节点 node2 上,对应的 Falco Pod 是 falco-q6mcq,下面我们打开两个窗口,在左侧窗口中执行以下操作,同时在右侧窗口中使用 kubectl logs -f falco-q6mcq 命令查看 Falco 容器的日志:

  • 在 NGINX 容器中启动一个 shell
  • Cat 一个敏感文件 /etc/shadow
  • 从 shell 中退出

我们可以看到每当我们做操作是潜在的安全漏洞时,右侧窗口就会出现对应的日志信息。我们也可以将这些日志导出到 Grafana 等监控工具中,也可以触发一个 webhook 到钉钉或者企业微信上进行即时通知。

这是因为 Falco 已自带了很多默认监控规则,具体可以查看 Falco pod 中的 /etc/falco/falco_rules.yaml 文件。

总结

Falco 是 Kubernetes 中非常流行的运行时安全工具,非常建议在所有环境中使用它 - 尤其是生产环境,我们还可以修改规则来满足你的要求,关于 Falco 的规则后续再详细介绍。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CNCF 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • 测试
  • 总结
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档