linux基础学习之SElinux

   2016-09-18 0
核心提示:1、SElinux简介 SELinux: Secure Enhanced Linux,是美国国家安全局「NSA=The National Security Agency」和SCC(Secure Computing Corporation)开发的Linux的一个强制访问控制的安全模块。2000年以GNU GPL发布,Linux内核2.6版本后集成在内核中 2、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自由访问控制

MAC:Mandatory Access Control 强制访问控制

?DAC环境下进程是无束缚的

?MAC环境下策略的规则决定控制的严格程度

?MAC环境下进程可以被限制的

?策略被用来定义被限制的进程能够使用那些资源(文件和端口)

?默认情况下,没有被明确允许的行为将被拒绝

没有SElinux的linux系统就是DAC模式的,在该模式下,进程是无约束的,如以root身份运行的进程拥有一切权限

在SELinux中没有root这个概念,安全策略是由管理员来定义的,任何软件都无法取代它。这意味着那些潜在的恶意软件所能造成的损害可以被控制在最小。一般情况下只有非常注重数据安全的企业级用户才会使用SELinux。

SELinux提供了一种灵活的强制访问控制(MAC)系统,且内嵌于Linux Kernel中。SELinux定义了系统中每个【用户】、【进程】、【应用】和【文件】的访问和转变的权限,然后它使用一个安全策略来控制这些实体(用户、进程、应用和文件)之间的交互,安全策略指定如何严格或宽松地进行检查。

只有同时满足了【标准Linux访问控制】和【SELinux访问控制】时,主体才能访问客体。

MAC与DAC的最大区别就是:DAC只针对用户的权限,如,root,对所有文件都有至高的权限,或者一个文件的权限是664,那么这个文件的拥有者就拥有了读写的权限,而在MAC的模式下,即使是root,在使用不同程序时,你所取得的权限不一定是root,而要看当时该程序的设定而定,如此来,MAC体系中,针对的就是进程而不是用户的权限。

3、SElinux的运行机制

当一个subject(如: 一个应用)试图访问一个object(如:一个文件),Kernel中的策略执行服务器将检查AVC (Access Vector Cache), 在AVC中,subject和object的权限被缓存(cached)。如果基于AVC中的数据不能做出决定,则请求安全服务器,安全服务器在一个矩阵中查找“应用+文件”的安全环境。然后根据查询结果允许或拒绝访问,拒绝消息细节位于/var/log/messages中。

linux基础学习之SElinux

linux基础学习之SElinux

4、selinux的配置文件:

/etc/selinux/config或者/etc/sysconfig/selinux

[10:59 root@Centos6.8/var/ftp/pub]# ll /etc/selinux/config 
-rw-r--r--. 1 root root 458 Jul 20 02:18 /etc/selinux/config
[10:59 root@Centos6.8/var/ftp/pub]# ll /etc/sysconfig/selinux 
lrwxrwxrwx. 1 root root 17 Jul 20 02:18 /etc/sysconfig/selinux -> ../selinux/config

该配置文件定义了:

1) 打开或关闭SELinux

2) 设置系统执行哪一个策略(policy)

3) 设置系统如何执行策略(policy)

[19:48 root@Centos6.8/usr/src/linux]# cat /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
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

5、SElinux的策略类型

SELinux有四种策略类型:

strict: centos5,每个进程都受到selinux的控制

targeted: 用来保护常见的网络服务,仅有限进程受到selinux控制,只监控容易被入侵的进程,rhel4只保护13个服务,rhel5保护88个服务

minimum:centos7,修改过的targeted,只对选择的网络服务?

mls:提供MLS(多级安全)机制的安全性

minimum和mls稳定性不足,未加以应用

其中centos5,6只有targeted和strick两种策略,一般默认是targeted策略,主要针对一些网络服务来进行监管,如http、samba等

6、查看SElinux的安全上下文(secure context)

如果开启了SElinux,在10为权限后面会有一个点(.)的标志

[10:59 root@Centos6.8/var/ftp/pub]# ll
total 12
drwxr-xr-x. 2 root root 4096 Sep 14 09:57 hello
-rw-r--r--. 1 root root 1192 Sep 14 09:58 ks6.cfg
-rw-r--r--. 1 root root 1368 Sep 14 10:11 mylinux-ks.cfg
[11:05 root@Centos6.8/var/ftp/pub]# ll -Z
drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 hello
-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 ks6.cfg
-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 mylinux-ks.cfg

7、安全上下文元素

所有操作系统访问控制都是以关联的客体和主体的某种类型的访问控制属性为基础的。在SELinux中,访问控制属性叫做安全上下文。所有客体(文件、进程间通讯通道、套接字、网络主机等)和主体(进程)都有与其关联的安全上下文,一个安全上下文由三部分组成:用户、角色和类型标识符。常常用下面的格式指定或显示安全上下文:

安全上下文有五个元素组成:

user:role:type:sensitivity:category

User:指示登录系统的用户类型,如root,user_u,system_u,多数本地进程都属于自由(unconfined)进程【以XXX_u表示】
Role:定义文件,进程和用户的用途:文件:object_r,进程和用户:system_r【以XXX_r表示】
Type:指定数据类型,规则中定义何种进程类型访问何种文件Target策略基于type实现,多服务共用:public_content_t【以XXX_t表示】
Sensitivity:限制访问的需要,由组织定义的分层安全级别,如unclassified,secret,top,secret, 一个对象有且只有一个sensitivity,分0-15级,s0最低,Target策略默认使用s0
Category:对于特定组织划分不分层的分类,如FBI Secret,NSA secret, 一个对象可以有多个categroy,c0-c1023共1024个分类,Target 策略不使用cateaory

