搜档网
当前位置:搜档网 › SElinux

SElinux

SElinux
SElinux

SElinux

一.简介

SELinux全称是Security Enhanced Linux,由美国国家安全部(National Security Agency)领导开发的GPL项目,它拥有一个灵活而强制性的访问控制结构,旨在提高Linux 系统的安全性,提供强健的安全保证,可防御未知攻击,相当于B1级的军事安全性能。比MS NT的C2等高得多。

SELinux起源于自1980开始的微内核和操作系统安全的研究,这两条研究线路最后形成了一个叫做的分布式信任计算机(Distribute Trusted Mach (DTMach))的项目,它融合了早期研究项目的成果(LOCK【锁】,它包含一组安全内核类型强制;Trusted Mach【信任计算机】,它将多层安全控制合并到计算机微内核中)。美国国家安全局的研究组织参加了DTMach项目,付出了巨大努力,并且继续参与了大量的后续安全微内核项目。最终,这些工作和努力导致了一个新的项目产生,那就是Flask,它支持更丰富的动态类型的强制机制。

由于不同平台对这这项技术没有广泛使用,NAS认为需要在大量的社团中展示这个技术,以说明它的持久生命力,并收集广泛的使用支持意见。在1999年夏天,NSA开始在Linux内核中实现Flask安全架构,在2000年十二月,NSA发布了这项研究的第一个公共版本,叫做安全增强的Linux。因为是在主流的操作系统中实现的,所以SELinux开始受到Linux社区的注意,SELinux最迟是在2.2.x内核中以一套内核补丁的形式发布的。

随着2001年Linux内核高级会议在加拿大渥太华顺利召开,Linux安全模型(LSM[7])项目开始为Linux内核创建灵活的框架,允许不同的安全扩展添加到Linux中。NSA和

SELinux社区是SELinux的主要贡献者,SELinux帮助LSM实现了大量的需求,为了与LSM 一起工作,NSA开始修改SELinux使用LSM框架。2002年八月LSM核心特性被集成到Linux内核主线,同时被合并到Linux 2.6内核。2003年八月,NSA在开源社区的帮助下,完成了SELinux到LSM框架的迁移,至此,SELinux进入Linux 2.6内核主线,SELinux 已经成为一种全功能的LSM模块,包括在核心Linux代码集中。

数个Linux发行版开始在2.6内核中不同程度使用SELinux特性,但最主要是靠Red Hat 发起的Fedora Core项目才使SELinux具备企业级应用能力,NSA和Red Hat开始联合集成SELinux,将其作为Fedora Core Linux发行版的一部分。在Red Hat参与之前,SELinux 总是作为一个附加的软件包,需要专家级任务才能进行集成。Red Hat开始采取行动让SELinux成为主流发行版的一部分,完成了用户空间工具和服务的修改,默认开启增强的安全保护。从Fedora Core 2开始,SELinux和它的支持基础架构以及工具得到改进。在2005年早些时候,Red Hat发布了它的Enterprise Linux 4(REL 4),在这个版本中,SELinux 默认就是完全开启的,SELinux和强制访问控制已经进入了主流操作系统和市场。

SELinux仍然是一个相对较新和复杂的技术,重要的研究和开发在继续不断地改进它的功能。

应用SELinux后,可以减轻恶意攻击或恶意软件带来的灾难,并提供对机密性和完整性有很高要求的信息很高的安全保障。普通Linux安全和传统Unix系统一样,基于自主存取控制方法,即DAC,只要符合规定的权限,如规定的所有者和文件属性等,就可存取资源。在传统的安全机制下,一些通过setuid/setgid的程序就产生了严重安全隐患,甚至一些错误的配置就可引发巨大的漏洞,被轻易攻击。

而SELinux则基于强制存取控制方法,即MAC,透过强制性的安全策略,应用程序或用户必须同时符合DAC及对应SELinux的MAC才能进行正常操作,否则都将遭到拒绝或失败,而这些问题将不会影响其他正常运作的程序和应用,并保持它们的安全系统结构。

二.Selinux管理配置

1.Selinux控制规则及相关概念

1.1.DAC(自主存取控制)依据程序运行时的身份决定权限,是大部分操作系统的权限存取控制方式。也就是依据文件的own,group,other/r,w,x权限进行限制。Root有最高权限无法限制。r,w,x权限划分太粗糙。无法针对不同的进程实现限制。

1.2.MAC(强制存取控制)依据条件决定是否有存取权限。可以规范个别细致的项目进行存取控制,提供完整的彻底化规范限制。可以对文件,目录,网络,套接字等进行规范,所有动作必须先得到DAC授权,然后得到MAC授权才可以存取。

1.3.TE(类型强制)所有操作系统访问控制都是以关联的客体和主体的某种类型的访问控制属性为基础的。在SELinux中,访问控制属性叫做安全上下文。所有客体(文件、进程间通讯通道、套接字、网络主机等)和主体(进程)都有与其关联的安全上下文,一个安全上下文由三部分组成:用户、角色和类型标识符。Selinux对一些命令做了修改.ls –Z ps –Zaux id –Z

例如:[root@localhost ~]# id -Z

root:system_r:unconfined_t:SystemLow-SystemHigh

注:这里的第四部分SystemLow-SystemHigh为安全上下文的扩展属性在后面会有介绍。

在SELinux中,访问控制属性总是安全上下文三人组形式,所有客体和主体都有一个关联的安全上下文, 因为SELinux的主要访问控制特性是类型强制,安全上下文中的类型标识符决定了访问权。如上例中unconfined_t决定访问权限。

1.3.1.安全上下文:安全上下文是一个简单的、一致的访问控制属性,在SELinux中,类型标识符是安全上下文的主要组成部分,由于历史原因,一个进程的类型通常被称为一个域(domain),"域"和"域类型"意思都是一个.

1.3.

2.类型:安全上下文中的用户和角色标识符除了对强制有一点约束之外对类型强制访问控制策略没什么影响,对于进程,用户和角色标识符显得更有意义,因为它们用于控制类型和用户标识符的联合体,这样就会Linux用户账号关联起来;然而,对于客体,用户和角色标识符几乎很少使用,为了规范管理,客体的角色常常是object_r,客体的用户常常是创建客体的进程的用户标识符,它们在访问控制上没什么作用。

用一个例子来解释以上概念:

假如我们设定1.httpd这个进程使用httpd_t这个域类型运行.

2.将httpd进程使用的端口标记为httpd_port_t类型.

3.将网页目录标记为httpd_sys_content_t类型.

4.限制以httpd_t域运行的httpd程序只能监听httpd_port_t类型的端口,并限制此域的进程只能存取标记为httpd_sys_content_t的网页文件。

1.4.RBAC(基于角色的访问控制)

SELinux提供了一种依赖于类型强制(TE)基于角色的访问控制(RBAC),角色用于组域类型和限制域类型与用户之间的关系,SELinux中的用户关联一个或多个角色,使用角色和用户,RBAC特性允许有效地定义和管理最终授予Linux用户的特权。

注:组域类型指的是将多个域类型关联到一个角色。

SELinux中的角色和用户构成了它的RBAC特性的基础,SELinux中的访问权不是直接授予用户或角色的,角色扮演的是类型强制的一个支持特性,它和用户一起为Linux用户及其允许允许的程序提供了一种绑定基于类型的访问控制,SELinux中的RBAC通过定义域类型和用户之间的关系对类型强制做了更多限制,以控制Linux用户的特权和访问许可,RBAC没有允许访问权,在SELinux中,所有的允许访问权都是由类型强制提供的。

警告:Linux和SELinux有它们自己的用户标识符,如/etc/passwd中定义的用户,那就是"Linux用户"来,SElinux指的是SELinux策略中在安全上下文中定义的用户标识符。

SELinux中的RBAC特性依赖并支持TE特性,我们通过将域类型和一个或多个角色进行关联,而不是直接将权限授给用户,RBAC通过在安全上下文中控制域类型、角色和用户的关联实现对TE策略更多的约束,也就是说,域转换是受用户的角色约束的,最终约束了用户的总体权限。我们不会直接将域类型和用户进行关联,相反,域类型是与角色进行关联的,然后再将角色与SELinux用户进行关联,这就间接增加了两个效果,首先,他简化了管理所有策略的复杂度,一个系统可能只有三或四个角色,但有成千上万的用户和域类型,直接将域类型与用户进行关联,将会导致管理非常困难,将域类型分配给一小撮描述类型(如普通用户域类型)特权集的角色,然后将这些橘色指派给用户,这样就更容易管理了。

SELinux中的角色也允许我们限制用户的访问,对于任何进程,同一时间只有一个角色(即进程安全上下文中的角色)是"活动的",因为域类型是与角色进行关联的,域转换就会

受到与它们关联的活动角色的限制了。

限制域转换只对当前活动的角色有效,允许用户关联更多的角色,不会获得所有角色访问权的并集,例如:我们可以将一个用户与系统管理角色和受限的普通用户角色进行关联,在后面进行交互时将会使用普通用户角色,而不是管理角色,在常规使用过程中,普通用户角色将会被激活,阻止访问权授予管理域类型,仅当必需执行系统管理任务时激活管理角色(即通过域转换改变),这与标准Linux下使用普通账户切换到root账户进行系统管理非常类似,但比准Linux方式更精细。

关键要记住角色仅仅是一套域类型的集合,他可以方便地与用户建立联系,它们不是SELinux中独立的访问控制机制。

简单一点说就是,我们可以制定很多角色指定不同的权限规范,那样就可以规范不同的用户又不同的角色,只有切换到特定的角色才有特定的存取权限。对于用户来说,被划分成一些role,即使是ROOT用户,你要是不在sysadm_r里,也还是不能实行sysadm_t管理操作的。因为,那些role可以执行那些domain也是在策略里设定的。role也是可以迁移的,但是也只能按策略规定的迁移。

1.5.DT(域类型转换)

域类型转换可以实现权限的扩展或者缩小,防止权限升级。例如:A进程运行在A_t 域中,B进程运行在B_t域中。当以A_t运行B进程的时候可以规范B进程是要沿用A_t 环境呢,还是继承自己的B_t环境。

举个例子进行说明:

1.5.1.环境介绍.察看当前用户的类型,vsftpd启动脚本的类型以及vsftpd执行程序的类型. [root@localhost ~]# id -Z

user_u:system_r:unconfined_t

[root@localhost ~]# ls -Z /etc/init.d/vsftpd

-rwxr-xr-x root root system_u:object_r:initrc_exec_t /etc/init.d/vsftpd

[root@localhost ~]# ls /usr/sbin/vsftpd -Z

-rwxr-xr-x root root system_u:object_r:ftpd_exec_t /usr/sbin/vsftpd

1.5.

2.selinux策略文件里的定义如下:

type_transition unconfined_t initrc_exec_t:process initrc_t

这条定义了以类型为unconfined_t身份执行类型为initrc_t的文件时进程的类型转换为initrc_t.

type_transition initrc_t ftpd_exec_t:process ftpd_t

这条定义了以类型为initrc_t身份执行类型为ftpd_exec_t文件时进程类型转换为ftp_t.

1.5.3.整个运行流程如下:

1.5.3.1.类型为unconfined_t的进程执行类型为initrc_exec_t类型的/etc/init.d/vsftpd文件,根据策略规定执行中的进程运行在initrc_t域中.

1.5.3.

2.在initrc_t域中运行的进程会执行类型为ftpd_exec_t的/usr/sbin/vsftpd程序,根据策略文件的规定,/usr/sbin/vsftpd程序会在ftp_t域中运行.

1.5.3.3.最后我们就可以规范ftp_t类型可以存取的类型来限制ftp服务器.

1.5.3.4.小结

1.5.3.4.1./etc/init.d目录下所有文件的类型为initrc_exec_t

1.5.3.4.

2.在selinux策略中定义了只能使用/etc/init.d目录下的脚本来启动服务.

1.5.3.4.3.启动的服务会进行类型转换而受到selinux策略里的环境而规范.

1.6.Selinux配置文件及设定

1.6.1.Selinux配置文件主目录是/etc/selinux

[root@localhost targeted]# ls /etc/selinux/

config mls restorecond.conf semanage.conf strict targeted

1.6.1.1.使用config文件来配置selinux

SELINUX=enforcing

#此项定义selinux状态。

#enforcing—是强制模式系统受selinux保护。

#permissive—是提示模式系统不会受到selinux保护,只是收到警告信息。

#disabled—禁用selinux。

# SELINUXTYPE= type of policy in use. Possible values are:

# targeted - Only targeted network daemons are protected.

# strict - Full SELinux protection.

SELINUXTYPE=targeted

#此项定义selinux使用哪个策略模块保护系统。

#targeted—小红帽开发的策略,只对apache ,sendmail, bind,postgresql等网络服务保护,不属于那些domain的就都让他们在unconfined_t里,可导入性高,可用性好但是不能对整体进行保护。

# Strict,是NAS开发的,能对整个系统进行保护,但是设定复杂。

#mls,是一个较新的安全策略。

#以上三种策略配置都放置在/etc/selinux目录中,目录和策略名称相同。

1.6.

2.targeted目录是targeted策略配置目录,contexts/子目录包括了许多帮助系统服务和实用程序管理文件安全上下文标记的大量文件,它们也包括登陆进程的默认安全上下文,通常,这些文件只应该由策略开发人员修改,但管理员可能偶尔也需要修改一下,下面列出这些文件的主要用途,你也可以略过这个部分的阅读。

1.6.

2.1.contexts/customizable_types:包括一列当使用restorecon或setfiles实用程序修复文件标记问题时不会被重新标记的类型,这个特性在帮助保护某些文件标记时特别有用,使用SELinux应用程序接口(API)检查上下文是否自定义的是is_context_customizable(3)。

1.6.

2.2.contexts/default_contexts:在初始登陆过程中,用户可能登陆会话可能不止得到一个角色/类型组授权,如管理员就可以以特权用户和非特权用户登陆,这个文件提供了一个

方法决定初始登陆使用哪个登陆进程(login,ssh等)作为默认的角色/类型组。

注意,如果有contexts/users/[USER]文件的话,这些默认值可能会被一个特殊用户覆盖。

1.6.

2.

3.contexts/users/[USER]:这个文件和default_contexts文件的格式一样,除了default_contexts是为一个特殊用户设计的外,如果某个用户的文件已经存在,默认的角色/类型组由该文件的第一个决定。

1.6.

2.4.contexts/failsafe_context:如果登陆进程不能决定用户的默认安全上下文,用户将不能登陆进系统,这和default_contexts文件被破坏会改变非常类似,这个文件提供了一个合理的安全上下文故障自动转移机制,至少允许管理员登陆,它提供最后的登陆进程失败前使用的默认安全上下文,通常是:

sysadm_r:sysadm_t

这样的话,至少管理员可以登陆。

1.6.

