falco 【3】 default macros

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: falco 【3】 default macros

falco default macros

tags: falco,安全

文章目录

falco default macros

为写入而打开的文件

打开文件以供阅读

从不真实

永远真实

进程名称已设置

文件系统对象重命名

已创建新目录

文件系统对象已删除

文件系统对象已修改

新进程产生

二进制文件的公共目录

Shell 已启动

已知敏感文件

新创建的进程

出站网络连接

入站网络连接

对象是一个容器

交互过程产生

通用 SSH 端口

允许的 SSH 主机

用户列入白名单的容器

允许生成shell的容器

允许与 EC2 元数据服务通信的容器

Kubernetes API 服务器

允许与 Kubernetes API 通信的容器

允许与 Kubernetes 服务节点端口通信的容器

上篇我们学习falco的规则运用,其中宏(macro)是指可重用方式定义规则的公共子部分的方法。

Falco 规则集定义了许多宏,可以更轻松地开始编写规则。这些宏为许多常见场景提供了快捷方式,并且可以在任何用户定义的规则集中使用。Falco 还提供了应该由用户覆盖的宏,以提供特定于用户环境的设置。提供的宏也可以附加到本地规则文件中。

为写入而打开的文件

- macro: open_write
  condition: (evt.type=open or evt.type=openat) and evt.is_open_write=true and fd.typechar='f' and fd.num>=

打开文件以供阅读

- macro: open_read
  condition: (evt.type=open or evt.type=openat) and evt.is_open_read=true and fd.typechar='f' and fd.num>=0

从不真实

- macro: never_true
  condition: (evt.num=0)

永远真实

- macro: always_true
  condition: (evt.num=>0)

进程名称已设置

- macro: proc_name_exists
  condition: (proc.name!="<NA>")

文件系统对象重命名

- macro: proc_name_exists
  condition: (proc.name!="<NA>")

已创建新目录

- macro: mkdir
  condition: evt.type = mkdir

文件系统对象已删除

- macro: remove
  condition: evt.type in (rmdir, unlink, unlinkat)

文件系统对象已修改

- macro: modify
  condition: rename or remove

新进程产生

- macro: spawned_process
  condition: evt.type = execve and evt.dir=<

二进制文件的公共目录

- macro: bin_dir
  condition: fd.directory in (/bin, /sbin, /usr/bin, /usr/sbin)

Shell 已启动

- macro: shell_procs
  condition: (proc.name in (shell_binaries))

已知敏感文件

- macro: sensitive_files
  condition: >
    fd.name startswith /etc and
    (fd.name in (sensitive_file_names)
     or fd.directory in (/etc/sudoers.d, /etc/pam.d))

新创建的进程

- macro: proc_is_new
  condition: proc.duration <= 5000000000
Inbound Network Connections
- macro: inbound
  condition: >
    (((evt.type in (accept,listen) and evt.dir=<)) or
     (fd.typechar = 4 or fd.typechar = 6) and
     (fd.ip != "0.0.0.0" and fd.net != "127.0.0.0/8") and (evt.rawres >= 0 or evt.res = EINPROGRESS))

出站网络连接

- macro: outbound
  condition: >
    (((evt.type = connect and evt.dir=<)) or
     (fd.typechar = 4 or fd.typechar = 6) and
     (fd.ip != "0.0.0.0" and fd.net != "127.0.0.0/8") and (evt.rawres >= 0 or evt.res = EINPROGRESS))

入站网络连接

- macro: inbound_outbound
  condition: >
    (((evt.type in (accept,listen,connect) and evt.dir=<)) or
     (fd.typechar = 4 or fd.typechar = 6) and
     (fd.ip != "0.0.0.0" and fd.net != "127.0.0.0/8") and (evt.rawres >= 0 or evt.res = EINPROGRESS))

对象是一个容器

- macro: container
  condition: container.id != host

交互过程产生

- macro: interactive
  condition: >
    ((proc.aname=sshd and proc.name != sshd) or
    proc.name=systemd-logind or proc.name=login)

通用 SSH 端口

覆盖此宏以反映环境中提供 SSH 服务的端口。

- macro: ssh_port
  condition: fd.sport=22

