配置离线端点和气隙环境

编辑

默认情况下,Elastic Endpoint 通过从 https://artifacts.security.elastic.co 自动下载全局工件更新,持续防御最新的威胁。在受限网络中运行 Elastic Endpoint 时,您可以设置本地镜像服务器来将更新代理到无法直接访问 elastic.co URL 的端点。

托管 Elastic Endpoint 工件镜像

编辑

您可以部署自己的 Elastic Endpoint 全局工件镜像,以使端点能够通过充当代理的另一台服务器自动更新其全局工件。这使得端点即使无法直接访问互联网也能获得更新。

完成以下步骤

  1. 部署 HTTP 反向代理服务器。
  2. 配置 Elastic Endpoint 以从代理服务器读取。

步骤 1:部署 HTTP 反向代理服务器

编辑

设置并配置 HTTP 反向代理,以将请求转发到 https://artifacts.security.elastic.co,并在代理时包含来自 elastic.co 服务器的响应头。

实体标签 (Etag) 头是强制性的 HTTP 响应头,您必须在服务器配置文件中设置它。Elastic Endpoint 使用 Etag 头来确定您的全局工件自上次下载以来是否已更新。如果您的服务器配置文件不包含 ETag 头,则 Elastic Endpoint 在有新工件可用时不会下载新工件。

示例:Nginx

此示例脚本启动 Nginx Docker 镜像并将其配置为代理工件

cat > nginx.conf << EOF
server {
  location / {
    proxy_pass https://artifacts.security.elastic.co;
  }
}
EOF
docker run -v "$PWD"/nginx.conf:/etc/nginx/conf.d/default.conf:ro -p 80:80 nginx

此示例脚本不适用于生产环境。我们建议根据您的 IT 策略配置 Nginx 服务器以使用 TLS。有关下载和配置 Nginx 的更多信息,请参阅 Nginx 文档

示例:Apache HTTPD

此示例脚本启动 Apache httpd Docker 镜像并将其配置为代理工件

docker run --rm httpd cat /usr/local/apache2/conf/httpd.conf > httpd.conf
cat >> httpd.conf << EOF
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule ssl_module modules/mod_ssl.so

SSLProxyEngine on
ServerName localhost
ProxyPass / https://artifacts.security.elastic.co/
ProxyPassReverse / https://artifacts.security.elastic.co/
EOF
docker run -p 80:80 -v "$PWD"/httpd.conf:/usr/local/apache2/conf/httpd.conf httpd

此示例脚本不适用于生产环境。我们建议根据您的 IT 策略配置 httpd 以使用 TLS。有关下载和配置 Apache httpd 的更多信息,请参阅 Apache 文档

步骤 2:配置 Elastic Endpoint

编辑

为每个需要使用镜像的 Elastic Defend 集成策略 设置 advanced.artifacts.global.base_url 高级设置。请注意,每个操作系统都有单独的设置

  • linux.advanced.artifacts.global.base_url
  • mac.advanced.artifacts.global.base_url
  • windows.advanced.artifacts.global.base_url
Integration policy advanced settings

托管气隙 Elastic Endpoint 工件服务器

编辑

如果 Elastic Endpoint 需要在封闭网络中完全脱机运行,您可以设置镜像服务器,并定期手动使用新的工件更新来更新它。

完成以下步骤

  1. 部署 HTTP 文件服务器。
  2. 配置 Elastic Endpoint 以从文件服务器读取。
  3. 手动将工件更新复制到文件服务器。

步骤 1:部署 HTTP 文件服务器

编辑

部署 HTTP 文件服务器以从本地目录提供文件,稍后将在其中填充工件更新文件。

实体标签 (Etag) 头是强制性的 HTTP 响应头,您必须在服务器配置文件中设置它。Elastic Endpoint 使用 Etag 头来确定您的全局工件自上次下载以来是否已更新。如果您的服务器配置文件不包含 ETag 头,则 Elastic Endpoint 在有新工件可用时不会下载新工件。

示例:Nginx

此示例脚本启动 Nginx Docker 镜像并将其配置为文件服务器

cat > nginx.conf << 'EOF'
# set compatible etag format
map $sent_http_etag $elastic_etag {
  "~(.*)-(.*)" "$1$2";
}
server {
  root /app/static;
  location / {
    add_header ETag "$elastic_etag";
  }
}
EOF
docker run -v "$PWD"/nginx.conf:/etc/nginx/conf.d/default.conf:ro -v "$PWD"/static:/app/static:ro -p 80:80 nginx

此示例脚本不适用于生产环境。我们建议根据您的 IT 策略配置 Nginx 服务器以使用 TLS。有关下载和配置 Nginx 的更多信息,请参阅 Nginx 文档

示例:Apache HTTPD

此示例脚本启动 Apache httpd Docker 镜像并将其配置为文件服务器

docker run --rm httpd cat /usr/local/apache2/conf/httpd.conf > my-httpd.conf
cat >> my-httpd.conf << 'EOF'
# set compatible etag format
FileETag MTime
EOF
docker run -p 80:80 -v "$PWD/static":/usr/local/apache2/htdocs/ -v "$PWD"/my-httpd.conf:/usr/local/apache2/conf/httpd.conf:ro httpd

此示例脚本不适用于生产环境。我们建议根据您的 IT 策略配置 httpd 以使用 TLS。有关下载和配置 Apache httpd 的更多信息,请参阅 Apache 文档

步骤 2:配置 Elastic Endpoint

编辑

为每个需要使用镜像的 Elastic Defend 集成策略 设置 advanced.artifacts.global.base_url 高级设置。请注意,每个操作系统都有单独的设置

  • linux.advanced.artifacts.global.base_url
  • mac.advanced.artifacts.global.base_url
  • windows.advanced.artifacts.global.base_url
Integration policy advanced settings

步骤 3:手动复制工件更新

编辑

从 Elastic 全局工件服务器下载最新的工件文件,然后将这些文件复制到您在步骤 1 中创建的服务器实例。

以下是下载所有全局工件更新的示例脚本。每个版本的 Elastic Endpoint 都有不同的工件文件。更改示例脚本中 ENDPOINT_VERSION 变量的值以匹配 Elastic Endpoint 的已部署版本。

export ENDPOINT_VERSION=8.17.0 && wget -P downloads/endpoint/manifest https://artifacts.security.elastic.co/downloads/endpoint/manifest/artifacts-$ENDPOINT_VERSION.zip && zcat -q downloads/endpoint/manifest/artifacts-$ENDPOINT_VERSION.zip | jq -r '.artifacts | to_entries[] | .value.relative_url' | xargs -I@ curl "https://artifacts.security.elastic.co@" --create-dirs -o ".@"

此命令将下载应直接复制到文件服务器的文件和目录结构。

Elastic 会随着检测引擎的改进而持续发布更新。因此,我们建议至少每月更新一次气隙环境,以保持与工件更新同步。

验证您的自托管工件服务器

编辑

每个新的全局工件更新版本都会递增一个版本标识符,您可以检查该标识符以确保 Elastic Endpoint 已接收并安装了最新版本。

要确认给定 Elastic Endpoint 版本的工件的最新版本,请检查已发布的版本。此示例脚本检查版本

curl -s https://artifacts.security.elastic.co/downloads/endpoint/manifest/artifacts-8.17.0.zip | zcat -q | jq -r .manifest_version

将上面命令中的 https://artifacts.security.elastic.co 替换为您的本地镜像服务器,以验证工件是否已正确提供。

在更新 Elastic Endpoint 配置以从镜像服务器读取后,使用 Kibana 的 Discover 视图 搜索 metrics-* 数据视图中 endpoint.policy 响应文档,然后检查已安装的版本 (Endpoint.policy.applied.artifacts.global.version) 并与上面命令的输出进行比较

Searching for `endpoint.policy` in Discover