Linux自学笔记——Selinux简介

本文涉及的产品
访问控制,不限时长
简介:

SElinux是美国国家安全局(NSA)对于强制访问控制的实现,是linux历史上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发的一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在它的任务中所需要的文件。SElinux默认安装在Fedora和RedHat Enterprise Linux上,也可以作为其他发行版上容易安装的包得到。

      DAC,自主访问控制,任何程序对其资源享有完全的控制权,每个用户或进程可以随意修改自己的文件的权限,将其他权限授予给其他人而具有任意的访问权限、所有/组+权限标记通常称为自主访问控制。

      MAC,强制访问控制,一个进程能否访问某个资源,取决于运行这个进程的用户权限已经访问的资源的属主属组等属性。

Selinux有两种工作级别:

      Strict:每个进程都受到selinux的控制;

      Targeted:仅有限个进程收到selinux控制,只监控容易被入侵的进程;

Sandbox:subject operationobject

Subject:(主)process…:进程

Object:(宾)directory…:进程,文件,

  文件:open,read,write,close,chown,chmod

Subject:domain

Object:type

Selinux为每个文件提供了安全标签,也为进程提供了安全标签;

  user:role:type

  user:selinux的user

  role:角色

  type:类型

通过ls –Z可以查看文件的标签:

 wKioL1m479CQK1msAABkhRz7MyQ506.png-wh_50

同样可以查看进程的selinux属性:

 wKioL1m4792B6YXJAACdMeTN65M869.png-wh_50

      selinux规则库:

           规则:哪种域能访问哪种或哪些种类型的文件;

配置selinux:

      Selinux是否启用;

      给文件重新打标;

      设定某些布型特性;

Selinux的状态:

      enforcing:强制,每个受限的进程都必然受限;

      permissive:启用,每个受限的进程违规操作不会被禁止,而被记录在审计日志中;

      disabled:关闭;

相关命令:

      getenforece:获取selinux的当前状态;

      setenforce   0|1

           0:设置为permissive

           1:设置为enforcing

      wKiom1m48BDgOdsBAACH-bUfc-U466.png-wh_50

      此设定重启系统无效,并且在selinux不处于disabled状态才能设定;

      wKiom1m48BmAm30OAAAWMTzklBc847.png-wh_50

      配置文件:/etc/sysconfig/selinux,/etc/selinux/config

                 SELINUX=[disabled][enforcing][permissive]

      wKiom1m48CDTQr-0AAA7zcHEit8265.png-wh_50

给文件重新打标:

chcon命令:

      chcon - change file SELinux securitycontext

chcon [OPTION]... CONTEXTFILE...

              chcon[OPTION]... [-u USER] [-r ROLE] [-t TYPE] FILE...

                 chcon[OPTION]... --reference=RFILE FILE...

                 -R:递归打标; 

                 --reference=FILE:以FILE的标签为参照类型

                 -t TYPE:修改指定类型

                 -u:修改指定user

                 -r:修改指定role

       wKiom1m48CrTaSlsAACGA_acgbs194.png-wh_50

恢复默认标

restorecon[-R] /path/to/somewhere

      wKioL1m48AijaZ3sAAB7o7K0jAs388.png-wh_50

布尔型规则:

      getsebool命令:

           getsebool [-a] [boolean]

      wKiom1m48Dyx2at9AAByfj5jsng657.png-wh_50

      setsebool

           setsebool [ -PV] boolean value |bool1=val1 bool2=val2 ...

      wKiom1m48EbSCoRzAAAkJC5Kjmw700.png-wh_50



本文转自 claude_liu 51CTO博客,原文链接:http://blog.51cto.com/claude666/1964974,如需转载请自行联系原作者
相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
云安全基础课 - 访问控制概述
课程大纲 课程目标和内容介绍视频时长 访问控制概述视频时长 身份标识和认证技术视频时长 授权机制视频时长 访问控制的常见攻击视频时长
相关文章
|
3月前
|
Ubuntu Linux Python
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
在Linux系统中,使用Tkinter库时可能会遇到中文显示乱码的问题,这通常是由于字体支持问题导致的,可以通过更换支持中文的字体来解决。
224 0
Tkinter错误笔记(一):tkinter.Button在linux下出现乱码
|
3月前
|
Unix 关系型数据库 MySQL
Linux 简介
Linux 简介
72 2
Linux 简介
|
3月前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
132 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
4月前
|
Linux Docker 容器
Linux的namespace和cgroups简介
本文介绍了Linux的Namespace技术和cgroups,解释了它们如何帮助实现容器的隔离和资源限制。
127 7
Linux的namespace和cgroups简介
|
5月前
|
Unix Linux 开发工具
linux笔记 diff及patch的制作与使用
这篇文章是关于Linux系统中使用`diff`命令生成补丁文件以及使用`patch`命令应用这些补丁的详细教程和实战案例。
150 2
linux笔记 diff及patch的制作与使用
|
3月前
|
大数据 Linux 开发工具
【Linux】命令简介------迅速掌握Linux命令
【Linux】命令简介------迅速掌握Linux命令
|
5月前
|
Linux
Linux源码阅读笔记13-进程通信组件中
Linux源码阅读笔记13-进程通信组件中
|
5月前
|
Linux 开发者
Linux源码阅读笔记18-插入模型及删除模块操作
Linux源码阅读笔记18-插入模型及删除模块操作
|
5月前
|
数据采集 Linux
Linux源码阅读笔记20-PCI设备驱动详解
Linux源码阅读笔记20-PCI设备驱动详解
|
5月前
|
Linux
Linux源码阅读笔记19-插入删除模块实战
Linux源码阅读笔记19-插入删除模块实战