中标麒麟Linux系统安全配置指南_第1页
中标麒麟Linux系统安全配置指南_第2页
中标麒麟Linux系统安全配置指南_第3页
中标麒麟Linux系统安全配置指南_第4页
中标麒麟Linux系统安全配置指南_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、中标麒麟Linux系统安全配置指南技术创新,变革未来中标麒麟Linux服务器操作系统培训系列本章目标:了解访问控制:熟悉selinux:学会配置安全策略:安全上下文:指标记在所有事物上的扩展属性,一个安全上 下文由三部分组成:用户、角色和类型标识符。例如:ls -Z显 示文件系统客体的安全上下文:ps -Z显示进程的安全上下文:id -Z显示了shell的安全上下文(即当前的用户、角色和类型):类型和域:是分配给一个对象并决定谁可以访问这个对 象,域对应进程,类型对应其他对象。域、域类型、主体类型、进程类型通常指的是一个概念。练习:域是什么?它和类型有什么关系?安全上下文由什么构成?类型强制访

2、问控制:在SELinux中,所有访问都必须明确授权,SELinux默认不允许任何访问,SELinux通过指定主体类型(即域)和客体类型使用allow规则授予访问权限,allow规则由四部分组成:源类型(source type): 通常是尝试访问的进程的域类型 目标类型(target type ):被进程访问的客体的类型客体类别(object class):指定允许访问的客体类型许可(permission):象征目标类型允许源类型访问客体类型的种类例如:allow user_t bin_t :fileread write;这个规则包含了两个类型标识符:源类型user_t,目标类型bin_t,标识

3、符file 是定义在策略中的客体类别名称,大括号中包括的许可是文件客体类别有效许可 的一个子集。这个规则解释如下:域类型user_t的进程可以读写具有bin_t类型的文件客体的属性。 如下图所示:练习:创建一条allow规则,让类型为samba_t的进程对类型为user_home_t的文件有read,write和getattr的访问权。声明基本的声明语句包括类型声明和角色声明,即类型声明:type user_t ;角色声明:role user_r ;我们在添加私有策略文件(.te)的声明时(稍后会介绍),有的声明是 引用的,如sysadm_t,secadm_t等,有的声明是我们自己定义的,以达

4、梦数据库为例,如dm_t,dm_exec_t,dm_log_t等。域转换进程以给定的进程类型运行的能力称为域转换,域转换只有同时满足以下 三个条件时才允许进行:进程的新域类型对可执行文件有entrypoint访问权;进程的当前(或旧的)域类型对入口文件类型有execute访问权; 进程当前的域类型对新的域类型有transition访问权。以达梦数据库为例:dm_t为声明的进程新域类型,dm_exec_t为可执行文件,sysadm_t为进程的旧域类型,按照上述的三个条件,我们写的域转换如下:以达梦数据库为例:dm_t为声明的进程新域类型,dm_exec_t为可执行文件,sysadm_t为进程的旧

5、域类型,按照上述的三个条件,我们 写的域转换如下:allow sysadm_t dm_exec_t:filegetattr execute; allow dm_t dm_exec_t:file entrypoint;allow sysadm_t dm_t:process transition;练习:写一个office软件的域转换默认域转换为了支持默认的域转变,我们在allow规则后面添加一个type_transition 规 则 , 以 达 梦 数 据 库 为 例 : type_transition sysadm_t dm_exec_t:process dm_t; type_transitio

6、n规则默认一个execve()系统调用,若调用的系统类型是sysadm_t,并且可执行文件的类型是dm_exec_t, 将会尝试到一个新域类型(dm_t)的域转变。角色声明角色:roleuser_r;角色关联类型:role user_r type dm_t;角色转换:role_transition sysadm_r http_exec_t system_r ;一个角色为sysadm_r的进程在执行类型为http_exec_t的文件 时将尝试转换为system_r角色,要转换成功角色允许也是必须的。角色控制:dominancerole super_rrole sysadm_r;role seca

7、dm_r;角色super_r控制后两者角色,拥有两者合并后的类型。用户、角色和域关系SELinux用户和角色的关系:一个用户可以对应多个角色,但是同一时刻只能作为其中一个角色, 角色和域关系:角色仅仅是一套域类型的集合,方便与用户建立联系,通过role user_r types user_t进行关联。客体类别:策略中必须包括所有SELinux内核支持的客体类别和许可的声明, 以及其他客体管理器,因此必须理解客体类别和许可声明。声明客体类别:class dir;联合许可和客体类别:class dirsearch;有效的客体类别:a、与文件相关的客体类别:字符文件chr_file fdfile文件

8、描述符普通文件lnk_file符号连接blk_file块文件dir目录fifo_file命名管道 filesystem文件系统 sock_fileUNIX域套接字b、与网络有关的客体类别:netif netlink_audit_socket网络接口(如eth0)用于控制审核的Netlink套接字netlink_firewall_socket 用于创建用户空间防火墙过滤器的Netlink 套接字netlink_nflog_socket用于接收Netfilter日志消息的Netlink套接字netlink_tcpdiag_socket用于监视TCP连接的Netlink套接字netlink_sock

