华为云云耀云服务器L实例评测|华为云上试用主机安全产品Elkeid

news2025/2/26 6:33:45

文章目录

  • 华为云云耀云服务器L实例评测|华为云上试用主机安全产品Elkeid
    • 一、背景:什么是主机安全
    • 二、主机安全之Elkeid
      • 1. Elkeid 介绍
      • 2. Elkeid Server
      • 3. Elkeid Server 架构
        • Elkeid AgentCenter(下面简称AC)
        • Elkeid Service Discovery(下面简称SD)
        • Elkeid Manager
    • 三、华为云上安装部署试用Elkeid
      • 1. 华为云主机准备
      • 2. Elkeid安装和配置
      • 3. docker安装过程问题记录
        • docker 报错:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
        • docker报错: No chain/target/match by that name.
      • 4. Elkeid使用
    • 四、参考

华为云云耀云服务器L实例评测|华为云上试用主机安全产品Elkeid

一、背景:什么是主机安全

随着云技术的发展,现在各大银行、大小企业和政府都在频繁使用云技术,在这些领域,安全显然是一个非常重要的因素。云主机作为数据存储的场所,正面临着黑客不断入侵的威胁,那么主机安全是什么?

主机安全具体是指保证主机在数据存储和处理的保密性、完整性,可用性,它包括硬件、固件、系统软件的自身安全,以及一系列附加的安全技术和安全管理措施,从而建立一个完整的主机安全保护环境。

我国的信息安全经过二十多年的建设,在防病毒、网络和边界安全方面到得了一定成果,而主机环境安全建设却相对较薄弱,主机是信息安全最重要,也是最后一门防线。

其实主机安全,从我个人理解角度出发,更多的时候是一个主机层入侵检测系统HIDS (Host-based Intrusion Detection System),主要通过收集主机层的信息来实现入侵检测/行为审计/攻击溯源/资产盘点/合规基线检测等能力。

我们今天 就是要在华为云上体验使用一下Elkeid,Elkeid: 是字节跳动的一个开源的 HIDS 项目。

二、主机安全之Elkeid

1. Elkeid 介绍

Elkeid 开源版本项目地址:https://github.com/bytedance/Elkeid

安全领域的开源项目,这个开源项目叫做 Elkeid,意思是瑶光/破军,也是北斗七星之一,它解决的问题就是主机安全

Elkeid 是火山引擎旗下的 CWPP 产品,旨在满足现代企业在复杂技术架构下的安全需求。Elkeid 起源于字节跳动(ByteDance)内部最佳实践,原生集成了针对 服务器/容器/Serverless 等多种工作负载的反入侵能力,涵盖了 服务器与容器反入侵、容器集群反入侵、应用运行时保护 RASP(Runtime Application Self-Protection)、威胁溯源与猎捕、工作负载资产盘点、工作负载漏洞发现,暴露面分析等能力,并提供开放式策略引擎,帮助企业在一体式的解决方案下更好地保障云上、云下的工作负载安全。

Elkeid 是由字节跳动内部安全与风控团队自研的一个新的主机安全解决方案,它具备几个鲜明的特点。

  • 一个就是规模大,能够支撑字节跳动内部百万级的服务器数量。当然讲到这块,也稍微剧透一下字节跳动内部的服务器规模。
  • 另外一个特点,就是 Elkeid 采用了我们内核态的技术进行大多数指标和信息的收集。
  • 这样一方面可以极大地提升性能,另一方面也可以去采集更多更丰富的数据,从而大大增强我们的检测能力。

目前,Elkeid完整版本部署规模已达到100万量级,其稳定性/性能/数据采集能力/检测能力/溯源能力等均得到了实战验证,均有不俗表现。

产品优势

  • 百万级Agent的后台架构解决方案
  • 分布式,去中心化,集群高可用
  • 部署简单,依赖少,便于维护