2.5.contexts/default_type:这个文件包括一列实用程序(如newrole)使用的角色/类型组,如果我们使用newrole修改我们的角色,但不指定类型,实用程序将会咨询这个文件以确定默认的类型和角色,如果我们使用命令newrole -r sysadm_r,而且这个文件有一行的内容为sysadm_r:sysadm_t,这个命令将会尝试使用sysadm_t作为我们的默认用户域类型。

1.6.

2.6.contexts/files/file_contexts:这个文件包括与文件有关的安全上下文标记信息,作为策略构建过程的一部分,为与文件有关的客体使用初始化安全上下文,它安装在这里帮助实用程序修复标记问题。

1.6.

2.7.contexts/files/file_ contexts.home_dirs:这个文件是使用/usr/sbin/genhomedircon 脚本自动生成的,它的格式与file_contexts一致,但它只用于标记用户home目录。

1.6.

2.8.contexts/files/homedir_template:这个文件包括一个/usr/sbin/genhomedircon脚本使用它产生标记块的模板。

1.6.

2.9.contexts/files/media:这个文件包括挂载在/media/目录下的存储设备的安全上下文,通过libselinux matchmediacon(3) API使用它。

1.6.

2.10.contexts/initrc_context:这个文件包括一个角色/类型组,用于run_init的安全上下文,即管理员以init相同的方式启动系统服务,这样它就可以执行由init初始化的存储在/etc/rc.d/目录下的脚本,这个角色/类型组通常和init用来启动系统服务的角色/类型组一致

1.6.

2.11.contexts/removable_context:这个文件包括可移动媒体设备的默认安全上下文,这个安全上下文用于media上下文文件没有标记的设备

1.6.3.检查selinux策略相关命令

1.6.3.1.seinfo

1.6.3.

2.sesearch –a

1.6.3.3.sesearch –a –t ftpd_t

1.6.4.设置selinux相关命令

1.6.4.1.sestatus 查询selinux工作状态

[root@localhost selinux]# sestatus

SELinux status: enabled

SELinuxfs mount: /selinux

Current mode: enforcing

Mode from config file: enforcing

Policy version: 21

Policy from config file: targeted

1.6.4.

2.selinuxenabled检查selinux是否开启,配合echo $?.传回值是0为开启,1为关闭. [root@localhost selinux]# selinuxenabled

[root@localhost selinux]# echo $?

1.6.4.3.setenforce设定selinux运行状态,1开启,0关闭.

[root@localhost selinux]# setenforce 1

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

1.6.4.4.1.查看boolean值

[root@localhost ~]# getsebool -a

[root@localhost ~]# getsebool -a | grep ftp

1.6.4.4.

2.设置boolean值,-P为设置永久生效.

[root@localhost ~]# setsebool ftpd_disable_trans off

[root@localhost ~]# setsebool -P ftpd_disable_trans off

注:不建议使用setsebool -P ftpd_disable_trans off,这样会让ftp服务器失去selinux保护. 试验1:启动vsftp服务器后以本地帐户登陆服务器,你是否看到本地帐号不能切换到家目录的出错信息?使用以下命令允许本地帐户进入家目录.(off是禁止本地帐户切换到家目录) [root@localhost ~]# setsebool -P ftp_home_dir on

1.6.5.查看安全上下文相关命令

1.6.5.1.查看用户安全上下文,下面是普通用户和超级用户的安全上下文,从第一个字段一次为用户标识,角色,域类型.超级用户的第四字段为扩展的MLS或MCS.(见附录)

tomyang@localhost ~]$ id -Z

user_u:system_r:unconfined_t

[root@localhost ~]# id -Z

root:system_r:unconfined_t:SystemLow-SystemHigh

1.6.5.

2.查看文件安全上下文

[onlyc@localhost ~]$ ls -Z /home/onlyc/

drwxr-xr-x onlyc onlyc user_u:object_r:user_home_t Desktop

1.6.5.3.查看进程的安全上下文

user_u:system_r:ftpd_t 7950 ? Ss 0:00 /usr/sbin/vsftpd

1.6.6.认识安全上下文,安全上下文以用户:角色:类型(域)的形式出现.(这里的用户指的是selinu用户)

1.6.6.1.用户:root表示root帐号身份,user_u表示普通无特权用户(一般用户),system_u表示系统进程.通过用户可以确认身份类型,一般搭配角色使用,身份和不同的角色搭配时权限不同.帐户之间切换时此用户身份不变.但是在targeted策略环境下用户标识没有实质作用.

1.6.6.

2.角色:object_r一般为文件目录的角色,system_r一般为进程的角色.在targeted策略环境中用户的角色一般为system_r.在strict策略中用户的角色被细分为sysadm_r,system_r,user_r,staff_r角色.用户的角色类似组的概念,不同的角色具有不同的身份权限.一个用户可以具备多个角色,但是同一时间只能使用一个角色.但是在targeted策略环境下角色没有实质作用.在targeted策略环境中所有的进程文件的角色都是system_r角色.在strict策略环境中,一般用户登录时角色是user_r,root登陆时角色是staff_r,但是没有特权,切换到sysadm_r角色才具备超级用户的权限.只有staff_r角色可以切换成sysadm_r角色.

1.6.6.3.类型(进程的类型又可以称为域):文件和进程都有一个类型,seliunx依据类型的相关

组合来限制存取权限.

1.6.7.更改安全上下文

1.6.7.1.chcon [-u –r -t] 如果此命令应用于目录上,则以后再此目录建立的文件都会继承目录的类型.

[root@localhost html]# ls -Z

-rw-r--r-- root root user_u:object_r:home_root_t index.html

[root@localhost html]# chcon -t httpd_sys_content_t index.html

[root@localhost html]# ls -Z

-rw-r--r-- root root user_u:object_r:httpd_sys_content_t index.html

也可以这样做

[root@localhost html]# ls -Z

-rw-r--r-- root root user_u:object_r:home_root_t index.html

[root@localhost html]# chcon --reference=/var/www/html index.html

[root@localhost html]# ls -Z

-rw-r--r-- root root system_u:object_r:httpd_sys_content_t index.html

试验1:启动ftp服务器,在服务器上打开匿名用户上传权限,并给目录可写权限,以匿名帐户登陆服务器看匿名帐户能否上传文件?selinux策略默认是不允许匿名用户上传文件的. [root@localhost ~]# vim /etc/vsftpd/vsftpd.conf

anon_upload_enable=YES

[root@localhost ~]# mkdir /var/ftp/upload

[root@localhost ftp]# chmod 1777 upload/

[root@localhost ftp]# ls -Z

drwxrwxrwt root root user_u:object_r:public_content_t upload [root@localhost ftp]# lftp ftp@localhost

Password:

lftp ftp@localhost:~> cd upload/

cd ok, cwd=/upload

lftp ftp@localhost:/upload> ls

lftp ftp@localhost:/upload> put /root/install.log

put: Access failed: 553 Could not create file. (install.log)

现在使用以下命令允许匿名帐户可以上传文件

[root@localhost ftp]# chcon -t public_content_rw_t upload/

[root@localhost ftp]# ls -Z

drwxrwxrwt root root system_u:object_r:public_content_t pub drwxrwxrwt root root user_u:object_r:public_content_rw_t upload [root@localhost ftp]# lftp ftp@localhost

Password:

lftp ftp@localhost:~> cd upload/

cd ok, cwd=/upload

lftp ftp@localhost:/upload> put /root/install.log

27019 bytes transferred

1.6.7.

2.restorecon [-r -F]恢复文件安全上下文的默认值,-r递归–F强制.默认值在/etc/selinux/targeted/contexts/files/file_contexts文件中定义.

[root@localhost www]# ls -Z

drwxr-xr-x root root system_u:object_r:etc_t html

[root@localhost www]# restorecon html

