强制访问审计需嵌入内核、依赖安全标签实现策略前置、执行硬性、日志闭环。一、建立与业务对齐的主客体标签体系并固化;二、严格验证三类越权拦截效果;三、审计日志须独立防篡改且关联五元组;四、通过日志串联定位横向移动攻击链。

强制访问审计不是加个日志开关就能用的,它得嵌在系统内核里,靠安全标签驱动,才能真正卡住越权行为、留下可追溯痕迹。核心在于“策略前置、执行硬性、日志闭环”——标签定级、访问拦截、操作留痕三者缺一不可。
本文档主要讲述的是Android 操作系统的介绍;Android是基于Linux内核的操作系统,是Google公司在2007年11月5日公布的手机操作系统,早期由Google开发,后由开放手持设备联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。底层Linux内核只提供基本功能;其他的应用软件则由各公司自行开发,部分程序以Java编写。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
一、先配好安全标签体系,让系统能“看懂”数据敏感度
标签不是随便起名,要和业务分类对齐。比如政务系统按《分级保护要求》设“公开、内部、机密、绝密”四级;金融系统可按“客户信息、交易流水、风控模型”建客体标签。主体(用户/进程)也要打标,如“DBA-运维”“API网关-服务”“审计员-只读”。
Linux下用SELinux:通过semanage fcontext为关键目录(如/var/log/app/、/etc/db/conf)打上type标签,再restorecon生效;
Windows Server启用强制完整性控制(MIC):用icacls给敏感文件设高完整性级别(High IL),再配置进程启动时继承对应IL,低IL进程自然读不了。
标签一旦设定,就不能被用户改——这是强制访问和自主访问的根本区别。
二、策略加载后必须验证拦截效果,不能只信配置文件
配完不测等于没配。重点验证三类越权场景:
- 普通用户尝试用root权限读取带“机密”标签的数据库备份文件;
- DBA账户执行cp命令复制带“绝密”标签的配置文件到家目录;
- Web服务进程(标为Medium IL)试图写入SystemRoot\Logs下的高IL日志区。
Linux用runcon临时切换上下文测试:runcon -t unconfined_t -- cp /data/sec.conf /tmp/;
Windows用psexec -i -s cmd.exe模拟SYSTEM进程,再尝试访问高IL资源。
任何一次成功访问都说明策略有缺口,得回溯avc拒绝日志(SELinux)或事件ID 4688+4697(Windows)查漏补缺。
三、审计日志必须独立存储、防篡改、可关联
强制访问产生的拒绝事件(AVC denials / MIC violations)只是起点,要和时间线、用户、进程、网络五元组串起来才叫追踪。
- SELinux:开启auditd,确保/etc/audit/rules.d/中包含-a always,exit -F arch=b64 -S execve -F perm=x,把execve调用+AVC日志一起捕获;日志导出到专用syslog服务器,本地/var/log/audit/audit.log设chattr +a仅追加;
- Windows:启用“对象访问”和“特权使用”审计策略,配合Advanced Audit Policy中的“Detailed Tracking”子策略,确保事件ID 4662(对象访问)、4670(权限更改)、4688(进程创建)全开;日志转存至SIEM平台,用Sysmon配置ProcessCreate+FileCreate+NetworkConnect规则补全行为链。
关键细节:所有日志必须含原始UID/GID(Linux)或Logon ID(Windows),否则无法反向定位具体操作人。
四、入侵发生后,用审计线索快速定位横向移动路径
攻击者提权后常滥用合法账号横向跳转,强制审计日志就是它的“行车记录仪”。例如:
- 发现大量ID 4662事件中,同一Logon ID反复尝试访问不同服务器上的“机密”共享,但均被拒绝——说明攻击者在试探权限边界;
- audit.log里连续出现多个avc: denied { read } for pid=1234 comm="python" name="cred.db" scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:secret_db_t:s0:c0.c100,且后续跟了curl外连记录——基本锁定Webshell读取高密数据库并回传;
- 结合sudo日志(/var/log/sudo.log)与SELinux拒绝日志,发现某运维账号先sudo su -,再触发多个高密文件读取失败,立刻冻结该账号并检查其SSH密钥是否泄露。
此时日志不是“有没有”,而是“能不能串成一条攻击链”。
不复杂但容易忽略









