Landlock:一种新型Linux安全模块
一.Landlock简介
Landlock是一种Linux安全模块(Linux Security Module),其开发目的在于限制进程的权限,它允许进程创建沙箱(如:容器)作为安全层并在其内部定义安全规则,进程受安全规则的限制。如此,沙箱可以帮助减轻用户空间应用程序中bug或恶意行为(如进程被远程挟持)产生的安全影响。目前,landlock已发行到v18版本。
二.LSM框架
LSM框架(Linux Security Module)是Linux中一种轻量级通用访问控制框架,用于限制进程所能获得的权限,以避免在进程受到攻击时,攻击者挟持进程,利用进程权限危害系统安全。其实现的基本原理在于:LSM框架在内核函数中定义了大量的钩子函数,当进程需要进行系统调用等特权操作时,位于执行路径中的钩子函数将被触发,钩子函数中的函数指针链将指向具体的权限控制函数,并返回进程是否具有相应的访问权限的结果。由于钩子函数事先被嵌套在内核中,Linux安全模块开发者只需要实现钩子函数所指向的权限判断部分。
基于LSM框架的Linux安全模块如SELinux、AppArmor、Yama等,均是在LSM框架下挂载不同的安全模块函数实现的。由于一个钩子函数可挂载多个函数指针并依次执行,Linux多种安全模块原则上是可以共存的。使用时,Linux安全模块以内核可加载模块的形式实现,可以根据自己实际需求进行选择。
三.Landlock设计原则
Landlock的目标是创建有范围的访问控制。为了强化整个系统,这个特性应该对任何进程可用,包括没有特权的进程。因为这样的进程可能会被破坏或隐藏(即不可信),所以从内核和其他进程的角度来看,Landlock的特性必须是安全的。因此,Landlock的接口必须暴露一个最小的攻击面。
Landlock被设计为在遵循由其他访问控制机制(如DAC, LSM)实施的系统安全策略的同时,可被非特权进程使用。事实上,Landlock规则不会干扰对系统实施的其他访问控制,只会增加更多的限制。
任何用户都可以在其进程上强制使用Landlock规则集。它们根据继承的约束进行合