linux系统之selinux设置。

1、SELinux

SELinux是Linux 内核中提供的强制访问控制系统。selinux有disabled、permissive、enforcing 三种选择:
Disabled :不启用控制系统。
permissive:开启控制系统,但是处于警告模式。即使你违反了策略的话它让你继续操作,但是把你的违反的内容记录下来。
Enforcing:开启控制系统,处于强制状态。一旦违反了策略,就无法继续操作下去。

  • 状态切换
    在关闭(Disabled)与开启警告permissive、开启强制Enforcing之间进行切换。需要对配置文件:/etc/sysconfig/selinux 进行修改,后重新启动系统。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在开启的两种状态(permissive、Enforcing)之间临时切换,可以使用命令:
    setenforce 0 #切换到permissive
    setenforce 1#切换到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.204   #使用匿名用户进行访问
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.204 -u student    #使用本地用户进行访问
Password: 
lftp [email protected]:~> ls      
-rw-r--r--    1 1000     1000         2005 Apr 18 07:10 passwd
lftp [email protected]:~> put /etc/group       #了一进行正常的上传功能
850 bytes transferred
lftp [email protected]:~> ls      #成功上传文件
-rw-r--r--    1 1000     1000          850 Apr 19 01:35 group
-rw-r--r--    1 1000     1000         2005 Apr 18 07: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         2005 Apr 18 07: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.204
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.204:/> 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值列表。

在这里插入图片描述
setsebool -P ftp_home_dir 1 #设置某一项的波尔值,-P表示 永久开启
在这里插入图片描述
修改之后本地用户的上传与删除功能可以正常使用:
在这里插入图片描述

4、修改文件以及目录的安全上下文
  • 临时修改
     chcon -t 新的安全上下文 文件名称/目录名称 
     chcon -t public_content_t /var/lala -R  

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述
例如:新建目录/var/lalahome 作为服务连接公共家目录,对该目录的安全上下文进行修改。
修改配置文件/etc/vsftpd/vsftpd.conf 设置匿名用户的登陆家目录为/var/lalahome
在这里插入图片描述
在这里插入图片描述创建该/var/lalahome目录,为了实验效果,并在目录中创建文件,查看文件安全上下文
在这里插入图片描述
永久修改目录的安全上下文,并核实实验效果。
在这里插入图片描述

5、协助处理selinux问题的插件

setroubleshoot-server.x86_64 #该插件可以提供selinux出现的问题解决方案
/var/log/audit/audit.log 记录产生问题的日志
存在该插件 会将出现问题以及解决方案提供在 /var/log/messages
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当不存在该插件的时候,不会讲问题以及解决办法出现在/var/log/messages 中
在这里插入图片描述
在这里插入图片描述
如有需要或者本身系统没有,可以安装该插件协助进行问题处理。

猜你喜欢

转载自blog.csdn.net/shang_feng_wei/article/details/89421629