[root@localhost www]# ls -Z

drwxr-xr-x root root system_u:object_r:httpd_sys_content_t html

1.6.7.3. fixfiles一般是对整个文件系统根据/etc/selinux/targeted/contexts/files定义的进行修复,后面一般跟relabel,对整个系统relabel后,一般我们都重新启动。如果,在根目录下有.autorelabel空文件的话,每次重新启动时都调用fixfiles relabel.下面介绍三种用法. check:显示所有与文件上下文文件中安全上下文不匹配的与文件有关的客体。

restore:重新标记那些与文件上下文文件的安全上下文不匹配的与文件有关的客体的安全上下文。

relabel:和restore一样,但它也可以首先从/tmp目录中移除文件。

[root@localhost www]# fixfiles –F relabel /

[root@localhost www]# fixfiles restore /etc/

[root@localhost www]# fixfiles check /etc/

1.6.8.所有的selinux信息都会记录到. /var/log/messages文件中

1.6.8.1.sealert –l 可以察看详细的消息

[root@localhost ~]#cat /var/log/messages

Mar 7 08:07:07 localhost setroubleshoot: SELinux is preventing restorecon (restorecon_t) "write" to /var/www/system_u:object_r:httpd_sys_content_t:s0 (httpd_sys_content_t). For complete SELinux messages. run sealert -l c836e80e-8e05-4d63-a871-3dee9f86a01f

[root@localhost ~]# sealert -l c836e80e-8e05-4d63-a871-3dee9f86a01f

1.6.8.

2.GUI界面

1.6.9.GUI界面的selinux管理工具

1.6.9.1.使用GUI管理工具修改boolean值

Admin

在Admin 类下,你可以允许系统使用未分配的终端(ttys),允许对root 目录进行写操作,从非标准位置读取文件,禁止任何进程加载内核模块,禁止任何对SELinux策略的修改,以及提供对缓冲区溢出保护的支持。

Cronn

在这节,你可以启用额外的规则以支持fcron 调度命令,以及禁用SELinux对cron服务的保护。

CVS

如果你使用CVS 版本控制系统,你可能想使它能够访问密码的影文件。

selinux学习理解

selinux学习理解 一、什么是selinux。 selinux全称是security enhanced linux,安全强化linux,是MAC (mandatory access control,强制访问控制系统)的一个实现,目的在于明确的知名某个程序可以访问哪些资源(程序,端口)。它的用户在于防范0—DAY攻击(利用尚未公开的漏洞实现攻击),所以它不是防火墙和ACL的替代品,功能也不重复。 举例来说,系统上Apache被发现存在一个漏洞,使得远程用户可以访问系统上的敏感文件(比如/etc/passwd),且修复该漏洞的补丁尚未发布,此时selinux可以起到弥补漏洞的方法。因为/etc/passwd 不具有apache的访问标签,所以Apache对于/etc/passwd的访问会被selinux阻止。 相比其他强制访问系统,selinux有如下访问优势: 1.控制策略是可以查询,而非程序比可见的。 2.可以热更改策略,无需或停止服务。 3.可以从程序初始化、继承、执行三个方面,使用策略进行控制。 4.控制范围广,包括:文件系统,目录,文件,文件启动描述符, 端口,消息接口,网络接口。 二、了解和配置selinux。 1、获取当前selinux运行状态 getenforce:可能返回三种结果

Enforcing:记录报警且阻止可疑行为。 Permissive:记录告警,不阻止可以行为。 Disable:关闭selinux。 默认是Enforcing 2、改变selinux状态。 setenforce 1|0 1代表Enforcing,0代表Permissive。此时不需要重启系统就可以实现。 要永久改变selinxu的状态,在/etc/sysconfig/selinux实现。当从disable切换到enforcing或permissive时,要重启系统并为整个文件系统重新创建安全标签。 3、selinux运行策略。 配置文件/etc/sysconfig/seilnux还包含了selinux运行策略的信息,通过改变SELINUXTYPE值实现,该值有两种可能:targeted代表仅针对预制的几种网络服务和访问请求都要使用selinux。strict代表所有网络服务和访问请求要经过selinux。默认为targeted,包含了几乎所有的网络服务的selinux策略配置,已经默认安装并且无需更改可以直接使用。 4、coreutils工具的selinux模式 常见的属于coreutils的工具如ps\ls等,可以通增加-Z的方式查看selinux的信息。 例:ls -Z /etc/ 查看目录ps -auxZ 查看进程 三、Apache selinux配置实例

CentOS上的SELinux实验

SELinux实验 一、环境搭建 因为实验室的Ubuntu系统本身不带SELinux,加上没有源和网速问题,安装不上。因此建议在虚拟机中用CentOS做。 CentOS下载地址: 中国科学技术大学开源镜像站:https://www.sodocs.net/doc/d22059516.html,/centos/6/isos/x86_64/ 网易开源镜像站:https://www.sodocs.net/doc/d22059516.html,/centos/6/isos/x86_64/ 大家选择CentOS-6.5-x86_64-LiveCD.iso下载就好,650MB左右。 机房的电脑默认没开Intel-VT技术,开机按F12,选择System Setup,然后在Virtualization 选项下开起虚拟化支持。 最后用VMware player或者VirtualBox新建虚拟机即可。 二、实验内容 CentOS已经安装好了SELinux,而且默认开启,用sestatus命令查看SELinux状态, 然后用yum install httpd服务, 在/var/www/html/目录下建立a.html文件,内容随意写点什么。然后重启httpd服务, 在浏览器中访问127.0.0.1/a.html,结果如下:

然后在root目录下建立b.html,内容随意,建立好后把b.html文件移动到/var/www/html/目录下,重启httpd服务。 在浏览器中访问b.html,会提示没有权限,如下图所示: 在终端中用ls–Z命令查看/var/www/html/目录下的文件安全上下文:

可以看见区别,因为b.html文件是root用户创建的,因此没有权限访问。 用chcon -t 命令更改文件的上下文环境: 再次在浏览器中访问b.html,可见可以访问了: 大家可以同理完成“修改/var/www/整个目录的上下文环境,使其为httpd不允许访问的类型”,然后在浏览器中测试。

2.1.5 节点防火墙和SELinux配置.

2.1.5 节点防火墙和SELinux配置 1.防火墙设置 在控制和计算节点上分别执行以下操作进行防火墙设置。(1)停止iptables服务。 [root@controller ~]# service iptables stop iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Flushing firewall rules: [ OK ] iptables: Unloading modules: [ OK ] (2)将iptables服务配置为开机不自动启动。 [root@controller ~]# chkconfig iptables off 2.SELinux设置 在控制和计算节点上分别执行以下操作进行SELinux设置。(1)编辑SELinux的配置文件。 [root@controller ~]# vi /etc/sysconfig/selinux # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=permissive # 将SELinux配置为允许模式 # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted 配置完成后,重新启动控制节点和计算节点。

什么是SELinux

