初识SELinux

一、一些概念

二、SELinux状态

三、相关运用

四、相关命令

一、一些概念

1、Linux安全访问模型

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

2、SELinux安全访问机制

SELinux是一种基于 <域-类型> 模型(domain-type)的强制访问控制(MAC:Mandatory Access Control)安全系统

二、SELinux状态

1、SELinux状态

(1)、Disable,禁用

(2)、Permissive,不真正实施SELinux功能,仅将违反策略的行为记录进/var/log/audit/audit.log;另策SELinux策略缓存目录/selinux/avc/

(3)、enforcing,强制实施SELinux

2、查看SELinux开启状态

[[email protected] ~]# getenforce
Permissive

或者

[[email protected] ~]# sestatus    #路径为/usr/sbin/sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   permissive
Mode from config file:          permissive
Policy version:                 24
Policy from config file:        targeted

3、设置SELinux状态

(1)、临时修改SELinux状态,立即生效,重启后恢复为配置文件中设定

[[email protected] ~]# setenforce 1    #设置为Enforcing状态
[[email protected] ~]# getenforce
Enforcing
[[email protected] ~]# setenforce 0    #设置为Permissive状态
[[email protected] ~]# getenforce
Permissive

(2)、修改配置文件/etc/selinux/config或/etc/syslconfig/selinux,重启后生效,且永久有效

# 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=permissive    #可修改为disabled,permissive,enforcing
# SELINUXTYPE= type of policy in use. Possible values are:
#       targeted - Only targeted network daemons are protected.
#       strict - Full SELinux protection.
SELINUXTYPE=targeted    #此项使用targeted,基本不用strict

三、相关运用

1、文件、进程的SELinux安全属性

(1)、查看文件的SELinux安全属性

[[email protected] ~]# cd ~    #进到家目录
[[email protected] ~]# ll –Z    #查看文件安全上下文
-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 downloads
-rw-r--r--. root root system_u:object_r:admin_home_t:s0 install.log
-rw-r--r--. root root system_u:object_r:admin_home_t:s0 install.log.syslog

以上信息中,有一段system_u:object_r:admin_home_t,分别是SELinux的用户、组、类型

system_u:User identity为system

object_r:Role为objuect

admin_home_t:Type为admin_home

(2)、查看进程的SELinux安全属性

[[email protected] ~]# ps auxZ    #-Z选项,查看SELinux安全属性
LABEL                           USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
system_u:system_r:init_t:s0     root         1  0.0  0.1  19232  1492 ?        Ss   03:36   0:01 /sbin/init
system_u:system_r:kernel_t:s0   root         2  0.0  0.0      0     0 ?        S    03:36   0:00 [kthreadd]
system_u:system_r:kernel_t:s0   root         3  0.0  0.0      0     0 ?        S    03:36   0:00 [migration/0]

2、修改文件SELinux安全属性

有时需要修改文件的SELinux安全属性,对文件进行访问控制,例如,当SELinux开启时,httpd网站根目录中(此时我们自己新建目录,创建首页文件)的首页文件index.html,如果其Type类型与httpd进程的不同,则该页面会访问不了,将其Type修改为同一Type,即可解决问题

(1)、创建网站目录、首页文件

[[email protected] html]# mkdir /www/htdocs -pv
mkdir: created directory `/www‘
mkdir: created directory `/www/htdocs‘
[[email protected] html]# vim /www/htdocs/index.html

首页文件内容如下

<h1>SELinux Test</h1>

(2)、修改httpd主配置文件,删除欢迎页面配置文件,由于测试机httpd是用yum源安装,其配置文件路径/etc/httpd/conf/httpd.conf,欢迎页面文件路径/etc/httpd/conf.d/welcome.conf

a、配置

删除欢迎页面配置文件,修改httpd主配置文件

[[email protected] www]# cd /etc/httpd/conf.d/
[[email protected] conf.d]# rm -rf welcome.conf 
[[email protected] conf.d]# vim /etc/httpd/conf/httpd.conf

将默认路径修改为以下内容

