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

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

nanshan 2024-10-15 11:28 9 浏览 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的信息。

相关推荐

服务器数据恢复—Raid5数据灾难不用愁,Raid5数据恢复原理了解下

Raid5数据恢复算法原理:分布式奇偶校验的独立磁盘结构(被称之为raid5)的数据恢复有一个“奇偶校验”的概念。可以简单的理解为二进制运算中的“异或运算”,通常使用的标识是xor。运算规则:若二者值...

服务器数据恢复—多次异常断电导致服务器raid不可用的数据恢复

服务器数据恢复环境&故障:由于机房多次断电导致一台服务器中raid阵列信息丢失。该阵列中存放的是文档,上层安装的是Windowsserver操作系统,没有配置ups。因为服务器异常断电重启后,rai...

服务器数据恢复-V7000存储更换磁盘数据同步失败的数据恢复案例

服务器数据恢复环境:P740+AIX+Sybase+V7000存储,存储阵列柜上共12块SAS机械硬盘(其中一块为热备盘)。服务器故障:存储阵列柜中有磁盘出现故障,工作人员发现后更换磁盘,新更换的磁盘...

「服务器数据恢复」重装系统导致XFS文件系统分区丢失的数据恢复

服务器数据恢复环境:DellPowerVault系列磁盘柜;用RAID卡创建的一组RAID5;分配一个LUN。服务器故障:在Linux系统层面对LUN进行分区,划分sdc1和sdc2两个分区。将sd...

服务器数据恢复-ESXi虚拟机被误删的数据恢复案例

服务器数据恢复环境:一台服务器安装的ESXi虚拟化系统,该虚拟化系统连接了多个LUN,其中一个LUN上运行了数台虚拟机,虚拟机安装WindowsServer操作系统。服务器故障&分析:管理员因误操作...

「服务器数据恢复」Raid5阵列两块硬盘亮黄灯掉线的数据恢复案例

服务器数据恢复环境:HPStorageWorks某型号存储;虚拟化平台为vmwareexsi;10块磁盘组成raid5(有1块热备盘)。服务器故障:raid5阵列中两块硬盘指示灯变黄掉线,无法读取...

服务器数据恢复—基于oracle数据库的SAP数据恢复案例

服务器存储数据恢复环境:某品牌服务器存储中有一组由6块SAS硬盘组建的RAID5阵列,其中有1块硬盘作为热备盘使用。上层划分若干lun,存放Oracle数据库数据。服务器存储故障&分析:该RAID5阵...

「服务器虚拟化数据恢复」Xen Server环境下数据库数据恢复案例

服务器虚拟化数据恢复环境:Dell某型号服务器;数块STAT硬盘通过raid卡组建的RAID10;XenServer服务器虚拟化系统;故障虚拟机操作系统:WindowsServer,部署Web服务...

服务器数据恢复—RAID故障导致oracle无法启动的数据恢复案例

服务器数据恢复环境:某品牌服务器中有一组由4块SAS磁盘做的RAID5磁盘阵列。该服务器操作系统为windowsserver,运行了一个单节点Oracle,数据存储为文件系统,无归档。该oracle...

服务器数据恢复—服务器磁盘阵列常见故障表现&解决方案

RAID(磁盘阵列)是一种将多块物理硬盘整合成一个虚拟存储的技术,raid模块相当于一个存储管理的中间层,上层接收并执行操作系统及文件系统的数据读写指令,下层管理数据在各个物理硬盘上的存储及读写。相对...

「服务器数据恢复」IBM某型号服务器RAID5磁盘阵列数据恢复案例

服务器数据恢复环境:IBM某型号服务器;5块SAS硬盘组成RAID5磁盘阵列;存储划分为1个LUN和3个分区:第一个分区存放windowsserver系统,第二个分区存放SQLServer数据库,...

服务器数据恢复—Zfs文件系统下误删除文件如何恢复数据?

服务器故障:一台zfs文件系统服务器,管理员误操作删除服务器上的数据。服务器数据恢复过程:1、将故障服务器所有磁盘编号后取出,硬件工程师检测所有硬盘后没有发现有磁盘存在硬件故障。以只读方式将全部磁盘做...

服务器数据恢复—Linux+raid5服务器数据恢复案例

服务器数据恢复环境:某品牌linux操作系统服务器,服务器中有4块SAS接口硬盘组建一组raid5阵列。服务器中存放的数据有数据库、办公文档、代码文件等。服务器故障&检测:服务器在运行过程中突然瘫痪,...

服务器数据恢复—Sql Server数据库数据恢复案例

服务器数据恢复环境:一台安装windowsserver操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。在windows服务器内装有SqlServer数据库。存储空间LU...

服务器数据恢复—阿里云ECS网站服务器数据恢复案例

云服务器数据恢复环境:阿里云ECS网站服务器,linux操作系统+mysql数据库。云服务器故障:在执行数据库版本更新测试时,在生产库误执行了本来应该在测试库执行的sql脚本,导致生产库部分表被tru...

取消回复欢迎 发表评论: