Linux之SELinux的基本应用

简介:

SELinux基础/激活或关闭SELinux/改变object的域/启用或关闭程序功能


获取更多帮助 《SELinux权威指南》


或许应该叫:如何理解Windows

Linux比Windows更安全,这样说不合理.

  安全等级: A>B>C>D

  Linux(c2) Windows(c2)

GUI界面:MAC>Windows

    图形工作站:mac

 

Windows 专业普及计算机系统。图形不如mac,又不够安全。


SELinux基础


1)访问模型

Linux原有访问模型:自主访问控制 DAC

    安全隐患: 进程所能访问资源的范围 为用户所能访问的资源范围

1
2
3
4
5
后门: rootkit程序
进程被胁持:
     基于进程作为跳板,就有了进程属主的权限 
         root
         普通用户--> 查看其他文件 --> 找到漏洞,提权操作

SELinux访问模型: 强制访问机制 MAC

    类似sandbox机制:进程启动在一个沙箱内部,

    为进程运行,启用一个专用的沙箱

1
2
sandbox 沙箱: 最小资源集合
进程脱离控制时,不能访问用户所有能访问的文件


2)SELinux工作级别

wKioL1mz6YWBNZtlAAARy9FjKRo167.png

strict 严格级别  每个进程都受到SELinux的控制

targetted      有限个进程受SELinux控制,监控容易被入侵的进程


3)SELinux工作方式

subject(主语) operation(谓) object(宾)

        subject: 进程

        operation: 取决于被操作对象支持的模式 及 操作者是否在有效区域内

        object: 进程、文件、用户

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

活动范围(域):

    subject: domain 

    object:  type


4)SELinux安全标签显示

SELinux为每个文件、进程提供安全标签

查看:

  进程:ps axuZ

    - 没有激活SELinux

1
例如:-   root      26238   3.0   0.4    4936   1076  pts/ 0     R+    21 : 24    0 : 00  ps axuZ

  文件: ls -Z 显示SELinux的安全上下文

1
例如:-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg

user:role:type

user: SELinux的user

role: 角色,类似linux的组

type: 类型, 沙箱的范围

subject: domain

object: type

object能被subject操作只有:type是domain的子集:domain == type 或 domain包含type

    

激活SELinux


1)配置文件位置:

wKioL1mz7FvQCZUuAAAcFRya6Cg261.png


2)SELinux状态

获取SELinux当前状态

1
getenforce

设定状态:当前有效,重启失效

1
2
3
setenforce  #
     0 设定为permissive
     1 设定为enforce

wKiom1mz7VDR3iMBAAATLYWfOQs953.png

enforcing   强制:受限的进程必然受限,不受限的进程不受限。

permissive  允许:受限的进程违规操作不会禁止,但会被记录于审计日志中。 日志位置:/var/log/audit.log

disabled   关闭


3)激活或关闭SELinux

    开启selinux: disabled --> enforcing/permissive

1
sed  -i  's,SELINUX=disabled,SELINUX=enforcing,'  /etc/selinux/config

    开启SELinux必须重启,在/重新挂载后,重新对所有文件打标才可以对selinux操作

wKiom1mz7_jRvdMRAAAWGGVlWv0453.png

    关闭selinux:enforcing/permissive --> disabled

1
sed  -i -r  's@(SELINUX=)(enforcing|permissive)@\1disabled@'  /etc/sysconfig/selinux


激活SELinux后

1)进程访问文件的安全上下文

    1)、进程的属主对文件的权限,通过

    2)、文件的type是否是进程domain的子集

        进程查看规则库,查看进程所属的domain是否被授权了能够访问文件所属type

            是:能访问

            否:被SELinux规则所拒绝,并记录至日志文件中 /var/log/audit.log,审计:在合理的使用范围内,进程对文件可执行的合理的操作

1
2
3
SELinux的规则库:
     规则:哪种域能访问哪种或哪些和类型内文件
         法无授权即禁止 --> 在SELinux规则库中没有定义的规则,均被禁止
1
2
进程如何访问非本域domain的文件?
     修改文件的type 属于进程domain即可

wKiom1mz_6CxLnfxAAAdbqmsdmY478.png


2)改变文件所属的域

wKioL1mz8j7DcRerAAAMximtTWI905.png


使用示例

wKiom1mz_DTwQUgKAAAeYlq1EjQ343.png

wKioL1mz_DSis3ydAABBWOIy1ss324.png


3)还原标签

wKiom1mz_JTj5robAAAWQqJTMmI406.png


使用示例

wKioL1mz_KbRnxK7AAB1UB72zBI888.png


4)设定程序功能开启或关闭

 默认对于某些程序的功能,相对安全级别较低的功能,将被SELinux自动被禁止,例如ftp的匿名用户:任何用户可以上传文件


获取程序功能sebool

  getsebool -a   所有程序功能 

  getsebool ftp_home_dir


设置程序功能

  setsebool [-P] sebool=value

    -P 永久有效,将修改的结果保存至策略库中 (需要一定时间:找到规则库,设定,转换为binary格式 )


  例如:

    setsebool ftp_home_dir 1

    setsebool ftp_home_dir 0


    setsebool ftp_home_dir on

    setsebool ftp_home_dir off











本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/1964022,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
缓存 Linux 开发者
Linux内核中的并发控制机制:深入理解与应用####
【10月更文挑战第21天】 本文旨在为读者提供一个全面的指南,探讨Linux操作系统中用于实现多线程和进程间同步的关键技术——并发控制机制。通过剖析互斥锁、自旋锁、读写锁等核心概念及其在实际场景中的应用,本文将帮助开发者更好地理解和运用这些工具来构建高效且稳定的应用程序。 ####
46 5
|
1月前
|
存储 安全 关系型数据库
Linux系统在服务器领域的应用与优势###
本文深入探讨了Linux操作系统在服务器领域的广泛应用及其显著优势。通过分析其开源性、安全性、稳定性和高效性,揭示了为何Linux成为众多企业和开发者的首选服务器操作系统。文章还列举了Linux在服务器管理、性能优化和社区支持等方面的具体优势,为读者提供了全面而深入的理解。 ###
|
4月前
|
Unix Linux Ruby
在windows和linux上高效快捷地发布Dash应用
在windows和linux上高效快捷地发布Dash应用
|
4月前
|
Linux iOS开发 开发者
跨平台开发不再难:.NET Core如何让你的应用在Windows、Linux、macOS上自如游走?
【8月更文挑战第28天】本文提供了一份详尽的.NET跨平台开发指南,涵盖.NET Core简介、环境配置、项目结构、代码编写、依赖管理、构建与测试、部署及容器化等多个方面,帮助开发者掌握关键技术与最佳实践,充分利用.NET Core实现高效、便捷的跨平台应用开发与部署。
400 3
|
4月前
|
存储 Linux 开发工具
【Azure App Service】本地Git部署Python Flask应用上云(Azure App Service For Linux)关键错误
【Azure App Service】本地Git部署Python Flask应用上云(Azure App Service For Linux)关键错误
|
4月前
|
存储 Linux 网络安全
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Linux/Linux Container)
【Azure App Service】.NET代码实验App Service应用中获取TLS/SSL 证书 (App Service Linux/Linux Container)
|
4月前
|
JavaScript Linux
【Azure App Service for Linux】NodeJS镜像应用启动失败,遇见 RangeError: Incorrect locale information provided
【Azure App Service for Linux】NodeJS镜像应用启动失败,遇见 RangeError: Incorrect locale information provided
|
4月前
|
JavaScript Linux API
【Azure 应用服务】NodeJS Express + MSAL 应用实现AAD集成登录并部署在App Service Linux环境中的实现步骤
【Azure 应用服务】NodeJS Express + MSAL 应用实现AAD集成登录并部署在App Service Linux环境中的实现步骤
|
4月前
|
前端开发 JavaScript Linux
【Azure 应用服务】在Azure App Service for Linux环境中,部署的Django应用,出现加载css、js等静态资源文件失败
【Azure 应用服务】在Azure App Service for Linux环境中,部署的Django应用,出现加载css、js等静态资源文件失败
|
4月前
|
Java Linux C++
【Azure 应用服务】App Service For Linux 部署Java Spring Boot应用后,查看日志文件时的疑惑
【Azure 应用服务】App Service For Linux 部署Java Spring Boot应用后,查看日志文件时的疑惑