当前位置:首页 > 财经

lsm linux安全模块学习之LSM的使用说明

上次审查(点击以下链接进入)

============================

linux安全模块学习LSM的介绍与实现

在上一期中,我们学习了什么是LSM以及内核是如何实现的。在本期中,我们学习了如何对LSM提供的接口进行分类和使用

界面描述:内核开发者和安全研究者的钩子

Linux安全模块(LSM)对内核开发者和安全研究者的价值在于,可以利用其接口将现有的安全增强系统移植到这个框架中,从而可以以可加载内核模块的形式提供给用户;甚至可以直接编写适合自己需求的安全模块。

Linux安全模块(LSM)提供的接口是hook,初始化时指向的虚拟函数实现默认的传统UNIX超级用户机制。模块作者必须重新实现这些钩子函数,以满足他们自己的安全策略。下面简单介绍一下Linux安全模块(LSM)提供的钩子。具体请参考源代码,尤其是include/linux/security.h头文件中security_operations结构的定义。至于如何根据自己的安全策略编写安全模块,可以参考SELinux、DTE、LIDS等系统的安全模块实现。

1)任务挂钩。Linux安全模块(LSM)提供了一系列任务挂钩,使安全模块可以管理进程的安全信息,控制进程的运行。

模块可以使用task_struct结构中的安全域来维护进程安全信息;任务钩子提供了控制进程间通信的钩子,例如kill();还提供了控制对当前进程进行特权操作的钩子,例如setuid();还提供了对资源管理操作进行细粒度控制的钩子,例如setrlimit()和nice()。

2)程序加载挂钩。许多安全模块,包括Linux功能、SELinux和DTE,都需要在执行新程序时改变权限的能力。因此,Linux安全模块(LSM)提供了一系列程序加载钩子,用于execve()操作执行过程中的关键点。

linux_binprm结构中的安全域允许安全模块维护程序装载过程中的安全信息;提供了钩子用于允许安全模块在装载程序前初始化安全信息和执行访问控制;还提供了钩子允许模块在新程序成功装载后更新任务的安全信息;还提供了钩子用来控制程序执行过程中的状态继承,例如确认打开的文件描述符。

3)进程间通信的IPC挂钩。安全模块可以使用进程间通信的IPC钩子来管理System V IPC的安全信息,并执行访问控制。

IPC对象数据结构共享一个子结构kern_ipc_perm,并且这个子结构中只有一个指针传给现存的ipcperms()函数进行权限检查,因此Linux安全模块(LSM)在这个共享子结构中加入了一个安全域。为了支持单个消息的安全信息,Linux安全模块(LSM)还在msg_msg结构中加入了一个安全域。Linux安全模块(LSM)在现存的ipcperms()函数中插入了一个钩子,使得安全模块可以对每个现存的Linux IPC权限执行检查。由于对于某些安全模块,这样的检查是不足够的,Linux安全模块(LSM)也在单个的IPC操作中插入了钩子。另外还有钩子支持对通过System V消息队列发送的单个消息进行细粒度的访问控制。

4)文件系统挂钩。对于文件操作,定义了三种钩子:文件系统钩子、索引节点钩子和文件钩子。

Linux安全模块(LSM)将安全域添加到相应的三个内核数据结构中,即超级块结构、索引节点结构和文件结构。

超级块文件系统钩子使得安全模块能够控制对整个文件系统进行的操作,例如挂载,卸载,还有statfs()。Linux安全模块(LSM)在permission()函数中插入了钩子,从而保留了这个函数,但是也提供了很多其他inode结点钩子来对单个inode结点操作进行细粒度访问控制。文件钩子中的一些允许安全模块对read()和write()这样的文件操作进行额外的检查;文件钩子允许安全模块控制通过socket IPC接收打开文件描述符;其他的文件钩子对像fcntl()和ioctl()这样的操作提供细粒度访问控制。

5)网络挂钩。应用层对网络的访问是通过使用一系列套接字钩子来仲裁的,这些钩子基本上覆盖了所有基于套接字的协议。

