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配置。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !