百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

linux系统的前置访问控制安全模块SELinux介绍

nanshan 2024-10-15 11:28 12 浏览 0 评论

Linux学习笔记总结(九十七)-linux系统的前置访问控制安全模块SELinux介绍

SELinux是Security enhanced Linux的简称,是美国国家安全局NSA和SCC开发的一个扩张强制访问控制安全模块。

linux系统的不足:

  1. 存在特权用户root:任何人只要得到root的权限,对于整个系统都可以为所欲为。
  2. 对于文件的访问权限的划分不够细:在linux系统里,对于文件的操作,只有所有者、所有组、其他三类划分,对于“其他”的用户再细分没有办法。
  3. SUID程序的权限升级:如果设置了SUID权限的程序有了漏洞的话,很容易被攻击者利用。
  4. DAC(Discretionary Access Control)问题:文件目录的所有者可以对文件进行所有的操作,这给系统整体的管理带来不便。

SELinux的特点:

  1. MAC(Mandatory Access Control)-对访问的控制彻底化

对于所有的文件、目录、端口这类的资源的访问,都可以是基于策略设定的,这些策略是由管理员地址的,一般用户是没有权限更改的。

  1. TE(Type Enforcement)-对于进程只付与最小的权限

Te概念在SELinux里非常的重要,它的特点是对所有的文件都赋予一个叫type的文件类型标签,对于所有的进程也赋予各自的一个叫domain的标签。Domain标签能够执行的操作也是由access vector在策略里定好的。

我们熟悉的apache服务器,httpd进程只能在http_t里运行,这个http_t的domain能执行的操作,比如能读网页内容文件赋予http_sys_content_t,密码文件赋予shadow_t,TCP的80端口赋予http_port_t等等。如果在access vector里我们不允许http_t来对http_port_t进行操作的话,Apache启动都启动不了。反过来说,我们只允许80端口,只允许读取被标为httpd_sys_content_t的文件,httpd_t就不能用别的端口,也不能更改那些标为httpd_sys_content_t的文件(read only)。

  1. domain迁移-防止权限升级

在用户环境里运行点对点下载软件azureus,你当前的domain是fu_t,但是你考虑到安全问题,你打算让他在azureus_t里运行,你要是在terminal里用命令启动azureus的话,它的进程的domain就会默认继承你实行的shell的fu_t.

有了domain迁移的话,我们就可以让azureus在我们制定的azureus_t里运行,在安全上面,这种做法更可取,它不会影响到你的fu_t。

下面是domain迁移指示的例子:

domain_auto_trans(fu_t,azureus_exec_t,azureus_t)

意思是:当在fu_t domain里,实行了被标为azureus_exec_t的文件时,domain从fu_t迁移到azureus_t。下面的apache启动的迁移图。注意了,因为从哪一个domain能迁移到http_t是在策略里定好了,所以要是我们手动(/etc/init.d/httpd start)启动apache的话,可能让然留在sysadm_t里,这样就不能完成正确的迁移。要用run_init命令来手动启动。

  1. RBAC(role base access control)-对于用户只付与最小的权限

对于用户来说,被划分成一些ROLE,即使是ROOT用户,你要是不在sysadmin_r里,也还是不能实行sysadmin_t管理操作的。因为,那些ROLE可以执行那些domain也是在策略里设定的。ROLE也是可以迁移的,但是也只能按策略规定的迁移。

SELinux控制切换:

2.6内核的版本都支持SELinux。

/etc/sysconfig/selinux标准设定:

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

# enforcing - SELinux security policy is enforced.

# permissive - SELinux prints warnings instead of enforcing.

# disabled - No SELinux policy is loaded.

SELINUX=enforcing

# SELINUXTYPE= can take one of three two values:

# targeted - Targeted processes are protected,

# minimum - Modification of targeted policy. Only selected processes are protected.

# mls - Multi Level Security protection.

SELINUXTYPE=targeted

SELinux有三种选择:disabled、permissive、enforcing。

disable:禁用。

permissive:就是SELinux有效,但是即使你违反了策略它依然让你继续操作,但是会把你的违反的内容记录下来。在我们开发策略的时候非常有用。相遇debug模式。

enforcing:就是你违反了策略,你就无法继续操作下去。

我们除了在/etc/sysconfig/selinux设定它外,在启动的时候,也可以通过传递参数SELinux给内核来控制它。(Fedora5默认是有效)

kernel/boot/vmlinuz-2.6.15-1.2054_FC5 ro root=LABEL=/ rhgb quiet selinux=0

上面的额变更可以让它无效。

SELinux TYPE:

现在主要有2大类:

一类就是红帽子开发的targeted,它只是对于,主要的网络服务进行保护,比apache,sendmail,bind,postgresql等,不属于那些domain的就都让他们在unconfined_t里,可导入性高,可用性好但是不能对整体进行保护。

另一类是strict,是NAS开发的,能对整个系统进行保护,但是设定复制。

SELinux的基本操作:

SELinux是经过安全强化的Linux操作系统,实际上,基本上原来的运用软件没有必要修改就能在它上面运行。真正做了特别修改的RPM包只有50多个。像文件系统EXT3都是经过了扩展。对于一些原有的命令也进行了扩张,另外还是增加了一些新的命令,接下来我们就来看看这些命令。

  1. 文件操作
  2. ls命令

在命令后面加个-Z或者加--context

ls –Z

ls –context

  1. restorecon

当这个文件在策略里有定义时,可以恢复原来的文件标签。

  1. setfiles

跟chcon一样可以更改一部分文件的标签,不需要对整个文件系统重新设定标签。

  1. fixfiles

一般是对整个文件系统,后面一般跟relabel,对整个系统relabel后,一般我们都重新启动。如果,在根目录下有.autorelabel空文件的话,每次重新启动时都要调用fixfiles relabel

  1. star

就是tar在SELinux下的互换命令,能把文件的标签也一起备份起来。

  1. cp

可以跟-Z,--context=CONTEXT在拷贝的时候指定目的地文件的security context

  1. find

可以跟—context查特定的type的文件

find /home/fu/ --context fu:fu_r:amule_t -exec ls -Z {}\:

  1. run_init

在sysadm_t里手动启动一些如apache之类的程序,也可以让它正常运行,domain迁移。

  1. 程序现在在哪个domain运行,我们可以在ps命令后后面加-Z

ps -eZ

  1. ROLE的确认和变更

命令id能用来确认自己的security context

这里,虽然是root用户,但也只是在一般的ROLE和staff_t里运行,如果在enforcing模式下,这时的root对于系统管理工作来说,是什么也干不了。

  1. 模式切换
  2. getenforce

得到当前的selinux值

  1. setenforce

更改当前的selinux值,后面可以更enforcing,permissive或者1,0

  1. sestatus

显示当前的selinxu的信息。

相关推荐

如何为MySQL服务器和客户机启用SSL?

用户想要与MySQL服务器建立一条安全连接时,常常依赖VPN隧道或SSH隧道。不过,获得MySQL连接的另一个办法是,启用MySQL服务器上的SSL封装器(SSLwrapper)。这每一种方法各有其...

Mysql5.7 出现大量 unauthenticated user

线上环境mysql5.7突然出现大量unauthenticateduser,进mysql,showprocesslist;解决办法有:在/etc/hosts中添加客户端ip,如192.16...

MySQL 在 Windows 系统下的安装(mysql安装教程windows)

更多技术文章MySQL在Windows系统下的安装1.下载mysql和Framework链接链接:百度网盘请输入提取码提取码:6w3p双击mysql-installer-communit...

MySql5.7.21.zip绿色版安装(mysql数据库绿色版安装)

1、去网上下载满足系统要求的版本(mysql-5.7.21-winx64.zip)2、直接解压3、mysql的初始化(1)以管理员身份运行cmd,在mysql中的bin目录下shift+右键-在...

MySQL(8.0)中文全文检索 (亲测有效)

在一堆文字中找到含有关键字的应用。当然也可以用以下语句实现:SELECT*FROM<表名>WHERE<字段名>like‘%ABC%’但是它的效率太低,是全盘扫描。...

新手教程,Linux系统下MySQL的安装

看了两三个教程。终于在哔哩哔哩找到一个简单高效的教程,成功安装,up主名叫bili逍遥bili,感兴趣可以去看看。下面这个是我总结的安装方法环境:CentOS764位1.下载安装包,个人觉得在...

麒麟服务器操作系统安装 MySQL 8 实战指南

原文连接:「链接」Hello,大家好啊,今天给大家带来一篇麒麟服务器操作系统上安装MySQL8的文章,欢迎大家分享点赞,点个在看和关注吧!MySQL作为主流开源数据库之一,被广泛应用于各种业务...

用Python玩转MySQL的全攻略,从环境搭建到项目实战全解析

这是一篇关于“MySQL数据库入门实战-Python版”的教程,结合了案例实战分析,帮助初学者快速掌握如何使用Python操作MySQL数据库。一、环境准备1.安装Python访问Pytho...

安装MySQL(中标麒麟 安装mysql)

安装MySQL注意:一定要用root用户操作如下步骤;先卸载MySQL再安装1.安装包准备(1)查看MySQL是否安装rpm-qa|grepmysql(2)如果安装了MySQL,就先卸载rpm-...

Mysql最全笔记,快速入门,干货满满,爆肝

目录一、MySQL的重要性二、MySQL介绍三、软件的服务架构四、MySQL的安装五、SQL语句六、数据库相关(DDL)七、表相关八、DML相关(表中数据)九、DQL(重点)十、数据完...

MAC电脑安装MySQL操作步骤(mac安装mysqldb)

1、在官网下载MySQL:https://dev.mysql.com/downloads/mysql/根据自己的macOS版本,选择适配的MySQL版本根据自己需求选择相应的安装包,我这里选择macO...

mysql主从(mysql主从切换)

1、本章面试题什么是mysql主从,主从有什么好处什么是读写分离,有什么好处,使用mycat如何实现2、知识点2.1、课程回顾dubboORM->MVC->RPC->SOApro...

【linux学习】以MySQL为例,带你了解数据库

做运维的小伙伴在日常工作中难免需要接触到数据库,不管是MySQL,mariadb,达梦还是瀚高等其实命令都差不多,下面我就以MySQL为例带大家一起来了解下数据库。有兴趣的小伙伴不妨评论区一起交流下...

玩玩WordPress - 环境简介(0)(玩玩网络科技有限公司)

简介提到开源博客系统,一般都会直接想到WordPress!WordPress是使用PHP开发的,数据库使用的是MySQL,一般会在Linux上运行,Nginx作为前端。这时候就需要有一套LNMP(Li...

服务器常用端口都有哪些?(服务器端使用的端口号范围)

下面为大家介绍一下,服务器常用的一些默认端口,以及他们的作用:  21:FTP服务所开放的端口,用于上传、下载文件。  22:SSH端口,用于通过命令行模式远程连接Linux服务器或vps。  23:...

取消回复欢迎 发表评论: