linux下selinux的控制与管理

SELINUX ( 安全增强型 Linux )

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

getenforce                 #查看selinux的模式
setenforce 0|1
0 表示 permissive   # 警告

1 表示 enforcing     # 强制

selinux的修改

vim  /etc/sysconfig/selinux

SELINUX=enforcing       强制

SELINUX=permissive      警告

SELINUX=disabled          关闭

更改完成后需要对系统进行重启(reboot)

一、查看文件安全上下文,chcon   -t    l临时更改安全上下
ls  -Z     显示文件安全上下文
semanage   fcontext  -l  |grep  /var/ftp        查看/var/ftp的安全上下文
chcon   -t  public_content_t    westos     把westos文件安全上下文改为public_content_t(临时)

getenforce   (此实验selinux为强制enforcing 模式)

实验程序:

          423  touch /mnt/westos3

          424  mv /mnt/westos3   /var/ftp      移动(mv)是重命名过程,不改变安全上下文复制(cp)是新建的过程,改变安全上下文
          425  cd /var/ftp
          426  ls
          427  lftp 172.25.254.213       (此时/var/ftp里只会显示安全上下文符合的,新建的westos3不符合,不会显示)
          428  ls -Z                                                             显示文件安全上下文
          429  semanage fcontext  -l  | grep  /var/ftp         查看/var/ftp的安全上下文
          430  chcon -t public_content_t  westos1           把westos1文件安全上下文改为public_content_t
          431  chcon -t public_content_t  westos3           把westos3文件安全上下文改为public_content_t
          432  ls -Z                                                            显示文件安全上下文

          433  lftp 172.25.254.213        (此时会显示westos3)

linux下selinux的控制与管理


二、上面的更改安全上下文方式为临时的,当我们对selinux配置文件重启先更改为disabled-----》reboot------>再更改配置文件为enforcing------》reboot查看其安全上下文发现变为未改前的semanage  fcontext -a -t永久性更改安全上下文

touch   /.autorelabel        

reboot        相当于对selinux配置文件重启(reset)即其先更改为disabled-----》reboot------>再更改配置文件为enforcing------》reboot
semanage  fcontext -a -t public_content_t  '/westos(/.*)?'
semanage fcontext -l | grep /westos
  实验程序435  mkdir  /westos                                      新建目录
         436  touch /westos/westosfile
         437  vim /etc/vsftpd/vsftpd.conf  (更改家目录为/westos)   编辑ftp服务配置文件
         438  systemctl restart vsftpd                         重启ftp服务
         439  cd /westos
         440  ls
         441  lftp 172.25.254.213
         442  setenforce 0                                            设置selinux为警告模式
         443  lftp 172.25.254.213
         444  setenforce 1                                             设置selinux为强制模式
         445  getenforce
         446  chcon -t public_content_t /westos -R        把westos目录下面的文件安全上下文改为public_content_t(临时更改,重启后失效)
         447  ls -Z /westos                                                显示/westos下文件的安全上下文
         448  lftp 172.25.254.213    
         449  vim /etc/sysconfig/selinux                         更改为disabled
         450  reboot
         452  vim /etc/sysconfig/selinux                         更改为enforcing
         453  reboot
         454  ls -Zd /westos                                         查看安全上下文 (进行重启selinux后发现刚才对/westos的安全上下文更改已经没有了)

       456  semanage  fcontext -a -t public_content_t  '/westos(/.*)?'             把westos目录及目录下所有的文件安全上下文改为public_content_t

fcontext 规则中最常用的扩展正则表达式是 (/.*)?, 表示随意地匹配 / 后跟任何数量的字符semanage fcontext 将递归地与在表达式前面列出的目录以及该目录中的所有内容相匹配

         458  semanage fcontext -l | grep /westos                       查看安全上下文
         459  restorecon  -FvvR   /westos                                     刷新
         460  systemctl start vsftpd                                               开启服务
         461  systemctl stop firewalld                                             关闭火墙
         462  systemctl enable vsftpd                                         开机自启ftp服务
         463  systemctl disable firewalld                                      开机自动关闭火墙
         464  lftp 172.25.254.213
         465  touch /.autorelabel                                            新建一个文件,此文件在重起后会自动重启selinux服务
         466  reboot                                                                          重启
         467  getenforce

         468  lftp 172.25.254.213

linux下selinux的控制与管理

设置匿名用户家目录

linux下selinux的控制与管理

linux下selinux的控制与管理

更改目录及目录下文件的安全上下文,可以看见文件

linux下selinux的控制与管理

重启后,上面的更改失效,上面所做的更改安全上下文是临时的

linux下selinux的控制与管理

永久性修改安全上下文

linux下selinux的控制与管理linux下selinux的控制与管理

重启后安全上下文的更改依旧生效

linux下selinux的控制与管理


三、selinux对服务功能的影响

SELinux 布尔值是更改 SELinux 策略行为的开关。 SELinux 布尔值是可以启用或禁用的规则。安全管理员可
以使 SELinux 布尔值来调整策略 , 以有选择地进行调整

