原文链接:http://blog.csdn.net/huangbiao86/article/details/6641893

1.1 SElinux概述

SELinux(Security-Enhanced Linux) 是美国国家安全局(NAS)对于强制访问控 制的实现,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。大部分使用 SELinux 的人使用的都是SELinux就绪的发行版,例如 Fedora、Red Hat Enterprise Linux (RHEL)、Debian 或 Gentoo。它们都是在内核中启用SELinux 的,并且提供一个可定制的安全策略,还提供很多用户层的库和工具,它们都可以使用 SELinux 的功能。

1.1.1 SElinux特点

1.MAC

对访问的控制彻底化,对所有的文件、目录、端口的访问都是基于策略设定的,可由管理员时行设定。

2.RBAC

对于用户只赋予最小权限。用户被划分成了一些role(角色),即使是root用户,如果不具有sysadm_r角色的话,也不是执行相关的管理。哪里role可以执行哪些domain,也是可以修改的。

3.安全上下文

当启动selinux的时候,所有文件与对象都有安全上下文。进程的安全上下文是域,安全上下文由用户:角色:类型表示。

(1)系统根据pam子系统中的pam_selinux.so模块设定登录者运行程序的安全上下文

(2)rpm包安装会根据rpm包内记录来生成安全上下文,

(3)如果是手工他建的,会根据policy中规定来设置安全上下文,

(4)如果是cp,会重新生成安全上下文。

(5)如果是mv,安全上下文不变。

1.1.2 安全上下文格式

安全上下文由user:role:type三部分组成,下面分别说明其作用:

1.user identity:类似linux系统中的UID,提供身份识别,安全上下文中的一部分。

三种常见的user:

user_u-:   普通用户登录系统后预设;

system_u-:开机过程中系统进程的预设;

root-:    root登录后预设;

在targeted policy中users不是很重要;

在strict policy中比较重要,的有预设的selinuxusers都以 "_u"结尾,root除外。

2.role

文件与目录的role,通常是object_r;

程序的role,通常是system_r;

用户的role,targetedpolicy为system_r;

strict policy为sysadm_r,staff_r,user_r

用户的role,类似于系统中的GID,不同的角色具备不同的权限;用户可以具备多个role;但是同一时间内只能使用一role;

role是RBAC的基础;

3.type

type:用来将主体与客体划分为不同的组,组每个主体和系统中的客体定义了一个类型;为进程运行提供最低的权限环境。

当一个类型与执行的进程关联时,该type也称为domain,也叫安全上下文。

域或安全上下文是一个进程允许操作的列表,决字一个进程可以对哪种类型进行操作。

1.1.3 SElinux配置文件

vi/etc/selinux/config

# This filecontrols the state of SELinux on the system.

# SELINUX= cantake one of these three values:

# enforcing -SELinux security policy is enforced.

# permissive -SELinux prints warnings instead of enforcing.

# disabled -SELinux is fully disabled.

SELINUX=enforcing

#SELINUX=disabled

# SELINUXTYPE=type of policy in use. Possible values are:

# targeted -Only targeted network daemons are protected.

# strict -Full SELinux protection.

SELINUXTYPE=targeted

#SELINUX有「disabled」「permissive」,「enforcing」3种选择。

1.模式的设置

enforcing:强制模式,只要selinux不允许,就无法执行

permissive:警告模式,将该事件记录下来,依然允许执行

disabled:关闭selinux;停用,启用需要重启计算机。

2.策略的设置

targeted:保护常见的网络服务,是selinux的默认值;

stric:提供RBAC的policy,具备完整的保护功能,保护网络服务,一般指令及应用程序。

策略改变后,需要重新启动计算机。

也可以通过命令来修改相关的具体的策略值,也就是修改安全上下文,来提高策略的灵活性。

3.策略的位置

/etc/selinux/<策略名>/policy/

1.2 SElinux命令介绍

1.2.1 查询SElinux状态命令

1.查询selinux状态

[root@redhat~]# sestatus

SELinux status:                 enabled

SELinuxfsmount:                /selinux

Currentmode:                   enforcing

Mode fromconfig file:          enforcing

Policyversion:                 21

Policy fromconfig file:        targeted

2.查询selinux激活状态

[root@redhat~]# selinuxenabled

[root@redhat~]# echo $?

0

如果为-256为非激活状态。

1.2.2 切换SElinux类型

1.切换成警告模式

[root@redhat~]# setenforce 0或setenforce permissive

[root@redhat~]# sestatus

SELinuxstatus:                 enabled

SELinuxfsmount:                /selinux

Currentmode:                   permissive

Mode fromconfig file:          enforcing

Policyversion:                 21

Policy fromconfig file:        targeted

[root@redhat~]# getenforce

Permissive

2.切换成强制模式

[root@redhat~]# setenforce 1

[root@redhat~]# getenforce

Enforcing

注:使用setenforce切换enforcing与permissive模式不需要重启计算机。

1.2.3 检查安全上下文

1.检查帐号的安全上下文

[root@redhat~]# id -Z

root:system_r:unconfined_t:SystemLow-SystemHigh

2.检查进程的安全上下文

[root@redhathome]# ps -Z

LABEL                             PIDTTY          TIME CMD

root:system_r:unconfined_t:SystemLow-SystemHigh2383 pts/0 00:00:00 bash

root:system_r:unconfined_t:SystemLow-SystemHigh2536 pts/0 00:00:00 ps

3.检查文件与目录的安全上下文

[root@redhathome]# ls -Z

drwx------  tom  tom  system_u:object_r:user_home_dir_ttom

1.2.4 修改文件/目录安全上下文与策略

1.chcon命令

chcon -u[user]  对象

-r[role]

-t[type]

-R递归

示例:

chcon -R -tsamba_share_t /tmp/abc

注:安全上下文的简单理解说明,受到selinux保护的进程只能访问标识为自己只够访问的安全上下文的文件与目录。

例如:上面解释为使用smb进程能够访问/tmp/abc目录而设定的安全上下文。

2.getsebool命令

获取本机selinux策略值,也称为bool值。

getsebool-a  命令同sestatus -b

[root@redhatfiles]# getsebool -a

NetworkManager_disable_trans--> off

allow_cvs_read_shadow--> off

allow_daemons_dump_core--> on

allow_daemons_use_tty--> off

allow_execheap--> off

allow_execmem--> on

allow_execmod--> off

allow_execstack--> on

allow_ftpd_anon_write--> off

allow_ftpd_full_access--> off

...

httpd_disable_trans--> off

说明:selinux的设置一般通过两个部分完成的,一个是安全上下文,另一个是策略,策略值是对安全上下文的补充。

3.setsebool命令

setsebool -Pallow_ftpd_anon_write=1

-P 是永久性设置,否则重启之后又恢复预设值。

示例:

[root@redhatfiles]# setsebool -P allow_ftpd_anon_write=1

[root@redhatfiles]# getsebool allow_ftpd_anon_write

allow_ftpd_anon_write--> on

说明:如果仅仅是安全上下文中设置了vsftpd进程对某一个目录的访问,配置文件中也允许可写,但是selinux中策略中不允许可写,仍然不可写。所以基于selinux保护的服务中,安全性要高于很多。

1.3 SElinux应用

selinux的设置分为两个部分,修改安全上下文以及策略,下面收集了一些应用的安全上下文,供配置时使用,对于策略的设置,应根据服务应用的特点来修改相应的策略值。

1.3.1 SElinux与samba

1.samba共享的文件必须用正确的selinux安全上下文标记。

chcon -R -t samba_share_t /tmp/abc

如果共享/home/abc,需要设置整个主目录的安全上下文。

chcon -R -r samba_share_t /home

2.修改策略(只对主目录的策略的修改)

setsebool -P samba_enable_home_dirs=1

setsebool -P allow_smbd_anon_write=1

getsebool 查看

samba_enable_home_dirs -->on

allow_smbd_anon_write --> on

1.3.2 SElinux与nfs

selinux对nfs的限制好像不是很严格,默认状态下,不对nfs的安全上下文进行标记,而且在默认状态的策略下,nfs的目标策略允许nfs_export_all_ro

nfs_export_all_ro

nfs_export_all_rw值为0

所以说默认是允许访问的。

但是如果共享的是/home/abc的话,需要打开相关策略对home的访问。

setsebool -Puse_nfs_home_dirs boolean 1

getsebooluse_nfs_home_dirs

1.3.3 SElinux与ftp

1.如果ftp为匿名用户共享目录的话,应修改安全上下文。

chcon -R -t public_content_t /var/ftp

chcon -R -t public_content_rw_t /var/ftp/incoming

2.策略的设置

