SELINUX控制

SELINUX

所有操作系统访问控制都是以关联的客体和主体的某种类型的访问控制属性为基础的。在SELinux中,访问控制属性叫做安全上下文。所有客体(文件、进程间通讯通道、套接字、网络主机等)和主体(进程)都有与其关联的安全上下文,一个安全上下文由三部分组成:用户、角色和类型标识符。常常用下面的格式指定或显示安全上下文:

当一个subject(如: 一个应用)试图访问一个object(如:一个文件),Kernel中的策略执行服务器将检查AVC (Access Vector Cache), 在AVC中,subject和object的权限被缓存(cached)。如果基于AVC中的数据不能做出决定,则请求安全服务器,安全服务器在一个矩阵中查找“应用+文件”的安全环境。然后根据查询结果允许或拒绝访问,拒绝消息细节位于/var/log/messages中。

查询selinux状态

命令:getenforce #查询结果有3种状态
1、enforcing #如果违反了策略,无法继续操作,表示强制
2、disabled #禁止
3、permissive #selinux有效,即是违法策略,依旧可以继续操作,但是会有警告,查看警告信息:cat /var/log/audit/audit.log

更改selinux状态
1.更改配置文件

查看selinux初始状态
这里写图片描述
更改selinux状态为disabled
这里写图片描述
reboot后生效:

2.临时更改

setenforce 1 设置SELinux 成为enforcing模式
setenforce 0 设置SELinux 成为permissive模式

安全上下文

安全上下文有四个字段,分别用冒号隔开。形如:system_u:object_r:admin_home_t:s0。

1.ls -Z #查看文件的安全上下文

[root@foundation79 ~]# ls -Zd test/
drwxr-xr-x root root ?                                test/
[root@foundation79 ~]# ls -Zd /var/ftp/
drwxr-xr-x root root ?                                /var/ftp/

semanage fcontext -l #内核指定的所有文件的安全上下文的列表 ; 查看文件安全上下文(man semanage fontext)

[root@foundation79 ~]# semanage fcontext -l | grep test/
/usr/lib/pgsql/test/regress(/.*)?                  all files          system_u:object_r:postgresql_db_t:s0 
/usr/lib/pgsql/test/regress/.*\.sh                 regular file       system_u:object_r:bin_t:s0 
/usr/lib/pgsql/test/regress/.*\.so.*               regular file       system_u:object_r:lib_t:s0 
/usr/lib/pgsql/test/regress/pg_regress             regular file       system_u:object_r:postgresql_exec_t:s0 
[root@foundation79 ~]# semanage fcontext -l | grep /var/ftp/
/var/ftp/bin(/.*)?                                 all files          system_u:object_r:bin_t:s0 
/var/ftp/etc(/.*)?                                 all files          system_u:object_r:etc_t:s0 
/var/ftp/lib(/.*)?                                 all files          system_u:object_r:lib_t:s0 
/var/ftp/lib/ld[^/]*\.so(\.[^/]*)*                 regular file       system_u:object_r:ld_so_t:s0 

2.临时修改
chcon [-R] [-t type] 目录|文件 #临时修改安全上下文,在修改了selinux状态后重启系统,安全上下文会变回来

[root@foundation79 ]# setenforce 0  
[root@foundation79 ]# getenforce
Permissive
[root@foundation79 ]# mv /home/westos/westos /var/ftp/pub  
[root@foundation79 ]# ls -Z /var/ftp/pub                         ##查看安全上下文
-rw-rw-r--. ftp    ftp  system_u:object_r:public_content_t:s0 group
-rw-r--r--. westos ftp  system_u:object_r:public_content_t:s0 profile
drwxrwxr-x. ftp    ftp  system_u:object_r:public_content_t:s0 test
-rw-r--r--. root   root unconfined_u:object_r:mnt_t:s0   westos
[root@foundation79 ]# ps auxZ | grep vsftpd                   ##检测几个文件区别
system_u:system_r:ftpd_t:s0-s0:c0.c1023 root 1308 0.0  0.0 52760  568 ?        Ss   05:06   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 root 2369 0.0  0.0 112644 936 pts/0 R+ 05:14   0:00 grep --color=auto vsftpd

3.永久修改文件的上下文 semanage fcontext
semanage 命令 -l ##查看

• restorecon 是 policycoreutil 软件包的一部分
• semanage 是 policycoreutil-python 软件包的一部分

[root@foundation79 yum.repos.d]# ls -lZ /var/ftp  ##安全上下文为public_content_t
drwxr-xr-x. root root system_u:object_r:public_content_t:s0 pub
[root@foundation79 yum.repos.d]# ls -lZ /westos  ##安全上下文为default_t
-rw-r--r--. root root system_u:object_r:default_t:s0   westosfile1
-rw-r--r--. root root system_u:object_r:default_t:s0   westosfile2
-rw-r--r--. root root system_u:object_r:default_t:s0   westosfile3
-rw-r--r--. root root system_u:object_r:default_t:s0   westosfile4
-rw-r--r--. root root system_u:object_r:default_t:s0   westosfile5
[root@foundation79 yum.repos.d]# semanage fcontext -l | grep westos  ##特定搜索查看文件安全上下文,westos中没有符合要求的安全上下文
[root@foundation79 yum.repos.d]# semanage fcontext -l | grep var/ftp  ##在var/ftp中符合要求的安全上下文的文件
/var/ftp(/.*)?                                     all files          system_u:object_r:public_content_t:s0
/var/ftp/bin(/.*)?                                 all files          system_u:object_r:bin_t:s0
/var/ftp/etc(/.*)?                                 all files          system_u:object_r:etc_t:s0
/var/ftp/lib(/.*)?                                 all files          system_u:object_r:lib_t:s0
/var/ftp/lib/ld[^/]*\.so(\.[^/]*)*                 regular file       system_u:object_r:ld_so_t:s0

监控 SELinux 冲突

• 必须安装 setroubleshoot-server 软件包 , 才能将SELinux 消息发送至 /var/log/messages
• etroubleshoot-server 侦听/var/log/audit/audit.log 中的审核信息并将简短摘要发送至 /var/log/messages
• 摘要包括 SELinux 冲突的唯一标识符 ( UUIDs ),可用于收集更多信息。

Sealert -l UUID 用于生成特定事件的报告。

Sealert -a /var/log/audit/audit.log 用于在该文件中生成所有事件的报告效果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值