首页 > 编程知识 正文

centos7安装基本环境怎么选,centos7选择哪个基本环境

时间:2023-05-04 20:52:21 阅读:129458 作者:118

selinux

SELinux的全名是Security Enhanced Linux,它是一个安全的Linux。 在SELinux之前,根帐户可以自由访问所有文档和服务。 文件设置为777时,任何用户都可以访问和删除。 这种方式被称为主动访问机制(DAC ),不安全。

DAC自主访问控制:用户基于其文件权限确定对文件的操作,即基于文件的own、group、other/r、w、x权限进行限制。 Root有最高权限,不能限制。 r、w、x权限的划分太粗。 无法对不同的进程实现限制。

SELinux基于强制访问机制(MAC )。 简单来说,程序和访问对象都有安全标签(即SELinux上下文),只有相应的标签才能被授予访问权限。 否则,即使权限为777,也无法访问。

在SELinux上,访问控制属性称为安全上下文。 所有对象(文件、进程间通信信道、套接字、网络主机等)和主体)进程都具有相关联的安全上下文,一个安全上下文是用户(u )、角色) r 但是我们最关注的是第三个部分

当进程访问资源时,主体进程必须在selinux策略中的规则中释放,才能与目标资源进行安全上下文匹配,匹配失败则无法访问目标,匹配成功则访问目标因此,启用selinux后,如果出现权限不一致,则必须一步一步地分析可能的问题。

以上简单理解即可,以下内容要重点把握

1、查看和配置Selinux状态:

Selinux配置文件的位置:/etc/selinux/config,还有指向/etc/sysconfig/selinux的链接

使用config文件配置selinux (使用配置文件更改selinux状态是永久更改,在重新启动系统之前无效) )。

文件内容如下图所示。

SELINUX=enforcing

#这定义了selinux的状态。

#enforcing—强制模式系统受selinux保护。 只是你违反了战略,不能继续操作

#permissive—提示模式系统不受selinux保护,只需接收警告消息。 permissive启用了Selinux,但如果违反了策略,则即使继续操作,也会记录违反的内容(

# disabled -禁用selinux。

SELINUXTYPE=targeted

#此项定义了selinux使用哪个策略模块保护系统。 targeted仅针对apache、sendmail、bind、postgresql、nfs和cifs等网络服务提供保护。

所有上述策略配置都位于/etc/selinux目录中,且目录和策略名称相同

使用selinux相关命令查看和更改状态:(立即生效,但只是临时的)

a、sestatus询问selinux的动作状态

b、selinuxenabled是否要检查selinux是否打开并与echo $合作?返回值为0打开,1关闭。

c、getenforce查看selinux的状态

d、设置setenforceSelinux的运行状态,并启用“1启用”(Enforcing )、“0禁用”(0off )“持续”(Permissive )

2、显示安全上下文相关命令

要查看文件的上下文,请使用ls -Z

您可以使用ps Z查看流程上下文

可以使用idz查看用户上下文

安全上下文以用户:角色3360类型(域)标识符的形式显示。 ((此处的用户是指selinu用户) ) ) ) ) ) ) )。

3、文件复制和移动时安全上下文的变化如下所示。

以httpd为例,该httpd进程可以访问/zldsy/www/html下的文档对象

在/root目录下创建两个测试页文件。 例如,test1.html、test2.html等

将test1.html文件复制到/zldsy/www/html目录中,并将test2.html文件剪切到/zldsy/www/html目录中

查看html目录中文件的安全上下文

在上图中,可以看到在剪切操作期间文件的上下文没有更改,仍然是原始上下文,而在复制操作期间文件的上下文继承了目标目录的上下文。

从浏览器访问这两个web文件

可以看到te

st1.html页面能访问而test2.html却被拒绝访问

查看权限发现apache用户对这两个文件都具有r权限,但test2.html文件却拒绝访问。

原因就是因为httpd进程不能访问域类型标签是admin_home_t的资源,被selinux将访问拒绝了。

查看日志/zldsy/log/audit/audit.log

通过日志记录也能看到test2.html文件拒绝httpd进程访问。

由于此文件记录的信息很多不宜直接查看,可以借助audit2why和audit2allow

#audit2why

注:提供audit2why和audit2allow工具软件包

