SELinux
Security Enhanced Linux 安全强化的 Linux
作用
强制限制某些操作 , 属于权限的一种
思考 : 到目前为止学过的 linux 中的权限 ?
u\g\o r\w\x ssid\sgid\stid acl attr
配置文件
/etc/selinux/config
15#root@rhel6 ~]#ll /etc/selinux/config |
重启电脑后生效 , 并永久生效
相关指令
- 查看当前 selinux 状态的命令 : getenforce/sestatus
- 设置 selinux 状态 ( 临时生效 ): setenforce [ Enforcing | Permissive | 1 | 0 ]
12#root@rhel6 ~]#getenforce |
操作限制的实现方法
- 通过 bool 值来进行操作的限制
- 1>getsebool -a <== 显示主机中所有的布尔值
- 2>setsebool [-PV] boolean value | bool1=val1 bool2=val2 …
- 通过安全上下文
主体(进程)与目标的安全上下文必须一致才能够顺利访问
查看安全上下文19#root@rhel6 ~]#ls -Z
-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 Desktop
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 Documents
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 Downloads
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 index.php3?stat=26
-rw-r--r--. root root system_u:object_r:admin_home_t:s0 install.log
-rw-r--r--. root root system_u:object_r:admin_home_t:s0 install.log.syslog
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 Music
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 Pictures
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 Public
-rw-r--r--. root root unconfined_u:object_r:admin_home_t:s0 root@172.25.0.10
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 Templates
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 Videos
安全上下文主要用冒号分为三个字段 :
Identify:role:type
身份识别 : 角色 : 类型1.5 selinux 所需要的服务
身份标识和角色并不重要,安全上下文里重要的就是这个类型,一个主体进程能不能读取到这个文件资源与类型字段有关。
之前我们说进程和文件的上下文的类型必须要匹配。这里涉及到两个专有名词,一个叫域,一个叫类型。其中主体程序中称为域,文件资源上称为类型,是不是有种听天书的感觉?很拗口吧?我们来举个列子。
先将httpd服务开启,service httpd start
Cd /var/www/html 这里是一个系列的网页文件,可以看到文件类型属于httpd_sys_content_t 还有httpd_sys_script_exec_t。
然后我们再看进程的上下文类型
先查看有没有这个进程 pstree | grep httpd
然后查看进程的安全上下文 ps aux -Z | grep http。
在这里Httpd是一个域,selinux的策略针对这个域制定了许多的规则,其中包括这个域可以读的目标资源类型,比如sys_content。
主题进程和目标的文件的安全上下文必须匹配不然会有权限报错的提示
修改安全上下文
使用chcon命令来更改安全上下文的类型[root@python tmp]# ls --context test.txt
-rw-r--r-- root root root:object_r:staff_tmp_t test.txt
[root@python tmp]# chcon -t etc_t test.txt
[root@python tmp]# ls -lZ test.txt
-rw-r--r-- root root root:object_r:etc_t test.txt
Selinux的日志分析工具sealert
setroubleshoot
40#root@rhel6 ~]#yum install -y setroubleshoot ===>安装日志分析工具 |
setroubleshot 将 selinux 相关的错误信息和解决方法记录在 /var/log/messages 日志中。cat /var/log/messages | grep setroubleshoot
auditd
- auditd —> 将 selinux 相关的信息记录在 /var/log/audit/audit.log 日志中,非常详细。
- sealert -a /var/log/audit/audit.log
selinux-policy-devel
el6 上没有该软件[root@rhel7 ~]# yum list|grep selinux-policy-devel
selinux-policy-devel.noarch 3.12.1-153.el7 server
64#root@rhel6 ~]#yum list|grep selinux-policy-devel
This system is not registered to Red Hat Subscription Management. You can use subscription-manager
to register.man
关键词 _selinux
查找和关键字相关的 selinux
限制具体内容 , 包括什么打开什么布尔值 , 需要设置怎样的安全上下文。