由于每个激活的用户socket套接字有伴随有一个inode结构,所以在socket结构或是更底层的sock结构中都没有加入安全域。socket套接字钩子对有关进程的网络访问提供了一个通用的仲裁,从而显著扩展了内核的网络访问控制框架(这在网络层是已经由Linux内核防火墙netfilter进行处理的)。例如sock_rcv_skb钩子允许在进入内核的包排队到相应的用户空间socket套接字之前,按照其目的应用来对其进行仲裁。另外Linux安全模块(LSM)也为IPv4,UNIX域,以及Netlink协议实现了细粒度的钩子,以后还可能实现其他协议的钩子。网络数据以包的形式被封装在sk_buff结构(socket套接字缓冲区)中游历协议栈,Linux安全模块(LSM)在sk_buff结构中加入了一个安全域,使得能够在包的层次上对通过网络层的数据的安全信息进行管理,并提供了一系列的sk_buff钩子用于维护这个安全域的整个生命周期。硬件和软件网络设备被封装在一个net_device结构中,一个安全域被加到这个结构中,使得能够在设备的层次上维护安全信息。

6)其他挂钩。Linux安全模块(LSM)提供了另外两个系列的挂钩:模块挂钩和顶层系统挂钩。

模块钩子用来控制创建,初始化,清除内核模块的内核操作。系统钩子用来控制系统操作,例如设置主机名,访问I/O端口,以及配置进程记帐。虽然现在的Linux内核通过使用capability检查对这些系统操作提供了一些支持,但是这些检查对于不同操作差别很大并且没有提供任何参数信息。

模块描述:针对普通用户的现成安全功能

Linux安全模块(LSM)对于普通用户的价值就在于:可以提供各种安全模块,由用户选择适合自己需要加载到内核,满足特定的安全功能。Linux安全模块(LSM)本身只提供增强访问控制策略的机制,而由各个安全模块实现具体特定的安全策略。下面简要介绍一些已经实现的安全模块。SELinux。这是一个Flask灵活访问控制体系在Linux上的实现,并且提供了类型增强,基于角色的访问控制,以及可选的多级安全策略。SELinux原来是作为一个内核补丁实现的,现在已经使用Linux安全模块(LSM)重新实现为一个安全模块。SELinux可以被用来限制进程为最小特权,保护进程和数据的完整性和机密性,并且支持应用安全需求。DTE Linux。这是一个域和类型增强在Linux上的实现。就像SELinux一样,DTE Linux原来是作为一个内核补丁实现的,现在已经使用Linux安全模块(LSM)重新实现为一个安全模块。当这个安全模块被加载到内核上时,类型被赋给对象,域被赋给进程。DTE策略限制域之间和从域到类型的访问。Openwall 内核补丁的LSM移植。Openwall内核补丁提供了一系列的安全特性集合来保护系统免受例如缓冲区溢出和临时文件竞争这样的攻击。有安全模块正在被开发出来以支持Openwall补丁的一个子集。POSIX.1e capabilities。Linux内核中已经存在有POSIX.1e capabilities逻辑,但是Linux安全模块(LSM)把这个逻辑划分到了一个安全模块中。这样的修改使得不需要的用户可以从他们的内核中把这个功能略去;也使得capabilities逻辑的开发可以脱离内核开发获得更大的独立性。LIDS。这是中国人谢华刚发起的项目。开始时作为一个入侵检测系统开发,后来逐渐演变为使用访问控制系统的形式来进行入侵预防,它通过描述一个给定的程序可以访问哪些文件来进行访问控制。同样的,LIDS原来是作为一个内核补丁实现的并附带了一些管理工具,现在已经使用Linux安全模块(LSM)重新实现为一个安全模块。

当然还有默认的传统超级用户机制。这个安全模块是Linux安全模块(LSM)的默认,它实现了传统的UNIX超级用户特权机制。

具体用法说明

目前,Linux安全模块(LSM)实现为Linux内核补丁,在GPL许可下发布,供用户自由使用。

首先用户可以在http://lsm.immunix.org/lsm_download.html 下载到对应于Linux 2.4稳定版本和Linux 2.5开发版本的LSM补丁,放在某个目录下,例如是目录/path/to/linux-2.4.x,通过执行下面的命令来使LSM补丁作用在Linux内核上:cd /path/to/linux-2.4.xzcat /path/to/patch-2.4.x-lsm.gz | patch -p1然后用户可以在http://lsm.immunix.org/lsm_modules.html 连接到已经实现安全模块的站点,下载到所需要的安全模块,将安全模块加载到Linux内核中,这样用户需要的安全策略就可以起作用了,从而增强了系统的安全性。具体安全模块的安装方法这里就略过了,各个安全模块都会提供详细的安装说明文件,用户可以参考这些文件,例如SELinux的安全模块安装说明文件在:http://www.nsa.gov/selinux/doc/readme.html ,又如LIDS的安全模块安装说明文件在:http://www.lids.org/install.html。

