设置kernel.modules_disabled=1时能否在Ubuntu 22.04 VPS上使用ufw?
设置kernel.modules_disabled=1时能否在Ubuntu 22.04 VPS上使用ufw?
很遗憾,默认情况下是没办法同时使用的,原因很直接:
当你把kernel.modules_disabled设为1时,内核会彻底禁止加载任何未直接编译进内核的模块。而ufw本质上是iptables/nftables的前端工具,它依赖的核心功能(比如ip_tables、ip6_tables、nf_tables这些网络过滤模块)在Ubuntu 22.04的默认内核里都是以可加载模块的形式存在的,不是内置到内核中的。当模块被禁用后,ufw无法调用这些必要的内核组件,自然就会抛出"Couldn't determine iptables version"这样的错误。
如果确实想要同时实现kernel.modules_disabled=1的加固效果和ufw的防火墙功能,唯一的途径是自定义编译内核,把ufw依赖的所有必要网络过滤模块直接编译进内核(而不是作为可加载模块)。但这个操作门槛很高,需要你熟悉内核编译流程,而且后续系统更新也会变得麻烦,不适合普通用户。
给你两个更务实的替代方向:
- 把
kernel.modules_disabled改回0,改用其他方式限制模块加载:比如通过/etc/modprobe.d/下的配置文件禁止加载不必要的模块,结合Lynis的其他加固建议,同样能达到不错的系统安全效果; - 放弃ufw,改用完全基于内置内核功能的防火墙规则,但这种方式需要手动编写iptables/nftables规则,操作复杂度很高,实用性不强。
你测试时发现kernel.modules_disabled=0时ufw正常工作,也正好验证了问题的根源就是模块禁用导致ufw依赖的组件无法加载。
备注:内容来源于stack exchange,提问作者legeyda
相关产品推荐
相关产品推荐