setsebool -P allow_ftpd_anon_write =1

getsebool allow_ftpd_anon_write

allow_ftpd_anon_write--> on

1.3.4 SElinux与http

apache的主目录如果修改为其它位置,selinux就会限制客户的访问。

1.修改安全上下文:

chcon -R -t httpd_sys_content_t /home/html

由于网页都需要进行匿名访问,所以要允许匿名访问。

2.修改策略:

setsebool -P allow_ftpd_anon_write = 1

setsebool -P allow_httpd_anon_write = 1

setsebool -P allow_<协议名>_anon_write =1

关闭selinux对httpd的保护

httpd_disable_trans=0

1.3.5 SElinux与公共目录共享

如果ftp,samba,web都访问共享目录的话,该文件的安全上下文应为:

public_content_t

public_content_rw_t

其它各服务的策略的bool值,应根据具体情况做相应的修改。

1.3.6 SElinux配置总结

以上内容的selinux的配置实验还需要进行相关验证,以便在实际环境中能够直接应用,相关的内容还需要继续补充。

对于多于牛毛的策略,可以用过滤还查看一个服务相当开启哪些策略。

------------------------------------------------------------------------------

SELinux主要配制文件

SELinux主要配制文件位于/etc/selinux/下。在网络中的服务器,建议开启SELinx,以提高系统的安全性。我这里通过命令方式来改变SELinx的安全策略,就不在对SELinux的配制文件做具体说明。

SELinux常用的命令

ls –Z |ps –Z | id –Z

分别用于查看文件(夹)、进程和用户的SELinx属性。最常用的是ls -Z

sestatus

查看当前SELinux的运行状态

setenforce

在SELinux为启动模式下,用此命令可以暂时停用SELinux

getsebool

查看当前Policy(策略)的布尔值

setsebool

设置Policy的布尔值,以启用或停用某项Policy

chcon

改变文件或文件夹的content标记

SELinux实用案例

SELinux对Apache的保护

新安装的wordpress位于/vogins/share/wordpress下,按照系统的默认策略,/vogins,/vogins/share的SELinux属性为file_t,而这是不允许httpd进程直接访问的。为此,需要做如下高调整:

1) 改变/vogins,/vogins/share的SELinux属性

Shell>chcon –t var_t /vogins

Shell>chcon –t var_t /vogins/share

2) 改变wrodpress目录的SELinux属性

Shell>chcon –R –t httpd_sys_content_t wordpress

3) 允许apache进程访问mysql

setsebool -Phttpd_can_network_connect=1

4) 关于Apache里虚拟主机的配制就里就不多说,重新启动apache,就可以正常访问wordpress

Shell>/etc/init.d/httpd start

注意:如果出现不能访问的情况,请查看/var/log/messages里的日志。一般来说,按照提示就可以解决了。

LINUX 中SELINUX 的禁用方式

经网上查看资料,发现是SELinux在作怪,现在记录下来,以后继续完善
1、临时禁用SELinux:
root@server# setenforce 0
    
这样重启服务器之后,还是会启动SELinux,
2、永久禁用:
打开服务器上的SELinux配置文件,默认为:/etc/selinux/config,内容如下:

# 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 - SELinux is fully disabled.
SELINUX=enforcing
# SELINUXTYPE= type of policy in use. Possible values are:
#       targeted - Only targeted network daemons are protected.
#       strict - Full SELinux protection.
SELINUXTYPE=targeted

将上面的
SELINUX=enforcing 改为:SELINUX=disable  禁用SeLinux

