初识SElinux

   2016-09-18 0
核心提示:一、SElinux(Secure Enhanced Linux):安全增强的LinuxSElinux是一个在内核中实践的强制访问控制(MAC)安全性机制,由美国国家安全局NSA(The National Security Agency)和SCC(SecureComputing Corporation的)开发的针对计算机基础结构安全开发的一个全

一、SElinux(Secure Enhanced Linux):安全增强的Linux

SElinux 是一个在内核中实践的强制访问控制(MAC)安全性机制,由美国国家安全局NSA(The National Security Agency)和SCC(Secure

Computing Corporation 的)开发的针对计算机基础结构安全开发的一个全新的Linux安全策略机制。SELinux可以允许系统管理员更加灵活的来定义安全策略。

SELinux 是一个内核级别的安全机制,从Linux2.6内核之后就将SELinux集成在了内核当中,因为SELinux是内核级别的,所以我们对于其配置文件的修改都是需要重新启动操作系统才能生效的。

现在主流发现的Linux版本里面都集成了SELinux机制,CentOS/RHEL都会默认开启SELinux机制。

二、DAC和MAC的区别  

DAC (Discretionary Access Control): 自主访问控制

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

MAC (Mandatory Access Control): 强制访问控制

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

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

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

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

三、SElinux模式

Enforcing :  这个缺省模式会在系统上启用并实施 SELinux 的安全性政策,拒绝访问        及记录行动

Permissive  在 Permissive 模式下,SELinux 会被启用但不会实施安全性政策,而        只会发出警告及记录行动。Permissive 模式在排除 SELinux 的问题时很有用

Disabled  SELinux  已被停用

如何查看及设定当前系统上SElinux的工作模式:

查看:getenforce     

设定:setenforce [0|1];0表示设置为Permissive模式,1表示设置为Enforcing模式。此设定方式当前有效,重启系统后失效。

SElinux 配置文件:

/etc/sysconfig/selinux 。修改此文件后,需要重启系统才生效。

四、Selinux策略

在SELinux中,我们是通过定义策略来控制哪些域可以访问哪些上下文。SElinux策略分类:

minimum CentOS7 ,修改过的targeted,只对选择的网络服务。

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

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

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

targeted 目标型策略, 仅有限个进程受到selinux的控制,只监控容易被入侵的进程。依赖保护常见的网络服务。CentOS/RHEL中采用的默认策略。

使用sestatus命令查看当前使用的SElinux模式及配置文件中的配置:

五、SElinux安全上下文

在传统的linux中,一切皆文件,有用户、组、权限来进行访问控制。

在SElinux中,一切皆对象,由存放在Inode的扩展属性域的安全元素所控制其访问。所有文件、资源端口和进程都具备叫做安全上下文(Security context)的标签。

如何查看文件的安全上下文:

ll -Z /Path/to/somefile

如何查看进程的安全上下文:

ps -Z

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

user :role:type:sensitivity:category

user :指的是SElinux用户,root表示root账户身份,user_u表示普通用户无特权用户,system_u表示系统进程,通过用户可以确认身份类型,一般搭配角色使用。身份和不同的角色搭配时有权限不同,虽然可以使用su命令切换用户但对于SElinux的用户并没有发生改变,账户之间切换时此用户身份不变,在targeted策略环境下用户标识没有实质性作用。

role :object_r一般为文件目录的角色、system_r一般为进程的角色,在targeted策略环境中用户的角色一般为system_r。用户的角色类似用户组的概念,不同的角色具有不同的身份权限,一个用户可以具备多个角色,但是同一时间只能使用一个角色。在targeted策略环境下角色没有实质作用,在targeted策略环境中所有的进程文件的角色都是system_r角色。

type :文件和进程都有一个类型,SElinux依据类型的相关组合来限制存取权限。

Sensitivity:  限制访问的需要,由组织定义的分层安全级别,如unclassified, secret,top,secret,一个对象有且只有一个sensitivity,分0-15 级,s0最低,Target策略默认使用s0

Category  :对于特定组织划分不分层的分类,如FBI Secret,NSA secret,一个对象可以有多个categroy,c0-c1023共1024个分类,Targeted策略不使用cateaory

六、SElinux的配置

1 、临时配置: setenforce

2 、永久配置: vim /etc/sysconfig/selinux

3 、给文件或目录重新打安全标签

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

chcon [OPTION]… –reference=RFILE  FILE… 

常用选项

-R  :递归打标

例:在/var/www/html,新建了一个目录test,目录下的index.html文件的安全上下文类型为httpd_sys_content_t,现在修改ks.cfg、hello.txt的安全类型与index.html的类型一致。

修改方法一:直接修改

]#chcon -t httpd_sys_content_t ks.cfg

修改方法二:参考index.html文件修改hello.txt文件

]#chcon –reference index.html hello.txt

将test目录下的文件的角色都修改为system_u

]#chcon -R -u system_u test/

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

estorecon [-R] /path/to/somefile

5 、默认安全上下文查询与修改

使用semanager来管理。需要安装policycoreutils-python包