当我们用student用户登陆后发现无法上传文件报错553没有权限我们查看
ll -d /home/student
发现其有w权限但不能上传
更改selinux
setenforce   0(更该为警告模式之后可以上传)确定为selinux对服务的影响
getsebool   -a  | grep  ftp  (查看selinux对ftp服务某些的开关发现对其家目录没有打开)
setsebool   -P(大写的P)  ftp_home_dir  on   开启ftp服务家目录(-p是指永久强制)
此时就可以上传了(在selinux强制模式下)
实验程序:getsebool 用于显示布尔值 , setsebool 用于修改布尔值、setsebool -P 修改 SELinux 策略 , 以永久保留修改
    1  getenforce  -----》 Enforcing
    2  lftp 172.25.254.213   -u student
    3  ll -d /home/student
    8  chmod u+w /home/student
    9  lftp 172.25.254.213   -u student  (无法上传文件)
   10  getsebool -a  | grep ftp   (ftp_home_dir  off)       查看(在selinux为强制模式下)ftp服务允许功能
   13  setsebool  -P ftp_home_dir  on                              使功能(ftp_home_dir  on) 打开
   14  getsebool -a  | grep ftp                                           查看(在selinux为强制模式下)ftp服务允许功能

   15  lftp 172.25.254.213  -u student  (可以上传)

linux下selinux的控制与管理

显示报错530没有权限,但当我们查看时却发现是有权限的

linux下selinux的控制与管理

修改selinux布尔值

linux下selinux的控制与管理

修改完布尔值后可以上传文件了

linux下selinux的控制与管理

   
四、关于selinux的警告都存放在/var/log/audit/audit.log下,这个里面的内容被setroubleshoot-server-3.2.17-2.el7.x86_64软件进行分析后发送到/var/log/message中,并附带解决方案
实验程序:
   17  vim /etc/vsftpd/vsftpd.conf  (将上个实验中匿名用户家目录的更改改回来)
   18  systemctl restart vsftpd      重启其服务
   19  cd /var/ftp
   20  ls
   21  rm -fr *
   22  ls
   23  touch /mnt/westos
   24  mv /mnt/westos  /var/ftp    
   25  >  /var/log/messages
   浏览器ftp://172.25.254.213    没有内容  
   26  cat /var/log/messages             查看日志
   27  cat /var/log/audit/audit.log
   28  restorecon  -v  /var/ftp/*  ( /var/log/messages中提供的解决方案)  
   29  rpm -qa | grep  setrouble        查找已安装软件setrouble
   30  yum remove setroubleshoot-server-3.2.17-2.el7.x86_64        删除软件
   31  > /var/log/messages                 清空日志
   32  >  /var/log/audit/audit.log
   33  touch /mnt/westos1              
   34  mv /mnt/westos1   /var/ftp/       
   37  cat /var/log/messages
   38  /var/log/audit/audit.log
   38  yum install setroubleshoot-server-3.2.17-2.el7.x86_64        安装软件

   39  cat /var/log/messages  

   40 restorecon  -v  /var/ftp/*  ( /var/log/messages中提供的解决方案 )

linux下selinux的控制与管理  

此时不能看到文件

 linux下selinux的控制与管理

linux下selinux的控制与管理

linux下selinux的控制与管理linux下selinux的控制与管理

linux下selinux的控制与管理

通过查看日志找到解决办法此时可以看到文件

linux下selinux的控制与管理

linux下selinux的控制与管理

linux下selinux的控制与管理

此时我们删除了setroubleshoot-server当我们再次出现问题时日志已不再提供给我们解决方案

linux下selinux的控制与管理

当我们重新装上时又会给我们提供解决方案

linux下selinux的控制与管理linux下selinux的控制与管理linux下selinux的控制与管理

五、httpd服务更改端口理论上是可以的但再selinux为强制时无法重启服务,证明selinux对这个有影响当我们将selinux设为警告时(setenforce 0)可以重启,当再强制模式下(setenforce 1)semanage   port -a -t http_port_t  -p tcp 6666 给http服务添加6666端口
实验程序:
   41  yum install httpd
   42  vim /etc/httpd/conf/httpd.conf   (第42行更改端口为6666)
   43  systemctl restart httpd              开启httpd服务
   44  setenforce 0                    设置selinux为警告模式
   45  systemctl restart httpd
   46  setenforce 1                    设置selinux为强制模式
   47  semanage   port  -l | grep http   查看http服务的端口
   48  semanage   port -a -t http_port_t  -p tcp 6666     给http服务添加666端口
   49  semanage   port  -l | grep http       查看http服务端口
   50  systemctl restart httpd
   cat  /etc/services  | grep ftp    查看ftp的端口
   cat   /etc/services  | grep   -E "\<**>\"     查看端口为**的服务是什么

linux下selinux的控制与管理

更改端口为6666

linux下selinux的控制与管理

linux下selinux的控制与管理

添加httpd服务端口号6666

linux下selinux的控制与管理

此时在selinux为强制的模式下httpd服务也可正常开启

linux下selinux的控制与管理