DocumentRoot "/www/htdocs"
<Directory "/www/htdocs">

重启httpd服务,打开SELinux

[[email protected] ~]# service httpd start 
[[email protected] html]# setenforce 1

此时浏览器访问页面,会有如下提示

b、原因,httpd进程和页面文件的SELinux的安全属性,Type不一致

[[email protected] htdocs]# ps auxZ | grep httpd
unconfined_u:system_r:httpd_t:s0 root     1516  0.0  0.3 175700  3644 ?        Ss   13:49   0:00 /usr/sbin/httpd
unconfined_u:system_r:httpd_t:s0 apache   1518  0.0  0.2 175836  3024 ?        S    13:49   0:00 /usr/sbin/httpd
unconfined_u:system_r:httpd_t:s0 apache   1519  0.0  0.2 175700  2404 ?        S    13:49   0:00 /usr/sbin/httpd
unconfined_u:system_r:httpd_t:s0 apache   1520  0.0  0.2 175836  3008 ?        S    13:49   0:00 /usr/sbin/httpd
unconfined_u:system_r:httpd_t:s0 apache   1521  0.0  0.2 175700  2404 ?        S    13:49   0:00 /usr/sbin/httpd
unconfined_u:system_r:httpd_t:s0 apache   1522  0.0  0.2 175700  2580 ?        S    13:49   0:00 /usr/sbin/httpd
unconfined_u:system_r:httpd_t:s0 apache   1523  0.0  0.2 175700  2580 ?        S    13:49   0:00 /usr/sbin/httpd
unconfined_u:system_r:httpd_t:s0 apache   1524  0.0  0.2 175700  2576 ?        S    13:49   0:00 /usr/sbin/httpd
unconfined_u:system_r:httpd_t:s0 apache   1525  0.0  0.2 175700  2404 ?        S    13:49   0:00 /usr/sbin/httpd
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 root 1527 0.0  0.0 103244 856 pts/0 S+ 13:52   0:00 grep httpd
[[email protected] htdocs]# ll -Z
-rw-r--r--. root root unconfined_u:object_r:default_t:s0 index.html

c、解决方法---->授权,将index.html的SELinux的Type改为httpd

命令

[[email protected] htdocs]# setenforce 0    #需暂时设置为Permissive状态
[[email protected] htdocs]# chcon -t httpd_t index.html    #-t指定Type 
[[email protected] htdocs]# setenforce 1    #开启

再次用浏览器访问,此时可以正常浏览页面

3、服务sebool值

以vsftpd服务为例,vsftpd也是用yum源安装

(1)、安装好vsftpd,lftp,编辑/etc/vsftpd/vsftpd.conf,启用下面两项

anon_upload_enable=YES
anon_mkdir_write_enable=YES

(2)、cd到/var/ftp/,修改匿名用户ftp对pub文件夹的权限

setfacl -m u:ftp:rwx pub/

(3)、重启vsftpd服务后,使用lftp登录服务器,上传一个文件,此时确认SELinux状态为Enforcing,提示553,更改SELinux状态为Permissive后,又可以上传文件

[[email protected] ftp]# lftp 127.0.0.1
lftp 127.0.0.1:~> cd pub/
lftp 127.0.0.1:/pub> lcd /www/htdocs/
lcd ok, local cwd=/www/htdocs
lftp 127.0.0.1:/pub> put index.html 
put: Access failed: 553 Could not create file. (index.html)

(4)、原因,ftp服务的sebool值,通过命令我们可以看到服务相关sebool控制是关闭的

[[email protected] ftp]# getsebool -a | grep 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

解决方法,使用如下命令后,即可获得权限上传:

setsebool -P allow_ftpd_full_access on

四、相关命令

详细使用方法查看man手册

chcon:修改文件安全属性

-t:指定Type

-R:递归修改,修改目录属性时,将一并修改目录中文件的属性

--reference:以某个文件为参考修改目标文件

restorecon:恢复文件默认安全属性