查看默认的安全上下文:]#semanage fcontext -l | grep httpd

修改默认安全上下文:

semanager fcontext -a -t type file

例:修改random.txt的默认类型为,httpd_sys_content_t,之后恢复安全类型至默认类型

删除默认安全上下文

semanager fcontext -d -t type file

七、Selinux端口标签

1 、查看端口标签

semanage port –l

2 、添加端口

semanage port -a -t port_label -p tcp|udp PORT

例:将9812端口添加为http_port_t的默认端口

semanage port -a -t http_port_t -p tcp 9812

3 、删除端口

semanage port -d -t port_label -p tcp|udp PORT

例:将9812端口从为http_port_t的默认端口中删除

semanage port -d -t http_port_t -p tcp 9812

4 、修改

semanage port -m -t port_label -p tcp|udp PORT

例:将http_port_t的默认端口9812改为http_port_t的默认端口

semanage port -m -t http_port_t -p tcp 9812

八、SElinux的布尔值

可以通过布尔值微调 SELinux政策而不必重新编译政策的源代码。这些选项包括允许用户在 Samba下分享他们的主目录,或者允许Apache从用户的主目录伺服文件。否则这些都会被 SELinux 政策所拒绝。

1 、查看bool 命令:

getsebool [-a] [boolean]

semanage boolean –l

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

2 设置bool 值命令:

setsebool [-P] boolean value

setsebool [-P] Boolean=value

实战演练:

1 、启用SELinux策略并安装httpd服务,改变网站的默认主目录为/website,添加SELinux文件标签规则,使网站可访问。

查看是否启用selinux

创建/website目录,并设置安全上下文

编辑httpd.conf文件,修改默认目录

]#vim /etc/httpd/conf/httpd.conf

2 、修改上述网站的http端口为9527,增加SELinux端口标签,使网站可访问。

修改httpd服务监听端口

]#vim /etc/httpd/conf/httpd.conf

将9527设置为httpd监听端口

3 、启用相关的SELinux布尔值,使上述网站的用户student的家目录可通过http访问。

配置完成,清空防火墙策略,做访问测试。

附:一些常见的布尔类型释义   

allow_ftpd_full_access FTP

容许  ftpd  全权访问系统

allow_ftpd_anon_write FTP

容许  ftpd  将文件上载到置标为  public_content_rw_t  的目录

allow_ftpd_use_cifs FTP

容许  ftp  服务器在公开传输服务使用  cifs

allow_ftpd_use_nfs FTP

容许  ftp servers  在公开传输服务使用  nfs

allow_httpd_anon_write HTTPD  服务)

容许  httpd  守护程序将文件写入置标为  public_content_rw_t  的目录

allow_httpd_mod_auth_pam HTTPD  服务)

容许  Apache  使用  mod_auth_pam.

allow_httpd_sys_script_anon_write HTTPD  服务)

容许  httpd  脚本将文件写入置标为  public_content_rw_t  的目录

allow_smbd_anon_write Samba

容许  Samba  将文件写入置标为  public_content_rw_t  的目录

allow_ssh_keysign SSH

容许  ssh  执行  ssh-keysign

SELinux  停止保护  clamscan

ftp_home_dir FTP

容许  ftp  在用户的主目录读/写文件

httpd_builtin_scripting HTTPD  服务)

容许  HTTPD  支持内置脚本

httpd_can_network_connect_db HTTPD  服务)

容许  HTTPD  脚本及模块通过网络与数据库连接

httpd_can_network_connect HTTPD  服务)

容许  HTTPD  脚本及模块与网络连接

httpd_can_network_relay HTTPD  服务)

容许  httpd  扮演中继器的角色

httpd_disable_trans HTTPD  服务)

SELinux  停止保护  httpd  守护程序

httpd_enable_cgi HTTPD  服务)

容许  HTTPD  支持  cgi

httpd_enable_ftp_server HTTPD  服务)

容许  HTTPD   ftp  服务器的身份去执行

httpd_enable_homedirs HTTPD  服务)

容许  HTTPD  阅读用户的主目录

httpd_rotatelogs_disable_trans SELinux  服务保护)

SELinux  停止保护  httpd rotatelogs

httpd_ssi_exec HTTPD  服务)

容许  HTTPD  在系统  CGI  脚本的同一本地里执行  SSI  执行档

httpd_suexec_disable_trans HTTPD  服务)

SELinux  停止保护  http suexec

httpd_tty_comm HTTPD  服务)

统一  HTTPD  与终端機的沟通。处理凭证时需用

httpd_unified HTTPD  服务)

统一  HTTPD  处理所有内容文件

 
标签: 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
  • linux基础学习之SElinux
    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
    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 配置文件 修改就要重启targeted:用来保护常见的网路服务,仅有限进程受到selinux控制,只监控容易被入侵的进程。targeted 慢慢完善的法律 系统默认使用targetedCENTOS6CENTOS7 ZAIZHEGEWENJIAN或者 cat /etc/sysconfig/selinuxSELINUX一切皆对象objec
    09-14 SELinux
点击排行