限制Root权限,Linux内核将引入安全锁定功能

经过多年以来的无数次审查、讨论和代码重写,Linus Torvalds 通过了一项 Linux 内核新的安全功能,它被称为“锁定”(lockdown)。

这项新功能将作为 LSM(Linux Security Module,Linux 安全模块)包含在即将发布的 Linux kernel 5.4 中。由于存在破坏现有系统的风险,因此该功能是可选的,并非默认开启。

这一新的锁定功能主要是为了防止 root 帐户篡改内核代码,从而在用户态进程和代码之间划清界限。启用该功能后,即便是 root 帐户也无法访问某些内核功能,从而保护操作系统免受受损的 root 帐户影响。

Linus Torvalds 表示,启用锁定模块后,各种内核功能都会受到限制。其中包括对内核功能的访问限制;对 /dev/mem 的读写操作的阻止;对 CPU MSR 访问的限制;以及防止系统进入睡眠状态等等。

锁定功能支持两种不同模式,可用于激活不同级别的限制。“完整性”(integrity)模式将禁止用户修改正在运行的内核功能。另一种“机密性”(confidentiality)模式则会禁止用户从内核中提取机密信息。

内核锁定功能的研究始于 2010 年代初期,由现在的 Google 工程师 Matthew Garrett 牵头。该功能背后的想法是创建一种安全机制,以防止具有特权的用户(甚至是“root”帐户)篡改内核的代码。

在那个时候,即使 Linux 系统采用了安全启动机制,恶意软件仍然可以通过滥用具有特殊提升特权的驱动程序和 root 帐户等来篡改内核代码。多年以来,许多安全专家一直在要求 Linux 内核支持一种更有效的方式来限制 root 帐户,并提高内核安全性。

最初提出该功能时,Linus Torvalds 本人是最大的反对者之一,他对此提出了不少批评。结果,许多 Linux 发行版开发了自己的 Linux 内核补丁,这些补丁在主线内核之上都添加了锁定功能。直到 2018 年,支持派和反对派才逐渐达成中间立场,关于锁定功能的工作也终于在今年取得了新的进展。

新功能获得批准后,目前也在 Linux 和网络安全社区受到了广泛欢迎。

原文地址:https://www.cnblogs.com/xieyu777/p/11629670.html

时间: 2024-10-14 04:09:06

限制Root权限,Linux内核将引入安全锁定功能的相关文章

Linux内核中断引入用户空间(异步通知机制)【转】

转自:http://blog.csdn.net/kingdragonfly120/article/details/10858647 版权声明:本文为博主原创文章,未经博主允许不得转载. 当Linux内核空间发生中断后怎么使用户空间的应用程序运行相应的函数呢,当芯片有数据到来时内核会产生一个中断,但是怎样通知应用程序来取数据,以前这个问题一直困扰我很长时间,后来发现linux中有异步通知机制,在用户程序中用signal注册一个响应SIGIO信号的回调函数,然后在驱动程序中向该进程发出SIGIO信号

Linux内核源码各目录功能说明

内核源码可以到https://www.kernel.org/去下载. 下载完成后,会得到*.tar.xz的源码包,先使用xz -d *.tar.xz解压缩,再使用tar -xvf *.tar进行解包即可得到内核源码: [email protected]:~/workspace$ ls linux-4.1.42  linux-4.1.42.tar 进入该目录,会有许多目录: [email protected]:~/workspace/linux-4.1.42$ ls arch     Docume

linux 内核移植和根文件系统的制作

1.1 Linux内核基础知识 在动手进行Linux内核移植之前,非常有必要对Linux内核进行一定的了解,下面从Linux内核的版本和分类说起. 1.1.1  Linux版本 Linux内核的版本号可以从源代码的顶层目录下的Makefile中看到,比如2.6.29.1内核的Makefile中: VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 29 EXTRAVERSION = .1 其 中的“VERSION”和“PATCHLEVEL”组成主版本号,比如2.4.2.5

linux内核——1.概述

1.结构 linux中,我们把操作系统分为内核空间和用户空间.用户通过用户空间与操作系统打交道.用户要通过系统调用访问内核空间.下图为Linux体系结构,shell应该为在最顶层. 系统调用,下面链接是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数https://www.ibm.com/developerworks/cn/linux/kernel/syscall/part1/appendix.html 2.概述 2.1用户接口 操作系统为用户提供了两种接口:第1

【转】linux内核kallsyms机制分析

一.前言 Linux内核是一个整体结构,而模块是插入到内核中的插件.尽管内核不是一个可安装模块,但为了方便起见,Linux把内核也看作一个模块.那么模块与模块之间如何进行交互呢,一种常用的方法就是共享变量和函数.但并不是模块中的每个变量和函数都能被共享,内核只把各个模块中主要的变量和函数放在一个特定的区段,这些变量和函数就统称为符号. 因此,内核也有一个module结构,叫做kernel_module.另外,从kernel_module开始,所有已安装模块的module结构都链在一起成为一条链,

Linux内核中常见内存分配函数

1.原理说明 Linux内核中采用了一种同时适用于32位和64位系统的内存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系统中,用到了四级页表,如图2-1所示.四级页表分别为: l   页全局目录(Page Global Directory) l   页上级目录(Page Upper Directory) l   页中间目录(Page Middle Directory) l   页表(Page Table) 页全局目录包含若干页上级目录的地址,页上级目录又依次包含若干页中间目录

Linux内核中常见内存分配函数zz

https://blog.csdn.net/wzhwho/article/details/4996510 1.      原理说明 Linux内核中采用了一种同时适用于32位和64位系统的内存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系统中,用到了四级页表,如图2-1所示.四级页表分别为: l         页全局目录(Page Global Directory) l         页上级目录(Page Upper Directory) l         页中间目录(

【华为云技术分享】Linux内核发展史 (1)

openEuler是基于Linux 内核的企业级Linux 服务器操作系统平台的开源社区发行版.openEuler支持鲲鹏架构,可运行在TaiShan服务器上.本技术连载将会从理论基础.源码分析和实操方法三个方面来比较全面地介绍内核编程与应用编程的基础知识,到2020年8月之前主要介绍内核编程部分.通过本连载的介绍,您将对openEuler内核编程和应用编程的理论和实践知识有一个基本的了解.本小节将从Linux内核发展史出发,带您走进openEuler的世界,一起学习操作系统的基础知识和open

Linux 内核 链表 的简单模拟(2)

接上一篇Linux 内核 链表 的简单模拟(1) 第五章:Linux内核链表的遍历 /** * list_for_each - iterate over a list * @pos: the &struct list_head to use as a loop cursor. * @head: the head for your list. */ #define list_for_each(pos, head) for (pos = (head)->next; pos != (head);