注意:该产品未完全开源,截止目前(2023-9)其中Elkeidup 自动化部署工具和Hub没有开源,前端也没有开源~。

2. Elkeid Server

Elkeid Server 需要配合端上的数据采集层(Elkeid Driver/Agent)一起使用,实现了对大规模Agent的监控,管理和策略更新。能适配各种复杂的网络环境,可单机也可集群部署。具体部署方案,请移步Repo查看。

开源地址:https://github.com/bytedance/Elkeid/tree/main/server

3. Elkeid Server 架构

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
Elkeid Server 大体包含4个模块:

  • AgentCenter:负责与Agent进行通信,采集Agent数据并简单处理后汇总到消息队列集群(Kafka集群),同时也负责对Agent进行管理包括Agent的升级,配置修改,任务下发等。

  • ServiceDiscovery:后台中的各个服务模块都需要向ServiceDiscovery中心定时注册、同步服务信息,从而保证各个服务模块中的实例相互可见,便于直接通信。

  • Manager:负责对整个后台进行管理并提供相关的查询、管理接口。

  • 实时/离线计算模块:消费server采集到消息队列中的数据,进行实时和离线的分析与检测。(此部分还未开源)

简单来说就是:

  • AgentCenter收集Agent数据

  • Manager管理着AgentCenter和这些计算模块

  • ServiceDiscovery把这些所有的服务、节点都串联了起来

  • 实时/离线计算模块对这些数据进行分析和检测

Elkeid 后台大体包含5个模块:

  1. AgentCenter(AC),负责与Agent进行通信,采集Agent数据并简单处理后汇总到消息队列集群,同时也负责对Agent进行管理包括Agent的升级,配置修改,任务下发等。同时AC也对外提供HTTP接口,Manager通过这些HTTP接口实现对AC和Agent的管理和监控。

  2. ServiceDiscovery(SD),后台中的各个服务模块都需要向SD中心定时注册、同步服务信息,从而保证各个服务模块中的实例相互可见,便于直接通信。由于SD维护了各个注册服务的状态信息,所以当服务使用方在请求服务发现时,SD会进行负载均衡。比如Agent请求获取AC实例列表,SD直接返回负载压力最小的AC实例。

  3. Manager,负责对整个后台进行管理并提供相关的查询、管理接口。包括管理AC集群,监控AC状态,控制AC服务相关参数,并通过AC管理所有的Agent,收集Agent运行状态,往Agent下发任务,同时manager也管理实时和离线计算集群。

  4. Elkeid Console: Elkeid 前端部分。

  5. Elkeid HUB :Elkeid HIDS RuleEngine。

简单来说就是AgentCenter收集Agent数据,Elkeid HUB对这些数据进行分析和检测,Manager管理着AgentCenter和这些计算模块,ServiceDiscovery把这些所有的服务、节点都串联了起来,通过Elkeid Console可查看告警和资产数据等。

Elkeid AgentCenter(下面简称AC)

AC一方面需要从Agent采集数据并进行初步处理,然后把处理后数据写入Kafka集群(供后续分析模块消费),另一方面要向Agent下发指令,这个通信是双向的。

同时AC也对外提供HTTP接口,Manager通过这些HTTP接口实现对AC和Agent的管理和监控。

在这里插入图片描述相关技术介绍:

  • 通信效率:在百万级Agent的情况下,如此大量级的数据对后端的压力不容小觑。而通信和处理效率主要受通信协议和编码方式的影响。对比各种通信方式,我们最终选择使用gRPC双向流的方式。

    • 一方面gRPC基于HTTP2协议标准设计开发,相对于其他RPC框架,gRPC带来了更多强大功能,如双向流、头部压缩等。这些都很好的符合我们现在的需求,同时通信效率也很高。

    • 另一方面我们采用Protobuf作为编码方式。Protobuf具备了标准的IDL和IDL编译器,同时序列化数据非常简洁,紧凑;另外编解码速度在众多序列化协议中也处于领先。

  • 通信安全性:Agent是具备root权限的应用,Server具备对Agent下发指令的能力,如果通信链路被控制,将是灾难性的。这里我们使用了双向SSL校验,一方面保证了Agent/Server不会与未知的对端通信,另一方面SSL也保证了通信过程数据都是加密的。

