核心文件监控配置最佳实践

云安全中心核心文件监控功能能够实时监控服务器上核心文件的访问情况,包括读取、写入、删除、重命名和权限变更等操作,并及时发出告警,以防止核心文件被盗取或篡改。本文介绍配置核心文件监控规则的规范和示例,可帮助您更好地使用该功能。

主机入侵检测与核心文件监控的关系

网络安全最佳实践建议采用多层纵深防御策略。主机入侵检测功能可以在大部分场景下发现可疑的入侵行为,其检测逻辑基于行为特征,关注已知或未知的恶意行为和系统活动。核心文件监控则专注于监控文件系统中的文件和目录的完整性,检测未授权的更改。

两者功能互补,共同提供更全面的安全保护,可提高应对复杂威胁的发现能力。当发生安全事件时,理解攻击者的行为至关重要。如果攻击者读取或修改了规则防护范围内的文件,核心文件监控提供的告警记录可以帮助运营人员追溯攻击者的具体活动,进行有效的事件响应和取证分析。

此外,核心文件监控不仅能检测外部威胁,还能识别来自内部的威胁,比如内部人员的恶意行为或误操作,这些行为核心文件监控都会记录。

规则配置规范和示例

本部分内容提供了核心文件监控规则的配置规范和示例,涵盖了常用应用场景及规则配置说明。然而需要注意的是,不同的配置规则在不同用户的系统上执行时,或许会命中正常的运维类操作,产生“误报”现象,下文表格的最后一栏提供了可能引发相应策略告警的正常操作示例。

为了最大限度地降低误报对系统运维的影响,建议在广泛部署这些规则之前,先采取渐进的试验方式:

  • 少量试验:在初步配置规则时,请选择少量台机器进行配置规则的试点。

  • 细致监测:在规则试运行期间,密切观察每个规则命中的情形,以验证规则的准确性和适用性。

  • 迭代改进:根据检测结果,适时地为一些确认无害的运维操作增加相应的放行规则,以确保关键运维活动不会触发告警,降低需要运营的告警量。

  • 正式部署:在经过数次试验和规则优化后,如果观察到规则命中情况稳定、误报基本消失,可以在更多的服务器中部署这些配置。

类型

说明

具体类型

行为动作

文件路径示例

可能触发误报的操作说明

核心系统文件

此类目录涵盖了大多数系统命令和共享链接库。监控这些目录能够帮助检测潜在攻击者的恶意篡改行为,包括植入恶意二进制文件或篡改系统依赖库。

系统可执行二进制文件目录

写入、删除

  • /bin/*

  • /usr/bin/*

  • /sbin/*

  • /usr/sbin/*

通过包管理软件进行安装或更新操作时,也会对这些目录进行写入。此外,如果您自行从源代码编译安装软件(通常使用 make && make install 命令),也可能涉及这些目录的写入。因此,您需根据实际情况配置相应的放行规则,以避免此类正常操作触发告警。

共享库文件目录

写入、删除

  • /usr/lib/*

  • /usr/lib64/*

配置类文件

攻击者可能会修改各种关键系统配置文件,以实现不同的恶意目的。例如:

  • 通过添加或修改用户记录,攻击者可以持续获取或提升对系统的访问权限。

  • 通过修改DNS解析设置,攻击者可以实现DNS劫持。

  • 通过修改日志记录配置,攻击者可以干扰或逃避审计。

  • 通过修改或禁用某些安全配置,攻击者可以实现其攻击目的。

  • 通过篡改运维应用的配置文件,攻击者可以劫持鉴权流程,从而绕过安全措施或增加特定用户的权限。

  • 通过修改Web服务的配置文件,攻击者可以加载恶意库文件或更改解析配置,将流量引导至恶意站点。

用户与权限相关文件

写入

  • /etc/passwd

  • /etc/shadow

  • /etc/group

  • /etc/gshadow

  • /etc/sudoers

  • /etc/sudoers.d/*

正常的用户添加(useradd)、权限修改(usermod)、删除用户(userdel)和修改密码(passwd)等命令可能会对这类文件进行写入操作。用户可以根据具体的运维操作规范,增加相应的放行规则,或将告警数据用作审计日志。

关键系统配置文件

写入、删除

  • /etc/resolv.conf

  • /etc/hosts

在运维操作需要调整系统的网络设置、名称解析、内核参数调整等配置时,会修改此类文件。

运维类应用配置文件

写入

  • /etc/ssh/sshd_config

  • /etc/security/pam_env.conf

  • /*/.ssh/authorized_keys

