selinux简介

selinux(Security-Enhanced Linux)是一个内核中实践的强制访问控制(MAC)安全性机制,目的在于明确的指明某个进程可以访问哪些类型的资源。开启selinux后,内核在执行系统调用前会询问 SELinux 是否获得了执行操作的授权

一、DAC(自主式访问控制)的缺陷

DAC(自主式访问控制,linux的标准访问控制方式)是根据程序的拥有者/属组与文件资源的 rwx 权限来决定有无存取的能力,它的缺点就是不能识别拥有者和程序之间的区别。如果程序拥有者被授权访问,则程序被授权访问。比如,httpd进程的用户身份是apache,apache用户对/etc/passwd具有读权限,这样,如果某个恶意用户劫持了httpd进程,意即取得了apache用户的权限,就能读取/etc/passwd获知系统上已存在的用户。如果恶意用户劫持的进程具有root用户的权限,那就更可怕了。

二、selinux的运行机制

selinux遵从最小权限理念,使用MAC强制访问控制)实现访问控制,MAC可以针对特定的程序与特定的文件资源来进行权限的控管,它控制的主体是程序而不再是用户,目标则是该程序能否访问的文件资源。

1、selinux中的有关概念:

主体(subject):程序

目标(object):资源。可以是files、directories、processes、special files or various types(块设备文件、字符设备、FIFO、socket)、filesystems、links、file descriptors

策略(policy):

由于程序与文件数量太过庞大,selinux会依据某些服务制订基本的访问安全策略。这些策略内还会有详细的规则 (rule) 来指定不同的服务开放某些资源的访问与否。

策略模型:

strict:完整的 SELinux 限制,限制很严格

targeted:针对网络服务限制较多,针对本机限制较少,默认策略

selinux能够把程序的某些敏感功能做成布尔型规则,方便用户控制

安全性标签

  selinux会给每个进程和文件资源打上一层安全性标签

identity:role:type  如示例中的 system_u:object_r:httpd_sys_content_t:s0

[[email protected] ~]# ls -dZ /var/www/html   #开启selinux后,可查看安全性程序和资源的安全性标签
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html
[[email protected] ~]# ps auxZ | grep ‘httpd‘
...
unconfined_u:system_r:httpd_t:s0 apache   2069  0.0  0.2 175708  2464 ?        S    19:33   0:00 /usr/sbin/httpd
...
[[email protected] ~]# ls -Z /etc/passwd
-rw-r--r--. root root system_u:object_r:etc_t:s0       /etc/passwd

①identity:身份识别

②role:角色,由此段可知该数据是程序还是文件资源;

object_r:表示文件资源

system_r:表示程序

type:类型,此段最重要。

在文件资源上称为类型(type)

在程序上称为域(domain)

主体(程序)能否访问目标(文件)取就决于双方的安全性标签中的type是否匹配例如示例中,httpd进程的域httpd_t与/var/www/html的类型httpd_sys_content_t是匹配的,而与/etc/passwd文件所属的类型etc_t不匹配,所有,虽然apache用户具有对passwd的读取权限,httpd进程仍无法读取该文件。

2、selinux的组件:内核级代码、selinux的共享库、策略、工具程序

注意:selinux所使用的MAC访问控制机制并不是取代标准的DAC访问控制机制,而是与其结合使用。故程序只有同时通过二者的检验,才能访问资源

三、selinux的配置

1、getenforce:查看selinux是否开启

disabled:禁用

permissive:警告,不会实际拒绝违反策略的行为,但会作记录

enforcing:强制,表示selinux运行

2、启用SELlinux的方法:

①修改配置文件/etc/selinux/config(或/etc/sysconfig/selinux)

如果由enforcing或permissive改成disabled,或由disabled改成另外两种模式,必须重启系统

setenforce 0|1  #让SELinux模式在permissive和enforcing之间切换的方法,0表示permissive,1表示enforcing

3、sestatus:显示selinux的状态

选项:

-v:显示/etc/sestatus文件中的程序与文件的安全性标签内容

-b:显示当前策略的规则的布尔值

