SELinux的知识点有哪些
本篇内容主要讲解"SELinux的知识点有哪些",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"SELinux的知识点有哪些"吧!
SELinux是「Security-Enhanced Linux」的简称,是美国国家安全局「NSA=The National Security Agency」 和SCC(Secure Computing Corporation)开发的 Linux的一个扩张强制访问控制安全模块。
因为企业的业务平台的服务器上存储着大量的商务机密,个人资料,个人资料它直接关系到个人的隐私问题。特别是政府的网站,作为信息公开的平台,它的安全就更显得重要了。
这些连到互联网的服务器,不可避免的要受到来自世界各地的各种威胁。最坏的时候我们的服务器被入侵,主页文件被替换,机密文件被盗走。除了来自外部的威胁外,内部人员的不法访问,攻击也是不可忽视的。对于这些攻击或者说是威胁,当然有很多的办法,有防火墙,入侵检测系统,打补丁等等。
Linux也和其他的商用UNIX一样,不断有各类的安全漏洞被发现。
传统的Linux OS的不足之处:
虽然Linux 比起 Windows 来说,它的可靠性,稳定定要好得多,但是他也是和其他的UNIX 一样,有以下这些不足之处。
1)存在特权用户root
任何人只要得到root的权限,对于整个系统都可以为所欲为。这一点Windows也一样。
2)对于文件的访问权的划分不够细
在linux系统里,对于文件的操作,只有「所有者」,「所有组」,「其他」这3类的划分。对于「其他」这一类里的用户再细细的划分的话就没有办法了。
3)SUID程序的权限升级
如果设置了SUID权限的程序有了漏洞的话,很容易被攻击者所利用。
4)DAC (Discretionary Access Control)问题
文件目录的所有者可以对文件进行所有的操作,这给系统整体的管理带来不便。
对于以上这些的不足,防火墙,入侵检测系统都是无能为力的。
DAC(Discretionary access control,自主访问控制):
DAC机制就是指对象(比如程序、文件或进程等)的的拥有者可以任意的修改或授予此对象相应的权限。例如传统Linux,Windows等。
MAC(Mandatory Access Control,强制访问控制):
MAC机制是指系统不再允许对象(比如程序、文件或文件夹等)的拥有者随意修改或授予此对象相应的权限,而是透过强制的方式为每个对象统一授予权限,例如SELinux。
SELinux的优点
SELinux系统比起通常的Linux系统来,安全性能要高的多,它通过对于用户,进程权限的最小化,即使受到攻击,进程或者用户权限被夺去,也不会对整个系统造成重大影响。
在标准Linux中,主体的访问控制属性是与进程通过在内核中的进程结构关联的真实有效的用户和组ID,这些属性通过内核利用大量工具进行保护,包括登陆进程和setuid程序,对于文件,文件的inode包括一套访问模式位、文件用户和组ID。
以前的访问控制基于读/写/执行这三个控制位,文件所有者、文件所有者所属组、其他人各一套。在SELinux中,访问控制属性总是安全上下文三人组形式,所有文件和主体都有一个关联的安全上下文,标准Linux使用进程用户/组ID,文件的访问模式,文件用户/组ID要么可以访问要么被拒绝,SELinux使用进程和客体的安全上下文,需要特别指出的是,因为SELinux的主要访问控制特性是类型强制,安全上下文中的类型标识符决定了访问权。
若要访问文件,必须同时具有普通访问权限和SELinux访问权限。因此即使以超级用户身份root运行进程,根据进程以及文件或资源的SELinux安全性上下文可能拒绝访问文件或资源。
一、使用SELinux保护网络服务
====显示和设置SELinux模式====
[root@tianyun ~]# vim /etc/sysconfig/selinux //强模式制 许可模式 禁用模式
[root@tianyun ~]# getenforce //查看当前SElinux的状态
[root@tianyun ~]# setenforce //可以在强模式制 许可模式之间切换
[root@tianyun ~]# sestatus //列出目录SELinux使用的策略(Policy)
文件上下文 FILE CONTEXTS:
====显示和设置SELinux文件、进程等的上下文====
[root@tianyun ~]# ps auxZ //查看进程的SELinux安全上下文
[root@tianyun ~]# ps -ZC httpd
[root@tianyun ~]# ls -Zd /home //查看文件的SELinux安全上下文
[root@tianyun ~]# ls -Zd /var/www
====修改文件SELinux上下文====
方法一:chcon
[root@tianyun ~]# chcon -R -t httpd_sys_content_t /virtual
[root@tianyun ~]# chcon -R --reference /var/www/html /vritual
方法二:semanage fcontext
[root@tianyun ~]# yum provides */semanage
[root@tianyun ~]# yum -y install policycoreutils policycoreutils-pythons
让 Apache 可以访问位于非默认目录下的网站文件
首先,用 semanage fcontext -l | grep '/var/www' 获知默认 /var/www 目录的 SELinux 上下文:
/var/www(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
从中可以看到 Apache 只能访问包含 httpd_sys_content_t 标签的文件。
假设希望 Apache 使用 /srv/www 作为网站文件目录,那么就需要给这个目录下的文件增加 httpd_sys_content_t 标签,分两步实现。
首先为 /srv/www 这个目录下的文件添加默认标签类型:semanage fcontext -a -t httpd_sys_content_t '/srv/www(/.*)?' 然后用新的标签类型标注已有文件:restorecon -Rv /srv/www 之后 Apache 就可以使用该目录下的文件构建网站了。
其中 restorecon 在 SELinux 管理中很常见,起到恢复文件默认标签的作用。比如当从用户主目录下将某个文件复制到 Apache 网站目录下时,Apache 默认是无法访问,因为用户主目录的下的文件标签是 user_home_t。
此时就需要 restorecon 将其恢复为可被 Apache 访问的 httpd_sys_content_t 类型:
[root@tianyun ~]# semanage fcontext -a -t httpd_sys_content_t "/web2" //针对目录
[root@tianyun ~]# semanage fcontext -a -t httpd_sys_content_t "/web2(/.*)?" //针对目录及目录下的所有文件
[root@tianyun ~]# semanage fcontext -a -t httpd_sys_content_t "/web2/file4" //针对文件
[root@tianyun ~]# semanage fcontext -a -t httpd_sys_content_t "/web2/index\.txt" //针对文件
1. cp、mv对上下文的影响
[root@tianyun ~]# touch /tmp/file1 /tmp/file2
[root@tianyun ~]# cp /tmp/file1 /var/www/html
[root@tianyun ~]# mv /tmp/file2 /var/www/html
[root@tianyun ~]# ls -Z /var/www/html/file*
[root@tianyun ~]# semanage fcontext -l |grep ^/var/www
[root@tianyun ~]# restorecon -Rv /var/www
2.针对新目录添加上下文
[root@tianyun ~]# mkdir /virtual
[root@tianyun ~]# touch /virtual/index.html
[root@tianyun ~]# ls -Zd /virtual
[root@tianyun ~]# semanage fcontext -a -t httpd_sys_content_t '/virtual(/.*)?'
[root@tianyun ~]# restorecon -RFvv /virtual
除此之外我们还可以使用man来得到帮助 man -k http| grep selinux
SELinux布尔值
====通过SELinux布尔值调整策略行为====
SELinux布尔值是更改SELinux策略行为的开关
man -k '_selinux'
cd /selinux/booleans 相当于变量
getsebool -a |grep httpd 用于显示布尔值
setsebool 用于修改布尔值
setsebool -P 修改SELinux策略,以永久保留修改
semanage boolean -l |grep httpd_enable_homedirs 显示布尔值是否永久
二.
监控SELinux策略冲突情况
部署SELinux日志分析工具
必须安装setroubleshoot-server软件包,才能将SELinux消息发送至/var/log/messages
setroubleshoot-server侦听/var/log/audit/audit.log中的审核信息并将简短摘要发送至/var/log/messages
该摘要包括SELinux冲突的唯一标识符(UUIDs),可用于收集更多信息
[root@tianyun ~]# yum -y install setroubleshoot setroubleshoot-server
[root@tianyun ~]# service rsyslog restart; chkconfig rsyslog on
[root@tianyun ~]# service auditd restart; chkconfig auditd on
1.在开启SElinux时,使用匿名用户访问ftp,并在upload目录下上传一个文件
在vsftpd.conf配置ftp匿名用户可写
anonymous_enable
anon_upload_enable
anon_other_write_enable
anon_mkdir_write_enable
使用robin用户访问自己的家目录 并且可以上传
2.搭建samba服务器,自定义文件夹/share,使用samba共享,允许user1 user2 用户 rw访问 /share,允许user1通过samba访问自己家目录
到此,相信大家对"SELinux的知识点有哪些"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!