必须同时屏蔽systemd路径、拦截内核响应并记录audit日志:执行sudo systemctl mask -f ctrl-alt-del.target,设HandleKeyCombination=ignore;添加auditctl规则捕获ioctl事件;禁用内核ctrl-alt-del和sysrq;验证TTY、登录界面无响应且日志可查。

直接禁用 Ctrl+Alt+Del 并记录审计日志,不能只改 logind.conf 或只删 target —— 那样既留后门又没日志。必须同时屏蔽 systemd 路径、拦截内核响应、并把按键事件转为 audit 日志条目。
systemd 层:屏蔽 target + 强制忽略热键
现代 Linux(RHEL 8+/CentOS 8+/Ubuntu 20.04+)默认将该组合键绑定到 ctrl-alt-del.target,它软链接到 reboot.target。只注释或清空 target 文件会导致 reboot 命令失效——这是常见误操作。
- 执行
sudo systemctl mask -f ctrl-alt-del.target:创建指向/dev/null的硬屏蔽,彻底阻断激活路径 - 编辑
/etc/systemd/logind.conf,取消注释并设为HandleKeyCombination=ignore - 运行
sudo systemctl daemon-reload && sudo systemctl restart systemd-logind - 验证:
systemctl is-enabled ctrl-alt-del.target应返回masked;loginctl show --property=HandleKeyCombination应输出ignore
auditd 层:把按键事件转为安全日志
systemd 屏蔽后按键本身无响应,但 auditd 默认不捕获该事件。需手动添加规则,让内核在检测到该组合键时触发 audit 记录——这依赖于 auditctl 对 key 类型事件的监听能力。
- 确认 auditd 已启用:
sudo systemctl is-active auditd应为active - 添加规则:
sudo auditctl -a always,exit -F arch=b64 -S ioctl -F a2=0x40085501 -k ctrlaltdel_event(该ioctl值对应EVIOCGKEY,是键盘事件通用入口) - 持久化规则:将上述命令写入
/etc/audit/rules.d/ctrlaltdel.rules,再执行sudo augenrules --load - 测试触发后检查:
sudo ausearch -k ctrlaltdel_event | grep -i "ioctl.*key",应有至少一条含type=SYSCALL和comm="systemd-logind"的记录
内核与 init 层:堵死绕过 systemd 的重启通路
当系统处于紧急模式、KVM 控制台直连、或未启动 logind 时,仅靠 systemd 配置会失效。必须同步关闭内核级响应和旧 init 行为。
- 禁用内核 Ctrl+Alt+Del 响应:
echo 'kernel.ctrl-alt-del = 0' | sudo tee -a /etc/sysctl.conf && sudo sysctl -p - 关闭 SysRq(防
Alt+SysRq+B):echo 'kernel.sysrq = 0' | sudo tee -a /etc/sysctl.conf && sudo sysctl -p - 若存在
/etc/inittab(如 CentOS 6 兼容模式),确认含ca::ctrlaltdel:的行已被注释或删除,并运行sudo init q - 若使用 Upstart(如旧版 Ubuntu),检查并注释
/etc/init/control-alt-delete.conf中的start on control-alt-delete行
验证是否真生效且可审计
别只在图形界面下按三键看有没有反应——那测的是桌面环境,不是系统底层。必须覆盖所有入口:
- 切换至 TTY(
Ctrl+Alt+F2),按下Ctrl+Alt+Del:屏幕应完全无闪烁、无登出、无日志刷屏 - 在 GDM/LightDM 登录界面尝试:不应弹出 SAS 提示、锁屏菜单或任何 UI 反馈
- 执行
sudo ausearch -k ctrlaltdel_event --start recent:应看到至少一条含uid=0和comm="systemd-logind"的记录 - 检查
sudo sysctl kernel.ctrl-alt-del kernel.sysrq输出值是否均为0
真正难的不是“关掉”,而是确保所有路径都被堵死,且每次按键都留下可追溯的 audit 日志——尤其注意 KVM 直连、串口控制台、以及单用户模式下的行为,这些地方最容易漏配。


















