Linux使用入门教程之NFS、Samba、ACL权限、SELinux和(4)

四、SELinux安全机制
SELinux 全称 Security Enhanced Linux (安全强化 Linux)是 MAC (Mandatory Access Control,强制访问控制系统)的一个实现,目的在于明确的指明某个进程可以访问哪些资源(文件、网络端口等)。
Selinux是一组可确定哪个进程能访问哪些文件、目录、端口等的安全规则。每个文件、进程、目录和端口都具有专门的安全标签,称为selinux上下文。
Selinux将进程分类,将资源分类,定义了那个进程在哪个范围内运行,只能访问哪些资源。此时不管它对其它的资源有读写权限此时只要selinux不允许 它就不能访问。
SElinux针对两种类型定义了两个基本概念:
域(domain):域用来对进程进行限制。
上下文(context):上下文用来对系统资源进行限制。

1、SELinux状态查看与配置
配置文件位置:/etc/selinux/config,做到了一个链接到/etc/sysconfig/selinux
设置完模式后,要重启系统才能生效
2、三种模式
强制(enforcing):受selinux保护,违反策略,就禁止操作。默认是这个模式
允许(permissive):不受selinux保护,只是收到警告信息,把违反内容记录下来。
禁用(disabled):禁用selinux
3、SELINUXTYPE=targeted参数
定义selinux使用哪个策略模块保护系统。
targeted:红帽开发的策略,只对dhcpd,httpd,mysqld,named等网络服务保护,不属于那些domain的就都让他们在unconfined_t里,可导入性高,可用性好但是不能对整体进行保护。这样的策略还有Strict、mls:strict是NAS开发的,能对整个系统进行保护,但是设定复杂。mls:是一个较新的安全策略。
4、SELinux相关命令

sestatus:查看selinux工作状态
getenforce:查看selinux是否开启
setenforce:设置selinux运行模式,1开启(Enforcing),0关闭(Permissive)

5、查看和设置selinux的boolean值
selinux策略中定义许多boolean值,用户自定义要让selinux开启保护某些程序,或者是关闭对某些程序、程序中的某个项目的保护,目录位置/selinux/boolean/下相关文件。

getsebool -a :查看boolean值
getsebool -a | grep ftp #查看ftp相关bool值
setsebool ftpd_disable_trans off #临时生效
setsebool -P ftpd_disable_trans off #设置boolean值,-P为设置永久生效

6、使用apache做个个人主页,默认是是用apache来访问运行访问apache的,而boolean值默认httpd禁止切换到其他家目录。所以就会显示没有权限访问。

vi /etc/httpd/conf/httpd.conf
<IfModule mod_userdir.c>
 UserDir public_html #启用网络读取的用户家目录网站
</IfModule>
useradd user
echo “test!!!” >> /home/user/public_html #创建家目录测试页
chmod o+x /home/user/ #设置其他用户对user主目录有执行权限

~user #访问测试页报错

Linux使用入门教程之NFS、Samba、ACL权限、SELinux和


解决方法:setsebool httpd_enable_homedirs on #开启httpd对家目录访问,这时就可以访问了
7、安全上下文相关命令

查看文件安全上下文
ls -Z /etc/hosts
-rw-r--r--. root root system_u:object_r:net_conf_t:s0 /etc/hosts
查看用户安全上下文
id -Z
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

查看进程安全上下文vsftpd和httpd

Linux使用入门教程之NFS、Samba、ACL权限、SELinux和

查看移动和复制文件安全上下文变化

Linux使用入门教程之NFS、Samba、ACL权限、SELinux和

chcon(change context)参数:
-t:类型
-R:递归
-u:用户
-r:角色

Linux使用入门教程之NFS、Samba、ACL权限、SELinux和

9、实验:让 Apache 可以访问位于非默认目录下的网站文件

Linux使用入门教程之NFS、Samba、ACL权限、SELinux和

新创建的index.html是可以访问的,因为继承了目录的安全上下文,属性中包含了httpd_sys_content_t标签

Linux使用入门教程之NFS、Samba、ACL权限、SELinux和


Alias /test "/opt/web"
<Directory "/opt/web">
 options none
 allowoverride none
 order allow,deny
 allow from all
</Directory>
service httpd restart

添加了一个虚拟目录,再访问出现没有权限访问

Linux使用入门教程之NFS、Samba、ACL权限、SELinux和

解决:chcon -t httpd_sys_content_t /opt/web/index.html #再访问虚拟目录成功
10、其他

restorecon -R -v /var/www  #恢复文件默认的上下文
chcon --reference=/etc/named.confg.orig /etc/named.conf #修改参照文件的上下文
/var/log/audit/audit.log #SElinux报错信息

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/19180.html