SE Linux 2

发布时间:2018-06-10 21:54:20   来源:文档文库   
字号:

暨南大学本科实验报告专用纸

课程名称信息系统安全实验成绩评定

实验项目名称SE Linux指导教师林聪

实验项目编号09实验项目类型验证型

学生姓名李静远学号2015050324

学院 电气信息学院 系专业 信息安全

实验时间年月日 午~月日 温度℃湿度

实验目的

1.了解SELinux的安全特性

2.使用SELinux增强系统安全性

实验人数

每组1

系统环境

Linux

网络环境

交换网络结构

实验工具

——

实验类型

验证型

实验原理

一.传统Linux系统的不足之处

虽然Linux比起Windows来说,它的可靠性、稳定性要好得多,但是Linux的安全模型有它自己的缺点。自主访问控制(基于账号的权限来允许其对文件的访问)是一种方便但不安全的文件系统对象访问控制方法。它从本质上说是基于信任的:信任有访问权限的用户不是恶意的,信任系统管理员知道一个软件包中每个文件的正确权限,信任第三方软件包有到位的强大控制力来安装它们自己,但即便所有这些都做到了,一个软件上的安全漏洞仍然会让系统变得毫无保护。总结Linux操作系统有以下4点不足之处:

1)存在特权用户root

任何人只要得到root的权限,对于整个系统都可以为所欲为。这一点Windows也一样。

2)对于文件访问权限的划分不够细。

Linux系统里,文件的访问权限只有所有者、属组和其他用户这3类划分。

3SUID程序的权限升级。

如果设置了SUID权限的程序有了漏洞的话,很容易被攻击者所利用。

4DACDiscretionary Access Control)问题。

文件目录的所有者可以对文件进行所有的操作,这给系统整体的管理带来不便。

对于以上这些的不足,传统权限策略、传统主机访问控制以及防火墙、入侵检测系统都是无能为力的。在这种背景下,对于访问权限大幅强化的SELinuxSecurity-Enhanced Linux)来说,它的魅力是无穷的。

SELinux通过使用强制访问控制(也叫做MAC)解决了上述问题。

二.SELinux特性

SELinux是由NSA(美国国家安全局)和SCCSecure Computing Corporation)开发的Linux的一个扩张强制访问控制安全模块。2000年以GNU GPL发布。已经被集成到2.6版的Linux内核中。

SELinux系统比起通常的Linux系统,安全性能要高得多,它通过对于用户、进程、权限的最小化,即使受到攻击,进程或者用户权限被夺去,也不会对整个系统造成重大影响。没有SELinux保护的Linux的安全级别和Windows一样,是C2级,但经过SELinux保护的Linux安全级别则可以达到B1级。

「说明」 1985年,美国国防部提出可信计算机系统评测标准TCSEC(习惯上称橘皮书)TCSEC将系统分成ABCD四类7个安全级别。D级是安全级别最低最低的级别,如MS-DOS就属于D级;C类为自主保护级别;B类为强制保护级别;A类为验证保护级别,包含一个严格的设计,控制和验证过程。UNIXWindows NTLinux都只能达到C2级。

下面是SELinux的一些特点。

1MACMandatory Access Control)-对访问控制彻底化

对于所有的文件、目录、端口等资源的访问,都可以是基于策略设定的,这些策略是由管理员定制的,一般用户没有权限更改。

如将/tmp目录下的所有文件和目录权限设置为0777,这样在没有SELinux保护的情况下,任何人都可以访问/tmp下的内容。而在SELinux环境下,尽管目录权限允许访问/tmp下的内容,但SELinux的安全策略会继续检查你是否可以访问。

2TEType Enforcement)-对于进程只赋予最小权限

TE概念在SELinux里非常重要。它的特点是对所有的文件都赋予一个叫type的文件类型标签,对于所有的进程也赋予各自的一个叫domain的标签(可统一称之为目标安全上下文)。domain能够执行的操作是由access vector在策略里定义好的。

Apache服务守护进程-httpd进程,只能在httpd_t里运行。这个http_tdomain能执行的操作,比如能读被赋予httpd_sys_content_t属性的网页文件内容,被赋予shadow_t属性的密码文件,使用被赋予httpd_port_t80/tcp端口等。如果在access vector里我们不允许http_t来对http_port_t进行操作的话,Apache服务就不能启动。反过来说,只允许80端口,httpd_t就不能用别的端口;只允许读取被标为httpd_sys_content_t的文件,httpd_t就不能对这些文件进行写操作。

