当前位置: 首页 > Linux

军工级SELinux

时间:2023-04-06 21:28:59 Linux

博客参考http://www.178linux.com/48336http://www.178linux.com/47812http://www.178linux.com/49367SELinux介绍SELinux的历史selinux:secureenhancedLinux,isthe美国国家安全局和scc共同开发的Linux强制访问控制安全模块。2000年后在GNUGPL下发布,Linux内核2.6版本后集成到内核中。DAC:自主访问控制。MAC:强制访问控制。DAC:进程在DAC环境中不受约束。MAC:MAC环境下策略的规则决定了控制的严格程度。MAC:在MAC环境下可以限制进程。策略用于定义受限进程可以使用哪些资源(文件和端口)。默认情况下,未明确允许的操作将被拒绝。 SELinux的四种工作严格(strict):每个进程都由selinux控制。Targeted(针对性):用于保护常见的网络服务。selinux只控制有限的进程,只监控易受入侵的进程。rhel4只保护了13个服务,rhel5保护了88个服务。minimum:修改有针对性,只针对选定的网络服务。mls:提供mls(多级安全)机制的安全性。minimum和mls不够稳定,没有使用。SELinux安全上下文(一)在传统Linux中,一切皆文件,访问受用户、组、权限控制。(2)在SELinux中,一切皆对象,其访问权限由存储在Inode扩展属性字段中的security元素控制。(3)所有文件和端口资源和进程都有安全标签:“安全上下文”(securitycontext)(4)安全上下文由五个元素组成:user:role:type:sensitivity:categoryuser_u:object_r:tmp_t:s0:c0(5)实际上下文:存储在文件系统中,ls–Z;ps–Z(6)Expected(default)context:存储在二进制SELinux策略库中(映射目录和预期的安全上下文)semanagefcontext–l5一个安全元素(1)User:表示登录系统的用户类型,如root,user_u,system_u,大部分本地进程属于自由(unconfined)进程(2)角色:定义文件,进程和用户的用途:文件:object_r,进程和用户:system_r(3)类型:指定数据类型,规则中定义了哪种进程类型访问哪个文件目标策略基于类型,多个服务共享:public_content_t(4)敏感度:需要限制访问,由组织定义分级安全级别,如unclassified,secret,top,secret,一个对象只有一个敏感度,分为0-15级,s0最低,Target策略默认使用s0(5)Category:对特定组织不分层次的分类,比如FBISecret,NSAsecret,一个object可以有多个类别,c0-c1023共1024个类别,Targetpolicy不使用类别 SELinuxpolicy(1)object(对象):所有可以读取的对象,包括文件、目录、进程、端口等。(2)主题:进程称为主题(3)在SELinux中,所有文件都分配了一个类型文件类型标签,所有进程也分配了一个域。标签。域标签可以执行的操作在安全策略中定义。(4)当主体试图访问客体时,Kernel中的策略执行服务器会检查AVC(AccessVectorCache),其中缓存了主体和客体的权限,寻找“应用+文件”的安全环境.然后根据查询结果允许或拒绝访问(5)安全策略:定义主体读取客体的规则库,规则记录哪类主体使用何种方法读取哪个客体被允许或拒绝,并定义哪些行为是允许或拒绝管理文件的安全标签1.配置selinux(1)是否启用SELinux(2)重新给文件打标签(3)为端口设置安全标签(4)设置布尔值某些操作的开关(5)SELinux日志管理2.Selinux状态:(1)enforcing:Mandatory,必须限制每个受限进程(2)permissive:允许,每个受限进程的违规操作不会被禁止,但会被记录下来auditlog中(3)disabled:Disabled注意:关闭状态下创建的文件不会有selinux标签,重新打开后需要重启,没有标签的文件会自动打上标签3.相关命令:(1)getenforce:GetCurrentstatusofselinux(2)sestatus:查看selinux状态(3)setenforce0|10:设置为permissive1:设置为enforcing4。配置文件(1)/boot/grub/grub.conf使用selinux=0禁用SELinux(2)/etc/sysconfig/selinux(3)/etc/selinux/config(4)SELINUX={disabled|enforcing|permissive}5.修改selinux安全标签(1)重新给文件加上安全标签chcon[OPTION]...[-uUSER][-rROLE][-tTYPE]FILE...chcon[OPTION]...--reference=RFILEFILE...引用文件修改安全上下文标签(2)恢复目录或文件默认安全上下文或标签-Rrecursiverestorecon[-R]/path/to/somewhere6.默认安全上下文查询和修改(1)semanage来自policycoreutils-python包(2)查看默认安全上下文下面semanagefcontext–l(3)添加安全上下文semanagefcontext-a–thttpd_sys_content_t'/testdir(/.*)?'restorecon–rv/testdir(4)删除安全上下文semanagefcontext-d–thttpd_sys_content_t'/testdir(/.*)?'7.selinux端口标签管理端口标签查看端口标签semanageport–laddportsemanageport-a-tport_label-ptcp|udpPORTsemanageport-a-thttp_port_t-ptcp9527deleteportsemanageport-d-tport_label-ptcp|udpPORTsemanageport-d-thttp_port_t-ptcp9527modifysemanageport-m-tport_label-ptcp|udpPORTsemanageport-m-thttp_port_t-ptcp9527manageSELinuxbooleanswitch1.布尔值规则:getseboolsetsebool2.查看bool命令getsebool[-a][boolean]模块名-a查看所有booleanvaluessemanageboolean–lsemanageboolean-l–C查看修改后的布尔值3.设置bool值命令setsebool[-P]booleanvalue-P保存修改结果到本地磁盘setsebool[-P]boolean=valuemanagementlogyuminstallsetroubleshoot*(restarttoeffect)writewronginformationto/var/log/messagegrepsetroubleshoot/var/log/messagessealert-lUUID查看安全事件日志说明sealert-a/var/log/audit/audit.log扫描并分析日志查看SELinuxyum-yinstallselinux-policy-develmandbman-k_selinux