高级日志收集器管理

本文介绍如何为 Defender for Cloud Apps Cloud Discovery 日志收集器配置高级选项。

Defender for Cloud Apps 云发现继续专注于基本防火墙格式。 对在防火墙级别转发的日志所做的更改可能无法继续起作用,或者可能会导致解析问题。 如果发现此类错误,建议继续使用基本防火墙格式,或者使用自定义日志收集器相关选项。 有关详细信息,请参阅使用自定义日志分析器

本文介绍如何修改 Defender for Cloud Apps Cloud Discovery Docker 的配置。

修改日志收集器的 FTP 配置

使用以下章节中的步骤修改 Defender for Cloud Apps Cloud Discovery Docker 的配置。

验证日志收集器版本

要验证系统上当前安装的日志收集器版本,请连接到日志收集器主机并运行:

cat /var/adallom/versions | grep columbus-

更改 FTP 密码

此过程说明了如何更改用于访问日志收集器文件的密码:

  1. 连接到日志收集器主机并运行:

    docker exec -it <collector name> pure-pw passwd <ftp user>
    
  2. 输入新密码,然后再次输入以确认。

  3. 运行以下命令以应用更改:

    docker exec -it <collector name> pure-pw mkdb
    

你应该可以查看以下内容:

  • run_logs
  • ssl_update
  • config.json

自定义证书文件

此过程说明了如何自定义用于安全连接到 Cloud Discovery Docker 实例的证书文件。

  1. 打开 FTP 客户端,并连接到日志收集器主机。

  2. 导航到 ssl_update 目录并上传新的证书文件,包括以下文件:

    接收器类型 所需文件
    FTP - pure-ftpd.pem:包括密钥和证书数据
    Syslog - ca.pem:用于签署客户端证书的证书颁发机构证书。
    - server-key.pemserver-cert.pem:日志收集器的证书和密钥

    Syslog 消息通过 TLS 发送到日志收集器,这需要双向 TLS 身份验证,包括对客户端证书和服务器证书进行身份验证。

    文件名是必需的。 如果缺少任何文件,更新就会失败。

  3. 在“终端”窗口中,运行:

    docker exec -t <collector name> update_certs
    

    输出应类似于以下代码:

    root@DockerPlayground:~# docker exec -t columbus update_certs
    rsyslog: stopped
    rsyslog: started
    ftpd: stopped
    ftpd: started
    root@DockerPlayground:~#
    
  4. 在“终端”窗口中,运行:

    docker exec <collector name> chmod -R 700 /etc/ssl/private/
    

在代理后面启用日志收集器

如果在代理后面运行,日志收集器在将数据发送到 Defender for Cloud Apps 时可能会出现问题。 例如,发生这种情况的原因可能是,日志收集器不信任代理的根证书颁发机构,无法连接到 Microsoft Defender for Cloud Apps 来检索其配置或上传接收的日志。

以下过程说明如何在代理后面启用日志收集器。

提示

你可能还想更改 Syslog 或 FTP 日志收集器使用的证书,或者解决从防火墙和代理到日志收集器的连接问题。 有关更多信息,请参阅修改日志收集器的 FTP 配置

在代理后面设置日志收集器

确保已执行必要的步骤,在 Windows 或 Linux 计算机上运行 Docker,并已成功将 Defender for Cloud Apps Docker 映像下载到主机上。

有关详细信息,请参阅为连续报表配置自动上传日志‭

验证 Docker 日志收集器容器创建

验证容器是否已创建并正在运行。 在 shell 中,运行:

docker ps

应会看到类似于下面的信息:

正在运行的 Docker 容器的屏幕截图。

将代理根 CA 证书复制到容器

将 CA 证书从虚拟机复制到 Defender for Cloud Apps 容器。 在以下示例中,容器命名为 Ubuntu-LogCollector,CA 证书命名为 Proxy-CA.crt

以下命令将证书复制到正在运行的容器中的文件夹。 在 Ubuntu 主机上运行命令:

docker cp Proxy-CA.crt Ubuntu-LogCollector:/var/adallom/ftp/discovery

将配置设置为使用 CA 证书

  1. 进入容器。 运行以下命令,在日志收集器容器中打开 bash:

    docker exec -it Ubuntu-LogCollector /bin/bash
    
  2. 在容器内的 bash 窗口中,转到 Java jre 文件夹。 要避免版本相关的路径错误,请使用以下命令:

    cd "$(find /opt/jdk/*/jre -name "bin" -printf '%h' -quit)"
    cd bin
    
  3. 将之前复制的根证书从 discovery 文件夹导入 Java KeyStore,并定义密码。

    默认密码为 changeit。 有关更多信息,请参阅更改 Java KeyStore 密码

    ./keytool --import --noprompt --trustcacerts --alias SelfSignedCert --file /var/adallom/ftp/discovery/Proxy-CA.crt --keystore ../lib/security/cacerts --storepass <password>
    
  4. 验证证书是否已正确导入 CA 密钥存储库。 运行以下命令,搜索导入时提供的别名 (SelfSignedCert):

    ./keytool --list --keystore ../lib/security/cacerts | grep self
    

