是否可以扩展系统命令的功能,例如reboot
或shutdown -r now
以便init 6
在发出这些命令时,用户必须输入原因和其他信息作为审计跟踪的一部分?就像Windows服务器一样。
因此,在输入重新启动的目的后,它必须存储在日志中的某个位置,例如目的应包含更改编号、日期、哪个用户执行了该命令。
答案1
对于那些不熟悉 Windows Server 的人,我将花点时间解释一下比较。当 Windows Server 被要求关闭或重新启动时,GUI 会提示用户提供请求原因,然后将其记录在审核日志中。 (这对于 PowerShell(命令行)重新启动请求来说是可选的。)此外,当 Windows Server 在没有重新启动原因的情况下启动时,它会在具有适当特权的用户下次登录系统时提示重新启动的原因。 。
您的建议在某种程度上是可行的。您必须考虑如果reboot
从计划任务或没有管理用户登录的其他位置发出命令会发生什么。您还需要考虑您希望在您的场景中走多远 - 您是否希望提供一个简单的审计跟踪,或者一个深入到系统中以至于几乎无法绕过的审计跟踪。显然,后者的成本会增加。
处理此问题的一种方法是将命令移动到,例如reboot
,reboot.bin
。然后创建一个名为的脚本reboot
,通过 GUI 或命令行提示必要的原因和其他信息。这将通过 写入syslog
适当的日志文件(可能auth.log
)。可以对其他“受保护”命令重复该过程。请注意,除了礼节之外,没有什么可以阻止您的特权用户reboot.bin
直接运行真实的(等)。
这molly-guard
包裹实现这个,通过在执行真正的命令之前运行一系列脚本。
处理此问题的另一种方法是获取“受保护”命令的源代码并本地扩展它们。工作更加困难,而且规避起来也稍微困难一些。 (请注意,绕过 Windows 上的关闭对话框也不难 - 只需使用命令行即可。)