在系统的维护、配置更新、安全加固或密钥定期轮转的过程中,可能会修改这些文件,建议配置对应的放行规则。

安全审计类配置文件

写入、删除

  • /etc/audit/auditd.conf

  • /etc/audit/rules.d/*

  • /etc/selinux/config

  • /etc/rsyslog.conf

  • /etc/rsyslog.d/*

首次设置系统的审计框架,或者根据合规、安全等需求调整监控策略时,可能需要修改此类文件。

Web服务类配置文件

写入

  • /etc/httpd/conf/httpd.conf

  • /etc/httpd/conf.d/*

  • /etc/apache2/apache2.conf

  • /etc/apache2/sites-available/*

  • /etc/apache2/sites-enabled/*

  • /etc/nginx/nginx.conf

  • /etc/nginx/conf.d/*

Web服务的初始配置、安装后设置、相关模块的添加和删除,以及Web服务的更新等操作,都可能导致此类被监控文件的修改。

数据库类配置文件

写入

  • /etc/my.cnf

  • /etc/mysql/my.cnf

  • /etc/postgresql/*/main/postgresql.conf

  • /etc/postgresql/*/main/pg_hba.conf

  • /etc/mongod.conf

  • /etc/redis/redis.conf

数据库服务的安装和运维变更等操作可能会导致此类配置文件的变化,建议根据实际情况增加相应的放行规则。

常见的持久化点位

攻击者通常会添加定时任务、恶意服务或启动脚本等配置,以在周期性执行或系统重启后持续保持访问权限。

Cron类

写入

  • /etc/crontab

  • /etc/cron.d/

  • /var/spool/cron

  • /etc/cron.hourly/*

  • /etc/cron.daily/*

  • /etc/cron.weekly/*

  • /etc/cron.monthly/*

正常运维操作可能会新增、调整或删除现有的crontab条目,从而修改相应的文件。

服务类

写入

  • /etc/init.d/*

  • /etc/rc.d/rc.local

  • /etc/systemd/system/*

  • /lib/systemd/system/*

在安装一些服务类应用时,会存在添加、修改系统服务的操作。

Shell配置类

写入

  • /*/.bashrc

  • /*/.bash_profile

  • /etc/profile

运维人员在修改默认环境设置或为频繁使用的长命令创建别名时,可能会更改相关文件的内容。

Web服务的代码目录

配置对Web服务的代码目录进行文件监控的规则有助于保障Web应用的安全。通常情况下,攻击者会利用漏洞或未授权访问等弱点,上传Webshell恶意文件。通过这些Webshell文件,攻击者可以进一步远程访问、控制和管理受攻击的服务器。通过监控Web服务的代码目录,可以有效发现潜在的Webshell上传行为,检测未经授权的更改,包括Web页面的篡改、恶意脚本的植入以及其他恶意活动。

Web代码目录

写入,权限变更

/var/www/html/<code dir>/*.php

在正常的业务和维护操作中,服务更新和部署,以及部分CMS的插件、主题的安装和更新,都可能会向代码目录写入Web脚本文件。一些自动化部署工具(如Jenkins、GitLab CI/CD、Ansible等)也会在持续集成和部署过程中写入文件。在这种情况下,需要配置具体的写入进程,或排除外部可上传的目录,并限制特定文件后缀,以确保安全。

包含敏感内容的文件

敏感鉴权信息的泄露是网络安全的主要风险之一。攻击者在获得一台主机的权限后,通常会进一步搜寻敏感鉴权信息,以进行横向移动并扩大入侵范围。因此,对包含敏感内容的文件配置读取操作的监控,可以有效并及时地发现此类风险或恶意行为。

云服务类CLI鉴权信息

读取

  • /*/.aliyun/config.json

  • /*/.ossutilconfig

包含敏感信息的文件通常会被其归属的应用程序读取。例如,Alibaba Cloud CLI 会读取 ~/.aliyun/config.json 来加载鉴权信息,kubectl 会读取 ~/.kube/config 来获取 Kubernetes 证书信息。同时,某些安全软件为了识别机器上的恶意文件,也可能会扫描包含敏感信息的文件。因此,在设置放行规则时,需要考虑这些正当的读取行为。

版本控制鉴权信息

读取

/*/.git-credentials

数据库配置

读取

/*/config/database.yml

运维、编排系统的私钥信息

读取

/*/.ssh/id_rsa, /*/.kube/config

相关文档

  • 关于核心文件监控功能的更多信息,请参见核心文件监控

  • 如果需要确保网站文件或目录不被篡改,您可以使用网页防篡改功能。更多信息,请参见网页防篡改