3domain迁移-防止权限升级

在用户环境里运行服务软件server,假设当前的domainfull_t,也就是说,在shell终端中启动server后,它的进程domain就会默认继承正在运行的shellfull_t,在server遭受攻击后,shell可能会受到波折。通过domain迁移,就可以让server在指定的server_t里运行,在安全上面,这种做法是可取的,它不会影响到full_t

面是domain迁移的例子:

domain_auto_trans(full_t, server_exec_t,server_t)

意思就是,当在full_t domain里执行了被标为server_exec_t的文件时,domainfull_t迁移到server_t

4RBACrole base access control)-对于用户只赋予最小的权限

对于用户来说,被划分成一些role,即使是root用户,要是不在sysadm_r里,也还是不能执行sysadm_t管理操作的。因为,哪些role可以执行哪些domain也是在策略里设定的。role也是可以迁移的,但是也只能按策略规定迁移。

三.SELinux控制切换

Fedora core2FC2)开始,2.6内核的版本都支持SELinux,文件/etc/selinux/config控制着SELinux的配置,其中配置行如下:

SELINUX有三个可能的值:enforcingpermissive或者disabled

1enforcing 实施被加载的策略,禁止出现违反策略的情况(违反策略不可继续执行)。

2permissive 实施被加载的策略,允许出现违反策略的情况(违反策略可以继续执行)。

3disabled 关闭SELinux

SELINUXTYPE指要应用的策略类型,有两种策略:targetedstrict

1targeted 只为主要的网络服务进行保护,受保护的进程有httpddhcpdnamedmysqldsquidwinbindd等。该策略可用性好,但是不能对整体进行保护。事实上,即使是targeted策略也不完美。如果在新安装的软件上遇到了问题,可以检查/var/log/messages看看有没有SELinux的错误。

2strict 能对整个系统进行保护,但设定复杂。

SELinux策略由TERBAC和多级安全MLS组成。通过替换安全服务器,可以支持不同的安全策略。SELinux使用策略配置语言定义安全策略,然后通过checkpolicy编译成二进制形式,存储在文件(如targeted策略/etc/selinux/targeted/policy/policy.20)中,在内核引导时读到内核空间。这意味着安全性策略在每次引导时都会有所不同。

除了在/etc/selinux/config中设定SELinux无效外,在系统启动的时候,也可以通过传递参数selinux给内核来控制它。

编辑/boot/grub/grub.conf文件,在如下所示行后追加selinux=0

四.SELinux基本操作

SELinux是个经过安全强化的Linux操作系统,实际上,大部分原有的Linux应用软件不用做修改就可以在它上面运行。真正做了特别修改的RPM包只有50多个。像文件系统EXT3都是经过了扩展。对于一些原有的命令也进行了扩展,另外还增加了一些新的命令。

1.文件操作

1ls

列出目录内容,命令后使用-Z或者-context参数。

2chcon

更改目标安全上下文。

3restorecon

恢复目标安全上下文。

4fixfiles

更改整个文件系统的文件标签,后面一般跟relabel,对整个系统relabel后,需重启。如果在根目录(“/”)上有.autorelabel空文件,每次系统重启时都调用fixfiles relabel

5star

tarSELinux下的互换命令,能把文件的标签也一起备份起来。

6cp

可以跟-Z context=CONTEXT,在拷贝文件时,指定目的文件的security context

2.进程domain

可通过ps -Z命令判断程序在哪个domain内运行。

3ROLE的确认和变更

1id

显示当前用户ID(包括安全上下文)。

使用-Z参数可仅显示用户安全上下文。

2newrole

更改用户安全上下文。

4.模式切换

1getenforce

得到当前的SELINUX值。

2setenforce

更改当前的SELINUX值,后面可以跟enforcingpermissive或者1,0

3sestatus

使用-v参数,会显示更多的当前SELinux状态信息。

五.seedit简介

SELinux Policy Editorseedit)是一款配置SELinux策略的工具。它由简化策略和工具组件组成,其主要特点是隐藏SELinux的具体细节,简化策略配置,方便策略应用。