总结: grpc双向流 + 双向SSL校验。

Elkeid Service Discovery(下面简称SD)

服务发现/负载均衡机制大致两个设计思路,一个集中代理,一个是端代理。

集中代理方式例如F5、nginx,请求先发送到集中代理点,代理再根据一定的负载均衡算法进行转发,服务的响应也会先到代理点,再转发到请求端。这个方式虽然是最常见的,但有两个问题,一个是经过代理来回转发,请求响应的时延会增加,另一个是在大规模Agent请求下,代理点的负载压力太大,因此在大规模部署的环境下不能使用这个方案。

在这里插入图片描述

相关技术介绍:

  • 服务提供方定时向SD发送注册信息,包括服务名字,实例ip,端口,负载状态等,这样SD就维护着所有这个服务实例的状态。

  • SD这个服务中的各个节点间需要进行数据同步,例如上面1中注册信息发送到NodeA上,NodeA需要把这个信息同步给NodeB,这样如果有请求访问NodeB,NodeB也有对应的注册信息。

  • 服务使用方通过服务名,请求服务发现/注册中心,获取对应服务名下能使用的实例IP、端口列表,进而可以直接访问。

  • SD各个节点间的数据同步是以广播的方式批量同步,保证了一定的性能。某个时间点节点间的数据并不是一致的,但最终能保持一致,满足分布式CAP理论中的AP,在大规模Agent,AC场景下,并没什么影响。此外也没用到任何一致性中间件(etcd,zookeeper等),部署方便,维护简单。

  • 由于SD维护了各个注册服务的状态信息,所以当服务使用方在请求服务发现时,SD会进行负载均衡。比如Agent请求获取AC实例列表,SD直接返回负载压力最小的AC实例。

Elkeid Manager

Manager管理整个后台,并提供各种查询、管理接口。包括管理AC集群,监控AC状态,控制AC服务相关参数,并通过AC管理所有的Agent,收集Agent运行状态,往Agent下发任务,同时manager也管理实时和离线计算集群。

鉴于Manager管理着后台的各个集群,所以任何的管理操作都是对集群的操作,调用Manger的接口请求会通过Manager转发给目标集群所有的节点,然后再收集所有节点的响应,再进行处理。为了提升这个过程的响应速度和稳定性,Manager内部实现了一个简单的分布式任务管理系统。

三、华为云上安装部署试用Elkeid

1. 华为云主机准备

  1. 购买华为云主机,本次评测系统如下:
    在这里插入图片描述2. 创建新的安全组,开发所有端口方便测试
    在这里插入图片描述更改安全组,如下,选择我们的开发所有端口的这个安全组:
    在这里插入图片描述
  2. 开发所有端口后,我们ssh登录上华为云主机即可~

2. Elkeid安装和配置

官方参考:http://elkeid.bytedance.com/docs/elkeidup/deploy-zh_CN.html
基本参考官方文档,即可!

由于评测环境资源有限,我这里使用官方的docker安装简单试用一下Elkeid~
0. 先安装docker

yum install docker

1、单机docker快速部署 (单机测试环境推荐)
注:宿主机请优先使用centos 7.x 或 debian 9/10,容器内的服务依赖了systemd,而systemd使用了cgroup,容器内外systemd版本相差过大会导致容器内的systemd运行异常,无法启动相应服务。

1.1、导入镜像

