RHEL6__SELinux管理轻舞飞扬1.SELinux概述SELinux(Security-EnhancedLinux)是美国国家安全局(NAS)对于强制访问控制的实现,是Linux上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinuxprovidesaflexibleMandatoryAccessControl(MAC)systembuiltintotheLinuxkernel.UnderstandardLinuxDiscretionaryAccessControl(DAC),anapplicationorprocessrunningasauser(UIDorSUID)hastheuser‘spermissionstoobjectssuchasfiles,sockets,andotherprocesses.RunningaMACkernelprotectsthesystemfrommalicious(有缺陷)orflawed(恶意)applicationsthatcandamageordestroythesystem.DACvsMACDAC主体是用户,访问目标文件由文件本身的权限决定,依进程运行时的用户身份决定其访问权限权限MAC主体是进程,访问目标文件由策略决定SELinux的目的包装比较脆弱的服务,相当于给服务加了一层安全壳,使服务使用起来更加安全。SELinux工作原理SELinux增加了一个并行权限集全,其中每个进程通过SELinux安全性上下文运行,系统上的文件和其他资源也都设置了上下文标签。与普通权限的不同之处在于可配置的SELinux策略控制哪些进程上下文可以访问哪些文件上下文。2.SELinux的配置文件/etc/sysconfig/selinux#ThisfilecontrolsthestateofSELinuxonthesystem.#SELINUX=cantakeoneofthesethreevalues:#enforcing-SELinuxsecuritypolicyisenforced.#permissive-SELinuxprintswarningsinsteadofenforcing.#disabled-NoSELinuxpolicyisloaded.SELINUX=enforcing#SELINUXTYPE=cantakeoneofthesetwovalues:#targeted-Targetedprocessesareprotected,#mls-MultiLevelSecurityprotection.SELINUXTYPE=targeted3.SELinux的3种模式Enforcing强制模式:默认模式,按照SELinux的策略来进行验证和管理系统安全。如果发现和SELinux的规定不相符合则强制阻止程序的运行或者访问,同时给出提示。Permissive允许模式:系统记录所有违反策略的行为并给与一定的提示,同时不中阻止程序的运行。Disabled禁用模式:关闭SELinux注:禁用的另一种方式:在启动的时候,也可以通过传递参数selinux给内核来控制它kernel/vmlinuz-2.6.32-71.el6.x86_64roroot=UUID=073f0cf8-201d-4981-bb2c-610c0d95e41fselinux=0网页无论放置在哪个目录下都可以访问,相关行为不记录在LOG里网页无论放置在哪个目录下都可以访问,相关行为记录在LOG里网页指定存放服务本身的根目录下,可以访问,并受selinux,相关行为记录在LOG里SELINUX--------SELinux工作状态,可以设置为enforcing,permissive或disabled。SELINUXTYPE--------指定保护级别。默认是targeted,仅作用于daemons。另一个选择是mls使用SELinux进行全面保护。SELOCALDEFS--------支持本地SELinux策略。默认设置为0(即关闭)设置selinux的模式getenforce:查询当前的SELinux模式setenforce0|10:允许模式1:强制模式这将改动/selinux/enforce的布尔值TheSELinuxPseudo-FileSystem所有操作系统访问控制都是以关联的客体和主体的的某种类型的访问控制属性为基础的。在SELinux中,访问控制属性叫做安全上下文。所有客体(文件、进程间通信通道、套接字、网络主机等)和主体(进程)都有与其关联的安全上下文一个安全上下文由用户、角色和类型标识符3部分组成。Selinux的五种元素User:role:type:sensitivity:categoryUser_u:object_r:tmp_t:s0:c0用户(user)指登陆到系统的用户类型;根用户登陆,则用户类型就是root;其他用户类型是user_u,即便是使用su命令提高访问权限也还是user_u;进程类型是system_u。角色(role)定义某个文件、进程、或用户的目的。文件角色是object_r;进程角色是system_r;用户角色也是system_r;类型(type)“强制类型”用来指定文件或者进程中数据的性质。策略中的规则指定那个进程类型可以使用哪个文件类型。敏感性(sensitivity):被政府、军事等部门使用的安全级别。类别(cagegory)与组类似,但可以阻止root访问的保密数据。备注:类型为unconfined_t得到进程是尚未被selinux限制的进程。SELinux的主要访问控制特性是类型强制,安全上下文中的类型标识符决定了访问权ls–Z查看文件的安全上下文ps-Z查看进程的上下文id–Z查看用户的上下文chcon:改变某个文件或目录的上下文配置chcon-R-uuser_u-tpublic_content_rw_t/ftp默认的文件配置保存在/etc/selinux/targeted/contexts/files/file_contexts如果你进行了错误的操作,想使某个文件返回原来的SELinux配置,可以使用restorecon命令根据存储在file_contexts的配置进行恢复Restorecon–v–R/home/tonychcon–reference对象1对象2把对象1的安全环境类型应用到对象2上cechcon–reference=/var/chcon–ttmp_t/path修改目标对象的安全环境类型。semanage新建一条规则,指定/var/ftp/incoming目录及其下的所有文件的扩展属性为public_content_rw_tsemanagefcontext-a-tpublic_content_rw_t/var/ftp/incoming/.*验证:semanagefcontext-l|grepincomingSELinux布尔值设置SELinux策略可以分为不同的类,一些于系统管理有关,一些关于服务,还有一些其他选项。你做的任何改动都对应这/selinux/booleans目录下的布尔变量配置让SELinux开启保护某些程序或关闭对些程序的某个项目的保护selinux策略的控制策略文件位置/selinux/booleansgetsebool控制策略:查看某个控制策略启用情况getsebool-a[root@server~]#setseboolhttpd_enable_cgi1[root@server~]#getseboolhttpd_enable_cgihttpd_enable_cgi--onsetsebool–P控制策略on|off-P表示始终;开启或者关闭某个策略setsebool-Pftp_home_dir=1监视SELinux违反行为sealert–a/var/log/audit/audit.log查看selinux错误日志semanageboolean-l查看定义规则grepavc/var/log/messages看一些selinux相关信息policycoreutils-guiSElinux的图形化管理工具setroubleshoot:SELinux排错工具与SELinux相关工具sestatus-bv查询selinux状态semodule–l查看selinux加载的内核模块案例1:了解安全环境将一组文件转到网络服务器上,并要在SELinux框架下运行.案例2:FTP服务器(允许本地用户)QUESTIONSANSWERS