1.基本SELINUX安全性概念

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

2.selinux的模式

Disabled 不警告不拒绝
Enforcing 1强制不可以访问
Permissive 0警告但可以访问

3.更改selinux状态

(1)在文件中修改selinux状态
<1>首先删除/etc/vsftpd中的内容,再重新下载,避免没有恢复成初始的设置,影响接下来的操作

[root@sshd_server ~]# rm -rf /etc/vsftpd
[root@station ~]# yum reinstall vsftpd
[root@station ~]# systemctl restart vsftpd


<2>检查selinux的状态

[root@station ~]# getenforce


<3>用匿名用户进行登陆,并查看家目录下的内容

[root@station ftp]# lftp 172.25.254.123
lftp 172.25.254.123:~> ls
lftp 172.25.254.123:/> quit


<4>进入/mnt目录下创建一个文件名为bai的文件,并将其移至/var/ftp目录下

[root@station ~]# cd /mnt
[root@station mnt]# ls
[root@station mnt]# touch bai
[root@station mnt]# mv /mnt/bai /var/ftp

<5>用匿名用户进行登陆,查看家目录时发现成功查看到刚刚建立的文件bai

[root@station ~]# lftp 172.25.254.123
lftp 172.25.254.123:~> ls
lftp 172.25.254.123:/> quit


<6>进入selinux配置文件并更改其状态,更改状态后需重启方可生效

[root@station ~]# vim /etc/sysconfig/selinux
[root@station ~]# getenforce
[root@station ~]# reboot


将SELINUX=disabled更改成SELINUX=enforcing

注意:
1.selinux是内核上的插件,如果需要改变selinux状态,必须对需要改变的主机进行重启
2.将selinux状态更改成enforcing时,开机时间会更久,需要耐心等待
<7>开机后查看selinux状态,会发现此时是enforcing

[root@station ~]# getenforce

<8>匿名用户再次进行登陆,依旧可以看到之前的内容(一定要重新开启vsftpd服务)

[root@station ~]# systemctl restart vsftpd
[root@station ~]# lftp 172.25.254.133


<9>再次在/mnt目录下创建一个文件,并移至/var/ftp目录下

[root@station ~]# cd /mnt
[root@station mnt]# touch gege
[root@station mnt]# mv /mnt/gege /var/ftp


<10>匿名用户再次进行登陆,发现无法看到新建的文件

[root@station mnt]# lftp 172.25.254.133
lftp 172.25.254.133:~> ls
lftp 172.25.254.133:/> quit


<11>利用ls -lZ /var/ftp/ 可以查看文件的安全上下文,会发现更改了selinux状态后的文件的上下文与更改前文件的上下文是不同的

[root@station mnt]# ls -lZ /var/ftp


(2)使用命令修改selinux状态
<1>为了不影响接下来的操作,删除之前移至/var/ftp下的文件

[root@station mnt]# cd /var/ftp
[root@station ftp]# ls
[root@station ftp]# rm -rf gege bai
[root@station ftp]# ls


<2>查看selinux并在/mnt下新创建一个文件,同样移至/var/ftp目录下

[root@station ~]# getenforce
[root@station ~]# cd /mnt
[root@station mnt]# touch haha
[root@station mnt]# mv /mnt/haha /var/ftp


<3>用匿名用户登陆,发现依旧无法查看到新创建的文件

[root@station mnt]# lftp 172.25.254.133
lftp 172.25.254.133:~> ls
lftp 172.25.254.133:/> quit


-1-设置selinux状态为0
<4>将selinux状态设置为警告(但可以访问)并查看

[root@station mnt]# setenforce 0
[root@station mnt]# getenforce


<5>用匿名用户登陆后,会发现可以查看到之前建立的文件

[root@station mnt]# lftp 172.25.254.133
lftp 172.25.254.133:~> ls
lftp 172.25.254.133:/> quit


-2-设置selinux状态为1
<6>将selinux状态设置为强制(不可以访问)并查看

[root@station mnt]# setenforce 1
[root@station mnt]# getenforce


<7>用匿名用户登陆,发现依旧无法查看到新创建的文件

[root@station mnt]# lftp 172.25.254.133
lftp 172.25.254.133:~> ls
lftp 172.25.254.133:/> quit


-3-临时更改安全上下文
<8>如果在此时还想查看文件,需要改变安全上下文

[root@station mnt]# ls -Z /var/ftp      ##查看安全上下文
[root@station mnt]# chcon -t public_content_t /var/ftp/haha
[root@station mnt]# ls -Z /var/ftp     ##更改后查看安全上下文


<9>更改安全上下文后,用用匿名用户登陆后,会发现可以查看到之前建立的文件

[root@station mnt]# lftp 172.25.254.133
lftp 172.25.254.133:~> ls
lftp 172.25.254.133:/> quit

4.更改安全上下文

(1)临时更改安全上下文
<1>删除/var/ftp下所有之前建立的文件

[root@station ~]# cd /var/ftp
[root@station ftp]# ls
[root@station ftp]# rm -rf haha
[root@station ftp]# ls
[root@station ftp]# cd


<2>新建一个/westos目录,然后建立三个文件,并查看目录下文件的安全上下文

[root@station ~]# mkdir /westos
[root@station ~]# touch /westos/file{1..3}
[root@station ~]# ls -Z /westos


<3>编辑vsftpd服务的配置文件并使其生效,设置匿名用户登陆的家目录为新建的/westos目录

[root@station ~]# vim /etc/vsftpd/vsftpd.conf
[root@station ~]# systemcrl restart vsftpd


配置中写入的文件如下:
anon_root=/westos

<4>用匿名用户登陆,发现无法访问/westos下的文件

[root@station ~]# lftp 172.25.254.133
lftp 172.25.254.133:~> ls
lftp 172.25.254.133:/> quit


<5>临时更改/westos目录及目录下所有文件的安全上下文

[root@station ~]# ls -Zd /westos
[root@station ~]# chcon -t public_content_t /westos -R
[root@station ~]# ls -Z /westos


<6>再次用匿名用户登陆,发现可以访问/westos下的文件

[root@station ~]# lftp 172.25.254.133
lftp 172.25.254.133:~> ls
lftp 172.25.254.133:/> quit


<7>更改selinux状态为disabled并重启

[root@station ~]# vim /etc/sysconfig/selinux
[root@station ~]# reboot


配置文件中更改的内容如下:
SELINUX=disabled

<8>重启后查看其selinux状态(更改成disabled)并查看/westos目录的安全上下文(没有改变),再次改变selinux的状态为enforcing并进行重启

[root@station ~]# getenforce
[root@station ~]# ls -Zd /westos
[root@station ~]# vim /etc/sysconfig/selinux
[root@station ~]# reboot


配置文件中更改的内容如下:

SELINUX=enforcing


<9>重启后查看其selinux状态(更改成enforcing)并查看/westos目录的安全上下文(恢复到了先开始默认的状态)

[root@station ~]# getenforce
[root@station ~]# ls -Zd /westos


<10><6>再次用匿名用户登陆,发现不可以访问/westos下的文件

[root@station ~]# systemctl restart vsftpd
[root@station ~]# lftp 172.25.254.133
lftp 172.25.254.133:~> ls
lftp 172.25.254.133:/> quit


注意:每次重启后,都需要重新开启vsftpd服务
总结:临时更改安全上下文需将selinux转换两次才生效(即先更改成disabled,重启,再更改成enforcing方可恢复成本来的样子)
(2)永久更改安全上下文
<1>更改/westos目录及目录下文件的安全上下文

[root@station ~]# semanage fcontext -a -t public_content_t '/westos(/.*)?'    ##永久的修改/westos目录及目录下文件的安全上下文
[root@station ~]# semanage fcontext -l | grep westos   ##查看
[root@station ~]# restorecon -FvvR /westos/    ##刷新


<2>查看/westos目录的安全上下文,发现成功被修改

[root@station ~]# ls -Zd /westos


<3>用匿名用户登陆,发现可以成功访问

[root@station ~]# lftp 172.25.254.133
lftp 172.25.254.133:~> ls
lftp 172.25.254.133:/> quit


注意:
1.特定的程序只能访问安全上下文匹配的文件,如果不匹配会被内核禁止,而且可能会影响服务本身的功能
2.default_t是默认的
3.getsebool -a查看开关是否开启
4.setsebool -P xxx on 开启功能

