4.1?实验名称
《Linux?访问控制机制分析》
1?、熟悉?Linux基本访问控制机制使用和原理
2?、熟悉?Linux?S?位的作用和使用
3?、熟悉强制访问控制?Selinux?原理及其使用
1?、Linux?基本访问控制机制
(1)在/home?下创建一个文件夹?test
(2)在文件夹下创建一个文本文件
(3)利用两种方法将文本文件的权限设置为属主完全控制、组可读和执行、其它用户只读
方法一:
方法二:
(4)将系统新建文件和文件夹的权限设置为?644 和?755?,重新创建文件观察权限值
664:
755:
(5)建立一个可执行文件,设置其?Suid?位;执行该文件,并通过命令观察该文件权限的变
化。
(6)编译执行课件?suid?部分提权到root?shell?的例子,分析其原理
原理:
execve?为内核级系统调用,用来执行参数?filename?字符串所代表的文件路径,这里是“/bin/sh?”,第二个参数是利用指针数组来传递给执行文件,并且需要以空指针(NULL)结束,最后一个参数则为传递给执行文件的新环境变量数组。
由于之前给?shell?文件设置?suid?位,在其他用户执行该脚本时,此用户的权限是该脚本
文件属主?root?的权限。
2?、强制访问控制?Selinux?使用
(1)启动?Selinux
vim?/etc/selinux/config?,将?disable?改成?1 后重启。
(2)查看系统的安全上下文
首先查看文件的安全上下文,使用?ls?-Z /var/www/html?来查看目录的安全上下文。
接着查看进程上下文,使用?ps?auxZ?| grep?-v?grep?| grep?sh
(3)安装?httpd
执行?yum?install?httpd。
接下来启动?httpd。
可以看到,httpd?进程的?selinux?类型为?http_t?,且存在多个?httpd?进程,具有相同的安全上下文。
(4)修改 /var/www?文件夹的类型,使其为?httpd?不允许访问的类型,然后检查web?服务器
是否还可以正常使用。
httpd?进程可以访问/var/www/html??目录,因为当前存在着相应的允许主体?httpd_t 访问客
体?http_sys_content_t 进行相关操作的的?selinux?规则。
首先在/var/www/html??目录中创建测试文件:echo?index.html?> /var/www/html/index.html。
当前web?服务器可以使用。
使用?ls?-Z /var/www/html/index.html?查看文件的安全上下文。
可以看到,文件的?selinux?type?为?httpd_sys_content_t?。需要注意的是,如果在/root??目录?创?建?另?一?个?测?试?文?件?(echo??index1.html??>?/root/index1.html)?并?将?测?试?文?件?移?动?到?/var/www/html/目录中(mv?/root/index1.html?/var/www/html/index1.html),查看测试文件的安全?上下文会发现?html?文件的?selinux?类型为?admin_home_t。这是因为文件的安全上下文不会因?为文件被移动而发生变化。也是因为这个原因,访问?index1.html?将拒绝访问,这是因为不?存在允许类型为httpd_t 的主体访问类型为?admin_home_t 的客体文件并进行读取操作的规则(可以使用?sesearch?-s?httpd_t -t?admin_home_t -c?file?-p?read?--allow?查找符合条件的规则)。
接下来使用?chcon?修改文件的安全上下文,方式是?chcon?<选项> <文件或目录?1>?[<文
件或目录?n>]。
可以看到无法访问服务器。
这是因为不存在允许类型为httpd_t 的主体访问类型为?admin_home_t 的客体文件并进行读取操作的规则。
要使其重新能访问:
当启用?SELinux?时,Apache?HTTP?服务器(httpd)默认情况下在受限的?httpd_t 域中运 行,并和其他受限制的网络服务分开。即使一个网络服务被攻击者破坏,攻击者的资源和可 能造成的损害是有限的。和?SELinux?上下文相关的?httpd?进程是?system_u:system_r:httpd_t:s0。
httpd?进程都运行在?httpd_t 域中。文件类型必须正确设置才能让?httpd?访问。例如?httpd?可以读取文件类型是?httpd_sys_content_t?,但不能写和修改。此外?httpd?不能访问?samba_share_t?类型的文件(Samba访问控制的文件),也不能访问用户主目录中被标记为与?user_home_t??文件类型,主要是防止?httpd?读写用户主目录中的文件并且继承其访问权限。httpd?可以读写的文件类型是?httpd_sys_content_rw_t。Apache?默认的文档根目录类型是?httpd_sys_content_t。