Linux 5.15安全特性之landlock

这篇具有很好参考价值的文章主要介绍了Linux 5.15安全特性之landlock。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Landlock是一个在Linux内核中实现的安全模型,它允许进程在较低的特权级别下运行,并限制其对内核和系统资源的访问。它提供了一种细粒度的权限控制机制,可以用于创建沙盒环境和隔离敏感操作。

Landlock的实现基于eBPF(Extended Berkeley Packet Filter)技术,在Linux 5.15内核中引入了对Landlock的支持。它使用eBPF程序作为安全策略的表达方式,通过BPF虚拟机执行这些程序来进行权限控制。

具体来说,Landlock通过以下方式实现了权限控制:

1. Landlock域(landlock_domain)

一个Landlock域定义了一组资源和权限的集合,用于限制进程的访问。每个进程可以属于一个或多个Landlock域。

2. 资源和权限规则

通过eBPF程序定义资源和权限规则。资源可以是文件系统对象、网络接口或其他内核对象,而权限可以是读、写、执行等操作。这些规则定义了进程对资源的访问级别和方式。

3. 进程配置

每个进程可以使用`prctl()`系统调用来配置其Landlock域。进程可以将自己置于某个域中,并根据需要添加和删除资源和权限规则。

4. 执行权限检查

在进程进行操作时,Landlock会进行权限检查,根据规则确定是否允许操作。如果权限检查失败,操作将被拒绝,并返回适当的错误。

要使用Landlock这个新的安全特性,可以按照以下步骤进行:

1. 确认内核版本

确保Linux内核版本为5.15或更高。

2. 编写eBPF程序

使用eBPF语言编写适当的程序,定义资源和权限规则。可以使用libbpf库来开发和加载eBPF程序。

3. 调用prctl()系统调用

在应用程序中使用`prctl()`系统调用来配置进程的Landlock域。可以指定所属的域、添加和删除资源和权限规则。

4. 测试和调试

在配置Landlock后,测试和调试程序,确保权限控制正常工作,并遵循定义的规则。

如下是一个简单的C代码示例,演示如何使用Landlock来创建一个简单的沙盒。该沙盒将限制进程只能访问特定的目录和文件,并禁止执行外部命令。

首先需要确保系统具备Linux内核版本5.15或更高版本,并且已经安装了libbpf和liblandlock-dev库。

```c
#include <unistd.h>
#include <linux/landlock.h>
#include <sys/syscall.h>

int main() {
    // 创建 Landlock 域
    int landlock_fd = syscall(SYS_landlock_create_ruleset, 0);
    if (landlock_fd < 0) {
        perror("Failed to create Landlock ruleset");
        return -1;
    }

    // 添加文件访问规则
    struct landlock_ruleset_attr file_rules = {
        .rule_types = LANDLOCK_RULE_PATH,
        .rules = {
            {
                .path_beneath = {
                    .pathname = "/path/to/allowed/directory/*",
                    .dirname_len = sizeof("/path/to/allowed/directory/") - 1,
                },
                .rule_type = LANDLOCK_RULE_PATH_BENEATH,
                .permissions = LANDLOCK_R__OK,
            },
        },
        .rules_create_flags = 0,
    };

    int ret = syscall(SYS_landlock_add_rule, landlock_fd, &file_rules, 0);
    if (ret < 0) {
        perror("Failed to add file access rule");
        return -1;
    }

    // 添加命令执行规则
    struct landlock_ruleset_attr exec_rules = {
        .rule_types = LANDLOCK_RULE_FILE,
        .rules = {
            {
                .pathname = "/bin/",
                .rule_type = LANDLOCK_RULE_SUBPATH,
                .permissions = 0,  // 禁止执行命令
            },
        },
        .rules_create_flags = 0,
    };

    ret = syscall(SYS_landlock_add_rule, landlock_fd, &exec_rules, 0);
    if (ret < 0) {
        perror("Failed to add command execution rule");
        return -1;
    }

    // 将当前进程限制到 Landlock 域
    ret = syscall(SYS_landlock_restrict_self, landlock_fd, 0);
    if (ret < 0) {
        perror("Failed to restrict process to Landlock domain");
        return -1;
    }

    // 在沙盒中执行你的代码
    // 注意:无法访问被禁止的目录或执行被禁止的命令

    return 0;
}
```

这个示例代码使用了系统调用函数`syscall`,并通过`SYS_landlock_create_ruleset`、`SYS_landlock_add_rule`和`SYS_landlock_restrict_self`指定了Landlock规则,创建了一个Landlock域,并将当前进程限制在该域中。你可以根据自己的需求修改规则,以实现更具体的沙盒行为。请确保以root权限编译并运行该程序以便使用Landlock功能。文章来源地址https://www.toymoban.com/news/detail-755759.html