允许的 SSH 主机

覆盖此宏以反映可以连接到已知 SSH 端口(即堡垒或跳转框)的主机。

- macro: allowed_ssh_hosts
  condition: ssh_port

用户列入白名单的容器

允许在特权模式下运行的白名单容器。

- macro: user_trusted_containers
  condition: (container.image startswith sysdig/agent)

允许生成shell的容器

将允许生成 shell 的容器列入白名单,如果在 CI/CD 管道中使用容器,则可能需要这样做。

- macro: user_shell_container_exclusions
  condition: (never_true)

允许与 EC2 元数据服务通信的容器

将允许与 EC2 元数据服务通信的容器列入白名单。默认值:任何容器。

- macro: ec2_metadata_containers
  condition: container

Kubernetes API 服务器

在此处设置 Kubernetes API 服务的 IP。

- macro: k8s_api_server
  condition: (fd.sip="1.2.3.4" and fd.sport=8080)

允许与 Kubernetes API 通信的容器

将允许与 Kubernetes API 服务通信的容器列入白名单。需要设置 k8s_api_server。

- macro: k8s_containers
  condition: >
    (container.image startswith gcr.io/google_containers/hyperkube-amd64 or
    container.image startswith gcr.io/google_containers/kube2sky or
    container.image startswith sysdig/agent or
    container.image startswith sysdig/falco or
    container.image startswith sysdig/sysdig)

允许与 Kubernetes 服务节点端口通信的容器

- macro: nodeport_containers
  condition: container


相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
6月前
|
Java 容器 Spring
DefaultListableBeanFactory
DefaultListableBeanFactory 是一个完整的、功能成熟的 IoC 容器,如果你的需求很简单,甚至可以直接使用 DefaultListableBeanFactory,如果你的需求比较复杂,那么通过扩展 DefaultListableBeanFactory 的功能也可以达到,可以说 DefaultListableBeanFactory 是整个 Spring IoC 容器的始祖。
|
3月前
|
Kubernetes 调度 容器
k8s descheduler 组件安装
k8s descheduler 组件安装
|
4月前
|
安全 Python
详解module ‘yaml‘ has no attribute ‘FullLoader‘
遇到“module 'yaml' has no attribute 'FullLoader'”错误时,首先应该确认你正在使用的PyYAML库的版本至少是5.1,并确保已经正确地导入了PyYAML。紧随其后,考虑使用 `safe_load()`作为读取YAML文件的更安全方式。通过采取这些解决措施,你应该能够有效地解决这个问题,使你的代码能够顺利地读取YAML文件。
116 2
|
4月前
|
SQL 开发框架 安全
【译】You probably should stop using a custom TaskScheduler
以更明确的方式控制并发 我认为并发控制(又称速率限制)是应用程序非常重要的方面,重要的方面应该是明确的。 TaskScheduler 相当低级别的工具,我宁愿拥有更高级别的工具。如果工作是 CPU 密集型的,那么 PLINQ 或类似 ActionBlock TPL DataFlow 的东西可能是更好的选择。 如果工作主要是 IO 绑定和异步的,那么可以使用 Parallel.ForEachAsync 或 Polly.RateLimiting 基于 的 SemaphoreSlim 自定义帮助程序类。 结论
50 3
|
6月前
|
Kubernetes 容器
Warning FailedScheduling 14m (x12 over 16m) default-scheduler 0/1 nodes are available: 1 node(s
Warning FailedScheduling 14m (x12 over 16m) default-scheduler 0/1 nodes are available: 1 node(s
117 0
|
12月前
no module nameed frontend
no module nameed frontend
44 0
|
Kubernetes 数据库连接 Nacos
在minikube中启动ruoyi-modules-system
在minikube中启动ruoyi-modules-system
在minikube中启动ruoyi-modules-system
|
Kubernetes 安全 Docker
Kubernetes CKS 2021 Complete Course + Simulator笔记【1】---k8s架构介绍
Kubernetes CKS 2021 Complete Course + Simulator笔记【1】---k8s架构介绍
Kubernetes CKS 2021 Complete Course + Simulator笔记【1】---k8s架构介绍
|
算法框架/工具
|
监控 Linux 网络安全