linux中的内核级防火墙(SElinux)
SElinux是基于内核开发出来的一种安全机制,被称之为内核级加强型防火墙,有力的提升了系统的安全性。
SElinux的作用分为两方面:1.在服务上面加上标签; 2.在功能上面限制功能
在linux系统中使用getenforce命令可以查看selinux的状态:
Disabled为关闭状态,对服务和功能都没有限制
Enforcing为强制状态,对服务和功能都进行限制
Permissive为警告状态,服务和功能可以使用,但会收到警告信息,可视为对安全的提示
在selinux开启状态时,可使用setenforce 0|1 来调整selinux的状态,0为警告状态,1为强制状态,如下图所示:
selinux的状态在配置文件/etc/sysconfig/selinux中也可以设置:
由于selinux是基于内核开发的,所以改变状态以后,需要重启内核,也就是关机以后才能够生效
在selinux开启的状态下,可以看到文件的安全上下文的标签:
输入ls -Z 可以看到目录下的文件和目录的安全上下文标签:
输入 ls -dZ 可以看到目录的上下文标签:
这个时候,匿名用户登陆本机的ftp,是可以看到目录中的文件的:
如果修改了目录的安全上下文,匿名用户在访问的时候便不能看到其中的内容:
将目录/pub的安全上下文修改:
匿名用户访问时的状态:
所有说只有通过selinux认证的标签才能够让匿名用户访问
上面用chcon命令修改的标签,在系统重启之后,又会变会原来可见的标签,这说明这个命令对标签的修改只是暂时的
想要永久修改文件或者目录的标签就要用到 semanage命令:
semanage fcontext -a -t public_content_t '/var/ftp/pub(/.*)?'
restorecon -FvvR /var/ftp/pub/ 将标签修改进行刷新,即同步
可以将/pub目录和目录中的文件都修改为public_content_t标签,也就是匿名用户访问ftp时可见的标签:
再用匿名用户访问时,便可看见/pub目录中的内容:
selinux对功能的限制:
输入命令 getsebool -a | grep ftp 可以看到selinux对服务的限制状态:
命令setsebool -P 可以开启和关闭指定功能:
比如开启匿名用户上传功能:ftpd_anon_write
然后配置文件中也设置了可以让匿名用户又上传权限:
然后匿名用户上传却被拒绝了:
这个时候不要忘记修改目录的安全上下文,除了可见之外,还要加上rw权限:
然后再用匿名用户上传,上传成功: