0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux内核中安全增强的配置项

Linux阅码场 来源:Linux阅码场 2023-03-28 15:39 次阅读

Linux涉及安全增强的配置项非常多, 主要有92个,涵盖从内存保护到访问控制的各个方面。根据内核版本的不同,具体的安全增强配置项数量可能会略有差异,但一般都在数十个到上百个之间。这些配置项可以通过修改内核配置文件(.config)来进行配置。

在一些Linux发行版中,可以通过命令行工具(如make menuconfig、make xconfig、make gconfig等)来打开内核配置界面,方便用户进行配置。配置时需要根据自己的实际需求选择相应的选项,有些选项需要硬件支持,需要先了解自己的硬件环境。

以下列举一些常见的Linux安全增强配置项, 根据其功能分为:

Stack Protector:Stack Protector是一种针对缓冲区溢出攻击的防御技术,它的实现是通过在函数的栈帧中插入一个特殊的随机数值(称为"Canary"), 在函数返回之前检查这个随机数值是否被破坏,如果被破坏则认为发生了缓冲区溢出攻击,程序将会异常终止。Canary 是在函数调用时生成的,它的值是一个随机数,并被保存在栈帧中。Linux内核中与stack canary相关的配置项主要有三个,分别是:

CONFIG_STACKPROTECTOR,CONFIG_STACKPROTECTOR_STRONG 和CONFIG_STACKPROTECTOR_PER_TASK。
其中,CONFIG_STACKPROTECTOR是平台无关的编译选项,决定是否开启栈保护机制 ;
CONFIG_STACKPROTECTOR_STRONG是进一步加强的栈保护机制,额外指定编译选项 -fstack-protector-strong;CONFIG_STACKPROTECTOR_PER_TASK 则是平台相关的编译选项,决定是否开启内核 per-task 的栈保护机制。

2. Memory Encryption:在内存中存储加密的数据,防止机密信息泄漏。这需要硬件支持(如Intel的Memory Encryption Technology)来实现。相关的Linux configuration选项包CONFIG_AMD_MEM_ENCRYPT是AMD平台的内存加密支持。CONFIG_EFI_SECURE_BOOT_SIG_ENFORCE:启用EFI Secure Boot签名强制执行,以防止未经授权的内核和模块加载。

CONFIG_ENCRYPTED_KEYS:启用支持在内存中存储加密的密钥。CONFIG_CRYPTO_XTS:启用XTS模式的加密算法,这是一种用于块设备加密的加密模式,也可以用于内存加密。CONFIG_SECURITY_DMESG_RESTRICT:限制dmesg的访问,以防止泄漏敏感信息。

3. 地址空间随机化: 地址空间随机化包括ASLR和KASLR。ASLR(地址空间随机化):随机化用户空间程序的内存布局,增加攻击者猜测攻击点的难度。KASLR(内核地址空间随机化):随机化内核地址空间的布局,使攻击者更难以定位内核代码和数据的位置。

4. MMU 和 IOMMU: 管理内存访问并提供内存隔离安全性。Page and page table Isolation

5. Spectre/Meltdown Protection:一些针对Spectre和Meltdown漏洞的修复措施,可以防止攻击者利用这些漏洞读取敏感信息。

6. Privileged Access Never:限制操作系统内核的代码和数据只能在用户态下访问,防止恶意代码通过内核攻击访问敏感信息和特权资源。比如Intel的Control-flow EnforcementTechnology(CET), 和 ARM的Pointer Authentication Code(PAC)。

7. User Access Override: 它是Intel x86架构中一项用于内存访问控制的硬件特性。UAO允

许特权级别较低的用户程序直接读取或写入特权级别较高的内存地址,绕过了传统的内存保护机制。为了避免UAO带来的安全问题,现代操作系统通常禁用或限制用户程序的UAO访问权限。在Linux系统中,管理员可以通过设置内核参数来启用或禁用UAO功能,以适应不同的使用场景和安全需求。例如,可以通过设置"uao=never"来完全禁用UAO,或者通过设置"uao=auto"来根据硬件和系统配置自动选择是否启用UAO。

8. Execute-only memory:一种内存保护技术,它可以将某些内存区域设置为只允许执行代码而不允许读取或写入。这种技术可以防止某些攻击者通过读取内存中的机密信息或向内存写入恶意代码来破坏系统安全。

9. Capability: 对内核的functionality进行隔离。

10. 安全增强型Linux (DAC MAC):一个强制访问控制框架,可以限制进程的权限,防止未经授权的访问和攻击。

11. Control Groups:限制进程使用的系统资源,如CPU、内存和网络带宽等,防止资源耗尽和拒绝服务攻击。

12. Seccomp:用于限制进程能够执行的系统调用和参数,以减少攻击面。