SELinux(Security-Enhanced Linux) 是美国国家安全局(NAS)对于强制访问控制的实现,是 Linux? 上最杰出的新安全子系统。NSA是在Linux社区的帮助下开发了一种访问控制体系,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。SELinux 默认安装在 Fedora 和 Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。 SELinux 是 2.6 版本的 Linux 内核中提供的强制访问控制 (MAC)系统。对于目前可用的Linux 安全模块来说,SELinux 是功能最全面,而且测试最充分的,它是在 20 年的 MAC 研究基础上建立的。SELinux 在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的访问控制概念。 大部分使用 SELinux 的人使用的都是 SELinux 就绪的发行版,例如 Fedora、Red Hat Enterprise Linux (RHEL)、Debian 或 Gentoo。它们都是在内核中启用 SELinux 的,并且提供一个可定制的安全策略,还提供很多用户层的库和工具,它们都可以使用 SELinux 的功能。 SELinux是一种基于域-类型模型(domain-type)的强制访问控制(MAC)安全系统,它由NSA编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux 的补丁,最后还有一个相应的安全策略。 众所周知,标准的UNIX安全模型是"任意的访问控制"DAC。就是说,任何程序对其资源享有完全的控制权。假设某个程序打算把含有潜在重要信息的文件仍到/tmp目录下,那么在DAC 情况下没人能阻止他! 而MAC情况下的安全策略完全控制着对所有资源的访问。这是MAC和DAC本质的区别。SELinux提供了比传统的UNIX权限更好的访问控制。 1.背景 SELinux是「Security-Enhanced Linux」的简称,是美国国家安全局「NSA=The National Security Agency」和SCC(Secure Computing Corporation)开发的 Linux的一个扩张强制访问控制安全模块。原先是在Fluke上开发的,2000年以 GNU GPL 发布。 现在以Linux作为因特网服务器是越来越普遍的事了。在我这几年作过的项目里,WEB的开发基本都是基于Linux的,这里有给大公司做的,也给政府部门做的,当然更多的是中小企业做的。这其中给政府做的,我们把SELinux作为一个卖点,接受了不少项目。 2.我们需要安全操作系统的理由 现在不论是政府还是民间企业,大家对信息安全问题是越来越关心了,因为企业的业务平台的服务器上存储着大量的商务机密,个人资料,个人资料它直接关系到个人的隐私问题。特别是我们政府的网站,作为信息公开的平台,它的安全就更显得重要了。这些连到互联网的服务器,不可避免的要受到来自世界各地的各种威胁。最坏的时候我们的服务器被入侵,主页文件被替换,机密文件被盗走。除了来自外部的威胁外,内部人员的不法访问,攻击也是不可忽视的。对于这些攻击或者说是威胁,当然有很多的办法,有防火墙,入侵检测系统,打补丁等等。因为Linux也和其他的商用UNIX一样,不断有各类的安全漏洞被发现。我们对付这些漏洞不得不花很多的人力来堵住它。在这些手段之中,提高OS系统自身的牢固性就显得非常的重要。 2.1传统的Linux OS的不足之处 虽然Linux 比起 Windows 来说,它的可靠性,稳定定要好得多,但是他也是和其他的UNIX 一样,有以下这些不足之处。 1)存在特权用户root 任何人只要得到root的权限,对于整个系统都可以为所欲为。这一点Windows也一样。2)对于文件的访问权的划分不够细

SELinux TE规则

1. 简介 SELinux策略语言主要描述policy.conf的相关语法,其相关部分如下图所示: 2. 类型强制概念 SELinux策略大部分内容都是由多条类型强制规则构成的,这些规则控制被允许的使用权,大多数默认转换标志,审核,以及固定部分的检查。 SELinux策略大部分都是一套声明和规则一起定义的类型强制(TE:Type Enforcement)策略,一个定义良好、严格的TE策略可能包括上千个TE规则,TE规则数量的巨大并不令人惊奇,因为它们表达了所有由内核暴露出的允许对资源的访问权,这就意味着每个进程对每个资源的访问尝试都必须至少要有一条允许的TE访问规则,如果我们仔细思考一下现代Linux操作系统中进程和资源的数量,就明白为什么在策略中有那么多的TE规则了。当我们添加由TE规则控制的审核配置和标志时,对于具有严格限制的SELinux策略,常常会见到它包含有上千条规则,在“创建和编写SELinux安全策略”中,我们将会讨论如何创建和管理这些大量的规则,本文旨在理解TE规则是如何工作的。 TE规则的绝对数量对理解SELinux策略是一个大的挑战,但是规则本身并不复杂,它们的分类相对较少,所有的规则基本上都属于两类范畴: ?访问向量(AV)规则 ?类型规则 我们使用AV规则允许或审核两个类型之间的访问权,我们在某些情况下使用类型规则控制默认的标记决定。 SELinux的一个重要概念是TE规则是将权限与程序的访问结合在一起,而不是结合用户。所有SELinux 策略语言特性都是处理主体(正常的运行中的进程)对客体(文件、目录和套接字等)的访问权的,主要集中于程序访问控制决策,这也是SELinux的主要益处,它允许SELinux策略编写者基于程序的功能和安

selinux试验

Selinux学习 学习目标:学习和掌握selinux相关管理命令。 学习效果:学会使用基础常用的selinux命令,来实现对selinux服务的管理和应用。一、SELinux简介 SELinux的全称是Security-Enhanced Linux,是由美国国家安全局NSA开发的访问控制体制。SELinux可以最大限度地保证Linux系统的安全。 至于它的作用到底有多大,举一个简单的例子可以证明:没有SELinux保护的Linux的安全级别和Windows一样,是C2级,但经过保护SELinux保护的Linux,安全级别则可以达到B1级。如:我们把/tmp目录下的所有文件和目录权限设置为0777,这样在没有SELinux保护的情况下,任何人都可以访问/tmp 下的内容。而在SELinux环境下,尽管目录权限允许你访问/tmp下的内容,但SELinux的安全策略会继续检查你是否可以访问。 NSA推出的SELinux安全体系结构称为 Flask,在这一结构中,安全性策略的逻辑和通用接口一起封装在与操作系统独立的组件中,这个单独的组件称为安全服务器。SELinux的安全服务器定义了一种混合的安全性策略,由类型实施 (TE)、基于角色的访问控制 (RBAC) 和多级安全(MLS) 组成。通过替换安全服务器,可以支持不同的安全策略。SELinux使用策略配置语言定义安全策略,然后通过checkpolicy 编译成二进制形式,存储在文件(如目标策略 /etc/selinux/targeted/policy/policy.18)中,在内核引导时读到内核空间。这意味着安全性策略在每次系统引导时都会有所不同。 SELinux的策略分为两种,一个是目标(targeted)策略,另一个是严格(strict)策略。有限策略仅针对部分系统网络服务和进程执行SELinux策略,而严厉策略是执行全局的NSA默认策略。有限策略模式下,9个(可能更多)系统服务受SELinux监控,几乎所有的网络服务都受控。 配置文件是/etc/selinux/config,一般测试过程中使用“permissive”模式,这样仅会在违反SELinux规则时发出警告,然后修改规则,最后由用户觉得是否执行严格“enforcing”的策略,禁止违反规则策略的行为。规则决定SELinux 的工作行为和方式,策略决定具体的安全细节如文件系统,文件一致性。 二、使用设置

Selinux配置详解