如果用户对Linux内核和安全有相关的背景知识和开发经验,就想根据自己的安全策略编写安全模块。可以跟踪Linux安全模块(LSM)的源代码和http://lsm.immunix.org/lsm_bk.html,现有安全模块的源代码,参照其实现方法编写自己的安全模块。

这样可以满足自己的安全需求,为Linux安全模块(LSM)的开发做出一些贡献,使其早日被Linux内核接受为Linux内核安全机制的标准,让更多的用户受益。

造成Linux安全模块(LSM)的原因是:一方面,Linux内核现有的安全机制不足;另一方面,现有的安全增强系统各有千秋,难以使用。

Linux安全模块(LSM)很好的解决了这个问题:一方面补丁比较小,对内核源代码的修改影响不大,带来的负载也不大;另一方面,它为现有的安全增强系统提供了更好的接口支持,可以使用许多好的安全模块。

目前,Linux安全模块(LSM)仍作为Linux内核补丁提供,但也提供了Linux 2.4的一系列稳定版本和Linux 2.5的一系列开发版本,有望进入Linux 2.6的稳定版本。

我们期待着有一天,Linux安全模块(LSM)被Linux内核接受为Linux内核安全机制的标准,并在各种Linux发行版中提供给越来越多的用户。

文章参考部分:https://www.cnblogs.com/hoys/p/3806477.html

1.《lsm linux安全模块学习之LSM的使用说明》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《lsm linux安全模块学习之LSM的使用说明》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/caijing/961511.html

上一篇

杭州公交新增USB接口是怎么情况,为什么要这样

下一篇

东鹏瓷砖官网 中国瓷砖十大名牌排行榜 东鹏瓷砖排第二

笔电锋 颠覆想象的笔电锋安全加密平板,京东火热众筹中

  • 笔电锋 颠覆想象的笔电锋安全加密平板,京东火热众筹中
  • 笔电锋 颠覆想象的笔电锋安全加密平板,京东火热众筹中
  • 笔电锋 颠覆想象的笔电锋安全加密平板,京东火热众筹中

一汽解放校车 行车预警助力安全 实拍图解一汽解放校车

  • 一汽解放校车 行车预警助力安全 实拍图解一汽解放校车
  • 一汽解放校车 行车预警助力安全 实拍图解一汽解放校车
  • 一汽解放校车 行车预警助力安全 实拍图解一汽解放校车

dnf安全管家活动 DNF电脑管家6月活动地址 海量黑钻番薯领不停

  • dnf安全管家活动 DNF电脑管家6月活动地址 海量黑钻番薯领不停
  • dnf安全管家活动 DNF电脑管家6月活动地址 海量黑钻番薯领不停
  • dnf安全管家活动 DNF电脑管家6月活动地址 海量黑钻番薯领不停

计算机安全属性包括 信息安全的基本属性包括哪些方面?

  • 计算机安全属性包括 信息安全的基本属性包括哪些方面?
  • 计算机安全属性包括 信息安全的基本属性包括哪些方面?
  • 计算机安全属性包括 信息安全的基本属性包括哪些方面?

减轻 8个缓解腰酸背痛最安全有效的简单运动

网银转账安全吗 网银转账,财务人你知道要注意什么吗?

网银转账安全吗 网银转账,财务人你知道要注意什么吗?

今天带给我们的问题是关于网银转账的。随着科技的发展,使用现金的地方越来越少,而作为出纳,这份工作是最基本的。出纳是整个财务编制中最基本的存在,但也是最重要的存在。在很多企业,资金都在出纳手里,有“网银在手,我天下有”的势头。但是用网银转账可不是儿戏。一旦出现问题,可能会造成严重后果。很多人觉...

安全先进个人材料 【榜样的力量】安全无小事——记2016年度优秀员工吴元鸿先进事迹

2016年,作为EHS部工程师,在自己的工作范围内,建立了《构件事业部新建车间安全技术规范体系》,包括消防设施布置、人员逃生布置、车间照明、车间监控、机电施工、土建施工等安全技术措施。后续新车间施工将参照《新建车间安全技术规范》安全进行;组织各责任部门编制事业部各工艺岗位安全操作规范,编制和...

独自去偷欢 独自去偷欢!最适合一个人旅行的5个地方,安全又好玩!