# 从release下载的是分卷的镜像,需要先合并镜像
wget https://github.com/bytedance/Elkeid/releases/download/v1.9.1.4/elkeidup_image_v1.9.1.tar.gz.00
wget https://github.com/bytedance/Elkeid/releases/download/v1.9.1.4/elkeidup_image_v1.9.1.tar.gz.01
wget https://github.com/bytedance/Elkeid/releases/download/v1.9.1.4/elkeidup_image_v1.9.1.tar.gz.02
wget https://github.com/bytedance/Elkeid/releases/download/v1.9.1.4/elkeidup_image_v1.9.1.tar.gz.03
cat elkeidup_image_v1.9.1.tar.gz.* > elkeidup_image_v1.9.1.tar.gz

亲测,华为云下载这个很慢,建议迅雷下载后自行上传。

#导入镜像
docker load -i elkeidup_image_v1.9.1.tar.gz

1.2、运行容器

docker run -d --name elkeid_community \
  --restart=unless-stopped \
  -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
  -p 8071:8071 -p 8072:8072 -p 8080:8080 \
  -p 8081:8081 -p 8082:8082 -p 8089:8080  -p 8090:8090\
  --privileged \
  elkeid/all-in-one:v1.9.1

1.3、设置对外IP
使用本机IP,不能使用127.0.0.1。

docker exec -it elkeid_community bash

cd /root/.elkeidup/

# 命令为交互式
./elkeidup public {ip}


./elkeidup agent init
./elkeidup agent build
./elkeidup agent policy create

cat ~/.elkeidup/elkeid_passwd

经过测试 2C2G安装 elkeid,报错如下,估计是内存太小了~
在这里插入图片描述
我们再次以2C4G机器做验证,还是报同样的冲突,因为字节elkeipdup没有开源,所以原因未知(大概率还是资源大小问题,我本地安装测试无问题)~
本次评测暂时处理到这里~~

3. docker安装过程问题记录

docker 报错:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

这个错误表示无法连接到 Docker daemon,常见的原因包括:

  1. Docker daemon 没有运行
    可以使用 sudo systemctl status docker 来检查docker服务是否运行,如果未运行可以使用 sudo systemctl start docker 来启动
sudo systemctl start docker
sudo systemctl enable docker

docker报错: No chain/target/match by that name.

报错完整信息:

[root@dev elkeid]# docker run -d --name elkeid_community \
>   --restart=unless-stopped \
>   -v /sys/fs/cgroup:/sys/fs/cgroup:ro \
>   -p 8071:8071 -p 8072:8072 -p 8080:8080 \
>   -p 8081:8081 -p 8082:8082 -p 8089:8080  -p 8090:8090\
>   --privileged \
>   elkeid/all-in-one:v1.9.1
5f24d42cfccf965d9a3ce6b7e5323049ff4fb9ef09d3ad1541b2391b28e3385b
/usr/bin/docker-current: Error response from daemon: driver failed programming external connectivity on endpoint elkeid_community (fd39db5e047de94bbba8f65474cf54ea9605062b36e630e4c46de56fe782c3e9):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8090 -j DNAT --to-destination 172.17.0.2:8090 ! -i docker0: iptables: No chain/target/match by that name.
 (exit status 1)).

问题分析:这个问题是在使用 docker run 命令启动容器时,Docker 在设置容器的端口映射规则时失败了。
具体是在使用 iptables 添加 DNAT 规则失败,提示 iptables 没有指定的链、目标或匹配项。
这个问题常见于一些最小化的 Linux 发行版,默认没有安装 iptables 或 iptables 的 nat 模块。

问题解决:

  1. 确保主机上已经安装了 iptables 和 iptables 的 nat 模块
yum install iptables-services -y
  1. 启用 iptables 的 nat 功能
modprobe iptable_nat
  1. 重启 docker 服务
systemctl restart docker

4. Elkeid使用

顺利安装完成后,容器的/root/.elkeidup/elkeid_passwd文件记录了各组件的密码和相关的url。

访问elkeid_console,按照 安装配置 界面的命令进行Agent安装部署。

四、参考