Selinux配置详解 1.背景 SELinux是「Security-Enhanced Linux」的简称,是美国国家安全局「NSA=The National Security Agency」和SCC(Secure Computing Corporation)开发的Linux的一个扩张强制访问控制安全模块。原先是在Fluke上开发的,2000年以GNU GPL 发布。 现在以Linux作为因特网服务器是越来越普遍的事了。在我这几年作过的项目里,WEB的开发基本都是基于Linux的,这里有给大公司做的,也给政府部门做的,当然更多的是中小企业做的。这其中给政府做的,我们把SELinux作为一个卖点,接受了不少项目。 2.我们需要安全操作系统的理由 现在不论是政府还是民间企业,大家对信息安全问题是越来越关心了,因为企业的业务平台的服务器上存储着大量的商务机密,个人资料,个人资料它直接关系到个人的隐私问题。特别是我们政府的网站,作为信息公开的平台,它的安全就更显得重要了。这些连到互联网的服务器,不可避免的要受到来自世界各地的各种威胁。最坏的时候我们的服务器被入侵,主页文件被替换,机密文件被盗走。除了来自外部的威胁外,内部人员的不法访问,攻击也是不可忽视的。对于这些攻击或者说是威胁,当然有很多的办法,有防火墙,入侵检测系统,打补丁等等。因为Linux也和其他的商用UNIX一样,不断有各类的安全漏洞被发现。我们对付这些漏洞不得不花很多的人力来堵住它。在这些手段之中,提高OS 系统自身的牢固性就显得非常的重要。 2.1传统的Linux OS的不足之处 虽然Linux 比起Windows 来说,它的可靠性,稳定定要好得多,但是他也是和其他的UNIX 一样,有以下这些不足之处。 1)存在特权用户root 任何人只要得到root的权限,对于整个系统都可以为所欲为。这一点Windows也一样。 2)对于文件的访问权的划分不够细 在linux系统里,对于文件的操作,只有「所有者」,「所有组」,「其他」这3类的划分。 对于「其他」这一类里的用户再细细的划分的话就没有办法了。 3)SUID程序的权限升级 如果设置了SUID权限的程序有了漏洞的话,很容易被攻击者所利用。

Linux安全中阶教程之SElinux(适合有一定水平的管理员) ...

Linux安全中阶教程之SElinux(适合有一定水平的管理员) 一:SElinux(安全增强linux简介) 1:使用SElinux可以将进程放入在特定的SElinux域,同时赋予系统上的资源(如文件,网络套接字,系统调用等)SElinux上下文。装入SElinux的策略(通常作为系统启动过程的一部分),然后决定哪个进程域可以访问哪些资源上下文。 2:在红帽企业版linux 5中,有关SElinux的选择有下面几种: (1) 我是否需要启用SElinux (2) 一旦启用,我需要SElinux处于允许(permissive)还是强制(enforcing)状态。 (3) 我需要在文件上赋予什么样的SElinux上下文。 3:在实际工作中,红帽企业版linux 5支持一种SElinux策略,叫目标策略(targeted).这个策略在大多数应用之中。在目标策略之中,只有目标进程受到SElinux的影响。而其他进程运行在非限制模式下。目标策略只影响常用的网络应用程序。受到限制的服务在200个以上,有增加的趋势。SElinux限制的典型应用程序如下: (1) dhcp (2) httpd (3) mysqld (4) named (5) nscd (???) (6) ntpd (???) (7) portmap (8) postgres (???) (9) snmpd (???) (10) squid (11)

syslogd 4:启用SElinux /etc/sysconfig/selinux setenforce getenforce /etc/sysconfig/selinux (1) 强制(enforcing):任何违法SElinux的操作都被禁止。 (2) 允许(permissive):任何违反SElinux的操作都会受到一个警告信息。但是行动可以继续。 (3) 停用(disabled):不启用SElinux策略。 Setenforce和getenforce命令 Setenforce 0/1 0 表示允许;1 表示强制 Getenforce 查看当前SElinux的状态。 5:查看SElinux上下文 使用命令 ps –Z 和 ls –Z 每个进程都属于个SElinux域; 每个文件都被赋予一个SElinux上下文。 相关的域和上下文可以使用ls和ps命令的命令选项–Z 来显示 进程SElinux域和SElinux上下文,具有以下格式: System_u:object_r:httpd_exec:s0 说明: 上面的字段以冒号作为分隔符, 第一个字段:用户 第二个字段:角色 第三个字段:类型 第四个字段:与MLS,MCS有关 说明: SEliunx目标策略只于第三个字段有关,即类型字段(TYPE). 二:SElinux介绍 SElinux是美国国家安全局为linux系统设计的一项开放源码项目,主要是希望将其作为系统的最后一道防线,来抵御黑客的攻击和入侵系统。 1. 常见的读取控制 1.1 DAC (Discretionary Access Control)”任意式读取控制”。在DAC的架构下,每个对像都会记录一个拥有者的信息。只要是对象的拥有者,就可以获得该对象的完全控制权限。DAC 允许拥有者完全权限。其他需要读取该对象时候,必须授予适当的权限。但是每个对象仅有一组拥有者的信息,如果需要更复杂的读取控制能力,必须使用ACL。ACL的全名是“访问

SELinux服务器不关闭配置 samba的方法

SELinux服务器不关闭配置samba的方法https://www.sodocs.net/doc/d22059516.html, 2010-03-02 10:28 佚名 CSDN 我要评论() ?摘要:点击一看,是SELinux报警,报警时间与每次客户机访问samba时间一致,估计是SELinux 太严谨的问题,将客户机的错误信息在网上搜索,查找到果然是samba与SELinux冲突的问题。 ?标签:SELinux ? 限时报名参加“甲骨文全球大会·2010·北京”及“JavaOne和甲骨文开发者大会2010” 给大家推荐一款很不错的SELinux系统很有学习价值,这里我主要讲解SELinux系统的应用,包括介绍SELinux知识等方面。前段时间在实验室的4*4核服务器上安装Samba 服务器,解决了服务器安装的硬件问题后,在服务器上配好了Samba,但在客户机访问Samba 时,显示错误。查看到主机机器上右上方有红色感叹号显示。 点击一看,是SELinux报警,报警时间与每次客户机访问samba时间一致,估计是SELinux太严谨的问题,将客户机的错误信息在网上搜索,查找到果然是samba与SELinux 冲突的问题。 PS:曹老师开始用挂载的方法配NSF时也没配成功,同样是SELinux的问题,关闭后可解决。方法一:关闭SELinux,并修改配置文件,使系统启动时不启动SELinux。(我采用的是这种方法) 1.Disable selinux 2.[root@Jie ~]# vi /etc/sysconfig/selinux 3.# This file controls the state of SELinux on the system. 4.# SELINUX= can take one of these three values: 5.# enforcing - SELinux security policy is enforced. 6.# permissive - SELinux prints warnings instead of enforcing. 7.# disabled - SELinux is fully disabled. 8.SELINUX=enforcing 9.# SELINUXTYPE= type of policy in use. Possible values are: 10.# targeted - Only targeted network daemons are protected. 11.# strict - Full SELinux protection. 12.SELINUXTYPE=targeted 把SELINUX设定为disable, 下次启动系统后将会停止SElinux。Linux核心参数(Kernel Parameter)或者可以在核心参数后加上:selinux=0 (停止)或selinux=1 (开启)参数档案/boot/grub/menu.lst 1.title Fedora Core ( 2.6.18-1.2798.fc6) 2.root (hd0,0)

selinux设置出错解决办法

1 永久方法–需要重启服务器 修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启服务器。 2 临时方法–设置系统参数 使用命令setenforce 0 禁用SELinux时配置错误导致rhel不能够启动的一种解决方法造成此次问题的原因: 1. 2. linux版本是RHEL5,关闭SELinux时,在修改配置文件 /etc/selinux/config过程中, 3. 4.本应设置: 5.# SELINUX=enforcing 6.SELINUX=disabled 7. 8. 9.不慎设置了SELINUXTYPE参数: 10.#SELINUXTYPE=targeted 11.SELINUXTYPE=disabled 12.重启RHEL的时候,提示: 13.unable to load selinux policy. machine is in enforcing mode. ha lting now. kernel panic-not syncing:attempted to kill init! 14.解决方法: 15. 16.系统启动的时候,按下‘e’键进入grub编辑界面,编辑grub菜单,选 择“kernel /vmlinuz- 2.6.2 3.1-42.fc8 ro root=/dev/vogroup00/logvol00 rhgb quiet”一 栏,按‘e’键进入编辑,在末尾增加selinux=0,即: 17.kernel /vmlinuz-2.6.23.1-42.fc8 ro root=/dev/vogroup00/logvol00 rhgb quiet enforcing=0 18.按‘b’键继续引导,顺利引导