到了这里,关于Linux 5.15安全特性之landlock的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 僵尸进程的避免 守护进程的创建 线程的创建,阻塞,数据传递 5.15

    父子进程相关知识: exit(int status):结束当前调用的进程,自动刷新缓存 标准库函数 头文件:#include stdlib.h _exit(int status) : 结束当前调用的进程,不刷新缓存 系统调用函数 头文件:#include unistd.h 子进程先于父进程结束,父进程没有回收子进程的剩余资源 1、子进程结束,通知

    2024年02月05日
    浏览(30)
  • 【Linux】15. 文件系统与软硬链接

    在之前的学习过程当中,我们知道当文件被打开后需要加载进内存,第一步为其创建struct file结构体描述其结构(操作系统需要管理被打开的文件:先描述再组织),在通过进程当中的文件描述符指针指向文件描述符表,根据文件描述符的分配规则给新打开的文件分配文件描述符

    2024年02月09日
    浏览(33)
  • [工业互联-15]:Linux操作与实时Linux操作系统RT Linux( PREEMPT-RT、Xenomai)

    目录 第1章  Linux操作系统 1.1 什么是Linux操作系统  1.2 Linux操作系统架构  1.3 常见Linux操作系统发行版本 第2章 实时Linux操作系统 2.1 实时性要求 2.2 实时性实现技术的基本思想 2.2 常见发行版方案 2.3 Xenomai和PREEMPT-RT比较 第3章 PREEMPT-RT 3.1 概述 3.2 PREEMPT-RT Patch详解 3.2.1. PREEMP

    2024年02月08日
    浏览(31)
  • 【Linux系统基础快速入门详解】根据计算机硬件特性优化企业网站集群性能方案

    鱼弦:CSDN内容合伙人、CSDN新星导师、51CTO(Top红人+专家博主) 、github开源爱好者(go-zero源码二次开发、游戏后端架构 https://github.com/Peakchen) 优化企业网站集群性能是一个复杂的任务,不仅涉及硬件特性的优化,还需要考虑网络架构、负载均衡、缓存策略等多个方面。下面是

    2024年02月07日
    浏览(74)
  • 操作系统安全:Linux安全审计,Linux日志详解

    「作者简介」: 2022年北京冬奥会网络安全中国代表队,CSDN Top100,就职奇安信多年,以实战工作为基础对安全知识体系进行总结与归纳,著作适用于快速入门的 《网络安全自学教程》,内容涵盖系统安全、信息收集等12个知识域的一百多个知识点,持续更新。 操作系统有4个

    2024年04月27日
    浏览(29)
  • 【Linux优化】Linux系统常用的安全优化

    环境:CentOS7.9 1、禁用SELinux SELinux是美国国家安全局对于强制访问控制的实现 1)永久禁用SELinux 2)临时禁用SELInux 生产环境中可以先临时禁用SELinux,即设置setenforce 0,再去修改selinux的配置文件永久禁用,这样就不用立即重启系统也能禁用SELinux了,等下次系统需要重启时就能实

    2024年01月15日
    浏览(29)
  • 【Linux&网络安全】Linux操作系统安全配置(超全超详细)

    查看账号 在我们Linux系统当中,默认的情况下,所有的系统上的帐号与一般身份使用者,还有root的相关信息, 都是记录在/etc/passwd这个文件内的。至于个人的密码则是记录在/etc/shadow这个文件下。 此外,Linux所有的群组名称都纪录在/etc/group内!这三个文件可以说是Linux系统里

    2024年02月01日
    浏览(30)
  • linux 15day apache apache服务安装 httpd服务器 安装虚拟主机系统 一个主机 多个域名如何绑定

    1.apache目录介绍 1.准备测试页面 2.访问控制测试 可以直接编辑apache主配置文件 修改默认网站发布目录 配置域名解析: 测试访问 基于端口 访问:www.soso666.com 访问: test.soso666.com:81 可以配置域名解析,也可以不用配域名解析

    2024年02月04日
    浏览(41)
  • [Linux系统]系统安全及应用一

    1.1.1将非登录用户的shell设为/sbin/nologin usmod -s /sbin/nologin 用户名 1.1.2锁定长期不使用的账号 usermod -L passwd -l 1.1.3删除无用的账号 usermdel -r 1.1.4锁定账号文件文件chattr 选项 作用 +i 锁定文件 lsttr 查看文件状态 -i 解锁文件 1.1.5查看文件校验和md5sum 1.2.1设置密码有效期 vim /etc/logi

    2023年04月20日
    浏览(67)
  • 【网络安全】-Linux操作系统—操作系统发展历史与Linux

    操作系统(Operating System,简称OS)是管理计算机硬件与软件资源的系统软件,它是计算机系统的核心与基石。操作系统的发展历史可以追溯到20世纪50年代。 初期的操作系统 在计算机技术的早期,操作系统并不存在。那时,计算机使用一种叫做批处理系统的方式来运行程序。

    2024年02月03日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包