基于Falco实现运行时入侵检测

在容器运行的过程中,攻击者可能会入侵容器应用,进行容器逃逸等攻击行为。为了及时发现这些入侵行为,我们需要进行容器运行时的入侵检测。

在本篇文章中,我们将介绍如何安装Falco并自定义检测规则来进行容器运行时的入侵检测。


01、Falco简介

Falco 是一个开源的运行时安全检测引擎,可在主机、容器、K8s 和云环境中提供运行时安全性,实时检测异常行为和潜在安全威胁并发出警报。本文以Centos为测试环境,在宿主机上安装Falco,并在K8s中集成Falco。

02、在主机上安装Falco

(1)在cenos上,导入 Falco GPG 密钥,配置yum存储库,更新软件包列表,安装falco。

rpm --import https://falco.org/repo/falcosecurity-packages.asc
curl -s -o /etc/yum.repos.d/falcosecurity.repo https://falco.org/repo/falcosecurity-rpm.repo
yum update -y
yum install -y falco 
# 执行命令测试Falco是否安装成功,若失败,尝试执行 falcoctl driver install 下载预编译驱动

(2)使用 systemd 管理 Falco

sudo systemctl list-unit-files "falco*"
# 启用eBPF
sudo systemctl enable falco-modern-bpf.service
#启用falco-modern-bpf.service还会falco-custom.service创建一个名为 的新别名/服务,
sudo systemctl list-unit-files "falco*"
#启动服务
systemctl start falco-modern-bpf.service
systemctl status falco-modern-bpf.service

(3)配置Falco

syslog_output:     #关闭默认输出
  enable: false   
stdout_output:     #关闭默认输出  
  enable: false
file_output:      #输出到一个指定的日志文件中。  
  enable: true  
  keep_alive:false  
  filename: /var/log/falco.log

(4)触发规则,查看安全告警

more /etc/shadow     
tail -f /var/log/falco.log

03、自定义检测规则

安全场景:当容器遭受入侵,攻击者通过web漏洞尝试进行远程命令执行或是反弹shell,执行一些系统命令。

检测规则:自定义检测规则,检测父进程为apache2,子进程为bash,匹配到这条策略就会触发告警。

Falco 编写的自定义检测规则:

- rule: Apache spawns bash shell (Web Attack Alert)  
  desc: “检测 Apache 进程异常启动 Bash,可能为 Web 漏洞利用(如反弹 Shell、远程命令执行)”  
 condition: evt.type=execve and container.id!=host and proc.pname=apache2 and proc.name="bash"  
  output: High risk process behavior in container, Apache spawns bash shell (evt_type=%evt.type user=%user.name user_uid=%user.uid user_loginuid=%user.loginuid process=%proc.name proc_exepath=%proc.exepath parent=%proc.pname command=%proc.cmdline terminal=%proc.tty exe_flags=%evt.arg.flags %container.info)  
  priority: critical  
  tags: [container, shell]

04、在 K8s集群中部署 Falco

Falco 可以通过 DaemonSet 部署在 Kubernetes 集群的每个节点上,从而实时监控整个集群的系统调用。

(1)添加 Helm 仓库并更新

helm repo add falcosecurity https://falcosecurity.github.io/chartshelm repo update

(2)使用Helm安装Falco

helm install --replace falco --namespace falco --create-namespace --set tty=true falcosecurity/falco

(3)检查 Falco pod 是否正在运行

kubectl get pods -n falco
(4)创建一个pod,并触发规则
kubectl run pod1 --image=nginxkubectl exec -it pod1 -- cat /etc/shadow

(5)查看falco日志

kubectl logs -l app.kubernetes.io/name=falco -n falco -c falco | grep Warning

(6)安装 Falcosidekick 和 Falcosidekick-UI

helm upgrade --namespace falco falco falcosecurity/falco --set falcosidekick.enabled=true --set falcosidekick.webui.enabled=true

(7)查看svc,修改为NodeProt

kubectl -n falco get svc

(8)浏览器访问 Falcosidekick UI,默认用户名和密码是admin/ admin。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bypass--

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值