我正在尝试根据 CIS 指南强化我的 RHEL Linux 服务器 7,因此我想卸载cramfs。
我输入了以下命令: modprobe -n -v cramfs
我得到了以下答案:
insmod /lib/modules/3.10.0-693.el7.x86_64/kernel/fs/cramfs/cramfs.ko.xz
而不是 CIS 中提到的:安装 /bin/true。我注意到我的系统中没有这样的文件。
问题:输出是什么意思?在这种情况下,我该如何卸载cramfs?
答案1
您正在运行的命令modprobe -n -v cramfs
除了输出您传递的命令-n
(这是 的简短选项)之外什么也不做--dry-run
。输出将在该位置insmod /lib/modules/3.10.0-693.el7.x86_64/kernel/fs/cramfs/cramfs.ko.xz
加载模块。cramfs
您可能想要这样做modprobe -v -r cramfs
,因为-r
flag 是 的简短选项--remove
。
这不会阻止模块在重新启动时再次加载,或手动再次加载。为了防止这种情况,您需要将涉及更多的模块列入黑名单。
答案2
因此,正如 GracefulRestart 指出的那样,modprobe -n -v cramfs
不会执行任何更改。编写命令的另一种方法是modprobe --dry-run --verbose crampfs
。
您会注意到,这就是它出现在审计CIS 条目中的部分,并且您的输出与预期不同,因为您不合规。因此,您可以转到该特定检查的修复部分,即创建一个.conf文件末尾etc/modprobe.d/
添加以下行
install cramfs /bin/true
然后运行
rmmod cramfs
卸载cramfs
之后你应该服从。
提供有关正在发生的事情的更多信息:
install modulename 命令...这是最强大的原语:它告诉 modprobe 运行您的命令,而不是像平常一样将模块插入内核。该命令可以是任何 shell 命令:这允许您执行您可能希望的任何类型的复杂处理。例如,如果模块“fred”与已安装的模块“barney”配合得更好(但它不依赖于它,因此 modprobe 不会自动加载它),您可以说“install fred /sbin/modprobe barney” ; /sbin/modprobe --ignore-install fred",这将执行您想要的操作。请注意 --ignore-install,它会阻止第二个 modprobe 再次运行相同的安装命令。另请参阅下面的删除。
因此,我们不是将cramfs模块添加到内核中,而是用install cramfs /bin/true
仅返回0值并继续前进的操作来替换该操作。