【Elkeid 策略】抗击黑客:如何利用Elkeid构建入侵检测能力
参考URL: https://www.zhihu.com/column/c_1411384767867162624
字节跳动如何从0到1打造一个开源项目?
参考URL: https://www.51cto.com/article/711324.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/990705.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[构建自己的 Vue 组件库] 小尾巴 UI 组件库

文章归档于:https://www.yuque.com/u27599042/row3c6 组件库地址 npm:https://www.npmjs.com/package/xwb-ui?activeTabreadme小尾巴 UI 组件库源码 gitee:https://gitee.com/tongchaowei/xwb-ui小尾巴 UI 组件库测试代码 gitee&#xff1a…

Java(四)数组与类和对象

Java(四)数组与类和对象 六、数组(非常重要)1.定义2.遍历2.1遍历方法2.2Arrays方法 3.二维数组数组小总结 七、类和对象1. 定义(重要)1.1 类1.2 对象 2. this关键字(重要)2.1 特点 3…

方差分析的核心概念“方差分解“

方差是统计学中用来衡量数据集合中数值分散或离散程度的一种统计量。它表示了数据点与数据集合均值之间的差异程度,即数据的分散程度。方差越大,表示数据点更分散,而方差越小,表示数据点更集中。 方差的计算公式如下:…

自己开发一个接口文档页面html

演示效果 具体代码如下 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>框架框架文档页面</…

网络原理(一)网络基础,包括IP ,网络相关的定义

网络基础 以下图片是书上的网图。 什么是IP地址&#xff1f; IP地址&#xff08;Internet Protocol Address&#xff09;是指互联网协议地址&#xff0c;又译为网际协议地址。P地址是IP协议提供的一种统一的地址格式&#xff0c;它为互联网上的每一个网络和每一台主机分配一…

电商(淘宝1688京东拼多多等)API接口服务:提升商业效率和用户体验的关键

电商API接口服务&#xff1a;提升商业效率和用户体验的关键 随着电子商务的飞速发展&#xff0c;电商企业需要不断提升自身的业务能力和服务质量&#xff0c;以应对日益激烈的市场竞争。为了更好地满足商家和消费者的需求&#xff0c;电商API接口服务应运而生。本文将探讨电商…

【进阶篇】Redis内存淘汰详解

文章目录 Redis内存淘汰详解0. 前言大纲Redis内存淘汰策略 1. 什么是Redis内存淘汰策略&#xff1f;1.1.Redis 内存不足的迹象 2. Redis内存淘汰策略3. 原理4. 主动和被动1. 主动淘汰1.1 键的生存周期1.2 过期键删除策略 2. 被动淘汰2.2 被动淘汰策略的实现 5. 项目实践优化策略…

【autodl/linux配环境心得:conda/本地配cuda,cudnn及pytorch心得】-未完成

linux配环境心得&#xff1a;conda/本地配cuda&#xff0c;cudnn及pytorch心得 我们服务器遇到的大多数找不到包的问题一&#xff0c;服务器安装cuda和cudnn使用conda在线安装cuda和cudnn使用conda进行本地安装检查conda安装的cuda和cudnn本地直接安装cuda和cudnn方法一&#x…

MDK-Keil AC6 Compiler屏蔽特定警告

最近在使用STM32CubeMX生成MDK工程是&#xff0c;使用了 AC6 版本的编译器进行编译代码&#xff0c;然后发现了一些警告&#xff0c;但是在 AC5 版本下编译又正常。于是研究了下怎么屏蔽特定的警告&#xff0c;这里记录一下。 1. Keil AC6屏蔽特定警告 遇到的警告如下&#x…

CSS的break-inside 属性 的使用

break-inside 属性在 CSS 页码分隔模块中使用,它定义了一个元素内部是否允许发生页面、栏目或者区域的分隔。 break-inside有以下几个值 break-inside: avoid- 表示避免在该元素内部发生分页或者分栏。break-inside: auto - 默认允许分页break-inside: avoid-page - 避免页面…