收集Selinux产生的日志,另一个工具是setroubleshoot,对应的软件包为

Setroubleshoot将错误信息写入/zldsy/log/messages中

#tail /zldsy/log/messages | grep setroubleshoot

上面的错误信息大概说的是”selinux阻止httpd访问这个文件,要查看完整的信息,请执行sealert命令”

可以用sesearch [--allow] [-s 主体类别] [-t 目标类别] [-b]查询详细规则

sesearch命令由下列软件包提供

找出目标资源类别为httpd_sys_content_t的相关信息

从上图显示信息表示[allow 主体程序安全上下文类别 目标资源安全上下文类别],说明这个资源类别可以被哪个主体程序类别所读取。

找出主体程序为httpd_t相关的所有信息

从上面的数据就可以看出程序httpd_t为个类别可以访问的哪些资源类别。

如何解决上述问题呢?解决方法就是更改test2.html文件的上下文。有两种方式,一种是通过restorerecon( restore context) 修复继承当前目录默认的上下文;一种是通过chcon (change context) 修改当前的上下文。

a.使用restorerecon( restore context) 修复继承当前目录默认的上下文

分两步实现:

首先为 /zldsy/www/html 这个目录下的所有文件添加默认标签类型:

semanage fcontext -a -t httpd_sys_content_t '/zldsy/www/html(/.*)?'

因为html目录的默认标签类型就是httpd_sys_content_t,所以此步可以省略

然后用新的标签类型标注已有文件:

restorecon -Rv /zldsy/www/html/, 之后 httpd就可以访问该目录下的文件了。

semanage和restorecon命令是由下列软件包提供的

b.使用chcon (change context) 修改当前的上下文

注:

chcon 意思是change context

-t type 类型

-R recursive 递归(特别适用于改变某个目录下所有文件的context)

-u user

-r role

--reference表示用test1.html文件的上下文修改test2.html文件的上下文。

最后再看一个概念,SELinux的布尔值。这个布尔值类似一个开关,打开的话,他对应的一些服务就允许执行,否则的话就拒绝执行。

看看有哪些布尔值

也可用semanage命令#semanage boolean –l

知道了布尔值的名字,可以通过sesearch 来确认他关联了哪些服务的域,比如httpd_enable_homedir允许下列规则,如果设置为off的话,那么他们都是无法访问的。

设置boolean值,-P为设置永久生效.

#setsebool [-P] 布尔值 on/off

下面看一个与布尔值有关的例子

确认已经启用了 Selinux、启动 FTP:

在匿名访问目录下创建 2 个文件进行测试,一个是在该目录下手动创建,这样

该文件会自动继承/zldsy/ftp/pub 下的目录上下文的值,一个用 mv 命令从 root 目录下移

动过来,这样的文件会保留 root 目录下的安全上下文,如下

使用匿名登录测试:

发现这里看不到 root.txt 文件

已知系统启动了 Selinux,先查看系统日志,有两个工具可以收集到 Selinux 产生的

日志,一个是 setroubleshoot,一个是 audit,先使用 audit 工具,使用方法

如下:

系统中提供了 audit 相关的命令,常用的有 audit2why 和 audit2allow,audit 产生的日志

放在/zldsy/log/audit, 由于此文件记录的信息很多不宜直接查看,可以借助 audit2why

命令,首先启动 audit

在客户端登录 FTP 服务器时会出发 audit deamon 产生日志:

AVC 是 access vector cache 的缩写,目的是记录所有与 SELinux 有关的存取统计资料。

根据日志中的建议,使用 audit2allow 命令查看给出的建议如下:

验证布尔值中有关 FTP 的定义

发现ftp_home_dir --> off,文件 root.txt 的类型刚好是 root:object_r:user_home_t:s0

所以更改此 bool 值就可以

(-P 是把该修改写到文件,下次启动仍然有效)

客户端登录测试,发现 root.txt 文件就可以访问了

总结一下,如果搭配了某个服务器,然后客户端无法正常访问,应该按照下面的顺序进行排错:

1.该服务的配置文件中是否开启了相关的权限 ,比如是否允许匿名用户写入等等;

2.文件系统的权限,比如是否需要使用chmod修改权限

3.SELinux的上下文和布尔值

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。