selinux 中文手册

Getting Started with SE Linux HOWTO: the new SE Linux (简体中文版)

Getting Started with SE Linux HOWTO: the new SE Linux (译者注:本文的最原始版本为2004年3月所写,此份HOWTO是作者在今年2月根据最 新的SE Linux所作的修改后的版本。新的SE Linux与以前的有比较大的变化,而且这项技 术本身也正在飞速的发展,并未最后成熟。阅读本文是需要对Linux本身有一定深度的了解 作为基础的。本文并不是Linux的初级教程,但却是SE Linux技术的初级教程。) 原著:Faye Coker, March 2004. faye@https://www.sodocs.net/doc/d22059516.html, 中文译者:邹立巍, 2006年7月 mini.jerry@https://www.sodocs.net/doc/d22059516.html,; 重要的提示!注意! 我正在根据最新的SE Linux来根本的升级这份文档。我用了很长时间来做这件事情,不过 看来我好像永远没有足够的时间作完它。我现在正在继续做,请相信我! Faye Coker, Feb 04, 2006 (译者注:本人技术出身,英语实在比较差。翻译如有不当之处,敬请指正!) 这份文档已经根据最新的SE Linux做了更改。旧的"Getting Started with SE Linux HOWTO" 的内容将保留在此份文档里,不过绝大多数的内容是根据最新的SE Linux的特点作了修改。新的SE Linux是基于2.6.*内核的,但是仍然支持2.4.*的内核。这份文档的大部分内容是原 来的,我在需要修改的地方做了调整。 这份文档是美国国家安全局的安全加强的Linux(NSA SE Linux)的概述性的说明。我们主 要的环境是基于Debian Linux的,而且大部分的软件包的操作命令实例都是基于Debian的。这份文档主要是针对那些想要基础了解SE Linux的人,所以这里没有对SE Linux比较进介 的介绍。你可以在附录的资源部分找到其它介绍SE Linux的资料。 这份文档已经被Ivan Pesin翻译成了俄文。你可以在 https://www.sodocs.net/doc/d22059516.html,/rus/articles/intro_selinux.html找到俄文的版本。谢谢Ivan做了这些。 目录 1.介绍 1.1.欢迎反馈! 1.2.注意! 1.3.最新的SE Linux的特色 1.4.Fedora用户的策略(policy)源代码目录介绍 2.概览 2.1.为什么要使用SE Linux?

selinux管理和应用

1.1 SElinux概述 SELinux(Security-Enhanced Linux) 是美国国家安全局(NAS)对于强制访问控制的实现,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件。大部分使用SELinux 的人使用的都是SELinux就绪的发行版,例如Fedora、Red Hat Enterprise Linux (RHEL)、Debian 或Gentoo。它们都是在内核中启用SELinux 的,并且提供一个可定制的安全策略,还提供很多用户层的库和工具,它们都可以使用 SELinux 的功能。 1.1.1 SElinux特点 1.MAC 对访问的控制彻底化,对所有的文件、目录、端口的访问都是基于策略设定的,可由管理员时行设定。 2.RBAC 对于用户只赋予最小权限。用户被划分成了一些role(角色),即使是root 用户,如果不具有sysadm_r角色的话,也不是执行相关的管理。哪里role可以执行哪些domain,也是可以修改的。 3.安全上下文 当启动selinux的时候,所有文件与对象都有安全上下文。进程的安全上下文是域,安全上下文由用户:角色:类型表示。 (1)系统根据pam子系统中的pam_selinux.so模块设定登录者运行程序的安全上下文 (2)rpm包安装会根据rpm包内记录来生成安全上下文, (3)如果是手工他建的,会根据policy中规定来设置安全上下文, (4)如果是cp,会重新生成安全上下文。 (5)如果是mv,安全上下文不变。 1.1.2 安全上下文格式 安全上下文由user:role:type三部分组成,下面分别说明其作用: https://www.sodocs.net/doc/d22059516.html,er identity:类似linux系统中的UID,提供身份识别,安全上下文中的一部分。 三种常见的user: user_u-: 普通用户登录系统后预设; system_u-:开机过程中系统进程的预设; root-: root登录后预设; 在targeted policy中users不是很重要; 在strict policy中比较重要,的有预设的selinux users都以"_u"结尾,root除外。 2.role

SELinux概述

SELinux使用了分级的强制访问控制,是Linux核的重要安全措施。SELinux的安全策略工具可从oss.tresys./projects下载。本章分析了SELinux的安全机制,介绍了安全策略配置语言、核策略库的结构,简述了SELinux核模块的实现,还分析了用户空间的客体管理器。 3.1SELinux概述 SELinux是安全增强了的Linux,是Security-enhanced Linux的简写,SELinux改进了对核对象和服务的访问控制,改进了对进程初始化、继承和程序执行的访问控制,改进了对文件系统、目录、文件和打开文件描述的访问控制,还改进了对端口、信息和网络接口的访问控制。早期的Linux核只提供了经典的UNIX自主访问控制(root用户,用户ID,模式位安全机制),以及部分地支持了POSIX.1e标准草案中的capabilities安全机制,这对于Linux系统的安全性是不够的,NSA(the National Security Agency)和SCC(Secure Computing Corporation)共同开发了强大的基于类型加强(Type Enforcement)的强制访问控制(mandatory access control,简称MAC)机制,提供了动态的安全策略机制。 Linux核增加了一个通用的安全访问控制框架,它通过hook函数来控制程序的执行,这个框架就是Linux安全模块(LSM),在LSM上可使用各种安全控制机制(如:Flask机制)来实现对程序的控制。 SELinux应用了类型加强(Type Enforcement,TE)和基于角色访问控制(role-based access control,RBAC)技术。 TE给每个主体(进程)和系统中的客体定义了一个类型,这些类型定义在SELinux的安全策略文件中,以安全标签形式存放在文件本身的扩展属性(extended attributes,简称xattrs)里。 当一个类型与一个进程相关时,这个类型称为域(domain),例如:后台进程httpd的域为httpd_t。 主体(subject)对客体(object)的操作在SELinux中默认下是不允许的,而由策略定义允许的操作。TE使用主体的域和客体类型从策略文件中查找操作许可。例如:策略中的一条规则如下: allow httpd_t net_conf_t:file { read getattr lock ioctl }; 这条规则表示httpd_t域对net_conf_t类型客体的文件有“{}”中所表示的操作权限。SELinux的访问控制规则存放在安全策略文件中,策略文件分为二进制和源代码文件,源代码以策略配置语言的形式描述,由编程者创建和维护。源代码经策略配置工具编译后生成二进制文件。二进制策略被装载到核空间,形成在存中的策略库及缓存,核就可以使用访问控制规则了。 SELinux可以实现非常小颗粒的访问控制,这些细小颗粒的访问控制也造成了安全策略的复杂性。 Linux核的SELinux安全体系由Flask和LSM框架共同组成,LSM是由hook函数组成的安全控制框架,Flask框架将SElinux的策略规则转换成访问控制许可。 在安全策略配置语言中经常用到的名称术语说明如下。 subject 主体,常指一个进程 object 客体,常指一个文件 object class客体的类 permission 许可 context上下文 user用户 role角色 type 类型

linux-SElinux命令详解setsebool命令

