Linux内核是所有Linux系统的核心。如果有任何恶意代码控制或破害了内核的任何一部分,那么系统会严重受损,文件可能被删除或损坏,私人信息可能被盗等等。很明显,保持内核安全涉及到用户的最大利益。值得庆幸的是,由于Linux内核极其安全,Linux是一个非常安全的系统。在用户比例上,Linux病毒比Windows病毒更少,并且Linux用户比Windows用户个人更少感染病毒。(这就是为什么许多公司使用Linux来管理他们的服务器的一个原因。) 然而,我们仍然没有借口去忽视内核的安全。Linux有几个安全特性和程序,但本文只讨论Linux安全模块(LSM)及其它的内核安全特性。

AppArmor(应用盔甲)最初是由Immunix写的安全模块。自从2009年以来,Canonical维护着这些代码(Novell在Immunix之后,Canonical以前管理这些代码)。这个安全模块已经从2.6.36版本进入Linux主分支之中。AppArmor限制了程序的能力。AppArmor使用文件路径来跟踪程序限制。许多Linux管理员称AppArmor是最容易配置的安全模块。然而,而许多Linux用户觉得这个模块与其它的替代品相比很糟糕。

安全增强Linux(SELinux)是AppArmor的替代品,它最初由美国国家安全局开发(NSA)。SELinux自从2.6版本就进入内核主分支中。SELinux是限制修改内核和用户空间的工具。SELinux给可执行文件(主要是守护进程和服务端程序)最小特权去完成它们的任务。SELinux也可以用来控制用户权限。SELinux不像AppArmor那样使用文件路径,而SELinux在追踪权限时使用文件系统去标记可执行文件。因为SElinux本身使用文件系统管理可执行文件,所以SELinux不能像AppArmor那样对整个文件系统提供保护。

注意:守护进程是在后台运行的程序

注意:虽然在内核中有AppArmor、SELinux及其它安全模块,但只能有一个安全模块被激活。

Smack是安全模块的另一种选择。Smack从2.6.25起进入内核主分支。Smack应能比AppArmor更安全,但比SELinux更容易配置。

TOMOYO,是另外一个安全模块,在2.6.30进入内核主分支。TOMOYO可以提供安全防护,但是它的主要用途是分析系统安全缺陷。

AppArmor、SELinux、Smack和TOMYO组成了四个标准Linux安全模块。这些都通过使用强制访问控制(MAC : mandatory access control)工作,这种访问控制是通过限制程序或者用户执行一些任务来实现的。安全模块还有某些形式的列表规定了它们可以做什么不可以做什么。

Yama在Linux内核中一个新安全模块。Yama还没有作为标准的安全模块,但是在将来他会成为第5个标准安全模块。Yama和其他安全模块一样使用相同的机制。

“grsecurity”是一系列Linux内核安全补丁的集合。多数补丁用于处理远程网络连接和缓冲区溢出的安全问题(以后讨论)。grsecurity中有一个叫PaX的有趣组件。PaX补丁允许内存里的代码使用最少的所需权限。例如,存储程序的内存段被标为不可写。想想看,为什么一个可执行的程序需要在内存中是可写的?通过这个补丁,恶意代码就不能修改目前正在执行的程序。缓冲区溢出是一种当程序由于bug或者恶意代码在内存上写入数据,并让它的内存边界超出到其他程序的内存页上的安全事件。当Pax被激活时,它会帮助阻止这些缓冲区溢出,因为程序没有写到其他内存页上的权限了。

Linux入侵检测系统(LIDS)是一个内核安全补丁,提供了强制访问控制(MAC)的特性。这个补丁就像扮演LSM模块的角色。

Systrace是一个减少和控制应用程序访问系统文件和系统调用的工具。系统调用是对内核的服务请求。比如,当一个文本编辑器写入一个文件到硬盘上时,程序将会发送一个系统请求让内核写入文件到硬盘中。

这些是在Linux安全系统中非常重要的组件。这些安全模块和补丁使内核免于受到恶意代码的攻击。没有这些特性,Linux系统将会变成一个不安全的操作系统。

原文发布时间为:2013-11-01

本文来自云栖社区合作伙伴“Linux中国”