带有可视化图形界面(GUI)的seedit如图1所示。

1 SELinux策略编辑器界面

实验步骤

本练习单人为一组。

首先使用“快照X”恢复Linux系统环境。

.增强Apache服务安全

从实验原理中已经知道Apache服务进程httpd的安全domain(域)为httpd_t,此域仅能够读被赋予httpd_sys_content_t标签的文件。

步骤一的设计思路是:在启用SELinux前,创建Web服务虚拟目录,并赋予虚拟目录读、写、执行等访问权限,验证页面访问情况;启用SELinux后,在虚拟目录没有httpd_sys_content_t标签的情况下,验证页面访问情况;最后给虚拟目录打上httpd_sys_content_t标签,验证页面访问情况。

1)在/opt目录下新建目录virdir

具体命令:mkdir /opt/virdir

2)编辑http服务配置文件/etc/httpd/conf/httpd.conf在末尾追加如下内容:

保存文件,重新启动httpd服务。虚拟目录virdir被创建完成。

具体命令:service https restart

3)在虚拟目录中创建test.php文件,完成功能是读取虚拟目录文件test.txt(若文件不存在,则创建),若读取成功向test.txt文件中写入信息:Hello World!,若执行成功页面显示信息:Write file success!test.php代码如下。

代码编写完成后,请同实验组主机访问当前主机test.php,如http://当前主机IP/virdir/test.php。页面访问信息为 open file failed

查看日志文件/var/log/httpd/error_log,分析产生该结果的原因: apache系统用户对text.php文件无写权限

4)改变虚拟目录(包括目录内文件)的所有者和属组为apache

操作方法:chown apacheapache / opt/virdir

Wirite file success!

权限修改完成后重启httpd服务。

请同实验组主机再次访问当前主机test.php。页面访问信息为 write file success

5)查看虚拟目录安全上下文

6)开启SELinux,工作模式:enforcing,策略类型:targeted

操作方法: vim /etc/selinux/configvi /

重启系统。

「注」开启SELinux重启时 ,内核会为文件系统打标签(relabel),这可能会花费若干时间,耐心等待。

7)请同实验组主机访问当前主机test.php。页面访问信息为 open file failed

查看日志文件/var/log/httpd/error_log,分析产生该结果的原因:

8)更改虚拟目录(包括目录内文件)的安全上下文,使其拥有httpd_sys_content_t标签。方法如下:

请同实验组主机再次访问当前主机test.php。页面访问信息为 write file successquit

解释上述原因:

二.增强Mysql数据库安全

在进行实验操作前使用“快照X”恢复Linux系统环境。

1)启动mysqld服务。

「注」 默认情况下,mysql管理员用户及密码均为空。

2)启动mysql客户端(控制台中输入命令:mysql),进入mysql控制台,依次进行如下操作:

通过上述SQL语句,完成在test库中创建testtable1表,并录入了一条信息。

3)移动目录/var/lib/mysql/test/opt目录下。

4)开启SELinux,工作模式:enforcing,策略类型:targeted。重启系统。

5)为起到实验效果,需通过点击“应用程序”|“附件”|“终端”来启动控制台。启动控制台后移动目录/opt/test/var/lib/mysql目录下,并查看testmysql目录安全上下文,二者的安全上下文分别是:

6)启动mysql服务。操作test库,尝试添加数据表testtable2,操作是否成功?

7)更改test(包括目录内文件)目录安全上下文,与mysql目录相同。

操作方法:

8)操作test库,尝试添加数据表testtable2,操作是否成功?

根据实验现象回答问题:

mysql服务进程mysqld的安全domain(域)

mysqld安全域对带有 标签的文件具有读写权限。

三.查看策略

在实验用的Linux系统环境中,已经安装了SeeditSELinux Policy Editor),单击控制面板“桌面”|“管理”,选择执行“SELinux Policy Editor”,弹出Seedit控制面板界面如图1所示。

1 SELinux策略编辑器界面

双击“Edit Policy”图标,打开“seedit policy editor”面板,单击“Open”按钮打开httpd_t,此时可以很容易阅读httpd_t域对httpd进程的行为限制。

本文来源:https://www.2haoxitong.net/k/doc/f50a7365cdbff121dd36a32d7375a417866fc1bf.html

《SE Linux 2.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式