linux基础学习之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中。

SElinux.png

SElinux工作过程.jpg

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

原创文章,作者:麦德良,如若转载,请注明出处:http://www.178linux.com/46436

(0)
麦德良麦德良
上一篇 2016-09-15
下一篇 2016-09-15

相关推荐

  • 学习一个星期的沿途体会

    人生处处都是坑,只看跳的深不深。下面就来介绍介绍我跳的坑吧!当然我可没打算在此长眠 既然选择了Liunx,那对它的历史就得了解清楚。就如同我们结婚,既然选择了对方,那就要了解他的过去,包容他的未来。           Linux操作系统是一个叫Linus Torvalds的大学生在1991年开发而来。当然,…

    2017-07-16
  • N22-第二周博客作业

    1、Linux系统上常见的文件管理类命令有哪些,其常用的使用方法及其示例演示。 常见的文件类管理命令:cp,rm,mv cp复制文件和目录: -f, –force 强制执行 -i 显示交互信息,默认cp 带-i选项 -r,-R 递归复制目录 -s 创建一个符号链接而不复制文件 -d 复制符号链接本身 cp aa.link qqq 相当于创建qqq…

    Linux干货 2016-08-22
  • 第八周作业脚本练习

    1、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态;      在线的主机使用绿色显示;      不在线的主使用红色显示;          &…

    Linux干货 2017-02-01
  • Linux用户操作、文件操作、文件筛选

    Linux用户操作、文件操作、文件筛选 编辑/etc/group文件,添加组hadoop。手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop。 vim /etc/group hadoop:x:1001: vim /etc/passwd hadoop:x…

    Linux干货 2016-11-17
  • shell编程、查找命令、压缩文件工具

    shell编程、查找命令、压缩文件工具  shell编程 一、条件测试  1、判断某需求是否满足,需要由测试机制来实现。    测试命令:  ·test Expression  ·[ EXPRESSION ]  ·[[ EXPRESSION ]]   &nbs…

    Linux干货 2016-08-15