9、et nodetcp_socket udp_socket unix_stream_socket所有其它的Netlink套接字代表一个IP地址或一段IP地址的主机TCP套接字 UDP套接字本地机器上(unix域)的IPC流套接字c、system V IPC客体类别:msg msgq semshm消息队列中的消息 消息队列信号量共享内存段d、其他杂类客体类别:capability process security systemLinux中表示权利的特权 SELinux中的进程内核中的SELinux安全服务器整个系统客体类别许可:a、文件客体类别许可 append附加到文件内容创建一个新文件执行,与

10、标准Linux下的x访问权一致获取文件的属性,如访问模式(例如:stat,部分create execute getattrioctls)ioctllock link read rename unlink writeioctl(2)系统调用请求 设置和清除文件锁创建一个硬链接读取文件内容,对应标准Linux下的r访问权 重命名一个硬链接移除硬链接(删除)写入文件内容,对应标准Linux下的w访问权b、进程客体类别许可:允许进程动态地转移到新的上下文中 派生两个进程通过/proc/pid/attr/目录获取进程dyntransition forkgetattr的属性ptraceexecmemrli

11、mitnh signalsignull transition跟踪程序执行的父进程或子进程产生一个匿名的映像或可写的私有文件映像可执行体在execve(2上)继承进程资源限制 发送一个非sigkill,sigstop或sigchld的信号不发送信号测试另一个进程的存在性 在execve(2)上转换到一个新的上下文练习:编写一个allow规则允许域httpd_t将类型httpd_log_t追加到某个文件,但不能写入。编写策略模块一个完整的策略文件包括以下三个模块文件:私有策略文件(.te):这个文件包括了模块专用的声明和规则,通常, 所有模块类型和属性声明都包括在.te文件中,以及授予这些类型和属

12、性 核心访问权的规则。外部接口文件(.if):这个文件包括模块接口,这些接口是其它模块 访问这个模块的类型和属性。标记策略文件(.fc):这个文件包括与这个模块有关的文件上下文标 记语句。这三个文件在每个定义的模块中必须存在,即使是空的也要有。编写策略语言步骤a、准备和计划:收集应用程序信息,指定安全目标,搭建测试环境。b、创建一个初始化策略模块文件,文件dm.if和 dm.fc开始时可以是 空 的,但dm.te必须有下面的最小声明:#dm policy module declarationpolicy_module(dm, 1.0)c、类型声明:dm_t :为dm进程创建的域类型;dm_ex

13、ec_t:适合于dm进程可执行文件的入口点类型。 dm_log_t:适合于dm进程日志文件的文件类型。 dm_conf_t:适合于dm进程配置文件的文件类型。d、允许域转换和指派角色:为了让我们的新域生效,我们必须允许其它域转换成我们的新域,即必 须创建type_transition规则,允许域转换,并给我们的域委派合适的角色。type_transition sysadm_t dm_exec_t:process dm_t; allow dm_t sysadm_t:process sigchld;allow dm_t sysadm_t:fd use;role sysadm_r types dm_

14、t;e、声明与模块相关的安全上下文:以达梦数据库为例,我们把达梦数据库软件安装在了/opt/dmdb目录下,用cd /opt/dmdb命令切换到该目录下,并用file *查看该目录 下文件的属性,把/opt/dmdb(/.*)下的文件标记为dm_file_t,/opt/dmdb/bin下的可执行文件一一标记为dm_exec_t,/opt/dmdb/data下的文 件标记为dm_data_t,依次类推,把剩下的文件类型标记完。然后运行 setfiles -F /etc/selinux/refpolicy/context/files/file_contexts /命令将文件标 记。如下图所示:f、

15、根据.fc文件向.te文件添加类型声明:根据写好的.fc文件里的类型向.te文件添加类型声明,如typedm_t;type dm_exec_t等,有些是引用的类型,有些是自定义的,注意不要搞混淆了。g、配置编译策略文件:添加完声明以后,进入/usr/src/neoshine/BUILD/serefpolicy-2.4.6里面用 make load命令编译策略文件,如果写的策略没问题的话,将会提示编译成 功。h、根据日志文件添加被拒绝的访问编译成功以后,以auditadm_t的身份运行rm -rf/var/log/audit/audit.log删除原来的日志文件并用/etc/init.d/aud

16、itd reatart命令重启审计进程。用audit2allow -a重新生成审计文件,根据里面的 allow规则向.te文件添加未声明的类型和TE规则并重新编译。i、添加其他三个身份用户的策略上述策略是我们以系统管理员的身份登录进去写的,其他三个身份的 用户分别是审计管理员、安全管理员和普通用户。要使这三个身份的用户也能使用软件,方法是一样的,按照上述过程向.te文件里面添加策 略,编译成功即可。j、测试和分析策略在上述所有的步骤完成以后,一个策略完成了,接下来要分析校验我们的策略模块功能是否正确,是否符合我们的安全目标。即在安全开启 的情况下软件是否能使用。练习:写一个office软件的策略。SELinux编写问题总结:搭建应用程序环境时,若安装路径不是默认路径,应与.fc文件中定义安全上下文的路径保持一致。标记安全上下文时,一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论