Linux学习笔记总结(九十七)-linux系统的后置访问控制安全模块SELinux介绍
SELinux是SecurityenhancedLinux的简称,是日本国家安全局NSA和SCC开发的一个扩张强制访问控制安全模块。
linux系统的不足:
存在特权用户root:任何人只要得到root的权限,对于整个系统都可以为所欲为。对于文件的访问权限的界定不够细:在linux系统里,对于文件的操作,只有所有者、所有组、其他三类界定,对于“其他”的用户再细分没有办法。SUID程序的权限升级:假如设置了SUID权限的程序有了漏洞的话,很容易被功击者借助。DAC(DiscretionaryAccessControl)问题:文件目录的所有者可以对文件进行所有的操作,这给系统整体的管理带来不便。
SELinux的特征:
MAC(MandatoryAccessControl)-对访问的控制彻底化
对于所有的文件、目录、端口这类的资源的访问,都可以是基于策略设定的,这种策略是由管理员地址的,通常用户是没有权限修改的。
TE(TypeEnforcement)-对于进程只付与最小的权限
Te概念在SELinux里特别的重要,它的特征是对所有的文件都赋于一个叫type的文件类型标签,对于所有的进程也赋于各自的一个叫domain的标签。Domain标签才能执行的操作也是由accessvector在策略里定好的。
我们熟悉的apache服务器,httpd进程只能在http_t里运行,这个http_t的domain能执行的操作,例如能读网页内容文件赋于http_sys_content_t,密码文件赋于shadow_t,TCP的80端口赋于http_port_t等等。若果在accessvector里我们不容许http_t来对http_port_t进行操作的话,Apache启动都启动不了。反过来说linux解压rar,我们只容许80端口,只容许读取被标为httpd_sys_content_t的文件,httpd_t就不能用别的端口,也不能修改这些标为httpd_sys_content_t的文件(readonly)。
domain迁移-避免权限升级
在用户环境里运行点对点下载软件azureus,你当前的domain是fu_t,而且你考虑到安全问题,你准备让他在azureus_t里运行,你要是在terminal里用命令启动azureus的话,它的进程的domain都会默认承继你施行的shell的fu_t.
有了domain迁移的话,我们就可以让azureus在我们制订的azureus_t里运行,在安全里面,这些做法更可取红帽子 linux 系统下载,它不会影响到你的fu_t。
下边是domain迁移指示的事例:
domain_auto_trans(fu_t,azureus_exec_t,azureus_t)
意思是:当在fu_tdomain里,推行了被标为azureus_exec_t的文件时,domain从fu_t迁移到azureus_t。下边的apache启动的迁移图。注意了红帽子 linux 系统下载,由于从哪一个domain能迁移到http_t是在策略里定好了,所以要是我们自动(/etc/init.d/httpdstart)启动apache的话,可能让然留在sysadm_t里,这样就不能完成正确的迁移。要用run_init命令来自动启动。
RBAC(rolebaseaccesscontrol)-对于用户只付与最小的权限
对于用户来说,被界定成一些ROLE,虽然是ROOT用户linux qq,你要是不在sysadmin_r里,也还是不能施行sysadmin_t管理操作的。由于,这些ROLE可以执行这些domain也是在策略里设定的。ROLE也是可以迁移的,并且也只能按策略规定的迁移。
SELinux控制切换:
2.6内核的版本都支持SELinux。
/etc/sysconfig/selinux标准设定:
#ThisfilecontrolsthestateofSELinuxonthesystem.
#SELINUX=cantakeoneofthesethreevalues:
#enforcing-SELinuxsecuritypolicyisenforced.
#permissive-SELinuxprintswarningsinsteadofenforcing.
#disabled-NoSELinuxpolicyisloaded.
SELINUX=enforcing
#SELINUXTYPE=cantakeoneofthreetwovalues:
#targeted-Targetedprocessesareprotected,
#minimum-Modificationoftargetedpolicy.Onlyselectedprocessesareprotected.
#mls-MultiLevelSecurityprotection.
SELINUXTYPE=targeted
SELinux有三种选择:disabled、permissive、enforcing。
disable:禁用。
permissive:就是SELinux有效,而且就算你违背了策略它仍然让你继续操作,而且会把你的违背的内容记录出来。在我们开发策略的时侯特别有用。相遇debug模式。
enforcing:就是你违背了策略,你就难以继续操作下去。
我们不仅在/etc/sysconfig/selinux设定它外,在启动的时侯,也可以通过传递参数SELinux给内核来控制它。(Fedora5默认是有效)
kernel/boot/vmlinuz-2.6.15-1.2054_FC5roroot=LABEL=/rhgbquietselinux=0
里面的额变更可以让它无效。
SELinuxTYPE:
现今主要有2大类:
一类就是红围巾开发的targeted,它只是对于,主要的网路服务进行保护,比apache,sendmail,bind,postgresql等,不属于这些domain的就都让她们在unconfined_t里,可导出性高,可用性好并且不能对整体进行保护。
另一类是strict,是NAS开发的,能对整个系统进行保护,并且设定复制。
SELinux的基本操作:
SELinux是经过安全加强的Linux操作系统,实际上,基本上原来的运用软件没有必要更改能够在它前面运行。真正做了非常更改的RPM包只有50多个。像文件系统EXT3都是经过了扩充。对于一些原有的命令也进行了扩张,另外还是降低了一些新的命令,接出来我们就来瞧瞧这种命令。
文件操作ls命令
在命令前面加个-Z或则加--context
ls–Z
ls–context
restorecon
当这个文件在策略里有定义时,可以恢复原先的文件标签。
setfiles
跟chcon一样可以修改一部份文件的标签,不须要对整个文件系统重新设定标签。
fixfiles
通常是对整个文件系统,前面通常跟relabel,对整个系统relabel后,通常我们都重新启动。假如,在根目录下有.autorelabel空文件的话,每次重新启动时都要调用fixfilesrelabel
star
就是tar在SELinux下的互换命令,能把文件的标签也一起备份上去。
cp
可以跟-Z,--context=CONTEXT在拷贝的时侯指定目的地文件的securitycontext
find
可以跟—context查特定的type的文件
find/home/fu/--contextfu:fu_r:amule_t-execls-Z{}:
run_init
在sysadm_t里自动启动一些如apache之类的程序,也可以让它正常运行,domain迁移。
程序如今在那个domain运行,我们可以在ps命令后前面加-Z
ps-eZ
ROLE的确认和变更
命令id能拿来确认自己的securitycontext
这儿,尽管是root用户,但也只是在通常的ROLE和staff_t里运行,假如在enforcing模式下,这时的root对于系统管理工作来说,是哪些也干不了。
模式切换getenforce
得到当前的selinux值
setenforce
修改当前的selinux值,前面可以更enforcing,permissive或则1,0
sestatus
显示当前的selinxu的信息。