4、ls -Z /path/to/somefile:查看安全性标签

5、chcon:修改对象的安全性标签

用法:chcon [option]... 程序/资源

选项:

-t TYPE:修改类型

-R:递归修改

--reference=参考文件:参考指定文件修改

例如:chcon -R -t httpd_sys_content_t /web/htdocs

6、restorecon:恢复文件的默认安全性标签

-R:递归处理

7、getsebool [-a] [布尔条款]:查询布尔规则的布尔值

例如 getsebool -a | grep ‘ftp‘

setsebool [-P] 布林条款=[0|1]:设置布尔规则的布尔值

-P:直接写入策略库

例如 setbool allow_ftpd_anon_write 1

setbool allow_ftpd_full_access 1

[[email protected] ~]# getenforce
Disabled
[[email protected] ~]# vim /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 - No SELinux policy is loaded.
SELINUX=enforcing   #开启selinux
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted
[[email protected] ~]# shutdown -r now   #要启用selinux需要重启系统
...
[[email protected] ~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted
[[email protected] ~]# getsebool -a | grep ‘ftp‘   #查看与ftp服务相关的布尔规则
allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
ftp_home_dir --> off
ftpd_connect_db --> off
ftpd_use_fusefs --> off
ftpd_use_passive_mode --> off
httpd_enable_ftp_server --> off
tftp_anon_write --> off
tftp_use_cifs --> off
tftp_use_nfs --> off
#若要允许匿名用户上传文件至ftp服务器,需开启如下两项
[[email protected] ~]# setbool allow_ftpd_anon_write 1
[[email protected] ~]# setbool allow_ftpd_full_access 1
[[email protected] ~]# ls -dZ /var/www/html   #查看指定目录的安全性标签
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html

[[email protected] ~]# mkdir -p /web/htdocs
[[email protected] ~]# cd /web/htdocs
[[email protected] htdocs]# vim /web/htdocs/index.html

hello,how are you ?
[[email protected] htdocs]# ls -dZ ./
drwxr-xr-x. root root unconfined_u:object_r:default_t:s0 ./
[[email protected] htdocs]# ls -Z index.html 
-rw-r--r--. root root unconfined_u:object_r:default_t:s0 index.html
[[email protected] htdocs]# vim /etc/httpd/conf/httpd.conf
...
DocumentRoot "/web/htdocs"   #修改httpd的站点根目录
...
<Directory "/web/htdocs">
...
[[email protected] htdocs]# mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf.bac
[[email protected] htdocs]# service httpd reload
Reloading httpd:

显示无法访问,因httpd进程的域httpd_t对类型default_t没有访问权限

[[email protected] htdocs]# tail -1 /var/log/httpd/error_log 
[Thu Feb 25 23:23:07 2016] [error] [client 192.168.30.1] (13)Permission denied: access to /index.html denied
[[email protected] htdocs]# chcon -R --reference=/var/www/html ./   #修改新站点根目录及其下所有文件的安全性标签
[[email protected] htdocs]# ls -dZ ./
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 ./
[[email protected] htdocs]# ls -Z index.html 
-rw-r--r--. root root system_u:object_r:httpd_sys_content_t:s0 index.html

时间: 2024-08-08 13:57:34

selinux简介的相关文章

Linux自学笔记——Selinux简介

SElinux是美国国家安全局(NSA)对于强制访问控制的实现,是linux历史上最杰出的新安全子系统.NSA是在Linux社区的帮助下开发的一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在它的任务中所需要的文件.SElinux默认安装在Fedora和RedHat Enterprise Linux上,也可以作为其他发行版上容易安装的包得到. DAC,自主访问控制,任何程序对其资源享有完全的控制权,每个用户或进程可以随意修改自己的文件的权限,将其他权限授予给其他人而具有任意的访问权

Linux学习61 企业军工级别安全策略-SELinux简介

一.回顾 1.CentOS系统安装 2.kickstart文件 a.命令段 必备命令:authconfig,bootloader,... 可选命令:firewall,selinux,reboot,... b.程序包段 %packages @group_name package -package %end c.脚本段 %pre ... %end %post ... %end d.创建工具:system-config-kickstart e.语法检查:ksvalidator f.安装过程如何获取ki

SELinux安全策略的设置及应用

今天给大家分享的可能是很多人觉得没什么意义的一项内容,其实不是它没什么意义,而是说它使用起来比较麻烦,因为启用SELinux安全策略之后,每个应用程序的访问域和文件的安全标签都是需要严格匹配后,才能执行访问操作的,所以如果稍有设置上的不当,便会导致应用程序出错,但任何事情都是双面性的,自己设置起来比较麻烦的同时,也给相应的应用程序数据提供了足够的安全保障,比如说,我们给web服务启用SELinux安全策略之后,即便有人成功的入侵了我们的web服务器,替换了我们的网站主页,但由于web进程在访问网

【linux基础】23、SElinux基础

一.SElinux概述 1.SElinux简介 SEliunx: Secure Enhanced Linux  安全增强的linux 是美国国家安全局「NSA=The National Security Agency」和SCC(Secure Computing Corporation)开发的Linux的一个强制访问控制的安全模块.2000年以GNU GPL发布,Linux内核2.6版本后集成在内核中. DAC:自主访问控制 依据进程的所有者与文件资源的rwx权限来决定有无访问能力 DAC环境下进

SELinux安全系统基础

一.SELinux简介 SELinux(Secure Enhanced Linux)安全增强的Linux是由美国国家安全局NSA针对计算机基础结构安全开发的一个全新的Linux安全策略机制.SELinux可以允许系统管理员更加灵活的来定义安全策略. SELinux是一个内核级别的安全机制,从Linux2.6内核之后就将SELinux集成在了内核当中,因为SELinux是内核级别的,所以我们对于其配置文件的修改都是需要重新启动操作系统才能生效的. 现在主流发现的Linux版本里面都集成了SELin

Linux -- SELinux相关问题解决办法

一.如何解决SELinux问题? 说起SELinux,多数Linux发行版缺省都激活了它,可见它对系统安全的重要性,可惜由于它本身有一定的复杂性,如果不熟悉的话往往会产生一些看似莫名其妙的问题,导致人们常常放弃使用它,为了不因噎废食,学学如何解决SELinux问题是很有必要的. 我们以CentOS环境为例重现一个非常常见的SELinux问题: 首先需要确认SELinux处于激活状态,可以使用getenforce或sestatus命令: shell> getenforce  Enforcing  

Linux selinux 基础

一.SELinux简介 SELinux(Secure Enhanced Linux)安全增强的Linux是由美国国家安全局NSA针对计算机基础结构安全开发的一个全新的Linux安全策略机制.SELinux可以允许系统管理员更加灵活的来定义安全策略.SELinux是一个安全体系结构,它通过LSM(LinuxSecurity Modules)框架被集成到Linux Kernel 2.6.x中.因为SELinux是内核级别的,所以我们对于其配置文件的修改都是需要重新启动操作系统才能生效的. 二.SEL

linux基础学习第二十一天之SElinux

内容: SElinux简介和使用 1.SElinux简介 SELinux: Secure Enhanced Linux,是美国国家安全局「NSA=The National Security Agency」和SCC(Secure Computing Corporation)开发的Linux的一个强制访问控制的安全模块.2000年以GNU GPL发布,Linux内核2.6版本后集成在内核中 2.SElinux和普通linux区别: DAC:Discretionary Access Control自由

selinux第一节

(一):selinux简介 selinux是security enhancement linux的简称,从字面意思说就是安全增强型linux,这种增强能够有效的减轻 有缺陷的应用软件所出现的问题,包括那些没有被发现的或者是被创建的缺陷.同时,这种增强也能够强化很多安全 目标,从数据保密到应用集成来提高其健壮性. (二):DAC和MAC 1): 在早期的操作系统中几乎是没有安全方面的考虑的,用户可以只要知道资源的名称就可以获取任何文件或者是资源.后来,有了比较主流的访问控制机制(access co