基于linux的selinux的两种状态,selinux状态的改变,selinux上下文,selinux布尔值

####selinux为内核型加强型火墙 ####
1、针对文件,会对系统中每个文件添加安全上下文(context)
2、针对进程,会对系统中的每个进程添加安全上下文(context)
3、会在系统服务上设置sebool开关
4、当进程的安全上下文与文件安全上下文不匹配时,进程无法访问此文件

5、sebool会限制服务不安全功能,如果无需此功能,必须调整sebool的值

####如何管理selinux#####

selinux的开关

vim /etc/sysconfig/selinux
SELINUX=enforcing #selinux开启,级别为强制
SELINUX=permissive #selinux开启,级别为警告

SELINUX=disabled #selinux关闭

注意:当selinux每一次重新设置后,都需要重启系统

SELINUX 有【disabled】、【permissive】、【enforcing】3种选择。
disabled:不启用SELINUX功能
permissive:SELINUX有效,但是即使你违反了策略,它让你继续操作,但是把你的违反的内容记录下来。在我们开发策略的时候非常的有用。相当于Debug模式。

enforcing:当你违反了策略,你就无法继续操作下去。

selinux中对文件安全上下文的设定:

           touch /mnt/westos1
  344  mv /mnt/westos1 /var/ftp/  

  345  lftp 172.25.254.217

        touch  /mnt/westos2

        cp   /mnt/westos2   /var/ftp

        lftp 172.25.254.217


         touch   /var/ftp/file

353  lftp 172.25.254.217


  354  ls -Z   /var/ftp

在/mnt里建立两个文件westos1和westos2,在/var/ftp里建立一个file文件。将westos1‘移动‘到/var/ftp中,在命令行使用ls命令可以查看到westos1,但是使用lftp登陆到ftp服务器时无法查看到westos1,只可查看到file,但是将/mnt下的westos2‘复制‘到/var/ftp中时。登陆ftp服务器也可以查看到westos2

ftp服务器中看不见westos1的原因在于westos1在/mnt中建立,和/var/ftp目录下的文件又不一样的安全上下文,两者的安全上下文不匹配,所以在ftp服务器中无法查看到westos1。westos2可以看到是因为westos2时复制过去的,复制过去之后就会同步/var/ftp目录的安全上下文,所以在ftp服务器中可以看见westos2。
注意:单纯的复制文件时,SELinux 的 type 字段是会继承目标目录的(即会变成和所到的目录的一样); 如果是移动,那么连同 SELinux 的类型也会被移动过去

  355  semanage fcontext -l | grep /var/ftp/   ###查看/var/ftp安全上下文类型


  356  chcon -t public_content_t westos1    ###更改westos1上下文类型

     -t 指定上下文类型


  358  ls -Z   /var/ftp    ###查看上下文类型


######永久更改安全上下文#######
      (实验环境)
         mkdir /westos

  362  touch /westos/file1

           touch /westos/file2

  363  vim /etc/vsftpd/vsftpd.conf

  364  systemctl restart vsftpd


  365  lftp 172.25.254.217


  366  setenforce 0  ###可以访问,但有警告

  367  lftp 172.25.254.217


######################################
  368  chcon -t public_content_t /westos/ -R ####临时更改目录安全上下文
  369  ls -Z /westos/

  370  ls -Zd /var/ftp/

将selinux修改为disabled后重启,再改为enforcing重启,/westos的安全上下文会变回原样

#######永久修改目录及目录中文件的安全上下文####

  371  semanage fcontext -l |grep /var/ftp/
  372  semanage fcontext -a -t public_content_t '/westos(/.*)?'###将/westos(/.*)?添加到安全上下文里
        '/westos(/.*)?'匹配/westos后跟的所有文件
       (-a,添加 -t,指定安全上下文类型)

       semanage fcontext -l | grep /westos

   -l:查询的意思
   -a:增加的意思,增加一些目录的安全上下文的设定

restorecon -FvvR /westos    ####递归刷新并显示刷新过程###

       -R:连同次目录一起修改
       -v:将过程显示到屏幕上


       lftp 172.25.254.217


  379  touch /.autorelabel    ####让系统重新扫描所有文件相当于更该selinx状态后重启
       reboot

  380  ls -Z /westos/       ###查看/westos安全上下文类型

###sebool值##
   当selinux开启时,系统默认会设置很多功能的开关,而且默认都是关闭的
   sebool就是那个开关

   lftp 172.25.254.217 -u student  ###登陆本地用户,尝试上传文件


   getsebool -a | grep ftp       ###查看ftp的sebool值状态(默认都是关闭的)


   setsebool -P ftp_home_dir on  ###  -P大写(永久的)打开ftp_home_dir开关

   getsebool -a | grep ftp       ###再次查看状态



   lftp 172.25.254.217 -u student  ###登陆本地用户上传就可以了


注意:ls -ld /home/student/    ##做过前面操作后可能还会说权限小,查看student用户权限

      chmod u+w /home/student/  ##加上写权限
      ls -ld /home/student/

      lftp 172.25.254.217 -u student ##再次登陆就可以上传

#######监控selinux冲突#####

      touch   /mnt/westos          

      mv   /mnt/westos     /var/ftp

       437  > /var/log/messages       ####清空selinux的解决方案

       438  > /var/log/audit/audit.log   ######清空selinux的报错信息

在firefox中 ftp://172.25.254.101/       ##注意setenforce 1,若为0可以直接看到westos


    restorecon -v /var/ftp/*    ######刷新网页就可以看到westos


  436  yum remove setroubleshoot-server.x86_64   #####卸载setroubleshoot-server这个软件

          cat  /var/log/messages   ####不会给出解决方案

          cat  /var/log/audit/audit.log   ###会有selinux报错信息

      ##########selinux所影响的httpd#######

           yum install httpd  -y


  450  vim /etc/httpd/conf/httpd.conf ###修改http端口

1.原本tcp协议端口是80

2.将端口改为6666


  451  systemctl restart httpd    ##重启httpd服务,起不了


  452  setenforce 0    

  453  systemctl restart  httpd    ###可以启动


  454  setenforce 1

  455  systemctl restart httpd     ###不能启动


       semanage port -a -t http_port_t -p tcp 6666  ###将6666加入http的tcp端口列表中

  463  semanage port -l | grep http         ###查看http的tcp端口列表


  464  systemctl restart httpd     ##重启成功
  465  setenforce 1                ##将selinux改为强制的

  466  systemctl restart httpd     ###可以重启


 




  

猜你喜欢

转载自blog.csdn.net/xbw_linux123/article/details/80330293
今日推荐