13. Namespace: 用于container的视图隔离。

14. Confidential computing: 用于支持各种TEE配置。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • ARM
    ARM
    +关注

    关注

    134

    文章

    9207

    浏览量

    371066
  • dac
    dac
    +关注

    关注

    43

    文章

    2321

    浏览量

    192131
  • LINUX内核
    +关注

    关注

    1

    文章

    316

    浏览量

    21858
  • MMU
    MMU
    +关注

    关注

    0

    文章

    92

    浏览量

    18447

原文标题:task force:Linux中的安全增强

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于Linux内核的透明代理配置方案

    本内容提供了基于Linux内核的透明代理配置方案,先解释为什么要配置透明代理,如何利用Linux内核
    发表于 11-03 16:47 904次阅读

    Linux内核配置系统的组成

    Linux内核源码很多,有上千条配置选项,配置相当复杂。
    发表于 07-14 15:17 748次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>内核配置</b>系统的组成

    Linux内核的编译主要过程

    Linux内核的编译主要过程: 配置、编译、安装 。
    发表于 08-08 16:02 791次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>内核</b>的编译主要过程

    linux内核编译

    ,ubuntudebian 使用mkinitramfs) 8复制initrd和内核镜像bzImage到/boot 9修改grub配置文档,添加新的启动vi /etc/grub.conf10重启系统,进入
    发表于 10-26 14:14

    linux 内核配置

    自动选中那些在Gentoo环境必须开启的内核选项,以避免用户遗漏某些必要的选项,减轻一些用户配置内核的难度.建议选"Y".Linux dy
    发表于 07-02 07:53

    Linux内核教程

    本章学习目标掌握LINUX内核版本的含义理解并掌握进程的概念掌握管道的概念及实现了解内核的数据结构了解LINUX内核的算法掌握
    发表于 04-10 16:59 0次下载

    Linux内核配置系统详解

    ,都将面临着同样的问题,即如何将源代码融入到 Linux 内核,增加相应的 Linux 配置选项,并最终被编译进
    发表于 11-01 15:45 4次下载

    如何配置和使用Linux内核printk功能

    了解如何配置和使用Linux内核printk功能,包括其动态调试功能。 这样可以选择性地打印调试消息,而无需重新编译内核
    的头像 发表于 11-27 06:40 3180次阅读

    Linux 5.4.1内核已经发布你期待使用吗

    24 日,Linus Torvalds 就已经宣布,用户将能够在自己喜爱的发行版上安装最新、最安全Linux 5.4 内核系列分支,引入了期待已久的对微软 exFAT 文件系统的支持、一
    的头像 发表于 12-01 10:50 3374次阅读

    嵌入式linux内核的编译步骤

    编译嵌入式Linux内核都是通过make的不同命令来实现的,它的执行配置文件是Makefile。Linux内核
    发表于 06-19 09:30 2913次阅读
    嵌入式<b class='flag-5'>linux</b><b class='flag-5'>内核</b>的编译步骤

    Linux内核配置编译分析的设计方案

    Linux内核配置编译分析的设计方案
    发表于 07-08 16:53 18次下载
    <b class='flag-5'>Linux</b><b class='flag-5'>内核配置</b>编译分析的设计方案

    Linux内核配置的网络资料说明

    Linux不止在上网时候才会用到网络功能’一些程序在单机时候也会需要内核的网络支持。 X server是个典型的例子。如果你是从一个老内核更新到一个比较新的内核·那么建议同时更新网络工
    发表于 03-12 10:33 14次下载

    嵌入式Linux系统移植(Linux内核配置

    嵌入式Linux系统移植(Linux内核配置Linux移植是把Linux操作系统针对具体的目标平台做必要改写之后,安装到该目标平台使其正确
    发表于 11-02 10:51 14次下载
    嵌入式<b class='flag-5'>Linux</b>系统移植(<b class='flag-5'>Linux</b><b class='flag-5'>内核配置</b>)

    STM32MP157 Linux系统移植开发篇8:Linux内核配置方法及编译

    Linux内核配置及编译解压内核建立源码目录该目录下以patch结尾的文件为ST官方提供的补丁文件,linux-5.4.31.tar.xz为标准li
    发表于 12-04 21:06 9次下载
    STM32MP157 <b class='flag-5'>Linux</b>系统移植开发篇8:<b class='flag-5'>Linux</b><b class='flag-5'>内核配置</b>方法及编译

    Linux内核安全性对Android的影响

    在操作系统级别,Android平台不仅提供Linux内核安全功能,而且还提供安全的进程间通信 (IPC)机制,以便在不同进程运行的应用之
    的头像 发表于 09-13 09:09 1394次阅读