本文详细介绍利用capability特征加强Linux系统安全
root用户可以向能力边界集中写入新的值来修改系统保留的能力。但是要注意,root用户能够从能力边界集中删除能力,却不能再恢复被删除的能力,只有init进程能够添加能力。通常,一个能力如果从能力边界集中被删除,只有系统重新启动才能恢复。
删除系统中多余的能力对提高系统的安全性是很有好处的。假设你有一台重要的服务器,比较担心可加载内核模块的安全性。而你又不想完全禁止在系统中使用可加载内核模块或者一些设备的驱动就是一些内核模块。在这种情况下,最好使系统在启动时加载所有的模块,然后禁止加载/卸载任何内核模块。在Linux系统中,加载/卸载内核模块是由CAP_SYS_MODULE能力控制的。如果把CAP_SYS_MODULE从能力边界集中删除,系统将不再允许加载/卸载任何的内核模块。
CAP_SYS_MODULE能力的值是16,因此我们使用下面的命令就可以把它从能力边界集中删除:
echo 0xFFFEFFFF >/proc/sys/kernel/cap-bound
5.lcap
虽然我们可以直接修改/proc/sys/kernel/cap-bound来删除系统的某中能力,但是这样毕竟非常的不方便。有一个程序lcap可以帮助我们更方便的从系统中删除指定的能力。它可以从http://home.netcom.com/~spoon/lcap/下载。编译之后就可以直接使用。如果不带参数,lcap可以列出系统当前支持的各种能力:[root@nixe0n lcap-0.0.6]# ./lcap
Current capabilities: 0xFFFFFEFF
0) *CAP_CHOWN 1) *CAP_DAC_OVERRIDE
2) *CAP_DAC_READ_SEARCH 3) *CAP_FOWNER
4) *CAP_FSETID 5) *CAP_KILL
6) *CAP_SETGID 7) *CAP_SETUID
8) CAP_SETPCAP 9) *CAP_LINUX_IMMUTABLE
10) *CAP_NET_BIND_SERVICE 11) *CAP_NET_BROADCAST
12) *CAP_NET_ADMIN 13) *CAP_NET_RAW
14) *CAP_IPC_LOCK 15) *CAP_IPC_OWNER
16) *CAP_SYS_MODULE 17) *CAP_SYS_RAWIO
18) *CAP_SYS_CHROOT 19) *CAP_SYS_PTRACE
20) *CAP_SYS_PACCT 21) *CAP_SYS_ADMIN
22) *CAP_SYS_BOOT 23) *CAP_SYS_NICE
24) *CAP_SYS_RESOURCE 25) *CAP_SYS_TIME
责编:豆豆技术应用