赞
踩
selinux(secure linux):内核级加强型火墙
1.selinux对文件的影响:selinux会给与系统中的每个文件一个安全上下文(CONTEXT),同时给予每个程序一个CONTEXT,若此程序的安全上下文与文件的安全上下文不匹配,则文件不能被系统访问,若匹配,则可以访问,而文件的安全上下文,与此文件所在的目录有关
2.selinux对程序的影响:seliunx对程序的功能加了开关(sebool 0 1),并默认关闭,这使得程序的某些功能不能使用
1.查看selinux状态:
getenforce
开启状态:
enforcing:表示强制,警告&强制:拒绝
permissive:表示警告,可以访问,但有警告信息
关闭状态:
disabled
3.在开启状态下修改强制模式 | 警告模式:
setenforce 1 ##修改状态为强制模式
setenforce 0 ##修改状态为警告模式
例如,我们此时需要查看selinux的状态:
我们可以看到此时selinux的状态是关闭的,若我们需要打开selinux,需编辑/etc/sysconfig/selinux文件如下:
此时重启电脑,再查看selinux的状态,我们就可以看到selinux已经开启:
那么,selinux开启了对我们有什么影响呢?
首先,进行如下操作:
我们再使用匿名用户登陆ftp,就会看到pub/目录下不会显示hellotest文件,
若我们修改模式为警告模式:
修改完成后再登陆,我们此时可以看到pub/目录下的hellotest文件 :
此时,查看/var/log/audit/audit.log文件,我们可以在此文件中看到在警告模式下selinux的警告日志:
那么,为什么会出现上述情况呢?这是由于安全上下文(context)的原因,因为selinux是开启的,所以它会对我们系统中的文件及目录都设置一个安全上下文,通常对于目录中的文件,其安全上下文的内容继承所在目录的安全上下文,selinux允许访问安全上下文成功匹配的文件或目录,而对于安全上下文不匹配的文件或目录,我们是不能访问的。
在上面操作中,我们使用mv将/mnt/hellotest移动到pub/下,但mv操作并不能更改hellotest的安全上下文,因此我们使用ftp登陆到pub/时,由于hellotest的安全上下文与目录pub/的安全上下文不匹配,所以我们无法访问hellotest,这就是上述在强制模式下,无法显示hellotest的原因
1.查看临时上下文:
ls -Z dir/file
ls -Zd dir
我们可以看到,hellotest的安全上下文与其他文件的安全上下文不相同:
将selinux变为强制模式:
我们可以看到此时无法显示hellotest:
2.临时修改安全上下文:
chcon -t public_content_t fiel|dir ##更改文件或目录的安全上下文为public_content_
-R ##若是目录,-R表示递归更改
若我们修改hellotest的安全上下文:
此时再登陆就可以看到hellotest文件:
但是这种修改方式是临时修改,例如,我们将匿名用户家目录修改为/ftphome/,
我们可以查看/ftphome的安全上下文如下:
我们可以看大,使用ftp登陆后,无法显示任何内容,这是因为此目录及他的子目录的安全上下文与ftp程序的的安全上下文不匹配:
修改此安全上下文:
此时再登陆就可以看到/ftphome下的文件:
此时,我们先关闭(disabled)selinux再重启(reboot)电脑,
再开启selinux(enforcing)再重启(reboot)电脑,
再查看/ftphome的安全上下文,发现它会恢复到未修改之前的状态:
因此,上述更改安全上下文的方式是一种临时更改
semanage fcontext -l ##查看永久上下文的设定
semanage fcontext -a -t public_content_t '/ftphome(/.*)?' ##添加永久上下文
##-a:add
##-t:类型
restorecon -Rvvf /ftphome/ ##保存对永久上下文的更改
我们查看/ftphome的永久安全上下文设定,发现没有任何设定:
此时,对/ftphome以及其下的子目录都进行永久安全上下文设定,将它的安全上下文设置为ftp程序可以匹配的安全上下文:
保存此设置:
我们可以看到,父目录及以下的子目录的安全上下文都已经修改:
再查看,我们可以看到/ftphome的永久安全上下文设定:
在开启selinux时,它会关闭服务的某些功能:
关于selinux对于服务的影响我们可以用以下例子加以说明:
1.首先将selinux模式设置为警告模式:
2.在警告模式下,设置匿名用户可以上传文件:
3.此时再将selinux模式设置为强制模式:
完成后,我们可以看到在强制模式下,用户已经不能上传文件:
4.使用getsebool -l
我们可以看到在强制模式下为什么不能上传文件的原因:
我们可以看到,允许匿名用户上传文件的参数ftpd_anon_write
是关闭状态,因此我们即使改变了配置文件,但在selinux开启的情况下,我们依旧无法上传文件,我们开启ftpd_anon_write==on
“注意”:-P参数表示永久开启
此时我们依旧无法上传文件:
这是因为pub/目录的安全上下文对目录权限有限制:
此时我们再上传文件,就可以正常上传:
1./var/log/audit/audit.log 此文件中存放seliunx的日志信息,此日志中会提示selinux的错误信息,但不会有解决方案
2.setroubleshoot-server.x86_64 此软件采集/var/log/audit/audit.log中的日志并进行分析,并提出解决方案,存入/var/log/messages中,若是不安装此软件,则/var/log/messages无selinux的解决方案与日志存在,只要是selinux的问题,都会报错
例如,在警告状态下,我们可以上传文件,但是在/var/log/audit/audit.log会有警告信息生成:
若我们未安装setroubleshoot-server.x86_64软件,此时查看/var/log/messages我们发现没有日志生成:
此时安装此软件:
清空以前日志:
在警告模式下上传文件:
我们会看到在/var/log/audit/audit.log有警告信息生成:
在/var/log/messages会有日志信息生成:
并且在此日志中会提出针对此问题的解决方案:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。