1.selinux的disable和enforcing,以及永久设定
mkdir /westos
touch /westos/file
vim /etc/vsftpd/vsftpd.conf
anon_root=/westos
lftp 172.25.254.119
ls之后无法查看到/westos
ls -Zd /westos //查看/westos的安全上下文类型
编辑文件:vim /etc/selinux/config
将selinux中的enforcing变为disabled,重启,就可以查看到/westos下的文件
可以查看到/westos下的file
semanage fcontext -a -t public_content_t '/westos(/.*)?' //semanage用来查询与修
改selinux默认目录的安全上下文。-a表示可以增加一些默认安全上下文类型,-t表示指定类型
semanage fcontext -l | grep westos //表示查询
restorecon -RvvF /westos //R表示第归,两个v表示显示,F表示刷新
注意:(1)selinux会影响不同安全上下文的文件查看,也会影响 本地用户 某些功能的使用(上传),以及开启某些功能的方法
getsebool -a | grep ftp //查看ftp的功能开关状态
setsebool -P ftp_home_dir on //表示开启ftp功能,off表示关闭,-P表示永久有效
(2)selinux有两个级别,强制和警告,会在日志中显示错误原因和改错方法
getenforce //查看selinux状态
setenforce 0 //修改级别为警告(permissive)
setenforce 1 //修改级别为强制(enforcing)
(3)selinux本身日志存放在/var/audit/audit.log中,由这个软件(settroubleshoot)将其整理放进/var/log/messages
selinux管理工具semanage
Selinux极大的增强了Linux系统的安全性,能将用户权限关在笼子里,如httpd服务,apache默认只能访问/var/www目录,并只能监听80和443端口,因此能有效的防范0-day类的攻击。举例来说,系统上的 Apache 被发现存在一个漏洞,使得某远程用户可以访问系统上的敏感文件(比如 /etc/passwd 来获得系统已存在用户),而修复该安全漏洞的 Apache 更新补丁尚未释出。此时 SELinux 可以起到弥补该漏洞的缓和方案。因为 /etc/passwd 不具有 Apache 的访问标签,所以 Apache 对于 /etc/passwd 的访问会被 SELinux 阻止。
CentOS系统自带的chcon工具只能修改文件、目录等的文件类型和策略,无法对端口、消息接口和网络接口等进行管理,semanage能有效胜任SELinux的相关配置工作
3.restorecon命令
restorecon命令用来恢复SELinux文件属性即恢复文件的安全上下文。
来自: http://man.linuxde.net/restorecon
来自: http://man.linuxde.net/restorecon
来自: http://man.linuxde.net/restorecon
/*使用desktop举例,如果默认没有安装apache,确保网络连接,使用下面的命令安装*/
[root@apache ~]# yum install httpd
/*我们在root的家目录新建一个html文件*/
[root@apache~]# pwd
/root
[root@apache ~]# vim index.html
/*随便输入一段文字,保存退出*/
welcome to westos
/*将这个文件mv到网页默认目录下*/
[root@apache~]# mv index.html /var/www/html/
注意:
* 这个时候我们使用firefox浏览器输入127.0.0.1/index.html发现打不开,
* 查看一下SELinux的日志文件,发现了下面这一段报错信息,从这个报错信息不难看出,
* 进程httpd访问网页主目录中的index.html时被SELinux阻止,原因是因为,SELinux配置信息不正确,
* 正确的SELinux配置信息应该是scontext=后面的部分,
* 而index.html文件的SELinux配置信息却是tcontext=后面的部分,
* 从tcontext=的第三段“admin_home_t”不难看出,这个文件的SELinux配置信息是root用户家目录的。
*/
type=AVC msg=audit(1378974214.610:465): avc: denied { open } for pid=2359 comm="httpd" path="/var/www/html/index.html" dev="sda1" ino=1317685 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:admin_home_t:s0 tclass=file
/*使用ls -Z也可以看出,文件和目录的SELinux信息不匹配*/
[root@111cn.net html]# ls -Z /var/www/html/
.... unconfined_u:object_r:admin_home_t:s0 index.html
[root@111cn.net html]# ls -Zd /var/www/html/
.... system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
/*使用restorecon来恢复网页主目录中所有文件的SELinux配置信息(如果目标为一个目录,可以添加-R参数递归)*/
[root@111cn.net html]# restorecon -R /var/www/html/