热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Linux入门之内核级防火墙的设定(selinux)

SELinux,内核级加强型防火墙,是基于内核开发出来的一种安全机制,它有力的保障了系统的安全。它的作用主要有两方面,一方面

SELinux,内核级加强型防火墙,是基于内核开发出来的一种安全机制,它有力的保障了系统的安全。它的作用主要有两方面,一方面是在服务上添加安全上下文(标签),安全上下文匹配才能通过,不匹配,则会被过滤;另一方面,则是在功能上进行限制,也就是功能开关处于关闭状态,如果要使用某些功能,就需要打开功能开关。

lftp服务的使用可以参考ftp服务部署文章,这里不过多解释ftp服务的搭建。

 一、selinux不同状态是否可以查看标签不同的文件

 

getenforce ##查看内核级防火墙的状态
vim /etc/sysconfig/selinux ##配置文件,用于修改防火墙状态
##强制状态和关闭状态的相互转化,需要在配置文件中修改,同时reboot重启才能生效

 

在警告状态和强制状态下分别观察标签不匹配的文件是否能够查看

setenforce 0 ##强制状态(enforcing)转化为警告状态(permissive)
setenforce 1 ##警告状态转化为强制状态

 1. 警告状态下,可以查看安全上下文不一致的文件

2. 强制状态下,不能查看安全上下文不一致的文件 

通过改变某一文件的安全上下文,该文件就可以在强制状态下被查看

chcon -t public_content_t westosfile ##修改文件的安全上下文

二、临时更改安全上下文

mkdir -p /ftpdir/pub ##创建发布目录
vim /etc/vsftpd/vsftpd.conf ##更改默认发布目录

1.  准备工作:创建一个发布目录,我们在配置文件修改匿名用户登录后,进入的目录。

2. 临时修改安全上下文

 我们创建的发布目录与默认发布目录/var/ftp/pub的安全上下文是不一致的,为此我们可以临时的修改发布目录的安全上下文

chcon -t public_content_t /ftpdir/ -R ##临时设定该文件的上下文

(1)将当前的强制状态(enforcing)改为关闭 状态(disabled),然后重启

(2) 在关闭状态下,我们发现该目录的安全上下文没有改变,我们再次设置内核级防火墙的状态为强制状态(enforcing),然后重启。

 在强制状态下,我们查看该目录的安全上下文,发现安全上下文恢复

两次状态设置和两次系统的重启,我们会发现通过【chcon】命令修改安全上下文,只是临时的,那么怎样才能使安全上下文的改变是永久的?

三、永久更改安全上下文

semanage fcontext -l | grep /var/ftp/ ##查看永久安全标签的设置

ls -Zd /ftpdir ##查看该目录的安全上下文
ls -Z /ftpdir/* ##查看该目录下文件的安全上下文
semanage fcontext -a -t public_content_t '/ftpdir(/.*)?' ##对该目录及目录下的所有文件设置永久上下文
semanage fcontext -l | grep /ftpdir ##查看设置是否生效
restorecon -RvvF /ftpdir ##刷新所有文件,使更改生效

 通过查看/var/ftp目录安全上下文的永久设置,我们可以通过【semanage】命令进行永久安全上下文的设置,在我们设置,该目录下的所有子文件可能还没有改变,我们需要通过【restorecon】命令进行文件的更新,使所有的更改生效。

四、强制状态下的上传权限设置

1. 关闭状态下文件可上传

2. 警告状态下文件的上传

 

3. 强制状态下的上传文件

getenforce ##查看防火墙状态
若为enforcing则不用修改,若为permissive则需要执行以下操作
setenforce 1 ##内核级防火墙设置为强制状态,不用重启

(1)现象:在强制状态下不允许上传文件

 

(2)解决方法 

 1)内核级防火墙强制状态下,功能开关都是关闭的,我们需要打开功能开关,让配置文件允许的功能可以使用。由于在准备工作中已经将配置问件中的功能已经开启了,这里不再过多解释。

getsebool -a | grep ftp ##查看关于ftp服务的开关
setsebool -P ftp_home_dir on ##开启功能
setsebool -P ftpd_anon_write 1 ##开启上传功能
vim /etc/vsftpd/vsftpd.conf ##在配置文件中打开上传功能
anon_upload_write=YES
systemctl restart vsftpd ##重启服务
chmod 775 /var/ftp/pub ##将权限调大(出现553权限过小时,进行的操作)
chgrp ftp /var/ftp/pub ##修改用户组

 

2)将内核级防火墙中的功能开关打开,我们会发现还是不能上传文件,在修改好文件的权限和用户组后,还需要将安全上下文改为可读写,这样就可以上传文件了。

chcon -t public_content_rw_t /var/ftp/pub/ ##修改安全上下文,使它变为可写
ls -Zd /var/ftp/pub ##查看该目录的安全上下文,看更改是否生效

五、问题解决工具setroubleshoot

1. 现象1:由于不同位置文件的标签不同,通过移动文件到/var/ftp/pub中,标签不一致,内核防火墙不允许通过,产生问题,但系统中存在一个可以可供解决问题的软件setroubleshoot。

> /var/log/messages
> /var/log/audit/audit.log ##清空日志信息
cd /mnt
mv mntfile /var/ftp/pub

查看日志文件,我们会发现有错误提示,并且提供了解决问题的方法。

2. 现象2:卸载setroubleshoot软件,观察是否还会有问题解决建议

注意:一定要保存好该软件的软件安装包或者是有yum仓库,不然卸载该软件后,没有软件安装包,以后出错就没有建议了

再次移动安全上下文不一致的文件到/var/ftp/pub目录下,同时清空之前的日志信息,再次登录lftp查看 

查看日志文件,我们发现没有问题解答建议。 

做完实验,记得将该软件重新安装。

yun install setroubleshoot.x86_64 -y

 


推荐阅读
author-avatar
幸福的肖巍
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有