高级日志收集器管理
本文介绍如何为Defender for Cloud Apps云发现日志收集器配置高级选项。
Defender for Cloud Apps云发现将继续关注基本防火墙格式。 对在防火墙级别转发的日志所做的更改可能无法继续工作,或者可能导致分析出现问题。 如果发现此类错误,建议继续使用基本防火墙格式,或者对自定义日志收集器使用选项。 有关详细信息,请参阅 使用自定义日志分析程序。
本文介绍如何修改 Defender for Cloud Apps 云发现 Docker 的配置。
修改日志收集器 FTP 配置
使用以下部分中的步骤修改Defender for Cloud Apps云发现 Docker 的配置。
验证日志收集器版本
若要验证系统上当前安装的日志收集器版本,请连接到日志收集器主机并运行:
cat /var/adallom/versions | grep columbus-
更改 FTP 密码
此过程介绍如何更改用于访问日志收集器文件的密码:
连接到日志收集器主机并运行:
docker exec -it <collector name> pure-pw passwd <ftp user>
输入新密码,然后再次输入以确认。
运行以下命令以应用更改:
docker exec -it <collector name> pure-pw mkdb
应能够查看以下内容:
run_logs
ssl_update
config.json
自定义证书文件
此过程介绍如何自定义用于安全连接到云发现 Docker 实例的证书文件。
打开 FTP 客户端并连接到日志收集器主机。
导航到目录
ssl_update
并上传新的证书文件,包括以下文件:接收方类型 所需文件 FTP - pure-ftpd.pem:包括密钥和证书数据 Syslog - ca.pem:用于对客户端证书进行签名的证书颁发机构的证书。
- server-key.pem 和 server-cert.pem:日志收集器的证书和密钥
Syslog 消息通过 TLS 发送到日志收集器,这需要相互 TLS 身份验证,包括对客户端和服务器证书进行身份验证。文件名是必需的。 如果缺少任何文件,更新将失败。
在终端窗口中,运行:
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:~#
在终端窗口中,运行:
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
应会看到类似于以下输出的内容:
将代理根 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 证书
进入容器。 运行以下命令以在日志收集器容器中打开 bash:
docker exec -it Ubuntu-LogCollector /bin/bash
从容器内的 bash 窗口中,转到 Java
jre
文件夹。 若要避免与版本相关的路径错误,请使用以下命令:cd "$(find /opt/jdk/*/jre -name "bin" -printf '%h' -quit)" cd bin
将之前复制的根证书从 发现 文件夹导入 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>
验证证书是否已正确导入 CA 密钥存储。 运行以下命令,搜索在导入 (SelfSignedCert) 期间提供的别名:
./keytool --list --keystore ../lib/security/cacerts | grep self
将显示导入的代理 CA 证书。
限制将 syslog 消息发送到 Linux 上的日志收集器的 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 密码
停止 Java KeyStore 服务器。
在容器中打开 bash shell 并转到 appdata/conf 文件夹。
若要更改服务器 KeyStore 密码,请运行:
keytool -storepasswd -new newStorePassword -keystore server.keystore -storepass changeit
默认服务器密码为
changeit
。若要更改证书密码,请运行:
keytool -keypasswd -alias server -keypass changeit -new newKeyPassword -keystore server.keystore -storepass newStorePassword
默认服务器别名为 服务器。
在文本编辑器中,打开 server-install\conf\server\secured-installed.properties 文件。 添加以下代码行,然后保存更改:
- 为服务器指定新的 Java KeyStore 密码:
server.keystore.password=newStorePassword
- 指定服务器的新证书密码:
server.key.password=newKeyPassword
- 为服务器指定新的 Java KeyStore 密码:
启动服务器。
将日志收集器移动到 Linux 上的其他数据分区
许多公司都要求将数据移动到单独的分区。 此过程介绍如何将 Defender for Cloud Apps Docker 日志收集器映像移动到 Linux 主机上的数据分区。
此过程描述将数据移动到名为 数据存储 的分区,并假定你已装载该分区。 例如:
在 Linux 主机上添加和配置新分区不在本指南范围内。
将日志收集器移动到其他分区:
停止 Docker 服务。 运行:
service docker stop
将日志收集器数据移动到新分区。 运行:
mv /var/lib/docker /datastore/docker
删除旧 Docker 存储目录 (/var/lib/docker) ,并创建指向 /datastore/docker) (新目录的符号链接。 运行:
rm -rf /var/lib/docker && ln -s /datastore/docker /var/lib/
启动 Docker 服务。 运行:
service docker start
(可选)验证日志收集器的状态。 运行:
docker ps
检查 Linux 上的日志收集器磁盘使用情况
此过程介绍如何查看日志收集器磁盘使用情况和位置。
确定存储日志收集器数据的目录的路径。 运行:
docker inspect <collector_name> | grep WorkDir
例如:
使用不带“/工作”后缀的标识路径获取日志收集器磁盘的大小。 运行:
du -sh /var/lib/docker/overlay2/<log_collector_id>/
注意
如果只需要知道磁盘的大小,则可以改用以下命令:
docker ps -s
将日志收集器移动到可访问的主机
在受管制环境中,可能会阻止对托管日志收集器映像的 Docker 中心的访问。 这可以防止Defender for Cloud Apps从日志收集器导入数据,并且可以解析将日志收集器映像移动到可访问的主机。
此过程介绍如何使用有权访问Docker Hub的计算机下载日志收集器映像并将其导入目标主机。
下载的映像可以导入到专用存储库中,也可以直接导入到主机上。 此过程介绍如何将日志收集器映像下载到 Windows 计算机,然后使用 WinSCP 将日志收集器移动到目标主机。
先决条件
请确保已在主机上安装 Docker。 例如,使用以下下载项之一:
下载后,请使用 Docker 的 脱机安装指南 安装操作系统。
从Docker Hub导出日志收集器映像
以下过程介绍如何使用 Linux 或 Windows 导出日志收集器映像。
在 Linux 上导出映像
在有权访问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
导出日志收集器映像。 运行:
docker save --output /tmp/mcasLC.targ mcr.microsoft.com/mcas/logcollector chmod +r /tmp/mcasLC.tar
重要
请确保使用 输出 参数写入文件,而不是 STDOUT。
使用 WinSCP 将日志收集器映像下载到 Windows 计算机
C:\mcasLogCollector\
。 例如:
在 Windows 上导出映像
在有权访问Docker Hub的Windows 10计算机上,安装 Docker Desktop。
下载日志收集器映像。 运行:
docker login -u caslogcollector -p C0llector3nthusiast docker pull mcr.microsoft.com/mcas/logcollector
导出日志收集器映像。 运行:
docker save --output C:\mcasLogCollector\mcasLC.targ mcr.microsoft.com/mcas/logcollector
重要
请确保使用 输出 参数写入文件,而不是 STDOUT。
将日志收集器映像导入并加载到目标主机
此过程介绍如何将导出的映像传输到目标主机。
在 下
/tmp/
将日志收集器映像上传到目标主机。 例如:在目标主机上,将日志收集器映像导入 Docker 映像存储库。 运行:
docker load --input /tmp/mcasLC.tar
例如:
(可选)验证导入是否已成功完成。 运行:
docker image ls
例如:
现在可以继续使用目标主机中的映像 创建日志收集器 。
为 Linux 上的日志收集器定义 Syslog 和 FTP 接收器的自定义端口
某些组织要求为 Syslog 和 FTP 服务定义自定义端口。
添加数据源时,Defender for Cloud Apps日志收集器使用特定的端口号来侦听来自一个或多个数据源的流量日志。
下表列出了接收方的默认侦听端口:
接收方类型 | 端口 |
---|---|
Syslog | * UDP/514 - UDP/51x * TCP/601 - TCP/60x |
FTP | * TCP/21 |
使用以下步骤定义自定义端口:
在Microsoft Defender门户中,选择“设置”。 然后选择“ 云应用”。
在 “云发现”下,选择“ 自动日志上传”。 然后选择“ 日志收集器 ”选项卡。
在“ 日志收集器 ”选项卡上,添加或编辑日志收集器,更新数据源后,从对话框中复制 run 命令。 例如:
如果按提供使用,向导提供的命令会将日志收集器配置为使用端口 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
例如:
在主机上使用 命令之前,请修改命令以使用自定义端口。 例如,若要将日志收集器配置为使用 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 的预期日志格式与设备发送的日志格式来帮助排查分析错误。
使用以下步骤验证日志收集器是否接收了流量:
登录到托管 Docker 容器的服务器。
使用以下任何方法验证日志收集器是否正在接收 Syslog 消息:
使用 tcpdump 或类似命令分析端口 514 上的网络流量:
tcpdump -Als0 port 514
如果正确配置了所有内容,应会看到来自设备的网络流量。 例如:
使用 netcat 或类似命令分析主机上的网络流量:
安装 netcat 和 wget。
从 Microsoft Defender XDR 下载示例日志文件。 如果需要,请解压缩日志文件。
在Microsoft Defender XDR,在“云应用”下,选择“云发现>操作>”“创建云发现快照报表”。
选择要从中上传日志文件的 数据源 。
选择“ 查看并验证 ”,然后右键单击“ 下载示例日志 ”并复制 URL 地址链接。
选择 “关闭>取消”。
运行:
wget <URL_address_to_sample_log>
运行
netcat
以将数据流式传输到日志收集器。cat <path_to_downloaded_sample_log>.log | nc -w 0 localhost <datasource_port>
如果收集器配置正确,日志数据将出现在消息文件中,不久之后,日志数据将上传到Defender for Cloud Apps门户。
检查 Defender for Cloud Apps Docker 容器中的相关文件:
登录到容器。 运行:
docker exec -it <Container Name> bash
确定是否正在将 Syslog 消息写入消息文件。 运行:
cat /var/adallom/syslog/<your_log_collector_port>/messages
如果正确配置了所有内容,应会看到来自设备的网络流量。 例如:
注意
此文件将继续写入,直到其大小达到 40 KB。 例如:
查看上传到目录中Defender for Cloud Apps的
/var/adallom/discoverylogsbackup
日志。 例如:通过将存储在 中的
/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
的消息进行比较。
更新日志收集器版本
更新日志收集器时:
- 在安装新版本之前,请确保停止日志收集器并删除当前映像。
- 安装新版本后, 更新证书文件。
后续步骤
如果你遇到任何问题,我们随时为你提供帮助。 若要获取有关产品问题的帮助或支持,请 开具支持票证。