linux 下的selinux简介(安全上下文,selinux布尔值)

1.SELinux简介

SELINUX ( 安全增强型 Linux ) 是可保护系统安全性的额外机制。
在某种程度上,它可以被看作是与标准权限系统并行的权限系统。在常规模式中,以用户身份运行进程 , 并且系统上的文件和其他资源都设置了权限 ( 控制哪些用户对哪些文件具有哪些访问权。 SELINUX 的另一个不同之处在于 , 若要访问文件 ,
你必须具有普通访问权限和 SELINUX 访问权限。因此,即使以超级用户身份root 运行进程,根据进程以及文件或资源的 SELinux 安全性上下文可能拒绝访问文件或资源限 ) 标签。

getenforce

linux 下的selinux简介(安全上下文,selinux布尔值)_第1张图片
2)SELinux的三种状态

Disabled 代表 SELinux 被禁用

Permissive 代表仅记录安全警告但不阻止可疑行为

Enforcing 代表记录警告且阻止可疑行为
状态切换
在关闭(Disabled)与开启警告permissive、开启强制Enforcing之间进行切换。需要对配置文件:/etc/sysconfig/selinux 进行修改,后重新启动系统。

setenforce 0        ##临时更改SELinux的状态为警告不阻止 Permissive
setenforce 1        ##临时更改SELinux的状态为警告并且阻止 Enforcing

2、类型强制的安全上下文

安全上下文是一个简单的、一致的访问控制属性,主要体现在以下两点:
1 限制文件访问。文件必须拥有相匹配的安全上下文才能being识别访问。
2 对服务,限制认为不安全的服务功能, 设置开关。 开关默认关闭需要时可以打开。
ls -Z #检查文件、目录的安全上下文;
ps -Z #检查进程的安全上下文;
mv:安全上下文则不变;
cp:会重新生成安全上下文。

当selinux处于disabled时候,无安全上下文。文件以及服务的功能不会被限制。

[root@localhost ~]# touch /mnt/file1       #新建文件
[root@localhost ~]# mv /mnt/file1  /var/ftp/       #将其移动到公共家目录中
[root@localhost ~]# ls /var/ftp/
file1  pub
[root@localhost ~]# lftp 172.25.254.111     #使用匿名用户进行访问
lftp 172.25.254.204:~> ls            #可以看到所有存在的文件,没有安全上下文的限制
-rw-r--r--    1 0        0               0 Apr 19 01:33 file1
drwxr-xr-x    2 0        0              31 Mar 07  2014 pub
lftp 172.25.254.204:/> quit
[root@localhost ~]# ls -Z /var/ftp/         #在disabled状态下没有安全上下文 显示?
-rw-r--r-- root root ?                                file1
drwxr-xr-x root root ?                                pub
[root@localhost ~]# lftp 172.25.254.111 -u student          #本地用户访问
Password: 
lftp [email protected]:~> ls      
-rw-r--r--    1 1002     1002         2380 Apr 22 12:10 passwd
lftp [email protected]:~> put /etc/group      上传功能
1006 bytes transferred
lftp [email protected]:~> ls     #上传成功
-rw-r--r--    1 1002     1002         1006 Apr 22 12:13 group
-rw-r--r--    1 1002     1002         2380 Apr 22 12:10 passwd
lftp [email protected]:~> quit

当selinux处于Enforcing时候,存在安全上下文。文件以及服务的功能被限制。

[root@localhost ~]# vim /etc/sysconfig/selinux 
[root@localhost ~]# reboot         #在配置文件中修改selinux状态为Enforcing
[root@localhost ~]# getenforce    # 查看selinux状态
Enforcing
[root@localhost ~]# ls -Z /var/ftp/      #查看目录中内容的安全上下文
-rw-r--r--. root root system_u:object_r:public_content_t:s0 file1
drwxr-xr-x. root root system_u:object_r:public_content_t:s0 pub
[root@localhost ~]# lftp 172.25.254.204 -u student   使用本地用户进行访问
Password: 
lftp [email protected]:~> ls      
-rw-r--r--    1 1000     1000          2380 Apr 22 12:10 passwd
lftp [email protected]:~> put /etc/group     
put: Access failed: 553 Could not create file. (group)    #无法进行上传功能,功能被限制。
lftp [email protected]:~> quit 
[root@localhost ~]# touch /mnt/file2 
[root@localhost ~]# mv /mnt/file2 /var/ftp/      #再次创建新文件移动到公共家目录中
[root@localhost ~]# ls /var/ftp/
file1  file2  pub     #该目录中确实存在该文件
[root@localhost ~]# lftp 172.25.254.111
lftp 172.25.254.204:~> ls       #但是连接后无法显示查看该file2文件
-rw-r--r--    1 0        0               0 Apr 19 01:33 file1
drwxr-xr-x    2 0        0              31 Mar 07  2014 pub
lftp 172.25.254.111:/> quit 
[root@localhost ~]# ls -Z /var/ftp/       #查看文件的安全上下文
-rw-r--r--. root root system_u:object_r:public_content_t:s0 file1    
-rw-r--r--. root root unconfined_u:object_r:mnt_t:s0   file2       #其中file2的安全上下文不适合
drwxr-xr-x. root root system_u:object_r:public_content_t:s0 pub

3、SELinux的bool值

bool值为0:off 开关关闭。功能无法使用
bool值为1:on 开关开启。功能可以使用
getsebool -a#查看当前selinux的bool值列表。

getsebool -a |grep ftp     #筛选出包含ftp的bool值列表。

linux 下的selinux简介(安全上下文,selinux布尔值)_第2张图片

setsebool -P ftp_home_dir 1 #设置某一项的布尔值,-P表示 永久开启

修改之后本地用户的上传与删除功能可以正常使用:

4、修改文件以及目录的安全上下文

临时修改

 chcon -t 新的安全上下文 文件名称/目录名称 
 chcon -t public_content_t /var/wei -R    临时修改selinux 安全上下文

semanage fcontext -a -t public_content_t "/var/wei(/.)?" #永久更改目录的安区上下文;(/.)?表示目录本身以及已经存在的文件和将来新建的文件。
restorecon -R /varwei/ # 更该完之后进行扫描 使得更改生效。
semanage fcontext -l |grep /var/ftp #查看目录/var/ftp的安全上下文设置情况。

[root@localhost ~]# systemctl restart vsftpd.service 
Job for vsftpd.service failed because the control process exited with error code. See "systemctl status vsftpd.service" and "journalctl -xe" for details.
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
[root@localhost ~]# systemctl restart vsftpd.service 
[root@localhost ~]# getenforce 
Enforcing
[root@localhost ~]# mkdir /var/weihome      #创建目录
[root@localhost ~]# cd /var/weihome/
[root@localhost weihome]# ls
[root@localhost weihome]# touch test{1..5}
[root@localhost weihome]# ls
test1  test2  test3  test4  test5
[root@localhost weihome]# ls -ZR /var/weihome/     #检查上下文
/var/weihome/:
-rw-r--r--. root root unconfined_u:object_r:var_t:s0   test1
-rw-r--r--. root root unconfined_u:object_r:var_t:s0   test2
-rw-r--r--. root root unconfined_u:object_r:var_t:s0   test3
-rw-r--r--. root root unconfined_u:object_r:var_t:s0   test4
-rw-r--r--. root root unconfined_u:object_r:var_t:s0   test5
[root@localhost weihome]# 

永久修改目录的安全上下文,并核实实验效果。

[root@localhost weihome]# semanage fcontext -a -t public_content_t "/var/weihome(/.*?)"

[root@localhost weihome]# ls -Zd /var/weihome/
drwxr-xr-x. root root unconfined_u:object_r:var_t:s0   /var/weihome/
[root@localhost weihome]# restorecon -R /var/weihome/        #重新扫描,确定修改
[root@localhost weihome]# ls -Zd /var/weihome/
drwxr-xr-x. root root unconfined_u:object_r:var_t:s0   /var/weihome/
[root@localhost weihome]# ls -ZR /var/weihome/
/var/weihome/:
-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 test1
-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 test2
-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 test3
-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 test4
-rw-r--r--. root root unconfined_u:object_r:public_content_t:s0 test5
[root@localhost weihome]# 
[root@localhost ~]# > /var/log/messages      #清空日志
[root@localhost ~]# cat /var/log/messages 
[root@localhost ~]# ls /var/ftp/        
file1  file2  pub  test1                  # 强制安全上下文公共目录无法显示
[root@localhost ~]# lftp 172.25.254.111
lftp 172.25.254.111:~> ls              
drwxr-xr-x    2 0        0               6 Jun 23  2016 pub
lftp 172.25.254.111:/> exit
[root@localhost ~]# cat /var/log/messages           #在次查看时被记录到日志中
Apr 22 22:14:03 localhost dbus[660]: [system] Activating service name='org.fedoraproject.Setroubleshootd' (using servicehelper)
Apr 22 22:14:03 localhost dbus-daemon: dbus[660]: [system] Activating service name='org.fedoraproject.Setroubleshootd' (using servicehelper)
Apr 22 22:14:04 localhost dbus[660]: [system] Successfully activated service 'org.fedoraproject.Setroubleshootd'

并给出解决办法
linux 下的selinux简介(安全上下文,selinux布尔值)_第3张图片

当不存在该插件的时候,不会讲问题以及解决办法出现在/var/log/messages 中

在这里插入图片描述
卸载后再次看日志没有了

在另一个生成日志的文件里还有
/var/log/audit/audit.log

你可能感兴趣的:(linux 下的selinux简介(安全上下文,selinux布尔值))