戴文的Linux内核专题:04 安全相关推荐

  1. 戴文的Linux内核专题:03驱动程序

    转自Linux中国 驱动程序是使内核能够沟通和操作硬件或协议(规则和标准)的小程序.没有驱动程序,内核不知道如何与硬件沟通或者处理协议(内核实际上先发送指令给BIOS,然后BIOS传给硬件). Lin ...

  2. 戴文的Linux内核专题:03 驱动程序

    驱动程序是使内核能够沟通和操作硬件或协议(规则和标准)的小程序.没有驱动程序,内核不知道如何与硬件沟通或者处理协议(内核实际上先发送指令给BIOS,然后BIOS传给硬件). Linux的内核代码在驱动 ...

  3. 戴文的Linux内核专题:03 驱动程序【转】

    转自:http://www.lai18.com/content/432194.html 驱动程序是使内核能够沟通和操作硬件或协议(规则和标准)的小程序.没有驱动程序,内核不知道如何与硬件沟通或者处理协 ...

  4. 戴文的Linux内核专题:07内核配置(3)

    转自Linux中国 OK,我们还继续配置内核.还有更多功能等待着去配置. 下一个问题(Enable ELF core dumps (ELF_CORE))询问的是内核是否可以生成内核转储文件.这会使内核 ...

  5. 戴文的linux内核专题 24,戴文的Linux内核专题:26 配置内核 (22)

    你好!本篇我们将继续配置quot;kernel hacksquot;,接着我们会配置整个安全系统. Alpha和s390处理器需要配置下一个特性(Force weak per-cpu definiti ...

  6. 更换任意Linux内核 Ubuntu18.04 内核降级升级

    更换任意Linux内核 Ubuntu18.04 内核降级升级 一.grub设置 二.安装内核 最后 一.grub设置 grub用于引导操作系统启动,通常情况下Ubuntu默认会 HIDDEN 状态,在 ...

  7. 一文讲解Linux 内核网络协议栈-数据从接收到ip层

    [推荐阅读] 一文了解Linux上TCP的几个内核参数调优 一文剖析Linux内核中内存管理 分析linux启动内核源码 此处主要讲的是从数据来到,中断到最终数据包被处理的过程. 0:首先来介绍一下I ...

  8. 一文分析Linux内核klist链表

    1.klist链表相关结构 内核源码中,klist相关的头文件是include/linux/klist.h,实现的文件是lib/klist.c中,接下来分析klist链表头和klist链表节点的定义: ...

  9. 一文了解linux内核,一文了解Linux的系统结构

    什么是 Linux ? 如果你以前从未接触过Linux,可能就不清楚为什么会有这么多不同的Linux发行版.在查看Linux软件包时,你肯定被发行版.LiveCD和GNU之类的术语搞晕过.初次进入Li ...

最新文章

  1. 微软洪小文:AI将成为人类未来最好的左脑
  2. 关于UNION联合体结构的运用
  3. 利用SQL Server EXISTS结构
  4. sqlite3数据库教程
  5. Python钉钉报警及Zabbix集成钉钉报警
  6. 第二章 比特币的去中心化的方式
  7. (2)网络基础之IP
  8. C++ set 多级排序 多维度排序
  9. 自行实现PHP代码注解特性
  10. Android资源下载
  11. hbase基础操作命令
  12. ubuntu desktop 12 lts 安装 vmplayer 问题
  13. linux服务器如何进入图形界面,linux进入图形界面的方法
  14. chrome redhat 下载源_RedHat 7.0 Chrome浏览器 安装
  15. kafka系列之kafka分区与备份(4)
  16. DTCC2017第二天
  17. ANIMO 03 汉化补丁
  18. 【kali-漏洞利用】(3.4)免杀Payload 生成工具(下):Veil后门使用、监听失败原因
  19. (三)模仿学习-Action数据的模仿
  20. Echarts实现堆叠图

热门文章

  1. Flex Form表单 表格加载XML 数据绑定
  2. Java在线鲜花商城源码(电商购物系统)(含源码+论文+答辩PPT等)
  3. 淮阴工学院计算机调剂,淮阴工学院2020考研调剂信息(四)
  4. Duilib ApplyAttributeList和SetPos陷阱
  5. java后台过滤特殊表情_java--正则过滤表情
  6. RPG Maker MV 旅馆和商店
  7. STM32F0+模拟I2C通讯
  8. Linux中的账号管理,用户组管理
  9. 古代的医生(罗大伦)--总结
  10. Platform—企业通讯录