selinux(内核插件)的设置

1.警告与禁止的区别

<1>vim /etc/sysconfig/selinux

 selinux=enforcing

<2>getenforce

Enforcing

<3>setenforce 1     #禁止

<4>setenforce 0     #警告

2.安全上下文

<1> touch /mnt/wenjian

<2> mv /mnt/file1  /var/ftp

<3>lftp 172.25.254.238     #外来文件wenjian查看不到,因为安全上下文不一致

<4>semanage fcontext  -l | grep /var/ftp   #查看/var/ftp的安全上下文,semanage fcontext用于显示或者修改

<5>ls -Z wenjian                     #查看file1的安全上下文与/var/ftp不一致,所以看不到


<6>chcon -t public_content_t wenjian      #把wenjian的安全上下文和/var/ftp改为一致

<7>lftp 172.25.254.238

此时的修改是临时的,要永久修改执行以下操作

<1>cd         #切换到根目录

<2>mkdir /westos   

<3>touch /westos/westosfile

<4>vim  /etc/vsftpd/vsftpd.conf    #把默认目录改为/westos                  

<5>systemctl restart vsftpd.service   #重启服务

<6>lftp 172.25.254.238

<7>chcon -t public_content_t /westos  -R  #更改安全上下文, -R表示递归

<8> ls -Z /westos/        #查看安全上下文是否修改成功

<9>vim /etc/sysconfig/selinux      

selinux=disabled

<10>reboot

<11>vim /etc/sysconfig/selinux

<12>reboot       

<13>ls -Z /westos/             #修改的安全上下文失效

<14>semanage fcontext -a -t public_content_t '/westos(/.*)?'

 #永久修改/westos下的任意文件的安全上下文,-a表示添加,-t表示类型意思是将westos添加到配置文件中,/westos(/.*)? =/westos/*/...

   semanage fcontext使用扩展正则表达式来指定路径和文件名。fcontect规则中最常用的扩展正则表达式是(/.*)?,表示随意的匹配/后跟任何数量的字符。

<15>semanage fcontext  -l | grep /westos   #查看不到修改的类型,必须刷新才可看到

<16> restorecon  -FvvR /westos/       #刷新  -F表示刷新,vv表示显示刷新过程,-R表示递归

<17> lftp 172.25.254.238

3.管理selinux布尔值

selinux布尔值是更改selinux策略行为的开关

<1>getsebool  -a | grep ftp  #显示ftp的布尔值,默认都是关闭的

[root@localhost ~]# getsebool  -a | grep ftp

ftp_home_dir --> off        #管理上传权限的文件

ftpd_anon_write --> off

ftpd_connect_all_unreserved --> off

ftpd_connect_db --> off

ftpd_full_access --> off

ftpd_use_cifs --> off

ftpd_use_fusefs --> off

ftpd_use_nfs --> off

ftpd_use_passive_mode --> off

httpd_can_connect_ftp --> off

httpd_enable_ftp_server --> off

sftpd_anon_write --> off

sftpd_enable_homedirs --> off

sftpd_full_access --> off

sftpd_write_ssh_home --> off

tftp_anon_write --> off

tftp_home_dir --> off

<2>setenforce 0     #警告模式,但可以上传,只不过不安全

[root@localhost ~]# lftp 172.25.254.238 -u student

Password:

    <3>setenforce 1     #禁止模式,因为操作不安全,拒绝上传

[root@localhost ~]# lftp 172.25.254.238 -u student

Password:

<4>setsebool -P ftp_home_dir on   #修改selinux策略,-P表示永久保留修改,系统会更加安全

[root@localhost ~]# lftp 172.25.254.238 -u student

Password:

<5> setsebool -P   ftp_home_dir off

4.监控selinux冲突

<1>vim  /etc/vsftpd/vsftpd.conf   #修改默认目录为/var/ftp

删除anon_root=/westos

<2> systemctl restart vsftpd.service

<3>touch /mnt/westos1

<4>mv /mnt/westos1  /var/ftp/

<5> > /var/log/audit/audit.log

<6> > /var/log/messages

<7>cat /var/log/audit/audit.log

<8> cat /var/log/messages

<9>打开浏览器,输入  ftp://172.25.254.238

 查看不到westos1,因为它的安全上下文与/var/ftp不一致

<10> rpm -qa | grep setrouble        #查看提供解决方案的软件

setroubleshoot-server-3.2.17-2.el7.x86_64

setroubleshoot-3.2.17-2.el7.x86_64

setroubleshoot-plugins-3.0.59-1.el7.noarch

<11>cat /var/log/messages

 #有解决方案,此解决方案是由setroubleshoot-server-3.2.17-2.el7.x86_64提供的

Then execute:

restorecon -v '$FIX_TARGET_PATH'

<12>restorecon -v /var/ftp/*

[root@localhost ~]# restorecon -v /var/ftp/*

restorecon reset /var/ftp/westos1 context unconfined_u:object_r:mnt_t:s0->unconfined_u:object_r:public_content_t:s0

<13>ls -Z /var/ftp     #可以看到westos1的安全上下文已经修改

<14>再次打开浏览器,输入  ftp://172.25.254.238,就可以看到westos1了

如果卸载掉setroubleshoot-server-3.2.17-2.el7.x86_64就不能提供解决方案了

<15>yum  remove setroubleshoot-server-3.2.17-2.el7.x86_64

<16> > /var/log/messages

<17> > /var/log/audit/audit.log

<18>touch /mnt/westos2

<19>mv /mnt/westos2  /var/ftp/

<20>打开浏览器,输入  ftp://172.25.254.238

<21>cat /var/log/messages    #此时看不到解决方案,因为提供解决方案的软件被卸载了

5.selinux影响服务所使用的资源(以修改httpd的端口为例)

关于端口: 

  1. TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。 TCP是面向连接的,有比较高的可靠性。

  2. UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

  3. TCP是当应用程序要得到完整且可信赖的数据时所采用的传输控制协议,由于必须绝对完整无误,因此TCP会在传输的过程中多了许多确认的动作以确定数据的正确性;而UDP比起TCP是要简单许多,UDP传输数据通常会遗失却不见得再重新传输一次,因此使用UDP的应用程序着重于简洁和效率以完成工作,它不需要像TCP一般复杂的手续就可以达到交换信息的目的

<1>yum install httpd

<2>systemctl start httpd

<3>cat /etc/services | grep ftp    #查看所有ftp类型端口

<4>vim /etc/httpd/conf/httpd.conf  #修改端口

第42行   Listen 6666

<5>systemctl restart httpd.service   #此时不能重启

<6>setenforce 0        #改成警告模式就可以重启了

<7> systemctl restart httpd.service  #此时就可以重启了

警告模式不安全,那么如何解决这个问题呢

<8> semanage port -l | grep http    #查看httpd的所有端口,以免改的端口与里边的重复

<10>semanage port -a   -t   http_port_t  -p tcp 6666   #添加6666端口

<11>semanage port -l | grep http      # 再次查看添加成功

<12>setenforce 1

<13>systemctl restart httpd.service    #此时重启就不会报错了

 

 

阅读更多
上一篇ftp服务的部署
下一篇系统排错
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