[转]SELinux管理与配置的更多相关文章

  1. 0060 Linux SELinux 管理命令

    1. SELinux 的起源 SELinux 是一个面向政府和行业的产品,由 NSA.Network Associates.Tresys 以及其他组织设计和开发.尽管 NSA 将其作为一个补丁集引入, ...

  2. SUPERVISOR进程管理器配置指南

    SUPERVISOR进程管理器配置指南1. supervisor简介1.1. 官网http://supervisord.org/ 1.2. 介绍Supervisor是一个进程控制系统. 它是一个C/S ...

  3. 3,linux入门到上手-文件权限管理与配置

    linux入门-文件权限管理与配置 一.关于linux的操作命令一般格式如下: 1,一行指令中第一个输入的部分绝对是"指令(command)"或"可可执行文件案(例如批次 ...

  4. 自学华为IoT物联网_10 IoT联接管理平台配置及开发实验1

    点击返回自学华为IoT物流网 自学华为IoT物联网_10 IoT联接管理平台配置及开发实验1 实验1:OceanConnect平台实验             通过基本的编程操作与配置,帮助读者熟悉O ...

  5. Delphi 的 FireDAC 连接管理与配置过程

    Delphi 的 FireDAC 连接管理与配置过程: 使用 FireDAC 技术连接 数据库,主要是使用  TFDConnection ,其中有一参数是选择  ConnectionDefFile. ...

  6. OCM_第十七天课程:Section7 —》GI 及 ASM 安装配置 _管理和配置 GRID /实施 ASM 故障组 /创建 ACFS 文件系统

    注:本文为原著(其内容来自 腾科教育培训课堂).阅读本文注意事项如下: 1:所有文章的转载请标注本文出处. 2:本文非本人不得用于商业用途.违者将承当相应法律责任. 3:该系列文章目录列表: 一:&l ...

  7. 淘宝JAVA中间件Diamond详解之简介&快速使用 管理持久配置的系统

    http://my.oschina.net/u/435621/blog/270483?p=1 淘宝JAVA中间件Diamond详解(一)---简介&快速使用 大家好,今天开始为大家带来我们通用 ...

  8. 三·管理和配置Subversion(基于Centos7)

    基于上一篇文章 二·安装Subversion(基于Centos7)中安装的Subversion,本篇文章讲述Subversion的管理和配置 1.添加环境变量 输入命令vi /etc/profile ...

  9. SharePoint管理中心配置内容数据库

    SharePoint管理中心配置内容数据库         在SharePoint2010中,内容数据库是组织数据的核心. 是全部站点内容信息,如文档.列表数据和Web部件属性等存储的地方.默认地,内 ...

随机推荐

  1. 概率图模型(PGM)学习笔记(三)模式判断与概率图流

    我们依旧使用"学生网络"作为样例,如图1. 图1 首先给出因果判断(Causal Reasoning)的直觉解释. 能够算出来 即学生获得好的推荐信的概率大约是0.5. 但假设我们 ...

  2. SqlServer之like、charindex、patindex(转载)

    SqlServer之like.charindex.patindex   1.环境介绍 测试环境 SQL2005 测试数据 200W条   2.环境准备 2.1建表 CREATE TABLE [dbo] ...

  3. 「OC」类和对象

    一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能的类. 术语:OO ...

  4. MongoDB学习笔记1(简介)

    一.简介                 1.丰富的数据类型         MongoDB是一种非关系型数据库,是面向文档的数据库.         MongoDB没有模式,文档的键不会事先定义,也 ...

  5. Week13(12月5日):不怕错误,慢慢来 :)

    Part I:提问 =========================== 1.ASP.NET MVC的最新版本是(      ). A.2    B.3    C.4   D.5 2.本学期授课中使 ...

  6. 通过Qt样式表定制程序外观(比较通俗易懂)

    1. 何为Qt样式表[喝小酒的网摘]http://blog.hehehehehe.cn/a/10270.htm2. 样式表语法基础3. 方箱模型4. 前景与背景5. 创建可缩放样式6. 控制大小7. ...

  7. Mybatis 的Log4j日志输出问题 - 以及有关日志的所有问题

    使用Mybatis的时候,有些时候能输出(主要是指sql,参数,结果)日志.有些时候就不能. 无法输出日志的时候,无论怎么配置log4j,不管是properties的还是xml的,都不起作用. 有些时 ...

  8. 定制一个winCE5.0操作系统

    定制一个winCE5.0操作系统 2009-04-01 09:01:14|  分类: winCE|字号 订阅     定制一个操作系统并模拟器上运行,需要以下几个步骤: STEP 1:用Platfor ...

  9. 使用FreeType实现矢量字体的粗体、斜体、描边、阴影效果

    前言: Freetype是一个跨平台.开源的字体渲染器,网上很多文章介绍,本人就不啰嗦了.本文重点在于实现文章标题所属的各种效果,不是Freetype的基本使用方法介绍文档,所以对于Freetype不 ...

  10. JAE京东云引擎Git上传管理代码教程和京东云数据库导入导出管理

    文章目录 Git管理准备工作 Git工具上传代码 发布代码装程序 mywebsql管理 京东云引擎小结   JAE京东云引擎是京东推出的支持Java.Ruby.Python.PHP.Node.js多语 ...