【LeetCode题目详解】第九章 动态规划part07 70. 爬楼梯 (进阶) 322. 零钱兑换 279.完全平方数 (day45补)

本文章代码以c为例&#xff01; 一、力扣第70题&#xff1a;爬楼梯 题目&#xff1a; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 注意&#xff1a;给定 n 是一个正整数。 示例 1&#x…

如何在 Ubuntu 上安装和使用 Nginx?

ginx&#xff08;发音为“engine-x”&#xff09;是一种流行的 Web 服务器软件&#xff0c;以其高性能和可靠性而闻名。它是许多流行网站使用的开源软件&#xff0c;包括 Netflix、GitHub 和 WordPress。Nginx 可以用作 Web 服务器、负载均衡器、反向代理和 HTTP 缓存等。 它以…

[小尾巴 UI 组件库] 全屏响应式轮播背景图(基于 Vue 3 与 Element Plus)

文章归档于&#xff1a;https://www.yuque.com/u27599042/row3c6 组件库地址 npm&#xff1a;https://www.npmjs.com/package/xwb-ui?activeTabreadme小尾巴 UI 组件库源码 gitee&#xff1a;https://gitee.com/tongchaowei/xwb-ui小尾巴 UI 组件库测试代码 gitee&#xff1a…

岩土工程安全监测利器:振弦采集仪的发展

岩土工程安全监测利器&#xff1a;振弦采集仪的发展 岩土工程安全监测是保障建筑物、地下工程和地质环境安全稳定运行的重要手段。传统上&#xff0c;监测手段主要依靠人工巡视以及基础设施安装的传感器&#xff0c;但是这些方法都存在着缺陷。人工巡视存在的问题是数据采集精…

用 Python 微调 ChatGPT (GPT-3.5 Turbo)

用 Python 微调 ChatGPT (GPT-3.5 Turbo) 备受期待的 GPT-3.5 Turbo 微调功能现已推出&#xff0c;并且为今年秋季即将发布的 GPT-4 微调功能奠定了基础。 这不仅仅是一次简单的更新——它是一个游戏规则改变者&#xff0c;为开发人员提供了完美定制人工智能模型的关键解决方案…

拥抱云原生,下一代边缘计算云基础设施

// 编者按&#xff1a;面对海量数据新的应用形态对低时延和分布式架构的需求&#xff0c;边缘计算将成为新一代边缘计算云基础设施&#xff0c;火山引擎覆盖了全国海量边缘节点&#xff0c;储备了上百T带宽&#xff0c;承载了视频直播、游戏娱乐、智慧交通、影视特效等多场景…

python官方标准库

文章目录 1. 标准库2. Python标准库介绍3. 示例 1. 标准库 https://docs.python.org/zh-cn/3/library/ https://pypi.org/ 2. Python标准库介绍 Python 语言参考手册 描述了 Python 语言的具体语法和语义&#xff0c;这份库参考则介绍了与 Python 一同发行的标准库。它还描…

前端uniapp块样式写法

<template><view class"block"><view class"block_box"><view class"block_box_content"><view class"block_box_left">左边</view><view class"block_box_right">右边</view…

【Nginx24】Nginx学习:压缩模块Gzip

Nginx学习&#xff1a;压缩模块Gzip 又是一个非常常见的模块&#xff0c;Gzip 现在也是事实上的 Web 应用压缩标准了。随便打开一个网站&#xff0c;在请求的响应头中都会看到 Content-Encoding: gzip 这样的内容&#xff0c;这就表明当前这个请求的页面或资源使用了 Gzip 压缩…

grep wc 与 管道符

grep命令 可以通过grep命令&#xff0c;从文件中通过关键字过滤文件行。 语法: grep [-n] 关键字文件路径 选项-n&#xff0c;可选&#xff0c;表示在结果中显示匹配的行的行号。参数&#xff0c;关键字&#xff0c;必填&#xff0c;表示过滤的关键字&#xff0c;带有空格或其…