5.用户上传文件

(1)让本地用户上传文件(用server)
<1>本地用户登陆,发现可以成功查看文件但无法上传文件,出现报错553

[root@station ~]# lftp 172.25.254.155 -u westos
Password:
lftp westos@172.25.254.155:~> ls
lftp westos@172.25.254.155:~> put /etc/passwd
lftp westos@172.25.254.155:~> quit


<2>查看ftp相关功能的状态,发现本地用户上传文件的功能没有开启

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


<3>开启本地用户上传文件的功能并再次查看确认已经开启(P是大写)

[root@station ~]# setsebool -P ftp_home_dir on
[root@station ~]# getsebool -a | grep ftp


<4>再次让本地用户登陆,发现可以成功上传文件

[root@station ~]# lftp 172.25.254.155 -u westos
Password:
lftp westos@172.25.254.155:~> ls
lftp westos@172.25.254.155:~> put /etc/group
lftp westos@172.25.254.155:~> ls
lftp westos@172.25.254.155:~> quit


<5>查看selinux的状态(状态一直是enforcing)
[root@station ~]# getenforce

(2)让匿名用户具备上传能力(一定注意在/pub目录下上传文件)
<1>使匿名用户登陆,发现可以成功登陆,但无法上传文件,出现550报错

[root@station ~]# lftp 172.25.254.155
lftp 172.25.254.155:~> cd /pub
lftp 172.25.254.155:/pub> put /etc/group
lftp 172.25.254.155:/pub> quit


<2>进入vsftpd配置服务并生效,更改其匿名用户的上传权限
[root@station ~]# vim /etc/vsftpd/vsftpd.conf
[root@station ~]# systemctl restart vsftpd

将配置中以下内容前的注释符号删除:anon_upload_enable=YES

<3>更改/var/ftp/pub的所属组及权限

[root@station ~]# ll -ld /var/ftp/pub
[root@station ~]# chgrp ftp /var/ftp/pub
[root@station ~]# chmod 775 /var/ftp/pub
[root@station ~]# ll -ld /var/ftp/pub


<4>再次使匿名用户登陆,发现依旧无法上传文件,出现553报错

[root@station ~]# lftp 172.25.254.155
lftp 172.25.254.155:~> cd /pub
lftp 172.25.254.155:/pub> put /etc/passwd
lftp 172.25.254.155:/pub> quit


<5>查看ftp相关功能的状态,发现匿名用户上传文件的功能没有开启

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


<6>开启匿名用户上传文件的功能并再次查看确认已经开启

[root@station ~]# setsebool -P ftpd_anon_write on
[root@station ~]# getsebool -a | grep ftp


<7>再次使匿名用户登陆,发现依旧无法上传文件,出现553报错

[root@station ~]# lftp 172.25.254.155
lftp 172.25.254.155:~> cd /pub
lftp 172.25.254.155:/pub> put /etc/passwd
lftp 172.25.254.155:/pub> quit


<8>设置目录可以写

[root@station ~]# ls -Zd /var/ftp/pub
[root@station ~]# semanage fcontext -a -t public_content_rw_t /var/ftp/pub
[root@station ~]# restorecon -FvvR /var/ftp/pub
[root@station ~]# ls -Zd /var/ftp/pub


<9>再次使匿名用户登陆,发现成功上传文件

[root@station ~]# lftp 172.25.254.155
lftp 172.25.254.155:~> cd /pub
lftp 172.25.254.155:/pub> put /etc/group
lftp 172.25.254.155:/pub> ls
lftp 172.25.254.155:/pub> quit

6.报错的解决方法

-1-出现报错并显示
<1>删除/var/ftp/pub下的目录并重新建立,然后更改其权限及所属组

[root@station ~]# rm -rf /var/ftp/pub
[root@station ~]# mkdir /var/ftp/pub
[root@station ~]# ll -d /var/ftp/pub
[root@station ~]# chgrp ftp /var/ftp/pub
[root@station ~]# chmod 775 /var/ftp/pub
[root@station ~]# ll -d /var/ftp/pub


