SELINUX详解

更新时间:2023-06-10 02:40:33 阅读: 评论:0

SELINUX知识点
Security Enhenced linux
如果某个用户需要以root权限执行某条命令怎么办?
如果某个用户a想要与用户b共同享有某个文件的全部权限怎么办?
practi
进程安全上下文 context
进程是用户获取资源的代理
一个进程在运行过程中对哪些文件具有访问权限是由进程的发起者的权限决定的
试想如果你的web服务器是以webman这个用户的身份运行的他对系统中所有o上置r的文件都具有读权限如果某个人劫持了web服务器那么他就获得了webman的所有权限他可以利用缓冲区溢出漏洞t uid等多种方式获得权限提升进而劫持整个系统此时传统的DAC模式就无法防范这种攻击
DAC 自主访问控制用户自主决定属于自己的文件权限
MAC 强制访问控制内核定义了所有用户包括root 的权限由linux决定由内核实现
当进程不运行时只是文件
Subject 是正在内存中执行的进程
object 动作承受者进程文件套接字
是否一个subject能够操作一个object 取决于linux的定义
在一个进程需要运行以完成某种任务时 linux为此进程规定了一个运行环境sandbox,此环境限制了此进程可以进行的操作和可以访问的文件此时这个进程可以活动的范围就由linux限定如果是传统的DAC 此进程的行为权限则由运行它的用户的权限决定,此时它的活动范围是整个系统
linux将进程分类将资源分类定义了那个进程在哪个范围内运行只能访问哪些资源此时不管它对其它的资源有读写权限此时只要linux不允许它就不能访问
(1)首先设置开启linux的全局设置:
查看和设置linux状态、配置文件、配置选项:
临时查看和设置:
#getenforce                          //查看linux状态
#status –bv                        //查看系统当前运行的linux的状态
#module –l                        //查看linux加载的内核模块
#alert -a /var/log/audit/audit.log  //查看linux错误日志
#system-config-linux                //SElinux的图形化管理工具
#tenforce 1/0                      // 把linux临时设为enforcing/permissive
ls -Z  ps -Z  id -Z                //分别可以看到文件,进程和用户的SELinux属性
info                                //查询SElinux的policy信息
查看文件系统的扩展属性:getfattr
[root@linuxas ~]# getfattr -m. -d /etc/passwd
getfattr: Removing leading '/' from absolute path names
# file: etc/passwd
curity.linux="system_u:object_r:etc_t:s0\000"
查看的文件的 curity.linux 属性中储存了此文件的安全上下文, 所以上面例子中的上下文就是
system_ubject_r:etc_t 。
所有运行了SE Linux的ext2/3文件系统上都有 curity.linux 这个属性。
内核可以直接接受linux参数所以也可以在f 中 kernel行最后添加:
resistance是什么意思
linux=0 向内核传递参数禁用linux,如编辑/f :
title Red Hat Enterpri Linux Server (2.6.18-8.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-8.el5 ro root=LABEL=/ rhgb quiet linux=0
initrd /initrd-2.6.18-8.el5.img
SELINUXTYPE=targeted
此参数可选项:targeted和strice。分别是targeted只控制关键网络服务,strice控制所有的服务
如果linux已经启用想让它在开机立即进入某种状态
enforce=1/0 状态为enforcing/premissive
永久设置:
配置文件位置: /etc/linux/config 它还有个链接在 /etc/sysconfig/linux
# SELINUX= can take one of the three values:
# enforcing - SELinux curity policy is enforced. (强制限制状态)
# permissive - SELinux prints warnings instead of enforcing. (warn-mode,只警告并记录操作并不真正阻止)    # disabled - SELinux is fully disabled. (linux禁用状态)
mba联考
例如设置:SELINUX=enforcing
# SELINUXTYPE= type of policy in u. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection. (高精细度控制模式)
例如设置:SELINUXTYPE=targeted
redhat 将那些通常容易受攻击被利用的文件/进程默认置于linux标签此种规定范围是一种linux类型
redhat支持前两种类型:    SELINUXTYPE=targeted/strict/mls 普通控制级别/严格控制级别/军事级别
需要重启系统来启动SELinux新的工作模式
getbool        # 获取本机linux策略值,也称为bool值
# linux的设置一般通过两个部分完成的,一个是安全上下文,另一个是策略,策略值是对安全上下文的补充
tbool -P allow_ftpd_anon_write=1        # -P 是永久性设置,否则重启之后又恢复预设值。
示例:
# tbool -P allow_ftpd_anon_write=1
# getbool allow_ftpd_anon_write
allow_ftpd_anon_write --> on
注意:如果仅仅是安全上下文中设置了vsftpd进程对某一个目录的访问,配置文件中也允许可写,
但是linux中策略中不允许可写,仍然不可写。所以基于linux保护的服务中,安全高很多。
yum -y install policycoreutils-newrole # Usage: System -> Management -> SElinux
star :就是tar在SELinux下的互换命令,能把文件的标签也一起备份起来。
cp 可以跟 -Z, --context=CONTEXT 在拷贝的时候指定目的地文件的curity context
find 可以跟–context 查特定的type的文件。
(2)linux对文件/用户/进程的限制机制:
处于执行状态的进程/程序:subject (动作的发出者)
资源(file process socket ...):object (动作的承受者)
各种subject之间的权限不同优先级不同所需要的资源不同,把具有相同权限的进程标识把具有相同权限的文件
标识。linux给每个进程按类划分role角色角色定义了谁可以访问哪些资源,给每个资源置上标签标签标明了哪些角色可以访问。
大破天幕杀机主题曲linux利用ext3的扩展属性来标识这些资源
# lsattr 查看文件扩展属性的标识位
------------- ./
------------- ./install.log
------------- ./anaconda-ks.cfg
------------- ./install.log.syslog
------------- ./dead.letter
进程所属的类--domain    资源所属的类--type
到底哪些domain中的subject可以访问哪些type中的object 取决于linux的策略机制
desir策略(Policy) 由Administrator 定义 (kernel2.6以后 linux已经不再区分进程和资源)
标签 label 安全上下文context
标签(label) system_u:object_r:ur_home_t
安全上下文(context) 一个进程运行的时候所属的域以及通过规则定义的它能够获取的所有资源 (由标签来表现)  (3)文件的linux标签
#ls -Z 查看文件标签 --context(等同于-Z) 或者--scontext (只显示安全上下文) 或者--lcontext (意为
ll+context)
-rw-------  root root system_u:object_r:ur_home_t    anaconda-ks.cfg
ur  :    role  : type
label 通常由3段组成其实有5段ur_u:object_r:ur_home_t
.属主域(ur):角色域(object role):类型域(ur type):敏感度:类别
类型域很重要比如说 tmp目录下的文件type字段通常都是tmp_t ,type字段决定了哪些subject可以访问它
还有ur_home_dir_t等等。
在subject运行过程中还可以进行域切换进而完成自身对资源访问权限的切换
# ls -
-rw-r--r--  root root root:object_r:ur_home_t    a.txt
#chcon 意思是change context
-t type 类型
-R recursive 递归(特别适用于改变某个目录下所有文件的context)
-u ur
-r role
--reference 源文件目标文件          # 复制安全上下文
#chcon -- b.txt 将b以a为准设置linux标签 (以引用方式改变文件标签)
# 将a.txt 恢复默认标签
runcon 使用特定的context来执行指令
# runcon -t ur_home_t cat /etc/passwd
root:system_r:ur_home_t:SystemLow-SystemHigh is not a valid context
查看某种服务是否受到SELinux的保护
[root@linuxas ~]# getbool -a (RHEL4:inactive受保护,active不受保护;RHEL5:off受保护,on不受保护)
(4)linux 默认标签的定义文件
/etc/linux/targeted/
此目录下定义了targeted 类型的linux所有策略和文件默认标签类型
/etc/linux/targeted/policy/
此目录显示了所有的policy(策略)
/etc/linux/targeted/contexts/files
此目录中的几个文件定义了在不同目录下创建文件的默认标签是什么
大多数文件都是ur_home_t 目录为ur_dir_t
恢复默认标签的命令则是以此为准
(5)用户/进程的linux标签
#id student 可以查看用户的linux标签
reviveuid=500(student) gid=500(student) groups=500(student)
context=root:system_r:unconfined_t:SystemLow-SystemHigh
#ps auxZ 查看进程的linux标签劳动节 英文
system_u:system_r:getty_t      root      2451  0.0  0.0  1664  444 tty3    Ss+  Jul29  0:00
/sbin/mingetty tty3
其中有一种tpye叫做 unconfined 未定义的类型表示不受linux控制它的权限模型仍是DAC的
(6)查看和设置linux策略
roles(规则)组合起来就是策略策略就是规则的库
#getbool -a 查看所有可以通过bool型变量控制linux状态的功能
qemu_u_usb --> on 是否开启usb功能依旧的英文
allow_httpd_anon_write --> off 是否开启httpd匿名写入功能
设置某个功能的linux状态:
#tbool pppd_for_ur 1/0 或者on/off 临时设置开启/关闭
#tbool -P pppd_for_ur 1/0 或者on/off 永久设置开启/关闭
#system-config-linux 图形化界面设置linux配置 (不建议)
通过这种方式改变linux或者防火墙规则可能会被系统默认规则限制导致设置无效
#manage {login/ur/port/interface/fcontext/translation} -l [-options] 强大的linux管理命令
例如 #manage login -l 列出login功能中可用的子命令
# SElinux对服务的应用
linux的设置分为两个部分,修改安全上下文以及策略,下面收集了一些应用的安全上下文,
供配置时使用,对于策略的设置,应根据服务应用的特点来修改相应的策略值。
1.3.1 SElinux与samba
1.samba共享的文件必须用正确的linux安全上下文标记。
chcon -R -t samba_share_t /tmp/abc
如果共享/home/abc,需要设置整个主目录的安全上下文。
chcon -R -r samba_share_t /home
2.修改策略(只对主目录的策略的修改)
tbool -P samba_enable_home_dirs=1
tbool -P allow_smbd_anon_write=1
getbool 查看
samba_enable_home_dirs -->on
allow_smbd_anon_write --> on /*允许匿名访问并且可写*/
1.3.2 SElinux与nfs
linux对nfs的限制好像不是很严格,默认状态下,不对nfs的安全上下文进行标记,而且在默认状态的策略下,nfs 的目标策略允许nfs_export_all_ro
nfs_export_all_ro
nfs_export_all_rw值为0
所以说默认是允许访问的。
但是如果共享的是/home/abc的话,需要打开相关策略对home的访问。
tbool -P u_nfs_home_dirs boolean 1
getbool u_nfs_home_dirs
catti是什么1.3.3 SElinux与ftp
1.如果ftp为匿名用户共享目录的话,应修改安全上下文。
chcon -R -t public_content_t /var/ftp
chcon -R -t public_content_rw_t /var/ftp/incoming
2.策略的设置
tbool -P allow_ftpd_anon_write =1
getbool allow_ftpd_anon_write
allow_ftpd_anon_write--> on
1.3.4 SElinux与http
apache的主目录如果修改为其它位置,linux就会限制客户的访问。
1.修改安全上下文:
chcon -R -t httpd_sys_content_t /home/html
由于网页都需要进行匿名访问,所以要允许匿名访问。
2.修改策略:
tbool -P allow_ftpd_anon_write = 1
tbool -P allow_httpd_anon_write = 1
tbool -P allow_<;协议名>_anon_write = 1
关闭linux对httpd的保护
httpd_disable_trans=0
1.3.5 SElinux与公共目录共享
如果ftp,samba,web都访问共享目录的话,该文件的安全上下文应为:
public_content_t
public_content_rw_t
其它各服务的策略的bool值,应根据具体情况做相应的修改。
(7)linux服务器配置文件
-P是永久有效的意思
===ftp===
//If you want to share files anonymously
chcon -R -t public_content_t /var/ftp
/
/If you want to tup a directory where you can upload files
chcon -t public_content_rw_t /var/ftp/incoming
You must also turn on the boolean allow_ftpd_anon_write
tbool -P allow_ftpd_anon_write=1
//If you are tting up this machine as a ftpd rver and wish to allow urs to access their home directorories tbool -P ftp_home_dir 1
//If you want to run ftpd as a daemon
tbool -P ftpd_is_daemon 1
//You can disable SELinux protection for the ftpd daemon
tbool -P ftpd_disable_trans 1
===httpd===
//If you want a particular domain to write to the public_content_rw_t domain
tbool -P allow_httpd_anon_write=1
or
tbool -P allow_httpd_sys_script_anon_write=1
//httpd can be tup to allow cgi scripts to be executed
tbool -P httpd_enable_cgi 1
//If you want to allow access to urs home directories
tbool -P httpd_enable_homedirs 1
chcon -R -t httpd_sys_content_t ~ur/public_html英语b级考试技巧
//httpd is allowed access to the controling terminal
//such that one httpd rvice can not interfere with another
tbool -P httpd_unified 0
/
/loadable modules run under the same context as httpd
tbool -P httpd_builtin_scripting 0
//httpd scripts are allowed to connect out to the network
tbool -P httpd_can_network_connect 1
// You can disable suexec transition
tbool -P httpd_suexec_disable_trans 1
//You can disable SELinux protection for the httpd daemon by executing
tbool -P httpd_disable_trans 1

本文发布于:2023-06-10 02:40:33,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/78/916061.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:文件   进程   策略   标签   权限   设置   用户
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图