配置VSFTPD时本地用户无法切换 用到命令 setsebool -P ftpd_disable_trans=1 setsebool命令查询了相关的资料 是selinux的相关设置项 这是SELinux的设置命令. 其实 man 一下setsebool也知道了: NAME setsebool– set SELinuxboolean value 在不熟悉SELnux前,把SELinux关掉也可以的。有时间研究下SELinux。 Redhat从FC3开始,就使用了SELinux来增强安全,但是使用起来有时候太繁琐,就想关闭它,但是如果安装服务器的时候开始没有图形界面,还真很难找到地方可以关闭。 正确方法如下:修改/etc/selinux/config文件中的SELINUX=”" 为 disabled ,然后重启。 2009年8。22更新 下面是一些收集来的设置命令 ===ftp=== //If you want to share files anonymously chcon -R -t public_content_t /var/ftp //If you want to setup a directory where you can upload files chcon -t public_content_rw_t /var/ftp/incoming You must also turn on the booleanallow_ftpd_anon_write setsebool -P allow_ftpd_anon_write=1 //If you are setting up this machine as a ftpd server and wish to allow users to access their home directorories

Selinux的了解

Selinux的了解 1.背景 SELinux是「Security-Enhanced Linux」的简称,是美国国家安全局「NSA=The National Security Agency」和SCC(Secure Computing Corporation)开发的Linux的一个扩张强制访问控制安全模块。原先是在Fluke上开发的,2000年以GNU GPL 发布。 现在以Linux作为因特网服务器是越来越普遍的事了。在我这几年作过的项目里,WEB的开发基本都是基于Linux的,这里有给大公司做的,也给政府部门做的,当然更多的是中小企业做的。这其中给政府做的,我们把SELinux作为一个卖点,接受了不少项目。 2.我们需要安全操作系统的理由 现在不论是政府还是民间企业,大家对信息安全问题是越来越关心了,因为企业的业务平台的服务器上存储着大量的商务机密,个人资料,个人资料它直接关系到个人的隐私问题。特别是我们政府的网站,作为信息公开的平台,它的安全就更显得重要了。这些连到互联网的服务器,不可避免的要受到来自世界各地的各种威胁。最坏的时候我们的服务器被入侵,主页文件被替换,机密文件被盗走。除了来自外部的威胁外,内部人员的不法访问,攻击也是不可忽视的。对于这些攻击或者说是威胁,当然有很多的办法,有防火墙,入侵检测系统,打补丁等等。因为Linux也和其他的商用UNIX一样,不断有各类的安全漏洞被发现。我们对付这些漏洞不得不花很多的人力来堵住它。在这些手段之中,提高OS 系统自身的牢固性就显得非常的重要。 2.1传统的Linux OS的不足之处 虽然Linux 比起Windows 来说,它的可靠性,稳定定要好得多,但是他也是和其他的UNIX 一样,有以下这些不足之处。 1)存在特权用户root 任何人只要得到root的权限,对于整个系统都可以为所欲为。这一点Windows也一样。 2)对于文件的访问权的划分不够细 在linux系统里,对于文件的操作,只有「所有者」,「所有组」,「其他」这3类的划分。 对于「其他」这一类里的用户再细细的划分的话就没有办法了。 3)SUID程序的权限升级 如果设置了SUID权限的程序有了漏洞的话,很容易被攻击者所利用。

实验11 selinux

实验11 SELinux 一、实验要求 掌握SELinux的配置方法。 掌握SELinux三种模式的切换方法。 掌握SELinux在ftp服务中的应用。 二、实验过程 1查看selinux状态 查看文件的security context值 这个就是我们文件的security context值 system_u:object_r:admin_home_t system_u指的是SElinux用户,root表示root账户身份,user_u表示普通用户无特权用户,system_u表示系统进程,通过用户可以确认身份类型,一般搭配角色使用。身份和不同的角色搭配时有权限不同,虽然可以使用su命令切换用户但对于SElinux的用户并没有发生改变,账户之间切换时此用户身份不变,在targeted策略环境下用户标识没有实质性作用。 object_r object_r一般为文件目录的角色、system_r一般为进程的角色,在targeted策略环境中用户的角色一般为system_r。用户的角色类似用户组的概念,不同的角色具有不同的身份权限,一个用户可以具备多个角色,但是同一时间只能使用一个角色。在targeted策略环境下角色没有实质作用,在targeted策略环境中所有的进程文件的角色都是system_r角色。 admin_home文件和进程都有一个类型,SElinux依据类型的相关组合来限制存取权限。 context值的类型会随着文件在不同的位置,会跟着发生变化。 大家进入到/home目录创建文件1,查看该文件的安全值,然后将该文件移动到/root目录下,再查看安全值,安全值是否发生变化。

从头开始生成 SELinux

从头开始生成SELinux 构建一个SELinux 就绪的Gentoo 系统 Serge E. Hallyn (sergeh@https://www.sodocs.net/doc/d22059516.html,), 专职程序员, EMC Serge Hallyn 是IBM Linux Technology Center 安全团队的一名专职程序员。他从College of William and Mary 获得了计算机科学博士学位。他实现了几个安全模型(dte、bsdjail),并对其他的安全模型(seclvl) 和SELinux 贡献了自己的力量。他实现了DTE 及相应的配置文件和分析工具,并在Type Enforcement(SELinux 中的主要技术)方面具有丰富的经验。 简介: SELinux 是美国国家安全局对于强制访问控制的实现,是Linux? 上最杰出的新安全子系统。SELinux 默认安装在Fedora 和Red Hat Enterprise Linux 上,也可以作为其他发行版上容易安装的包得到。本文将向您展示如何手工转换一个非SELinux 的系统,目的是展示SELinux 是如何集成到系统中的。 SELinux 是 2.6 版本的Linux 内核中提供的强制访问控制(MAC)系统。对于目前可用的Linux 安全模块来说,SELinux 是功能最全面,而且测试最充分的,它是在20 年的MAC 研究基础上建立的。SELinux 在类型强制服务器中合并了多级安全性或一种可选的多类策略,并采用了基于角色的访问控制概念。有关这些主题的更多信息的链接,请参见本文后面的参考资料部分。 大部分使用SELinux 的人使用的都是SELinux 就绪的发行版,例如Fedora、Red Hat Enterprise Linux (RHEL)、Debian 或Gentoo。它们

SElinux以及防火墙的关闭

SElinux以及防火墙的关闭 关闭SELinux的方法: 修改/etc/selinux/config文件中的SELINUX="" 为disabled ,然后重启。 如果不想重启系统,使用命令setenforce 0 注: setenforce 1 设置SELinux 成为enforcing模式 setenforce 0 设置SELinux 成为permissive模式 在lilo或者grub的启动参数中增加:selinux=0,也可以关闭selinux #--------------------------------------------------------------- 查看selinux状态: /usr/bin/setstatus -v 如下: SELinux status: enabled SELinuxfs mount: /selinux Current mode: permissive Mode from config file: enforcing Policy version: 21 Policy from config file: targeted getenforce/setenforce查看和设置SELinux的当前工作模式。 Linux关闭防火墙 1) 重启后永久性生效: 开启:chkconfig iptables on 关闭:chkconfig iptables off 2) 即时生效,重启后失效: 开启:service iptables start 关闭:service iptables stop 需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。 在开启了防火墙时,做如下设置,开启相关端口, 修改/etc/sysconfig/iptables 文件,添加以下内容: -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT 或者: /etc/init.d/iptables status 会得到一系列信息,说明防火墙开着。 /etc/rc.d/init.d/iptables stop 关闭防火墙 建议的关闭防火墙命令是 iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT ACCEPT iptables -F 注: fedora下:

相关主题