应该会看到已导入的代理 CA 证书。 例如:

keytool 接口的屏幕截图。

限制向 Linux 上的日志收集器发送 syslog 消息的 IP 地址

要保护 Docker 映像并确保只允许一个 IP 地址将 syslog 消息发送到日志收集器,请在主机上创建 IP 表规则,以允许输入流量,并根据部署情况丢弃来自特定端口(如 TCP/601 或 UDP/514)的流量。

以下命令显示了如何创建可添加到主机的 IP 表规则的示例。 此表规则允许 IP 地址 `1.2.3.4`` 通过 TCP 端口 601 连接到日志收集器容器,并丢弃来自同一端口上其他 IP 地址的所有其他连接。

iptables -I DOCKER-USER \! --src 1.2.3.4 -m tcp -p tcp --dport 601 -j DROP

将日志收集器设置为使用新配置运行

容器现已准备就绪。

使用创建日志收集器时使用的 API 令牌运行 collector_config 命令。 例如:

“创建日志收集器”对话框的屏幕截图。

运行该命令时,指定你自己的 API 令牌,比如 collector_config abcd1234abcd1234abcd1234abcd1234 ${CONSOLE} ${COLLECTOR}

例如:

配置更新示例的屏幕截图。

日志收集器现在可与 Defender for Cloud Apps 进行通信。 向 Defender for Cloud Apps 发送数据后,日志收集器的状态将从“正常”变为“已连接”。 例如:

上传状态的屏幕截图。

注意

如果必须更新日志收集器的配置来添加或删除数据源,则通常必须删除容器并再次执行前面的步骤。

要避免此问题,可以使用 Defender for Cloud Apps 门户中生成的新 API 令牌重新运行 collector_config 工具。

更改 Java KeyStore 密码

  1. 停止 Java KeyStore 服务器。

  2. 在容器内打开 bash shell,然后转到 appdata/conf 文件夹。

  3. 要更改服务器 KeyStore 密码,请运行:

    keytool -storepasswd -new newStorePassword -keystore server.keystore
    -storepass changeit
    

    默认服务器密码为 changeit

  4. 要更改证书密码,请运行:

    keytool -keypasswd -alias server -keypass changeit -new newKeyPassword -keystore server.keystore -storepass newStorePassword
    

    默认服务器别名为 server

  5. 在文本编辑器中,打开 server-install\conf\server\secured-installed.properties 文件。 添加以下代码行,然后保存更改:

    1. 为服务器指定新的 Java KeyStore 密码:server.keystore.password=newStorePassword
    2. 为服务器指定新的证书密码:server.key.password=newKeyPassword
  6. 启动服务器。

将日志收集器移到 Linux 上的其他数据分区

许多公司都要求将数据移到单独的分区。 此过程说明了如何将 Defender for Cloud Apps Docker 日志收集器映像移到 Linux 主机上的数据分区。

此过程说明了如何将数据移到名为 datastore 的分区,并假定已挂载该分区。 例如:

Linux 分区列表。

在 Linux 主机上添加和配置新分区的说明不在本指南的范围内。

要将日志收集器移到其他分区

  1. 停止 Docker 服务。 运行:

    service docker stop
    
  2. 将日志收集器数据移到新分区。 运行:

    mv /var/lib/docker /datastore/docker
    
  3. 移除旧的 Docker 存储目录 (/var/lib/docker),并创建指向新目录 (/datastore/docker) 的符号链接。 运行:

    rm -rf /var/lib/docker && ln -s /datastore/docker /var/lib/
    
  4. 启动 Docker 服务。 运行:

    service docker start
    
  5. (可选)验证日志收集器的状态。 运行:

    docker ps
    

检查 Linux 上的日志收集器磁盘使用情况

此过程说明了如何查看日志收集器磁盘的使用情况和位置。

  1. 标识存储日志收集器数据的目录的路径。 运行:

    docker inspect <collector_name> | grep WorkDir
    

    例如:

    日志收集器目录标识方法的屏幕截图。

  2. 使用不带"/work"后缀的标识路径获取日志收集器磁盘的大小。 运行:

    du -sh /var/lib/docker/overlay2/<log_collector_id>/
    

    有关如何标识磁盘上的日志收集器大小的屏幕截图。

    注意

    如果只需要知道磁盘的大小,可以使用以下命令:docker ps -s

将日志收集器移到可访问的主机

在受监管的环境中,对托管日志收集器映像的 Docker Hub 的访问可能会被阻止。 这会阻止 Defender for Cloud Apps 从日志收集器导入数据,可通过将日志收集器映像移到可访问的主机来解决。

此过程说明了如何使用可访问 Docker Hub 的计算机下载日志收集器映像,并将其导入目标主机。

下载的映像可以导入到专用存储库中,也可以直接导入到主机上。 此过程说明了如何将日志收集器映像下载到 Windows 计算机,然后使用 WinSCP 将日志收集器移到目标主机。

先决条件

  1. 确保主机上安装了 Docker。 例如,使用以下下载之一:

  2. 下载后,使用 Docker 的离线安装指南安装操作系统。

    导出日志收集器映像,然后将映像导入目标主机

从 Docker Hub 导出日志收集器映像

以下过程说明如何使用 Linux 或 Windows 导出日志收集器映像。

在 Linux 上导出映像

  1. 在可访问 Docker Hub 的 Linux 计算机上,运行以下命令安装 Docker 并下载日志收集器映像。

    curl -o /tmp/MCASInstallDocker.sh https://adaprodconsole.blob.core.windows.net/public-files/MCASInstallDocker.sh && chmod +x /tmp/MCASInstallDocker.sh; /tmp/MCASInstallDocker.sh
    
  2. 导出日志收集器映像。 运行:

    docker save --output /tmp/mcasLC.targ mcr.microsoft.com/mcas/logcollector
    chmod +r /tmp/mcasLC.tar
    

    重要

    确保使用 output 参数而不是 STDOUT 写入文件。

  3. 使用 WinSCP 将日志收集器映像下载到 Windows 计算机的 C:\mcasLogCollector\ 下。 例如:

    将日志收集器下载到 Windows 计算机的屏幕截图。

在 Windows 上导出映像

  1. 在可访问 Docker Hub 的 Windows 10 计算机上,安装 Docker Desktop

  2. 下载日志收集器映像。 运行:

    docker login -u caslogcollector -p C0llector3nthusiast
    docker pull mcr.microsoft.com/mcas/logcollector
    
  3. 导出日志收集器映像。 运行:

    docker save --output C:\mcasLogCollector\mcasLC.targ mcr.microsoft.com/mcas/logcollector
    

    重要

    确保使用 output 参数而不是 STDOUT 写入文件。

将日志收集器映像导入并加载到目标主机

此过程说明了如何将导出的映像传输到目标主机。

  1. 将日志收集器映像上传到目标主机的 /tmp/ 下。 例如:

    将日志收集器上传到目标主机的屏幕截图。

  2. 在目标主机上,将日志收集器映像导入 Docker 映像存储库。 运行:

    docker load --input /tmp/mcasLC.tar
    

    例如:

    将日志收集器映像导入 Docker 存储库的屏幕截图。

  3. (可选)验证导入是否成功完成。 运行:

    docker image ls
    

    例如:

    验证日志收集器导入是否成功的屏幕截图。

    现在,你可以使用目标主机中的映像继续创建日志收集器

为 Linux 上的日志收集器定义 Syslog 和 FTP 接收器的自定义端口

有些组织要求为 Syslog 和 FTP 服务定义自定义端口。

添加数据源时,Defender for Cloud Apps 日志收集器将使用特定的端口号来侦听来自一个或多个数据源的流量日志。

下表列出了接收器的默认侦听端口:

接收器类型 端口
Syslog * UDP/514 - UDP/51x
* TCP/601 - TCP/60x
FTP * TCP/21

使用以下步骤定义自定义端口:

  1. 在 Microsoft Defender 门户中,选择“设置”。 然后选择“Cloud Apps”

  2. 在“Cloud Discovery”下,选择“自动上传日志”。 然后,选择“数据收集器”选项卡。

  3. 在“日志收集器”选项卡上,添加或编辑日志收集器,更新数据源后,从对话框中复制运行命令。 例如:

    从日志收集器向导复制运行命令。

    如果按提供的方式使用,则向导提供的命令会将日志收集器配置为使用端口 514/udp 和 515/udp。 例如:

    (echo <credentials>) | docker run --name LogCollector1 -p 514:514/udp -p 515:515/udp -p 21:21 -p 20000-20099:20000-20099 -e "PUBLICIP='10.0.0.100'" -e "PROXY=" -e "SYSLOG=true" -e "CONSOLE=machine.us2.portal.cloudappsecurity.com" -e "COLLECTOR=LogCollector1" --security-opt apparmor:unconfined --cap-add=SYS_ADMIN --restart unless-stopped -a stdin -i mcr.microsoft.com/mcas/logcollector starter
    

    例如:

    从日志收集器向导运行命令的屏幕截图。

  4. 在主机上使用该命令之前,请修改该命令以使用自定义端口。 例如,要将日志收集器配置为使用 UDP 端口 414 和 415,请按如下方式更改命令:

    (echo <credentials>) | docker run --name LogCollector1 -p 414:514/udp -p 415:515/udp -p 21:21 -p 20000-20099:20000-20099 -e "PUBLICIP='10.0.0.100'" -e "PROXY=" -e "SYSLOG=true" -e "CONSOLE=machine.us2.portal.cloudappsecurity.com" -e "COLLECTOR=LogCollector1" --security-opt apparmor:unconfined --cap-add=SYS_ADMIN --restart unless-stopped -a stdin -i mcr.microsoft.com/mcas/logcollector starter
    

    例如:

    自定义运行命令的屏幕截图。

    注意

    仅修改 Docker 映射。 内部分配的端口不会更改,因此你可以选择主机上的任何侦听端口。

验证 Linux 上的日志收集器接收的流量和日志格式

有时,你可能需要调查以下问题:

  • 日志收集器正在接收数据:验证日志收集器是否正在从设备接收 Syslog 消息,且未被防火墙阻止。
  • 接收数据的日志格式正确:验证日志格式,通过比较 Defender for Cloud Apps 预期的日志格式和设备发送的日志格式,来帮助排除解析错误。

使用以下步骤验证日志收集器是否接收到流量:

  1. 登录托管 Docker 容器的服务器。

  2. 采用以下任一方法验证日志收集器是否正在接收 Syslog 消息:

    • 使用 tcpdump 或类似命令分析端口 514 上的网络流量

      tcpdump -Als0 port 514
      

      如果全部配置正确,你应该会看到来自设备的网络流量。 例如:

      通过 tcpdump 分析网络流量的屏幕截图。

    • 使用 netcat 或类似命令分析主机上的网络流量

      1. 安装 netcatwget

      2. 从 Microsoft Defender XDR 下载示例日志文件。 如果需要,解压缩日志文件。

        1. 在 Microsoft Defender XDR 的“Cloud Apps”下,选择“Cloud Discovery”>“操作”>“创建 Cloud Discovery 快照报表”

        2. 选择要从中上传日志文件的数据源

        3. 选择“查看并验证”,然后右键单击“下载示例日志”并复制 URL 地址链接。

        4. 选择“关闭”>“取消”

      3. 运行:

        wget <URL_address_to_sample_log>
        
      4. 运行 netcat 以将数据流式传输到日志收集器。

        cat <path_to_downloaded_sample_log>.log | nc -w 0 localhost <datasource_port>
        

      如果收集器配置正确,日志数据就会出现在消息文件中,不久之后就会上传到 Defender for Cloud Apps 门户。

    • 检查 Defender for Cloud Apps Docker 容器中的相关文件

      1. 登录到容器。 运行:

        docker exec -it <Container Name> bash
        
      2. 确定 Syslog 消息是否正在写入消息文件。 运行:

        cat /var/adallom/syslog/<your_log_collector_port>/messages
        

      如果全部配置正确,你应该会看到来自设备的网络流量。 例如:

      使用 cat 命令分析流量的屏幕截图。

      注意

      此文件将继续写入,直到其大小达到 40 KB。 例如:

  3. 查看 /var/adallom/discoverylogsbackup 目录中上传到 Defender for Cloud Apps 的日志。 例如:

    查看上传的日志文件。

  4. 通过将 /var/adallom/discoverylogsbackup 中存储的消息与 Defender for Cloud Apps 创建日志收集器向导中提供的示例日志格式进行比较,验证日志收集器接收的日志格式。

消息文件的输出写入本地文件

如果你想使用自己的示例日志,但无权访问设备,请使用以下命令将位于日志收集器的 syslog 目录中消息文件的输出写入主机上的本地文件:

docker exec CustomerLogCollectorName tail -f -q /var/adallom/syslog/<datasource_port>/messages > /tmp/log.log

将输出文件 (/tmp/log.log) 与 /var/adallom/discoverylogsbackup 目录中存储的消息进行比较。

更新日志收集器版本

更新日志收集器时:

  • 在安装新版本之前,请确保停止日志收集器并删除当前映像。
  • 安装新版本后更新证书文件

后续步骤

如果遇到任何问题,我们可以提供帮助。 要获取产品问题的帮助或支持,请开立支持票证