Docker安全第二话--安全监控

Docker安全监控

Falco概述

Falco是一款开源的行为监视器,旨在检测应用程序中的异常活动。 Falco由一系列规则组成,这些规则基于应用程序执行的系统调用来识别可疑行为。 Falco可以应用于容器环境、虚拟化环境、Linux物理主机环境

这里写图片描述

Falco安装

# curl -s -o /etc/apt/sources.list.d/draios.list https://s3.amazonaws.com/download.draios.com/stable/deb/draios.list
(PS : draios.list文件名根据不同的环境进行相应更改)

# apt-get update

# apt-get -y install falco


Falco规则编写

Falco是基于策略集来监控用户行为的,而这些策略集定义在yaml文件中:
这里写图片描述

falco.yaml定义常规配置以及使用哪些策略文件:
这里写图片描述

falco_rules.yaml是Falco官方提供的策略文件,里面定义了一些诸如敏感文件操作、异常socket连接、创建namespace等恶意行为的警告策略(PS:默认使用,但这里为了方便测试我将它注释了,只读取falco_rules.local.yaml的策略)

接下来我们编辑falco_rules.local.yaml:
这里写图片描述

- macro: container
  condition: container.id != host
  
宏定义一个container(container.id不是host)


- macro: spawned_process
  condition: evt.type = execve and evt.dir =<
  
宏定义了一个spawned_process(开始调用execve)


- rule: run_shell_in_container
  desc: A shell was spawned in a container
  condition: container and proc.name = bash and spawned_process and proc.pname exists and not proc.pname = docker
  output: "Your container [%container.name] making a suspicious behavior [spawn a bash]"
  priority: WARNING

rule:策略名
desc:描述
condition:策略,container宏,进程名bash,spawned_process宏,父进程存在,父进程名不是docker
output:输出
priority:等级


- macro: inbound
  condition: ((evt.type = listen and evt.dir=>) or (evt.type = accept and evt.dir=<))
  
宏定义一个inbound(开始调用listen()或结束调用accept())


- macro: outbound
  condition: evt.type = connect and evt.dir =< and (fd.typechar = 4 or fd.typechar = 6)
  
宏定义一个outbound(结束调用connect(),IPv4或IPv6)


- rule: network_connection_in_container
  desc: A network connection was made in a container
  condition: fd.sockfamily = ip and (inbound or outbound)
  output: "Your container [%container.name] making a suspicious     behavior [Create a network connection]"
  priority: WARNING

rule:策略名
desc:描述
condition:策略,sock类型ip,宏inbound,宏outbound
output:输出
priority:等级

策略语法手册:https://www.sysdig.org/wiki/sysdig-user-guide/


使用Falco对容器进行安全监控

启动falco
这里写图片描述
提示你的策略没有涵盖所有情况,我们现在只是测试,忽略此警告

现在我们启动一个ubuntu容器
这里写图片描述

在ubuntu容器中新启一个bash
这里写图片描述
falco检测到了ubuntu容器的spawn bash行为,并发出警告

在ubuntu容器中启一个反弹shell
这里写图片描述
当容器接收到C&C服务器的连接时Falco会发出警告


Falco原理

Falco构建在一个故障排除的核心软件之上。 具体来说,它使用sysdig内核模块进行syscall拦截和sysdig用户库进行状态跟踪和事件解析。 目前,它们都在数十万台机器上部署和运行。 这意味着非常好的稳定性,即使是最初的“0.1.0”版本。 另一方面,性能也是一个大问题。 当部署在负载大的主机和具有大量策略集的场景下,CPU负载会因为Falco而变得很大。

敏感的行为(例如上面的那些)被编译为规则部署在过滤器中。 每个规则都有一个关联的输出模板,用于指定发生匹配事件时要输出的信息。 请注意,falco不会对信息进行收集,警报,和修复。

Falco和其他安全监控工具的区别在于Falco运行在用户空间中,使用内核模块获取系统调用,其他工具在内核级执行系统调用过滤/监视。 这使得Falco可能受到攻击。 如果可以杀死/暂停 Falco进程,则可以禁用检测。 而其他工具在内核中替换一组加载的策略或BPF程序可能更困难。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker可以用来轻松地在容器中运行GitLab CE(Community Edition),这是一个开源的Git服务,提供了代码托管、持续集成/持续部署等功能。下面是使用Docker安装GitLab CE的基本步骤: 1. **安装Docker**: 首先确保你的系统上已经安装了Docker。如果你的系统是Linux,可以使用包管理器如apt或yum;如果是Windows或Mac,可以从Docker官网下载并安装。 2. **获取GitLab CE镜像**: 使用Docker Hub上的官方镜像,你可以运行`docker pull gitlab/gitlab-ce`来下载最新的GitLab CE镜像。 3. **运行GitLab容器**: 创建一个Docker运行命令,指定所需的端口映射和数据卷,以保存配置和数据。例如: ``` docker run -d \ --name gitlab \ -p 80:80 -p 443:443 -p 2222:22 \ --restart always \ -v /path/to/data:/var/opt/gitlab \ -v /path/to/config:/etc/gitlab \ gitlab/gitlab-ce ``` 这里 `-d` 表示后台运行,`-p` 映射端口,`--restart always` 确保容器重启时继续运行,`-v` 挂载主机目录到容器中的路径。 4. **设置环境**: 容器启动后,可能需要访问GitLab Web界面进行初始化设置,包括数据库连接信息、邮件服务器配置等。首次启动时,可能还需要完成一些基础的配置步骤。 5. **安全和认证**: 为了保护GitLab,确保配置了适当的安全措施,包括HTTPS(通常映射的443端口)和密码策略。 6. **监控和日志**: 为持久监控和问题排查,你可能需要查看Docker容器的日志和使用第三方工具对GitLab进行性能监控。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值