import sys, os os.chdir('/www/server/panel') sys.path.append("class/") import re, public _title = '确保启用对auditd之前启动的进程的审计' _version = 1.0 _ps = '检查是否启用auditd进程日志审计' _level = 1 _date = '2025-11-20' _ignore = os.path.exists("data/warning/ignore/sw_audit_early_enabled.pl") _tips = [ "编辑`/etc/default/grub`在`GRUB_CMDLINE_LINUX`添加`audit=1`", "CentOS/RHEL:`grub2-mkconfig -o /boot/grub2/grub.cfg`", "Debian/Ubuntu:`update-grub`", "旧版Grub:编辑`/boot/grub/grub.conf`将所有`kernel`行追加`audit=1`" ] _help = '' _remind = '未启用audit=1会导致auditd启动前的进程未被审计;启用后可覆盖系统引导阶段事件,提升合规与溯源能力' def check_run(): try: hits = [] df = '/etc/default/grub' if os.path.exists(df): body = public.readFile(df) or '' ok1 = re.search(r'^\s*(?!#)\s*GRUB_CMDLINE_LINUX[^\n]*\baudit=1\b', body, re.M) ok2 = re.search(r'^\s*(?!#)\s*GRUB_CMDLINE_LINUX_DEFAULT[^\n]*\baudit=1\b', body, re.M) if ok1 or ok2: hits.append(df) cfgs = [ '/boot/grub2/grub.cfg', '/etc/grub2.cfg', '/boot/grub/grub.cfg', '/boot/grub/grub.conf' ] checked_cfgs = [] for fp in cfgs: if not os.path.exists(fp): continue body = public.readFile(fp) or '' if re.search(r'^\s*(linux|kernel)\b[^\n]*\baudit=1\b', body, re.M): hits.append(fp) checked_cfgs.append(fp) if hits: return True, '无风险' parts = [] if os.path.exists(df): parts.append('/etc/default/grub未在GRUB_CMDLINE_LINUX/GRUB_CMDLINE_LINUX_DEFAULT设置audit=1\n') if checked_cfgs: parts.append('grub配置(kernel/linux行)未启用audit=1: ' + ','.join(checked_cfgs)) msg = '未在引导配置中启用audit=1' if not parts else ';'.join(parts) return False, msg except: return True, '无风险'