<2>清空日志

[root@station ~]# > /var/log/messages
[root@station ~]# > /var/log/audit/audit.log


<3>使用匿名用户登陆并上传,会出现553报错

[root@station ~]# lftp 172.25.254.155
lftp 172.25.254.155:~> cd /pub
lftp 172.25.254.155:/pub> put /etc/group
lftp 172.25.254.155:/pub> quit


<4>查看报错的日志文件及解决方法的日志文件(/var/log/messages)

[root@station ~]# cat /var/log/audit/audit.log
[root@station ~]# cat /var/log/messages



-2-卸载报错的解决方法软件包后将不会出现解决方法
<1>卸载报错的解决方法的软件包(setroubleshoot-server-3.2.17-2.el7.x86_64)

[root@station ~]# rpm -qa | grep setroubleshoot
[root@station ~]# yum remove setroubleshoot-server-3.2.17-2.el7.x86_64



<2>清空日志文件

[root@station ~]# > /var/log/messages
[root@station ~]# > /var/log/audit/audit.log


<3>使用匿名用户登陆并上传,会出现553报错

[root@station ~]# lftp 172.25.254.155
lftp 172.25.254.155:~> cd /pub
lftp 172.25.254.155:/pub> put /etc/group
lftp 172.25.254.155:/pub> quit


<4>查看报错的日志文件及解决方法的日志文件(/var/log/messages),发现没有解决方法

[root@station ~]# cat /var/log/audit/audit.log
[root@station ~]# cat /var/log/messages



<5>若想要得到解决方法,则重新安装解决方法的安装包即可

[root@station ~]# yum install setroubleshoot-server.x86_64


<6>清空日志并进行匿名用户的登陆

[root@station ~]# > /var/log/audit/audit.log
[root@station ~]# > /var/log/messages
lftp 172.25.254.155:~> cd /pub
lftp 172.25.254.155:/pub> put /etc/group
lftp 172.25.254.155:/pub> quit

<7>查看报错的日志文件及解决方法的日志文件(/var/log/messages),发现有解决方法

[root@station ~]# cat /var/log/audit/audit.log
[root@station ~]# cat /var/log/messages

7.selinux和端口的关系

<1>进入httpd的子配置文件将端口号由80更改成6666,并尝试生效,会发现出现报错

[root@desktop ~]# vim /etc/httpd/conf/httpd.conf
[root@desktop ~]# systemctl restart httpd


更改的内容如下:
Listen 6666

<2>查看selinux的状态,发现selinux状态是禁止状态,尝试将其更改成允许状态,并使服务生效,发现没有出现报错,说明selinux限制了http使用的端口

[root@desktop ~]# getenforce
[root@desktop ~]# setenforce 0
[root@desktop ~]# systemctl restart httpd


<3>将selinux状态恢复成禁止状态并进行查看

[root@desktop ~]# setenforce 1
[root@desktop ~]# getenforce


<4>查看http服务的端口,发现没有刚刚添加的端口6666,并给http服务添加端口6666并进行查看

[root@desktop ~]# semanage port -l | grep http  ##没有端口6666
[root@desktop ~]# semanage port -a -t http_port_t -p tcp 6666
[root@desktop ~]# semanage port -l | grep http ##添加端口成功


<5>再次重启服务,发现成功运行(此时selinux的状态是enforcing)

[root@desktop ~]# systemctl restart httpd
[root@desktop ~]# getenforce


<6>测试完成后,删除端口并进行查看,发现已经成功删除端口

[root@desktop ~]# semanage port -d -t http_port_t -p tcp 6666
[root@desktop ~]# semanage port -l | grep http

补充:
1.查看httpd服务正在使用的端口:

[root@desktop ~]# netstat -antlupe | grep httpd


2.查看是否有8000端口正在被使用:

[root@desktop ~]# semanage port -l | grep 8000


注意:
如果要查看安全上下文,前提是selinux的状态必须是enforcing

(我写情话的时候,只要想一想你,便能才思泉涌)

Linux中SELINUX状态的巨大影响相关推荐

  1. linux基础配置脚本,Linux中selinux基础配置教程详解

    selinux(Security-Enhanced Linux)安全增强型linux,是一个Linux内核模块,也是Linux的一个安全子系统. 三种模式: Enforcing:强制模式,在selin ...

  2. linux中检测用户信息的命令是,Linux中系统状态检测命令

    1.ifconfig用于获取网卡配置与网络状态等信息,格式为:ifconfig [网络设备] [参数] 2.uname命令用于查看系统内核版本等信息,格式为:uname [-a] 查看系统的内核名称. ...

  3. Linux中SELinux理解

    SELinux是Security Enhaanced Linux 的英文缩写,字面上的意思就是安全强化的Linux 其实SELinux是在进行进程.文件等详细权限配置时依据的一个内核模块.由于启动网络 ...

  4. 知晓 linux中 selinux 是什么

    一.前言 安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统. SELinux 主要由美国 ...

  5. Linux 中SeLinux 的禁用方式

    前几天在迁移Apache Web Server时,发现其中使用反向代理的页面不能显示.Apache配置文件中反向代理的配置如下:     ProxyRequests Off     ProxyPass ...

  6. 理解Linux中的进程状态

    文章目录 运行状态 阻塞状态 挂起状态 磁盘睡眠状态 暂停状态 追踪停止状态 僵尸状态 死亡状态 孤儿状态 Linux内核进程状态源代码 一台电脑一般只有一个CPU.一个磁盘(无论一台电脑有几个CPU ...

  7. linux查看用户bashrc,Linux中.bashrc用户环境文件详解

    Linux中.bashrc用户环境文件影响用户使用bash,于是笔者来分析一下文件中重要的部分.看看文件中关于文件作用的说明: ~/.bashrc: executed by bash(1) for n ...

  8. linux中seliunux配置文件,SELinux 入门简介

    几乎可以肯定每个人都听说过 SELinux (更准确的说,尝试关闭过),甚至某些过往的经验让您对 SELinux 产生了偏见.不过随着日益增长的 0-day 安全漏洞,或许现在是时候去了解下这个在 L ...

  9. Linux中的SELinux详解--16

    SELinux 宽容模式(permissive) 强制模式(enforcing) 关闭(disabled)  几种模式之间的转换 在CentOS6.2 中安装intel 的c++和fortran 的编 ...

最新文章

  1. Windows客户端C/C++编程规范“建议”——指针
  2. Dsquery和Csvde命令的使用
  3. redis常用优化及持久化到硬盘
  4. 何为Web App,何为Hybird App
  5. 文巾解题 5. 最长回文子串
  6. PMCAFF微课堂 | 前猎豹高级产品经理:8大案例讲解猎豹如何做产品
  7. p20适配鸿蒙系统,适配鸿蒙OS,必须要升级到EMUI 11?最新机型升级名单公布
  8. erlang精要(2)-数制
  9. 《力学》课时二质点运动学(二)
  10. qiniudn.com域名已完全恢复
  11. postgre sql 括字段_【技术干货】30个最适合初学者的SQL查询
  12. JAVA变量初始化赋值null
  13. Ceph性能调优和建议
  14. 关于安装mysql时出现安装错误之后的万能解决方案(目前解决了本人安装时的各种问题和同学的问题)
  15. BIM应用落地:基于BIM的群塔作业方案优化
  16. 深入剖析RGB、CMYK、HSB、LAB
  17. C# Activator.CreateInstance
  18. html5学习之音乐播放器的结构整理
  19. matlab怎么将背景颜色换为白色,hypermesh将背景颜色设置为白色的方法
  20. 4.0电机参数的含义及测量方法

热门文章

  1. CSS float浮动的深入研究、详解及拓展 一 一 一 一 一 一 一 一
  2. 15分钟破解网站验证码
  3. BOW 原理及代码解析
  4. 电子商务网站开发流程[转]
  5. 创客学院嵌入式驱动开发——学习资料汇总
  6. 远程缝制葡萄皮,成本仅1万元,华为200万年薪博士杰作
  7. 2-12 输出华氏-摄氏温度转换表 (15 分)
  8. joan sola_Joan Touzet在CouchDB和Apache方式上
  9. Python综合评价模型(三)秩和比法
  10. java添加坚挺_Java连载136-两种方式插入数据