[[email protected] htdocs]# restorecon index.html 
[[email protected] htdocs]# ll -Z    #之前我们修改过文件的Type
-rw-r--r--. root root unconfined_u:object_r:default_t:s0 index.html    #现在恢复默认

getsebool:列出所有selinux bool数值清单列表与内容

setsebool:修改selinux bool数值清单内容

-P:该选项使命令修改结果永久有效,不加-P则重启后恢复默认配置

时间: 2024-10-07 07:53:04

初识SELinux的相关文章

SElinux(转)

转自:http://www.361way.com/rh134-selinux/4653.html RH134小结(四)初识SElinux 2015年8月2日admin发表评论阅读评论 一.SElinux概述 SELinux 即『 Security Enhanced Linux 』的缩写,字面上的意义就是安全强化的 Linux .它是NSA (United States National Security Agency)和SELinux社区的联合项目.它通过LSM(Linux Security M

初识Python,望君多多关照

在学习Python之前,我们接触过数据结构和网页制作.前者让我们学习如何把C语言运用的更加整齐规范,而后者让我们亲身学习如何运用所学,制作一个静态网页.通过这些课程的学习,让我对C语言产生了比较大的压力,以至于对编程.对这学期的Python课程都有一种如临大敌的感觉. 但是真的学习了这门课程,体会了编码过程中的一些固定运用方法和套路之后,也许过程中对这门课程隐隐约约产生了一点点朦胧的感觉,仿佛他也并没有想象中的那么困难,起码现在的学习让我认为,他可能没有C语言那么繁琐和麻烦.当然,以一个初学者的

centos 6.X 关闭selinux

SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统.在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件.SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上. 虽然SELinux很好用,但是在多数情况我们还是将其关闭,因为在不了解其机制的情况下使用SELinux会导致软件安装或者应用部署失败 以下就是关闭SELinux的方法 系统

CentOS 7.X 关闭SELinux

1.查看 [root@dev-server ~]# getenforce Disabled [root@dev-server ~]# /usr/sbin/sestatus -v SELinux status: disabled 2.临时关闭 ##设置SELinux 成为permissive模式 ##setenforce 1 设置SELinux 成为enforcing模式 setenforce 0 3.永久关闭 vi /etc/selinux/config 将SELINUX=enforcing改为

永久关闭selinux

修改配置文件,永久关闭selinux. 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

初识数组排序!!!!

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>初识数组排序</title> <!--调试成功--> <style type="text/css"> *{ padding:0; margin: 0; } li,ul{ list-style: none; } #p

SELinux入门简介

操作系统有两类访问控制:自主访问控制(DAC)和强制访问控制(MAC).标准Linux安全是一种DAC,SELinux为Linux增加了一个灵活的和可配置的的MAC. 进程启动时所拥有的权限就是运行此进程的用户权限,一个进程能访问哪些文件取决于该文件的主.组和其他权限,这就是DAC 如一个用户运行了进程,运行此进程需要若干个文件,但该进程具有的权限是与该用户的权限一致,即该进程能访问此用户能够访问的所有文件.Linux自身是无法限定某个进程只能访问其运行需要的指定文件,因此MAC,就是不让进程在

初识操作系统和linux

初识操作系统和linux 1.计算机系统由硬件系统和软件系统两大部分组成:是一种能接收和存储信息,并按照存储在其内部的程序对海量数据进行自动.高速地处理,然后把处理结果输出的现代化智能电子设备. 2.世界上第一台计算机是1946年诞生在美国宾州大学. 3.冯·诺依曼体系结构:1946年数学家冯·诺依曼于提出计算机硬件系统由运算器.控制器.存储器.输入设备.输出设备.摩根定律:当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍.现在计算机技术进本很难遵

linux 笔记2-10 selinux

***************10.selinux*************** ##1.什么是selinux## selinux,内核级加强型防火墙   ##2.如何管理selinux级别## selinux开启或者关闭 vim /etc/sysconfig/selinux selinux=disabled //关闭状态 selinux=Enforcing //强制状态 selinux=Permissive //警告状态 getenforce //查看状态 当selinux开启 setenfo