在targeted模式下,主要的关键策略就是看domain/type是否符合已定的策略,所谓的domain值得就是程序本身,而type指的是file type,只有file type在domain本身可执行的范围内,该程序才能进程访问文件,当然就算符合了策略,还要看文件本身的权限,等于有两层保险。

8、SElinux的相关命令操作

(1)

getenforce: 获取selinux当前状态

sestatus:查看selinux状态

setenforce 0|1

0: 设置为permissive(每个受限的进程违规操作不会被禁止,但会被记录于审计日志)

1: 设置为enforcing(强制,每个受限的进程都必然受限)

(2)

给文件重新打安全标签:

chcon[OPTION]… [-u USER] [-r ROLE] [-t TYPE] FILE…

chcon[OPTION]… –reference=RFILE FILE…

-R:递归打标;

恢复目录或文件默认的安全上下文:

restorecon [-R] /path/to/somewhere

(3)

semanage:默认安全上下文查询与修改,semanage来自policycoreutils-python包,要使用semanage要先安装policycoreutils-python包

查看默认的安全上下文

semanage fcontext –l

添加安全上下文

semanage fcontext -a –t httpd_sys_content_t‘/testdir(/.*)?’

restorecon –Rv /testdir

删除安全上下文

semanage fcontext -d –t httpd_sys_content_t‘/testdir(/.*)?’

查看端口标签

semanage port –l

添加端口

semanage port -a -t port_label-p tcp|udpPORT

semanage port -a -t http_port_t -p tcp 9527

删除端口

semanage port -d -t port_label-p tcp|udpPORT

semanage port -d -t http_port_t -p tcp 9527

修改

semanage port -m -t port_label-p tcp|udpPORT

semanage port -m -t http_port_t-p tcp9527

(4)

布尔型规则:

getsebool

setsebool

查看bool命令:

getsebool[-a] [boolean]

semanage boolean –l

semanage boolean -l –C 查看修改过的布尔值

设置bool值命令:

setsebool [-P] booleanvalue

setsebool [-P] Boolean=value

 
标签: SELinux
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 在CentOS上为Docker开启SELinux
    div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, u
    02-09
  • ?第五周作业
    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行;[root@localhost ~]# grep-E ^[[:space:]]+ /boot/grub/grub.conf root (hd0,0)kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/VolGroup-lv_root rd_NO_LUKS.UTF-8 rd_NO_MD rd_LVM_L
  • sed 替换、修改链接文件注意问题
    sed 替换、修改链接文件注意问题#系统与版本[root@localhost~]# cat /etc/redhat-releaseCentOS release 6.8 (Final)[root@localhost~]# sed --versionGNU sed version 4.2.1Copyright (C) 2009 Free Software Foundation, Inc.This is free software; see th
    12-23 SedSELinux
  • 查看SELinux状态&关闭SELinux
    1. 查看SELinux状态1.1 getenforcegetenforce命令是单词get(获取)和enforce(执行)连写,可查看selinux状态,与setenforce命令相反。setenforce命令则是单词set(设置)和enforce(执行)连写,用于设置selinux防火墙状态,如:setenforce 0用于关闭selinux防
    12-01 SELinux
  • SELinux介绍
    SELinux介绍
    SELinux介绍SELinux: Secure Enhanced Linux, 是美国国家安全局(NSA=The National Security Agency)和SCC(Secure Computing Corporation)开发的 Linux的一个强制访问控制的安全模块。 2000年以GNU GPL发布, Linux内核2.6版本后集成在内核中DAC: Discretion
    10-09 SELinux
  • SELinux——有趣的标签
    SELinux——有趣的标签
    SELinux SELinux:Secure Enhanced linux,工作与Linux内核中DAC:Discretionary Access Control 自由访问控制MAC:Mandatory Access Control 强制访问控制 DAC环境下进程是无束缚的MAC环境下策略的规则决定控制的严格程度MAC环境下进程可以被限制的策略被用来
    09-18 SELinux
  • SELinux在httpd服务端中的使用
    SELinux在httpd服务端中的使用
    一、启用SELinux策略并安装httpd服务,改变网站的默认主目录为/website,添加SELinux文件标签规则,使网站可访问(以CentOS7系统操作)1、首先查看本系统是否已经安装httpd服务2、查看httpd的配置文件所在路径3、创建主目录为/website与网页文件index.html,并
    09-18 SELinux
  • 初识SElinux
    一、SElinux(Secure Enhanced Linux):安全增强的LinuxSElinux是一个在内核中实践的强制访问控制(MAC)安全性机制,由美国国家安全局NSA(The National Security Agency)和SCC(SecureComputing Corporation的)开发的针对计算机基础结构安全开发的一个全
    09-18 SELinux
  • SElinux
    selinux 配置文件 修改就要重启targeted:用来保护常见的网路服务,仅有限进程受到selinux控制,只监控容易被入侵的进程。targeted 慢慢完善的法律 系统默认使用targetedCENTOS6CENTOS7 ZAIZHEGEWENJIAN或者 cat /etc/sysconfig/selinuxSELINUX一切皆对象objec
    09-14 SELinux
点击排行