ImageVerifierCode 换一换
格式:DOCX , 页数:10 ,大小:22.12KB ,
资源ID:10668852      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10668852.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(自定 SELinux 策略.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

自定 SELinux 策略.docx

1、自定 SELinux 策略自定 SELinux 策略本文为基础介绍。1. 引言 1.1 问题所在 1.2 解决方案2. SELinux 模式3. SELinux 策略 4. SELinux 访问控制5. 排除 SELinux 疑难 1. 重新标签文件 2. 撤消缺省的安全性脉络 3. 重新标签整个文件系统 4. 允许访问某个端口 6. 自定 SELinux 策略 7. 利用 audit2allow 创建自定 SELinux 策略模块 1. 手动式自定策略模块 8. 总结1. 引言安全增强式 Security-Enhanced Linux(SELinux)是一个在内核中实践的强制访问控制(MAC

2、)安全性机制。SELinux 首先在 CentOS 4 出现,并在 CentOS 5 获得重大改善。1.1. 问题所在要更了解 SELinux 为何是重要、及能够为你做什么,最简单的方法就是参考一些例子。在未启用 SELinux 的情况下,酌情访问控制(DAC)方法如文件权限或访问控制清单(ACL)会被用来赋予文件访问权给用户。不论用户或程序都可以将不安全的文件权限赋予其它人,或访问系统在正常运作下无须访问的部份。举个例说: 管理员不能控制用户:用户可以把谁都可读入的权限赋予 ssh 金钥等敏感文件。 进程可以更改安全性属性:每位用户的邮件文件应该只供该用户读入,但邮件客户端软件有能力将它们改

3、为谁都可读入。 进程继承用户的权限:假若 Firefox 被人占用,它可以阅读用户的私人 ssh 金钥,尽管它没有理由如此做。 基本上现时只在两个权限级别,root 及普通用户,而当中不能简易地实施最小权限的理念。很多由 root 引导1的进程在后期会撇除它们的权限并以受限制的用户身份来运行,有些则会在 chroot 的情况下执行,但这些安全措施都是酌情的。1.2. 解决方案SELinux 遵从最小权限的理念。在缺省情况下一切均被拒绝,接着要为系统的每部份(一项服务、程序、用户)写一个策略来允许它访问所需的功能。当一项服务、程序或用户尝试访问或修改一个它不须用的文件或资源时,它的请求会遭拒绝,

4、而这个行动会被记录下来。由于 SELinux 是在内核中实践的,因此应用程序无须被特别编写或重写便可以采用 SELinux。假若 SELinux 拦阻了一个行动,对该应用程序来说它只会是个正常的拒绝访问类错误。2. SELinux 模式SELinux 拥有三个基本的操作模式,当中 Enforcing 是缺省的模式。 * Enforcing: 这个缺省模式会在系统上启用并实施 SELinux 的安全性策略,拒绝访问及记录行动 * Permissive: 在 Permissive 模式下,SELinux 会被启用但不会实施安全性策略,而只会发出警告及记录行动。Permissive 模式在排除 SE

5、Linux 的问题时很有用 * Disabled: SELinux 已被停用 SELinux 的模式可以通过 Adminstration 选单里的 SELinux 图像管理界面、或者在命令行执行 system-config-selinux 来查看及更改(SELinux 图像管理界面是 policycoreutils-gui 组件的一部份,缺省是不会被安装的)。较喜欢命令行的用户可使用 sestatus 这个指令来查看现时的 SELinux 状况:# sestatusSELinux status: enabledSELinuxfs mount: /selinuxCurrent mode: enf

6、orcingMode from config file: enforcingPolicy version: 21Policy from config file: targetedsetenforce 这个指令可以即时切换 Enforcing 及 Permissive 这两个模式,但请注意这些改动在系统重新开机时不会被保留。要令改动过渡系统开机,请在 /etc/selinux/config 内修改 SELINUX= 这一行为 enforcing、permissive 或 disabled。例如 SELINUX=permissive。注: 当你由 Diabled 切换至 Permissive 或

7、Enforcing 模式时,我们强烈推荐你重新引导系统并重新标签文件系统。3. SELinux 策略较早前我们提及 SELinux 遵从最小权限这个理念;在缺省情况下一切均被拒绝,而系统的每部份有一个策略来允许它访问所需的功能。这个描述用来形容严格型策略最为贴切。不过,这类策略必须适用于企业级 Linux 可能会应用到的各个环境下,因此编写方面是困难的。后果可能是 SELinux 会为系统管理员及用户产生很多问题,而系统管理员只会停用 SELinux 而不解决这些问题,最后还是违背了原先的目的。兴幸地,SELinux 允许调配不同类型的策略。CentOS 4 及 5 内的缺省策略是针对型策略,

8、专门针对和规限主要的系统进程。 CentOS 4 只定义了 15 个目标(包括 http、named、dhcpd、mysqld),但在 CentOS 5 这个数字升至超过 200 个目标。系统内其它一切都在不受规限的本地下运行并且不受 SELinux 影响。这里的目标是要令每个被安装的进程在开机时都缺省在一个受规限的本地下运行。针对型策略在设计时尽量保护最多的主要进程而不会对用户的经验产生不利影响,所以多数用户甚至乎不应察觉 SELinux 正在运行中。4. SELinux 访问控制SELinux 拥有三种访问控制方法: 强制类型(TE):TE 是针对型策略所采用的主要访问控制机制 基于角色的

9、访问控制(RBAC):它以 SELinux 用户(未必等同 Linux 用户)为基础,但缺省的针对型策略并未采用它 多层保障(MLS):未被采用,而且经常隐藏在缺省的针对型策略内。所有进程及文件都拥有一个 SELinux 的安全性脉络。让我们查看 Apache 的主页,index.html 的 SELinux 安全性脉络来看看它们如何运作:$ ls -Z /var/www/html/index.html -rw-r-r-phil phil system_u:object_r:httpd_sys_content_t /var/www/html/index.html 注: -Z 这个标旗在多数工具

10、内都可用来显示 SELinux 安全性脉络(例如:ls -Z、 ps axZ 等)。除了标准的文件权限及拥有权,我们更可以看到 SELinux 脉络栏:system_u:object_r:httpd_sys_content_t。这是建基于用户:角色:类型:多层保障。在上述例子里,用户:角色:类型栏都有显示,而多层保障是隐藏的。在缺省的针对型策略里,类型是用来实施强制类型的重要字段,在这里它是 httpd_sys_content_t。现在让我们看看 Apache 网页服务器这个进程,httpd 的 SELinux 安全性脉络:$ ps axZ | grep httpdsystem_u:syste

11、m_r:httpd_t 3234 ? Ss 0:00 /usr/sbin/httpd从类型栏我们看出 Apache 在 httpd_t 这个类型本地内运行。最后,让我们看看位于我们的主目录内的一个文件的安全性脉络:$ ls -Z /home/phil/myfile.txt-rw-r-r-phil phil user_u:object_r:user_home_t /home/phil/myfile.txt它的类型是 user_home_t,这是位于每个户主目录内的文件的缺省类型。唯有相似的类型才可互相访问,因此以 httpd_t 运行的 Apache 可以读入拥有 httpd_sys_conte

12、nt_t 类型的 /var/www/html/index.html。由于 Apache 在 httpd_t 这个本地内运行,它不能访问 /home/phil/myfile.txt,纵使这个文件可供任何人读入,因为它的 SELinux 安全性脉络并不是 httpd_t 类型。倘若 Apache 被人占用,它不能引导任何在 httpd_t 本地以外的进程(这样可防止权限升级),或者访问任何位于 httpd_t 相关本地以外的文件。5. 排除 SELinux 疑难你终有一天会被 SELinux 阻止你访问所需的东西,而且要解决这个问题。SELinux 拒绝某个文件、进程或资源被访问的基要原因有数个:

13、* 一个被错误标签的文件 * 一个进程在错误的 SELinux 安全性脉络下运行 * 策略出错。某个进程要访问一个在编写策略时意料不到的文件,并产生错误信息 * 一个入侵的企图。 头三个情况我们可以处理,而第四个正正是预期的表现。日志档是排除任何疑难的关键,而 SELinux 亦不例外。SELinux 缺省会通过 Linux 审计系统(auditd)将日志写在 /var/log/audit/audit.log 内,而这项务服缺省为启用的。假若 auditd 并未运行,信息将会被写进 /var/log/messages。SELinux 的日志都被标签有 AVC 这个关键字,方便它们从其它信息中过

14、滤出来。由 CentOS 5 起,你可以用 SELinux 排除疑难工具协助你分析日志档,将它们转换为供人阅读的格式。这个工具包含一个以可读格式显示信息及解决方案的图像界面、一个桌面通报图示、与及一个长驻进程(setroubleshootd),它负责查阅新的 SELinux AVC 警告并传送至通报图示(不运行 X 服务器的话可设置以电邮通报)。SELinux 排除疑难工具是由 setroubleshoot 组件所提供,并缺省会被安装。这个工具可以从系统选单或命令行引导:sealert -b (图形)不运行 X 服务器的人可以通过命令行产生供人阅读的报告:sealert -a /var/log

15、/audit/audit.log /path/to/mylogfile.txt 5.1. 重新标签文件chcon 这个指令可以用来更改一个或多个文件与目录的 SELinux 安全性脉络,正如 chown 或 chmod 可以用来更改一个文件的拥有者或标准权限。让我们看一些例子。就以 Apache 为例,假设你想修改 DocumentRoot 以另一个位置来伺服网页,替换缺省的 /var/www/html 目录。譬如说我们在 /html 创建了一个目录(又或者挂载点),然后在那里创建我们的 index.html 档:# mkdir /html# touch /html/index.html# l

16、s -Z /html/index.html-rw-r-r-root root user_u:object_r:default_t /html/index.html# ls -Z | grep htmldrwxr-xr-xroot root user_u:object_r:default_t html 我们可以见到 /html 这个目录以及 /html/index.html 这个文件都拥有缺省的 default_t 安全性脉络类型。如果我们打开浏览器并尝试查看该页,SELinux 将会拒绝它们被访问并记录错误,因为该目录与文件拥有不正确的安全性脉络。我们须要设置供 Apache 使用的 http

17、d_sys_content_t 正确安全性脉络:# chcon -v -type=httpd_sys_content_t /htmlcontext of /html changed to user_u:object_r:httpd_sys_content_t# chcon -v -type=httpd_sys_content_t /html/index.htmlcontext of /html/index.html changed to user_u:object_r:httpd_sys_content_t# ls -Z /html/index.html-rw-r-r-root root us

18、er_u:object_r:httpd_sys_content_t /html/index.html# ls -Z | grep htmldrwxr-xr-xroot root user_u:object_r:httpd_sys_content_t html 我们同样也可以利用 -R 这个回递标旗同时将它们的脉络设置:# chcon -Rv -type=httpd_sys_content_t /html 更改用户:chcon -v -R -u user_u -t user_home_dir_t /var/www/html以这个方式更改安全性脉络在系统重新开机后仍会获保留,除非整个文件系统被重新

19、标签(见下文)。要作出永久性、可以过渡文件系统重新标签的安全性脉络改动,我们可以采用 SELinux 管理工具,或者在命令行执行 semanage 这个指令:semanage fcontext -a -t httpd_sys_content_t /html(/.*)? 如此便会将 /html 以下的一切加入 httpd_sys_content_t 这个文件脉络类型。5.2. 撤消缺省的安全性脉络restorecon 这个指令可以用来撤消为文件缺省的安全性脉络。让我们再次以 Apache 作为样例。设假有位用户在他的主目录内编辑了一个 index.html 档并将该文件迁移(mv)至 Docum

20、entRoot 的 /var/www/html 内。纵使复制(cp)这个指令普遍会沿用目标目录或文件的安全性脉络,迁移(mv)指令则会保留源文件的安全性脉络。我们可以利用 chcon 这个指令来更改问题文件的安全性脉络,但由于这些文件已经位于 Apache 缺省的 DocumentRoot(/var/www/html)内,我们只须撤消这个目录或文件的安全性脉络便成了。要单单撤消 index.html 档的脉络,我们可以利用:# restorecon v F /var/www/html/index.html 如果要以回递的方式撤消整个目录的缺省安全性脉络:# restorecon Rv F /v

21、ar/www/html 除此之外,如果我们只想检查 /var/www/html 目录内有哪些文件的安全性脉络需要被撤消,我们在采用 restorecon 时可以应用 -n 这个标旗来防止重新标签的行动:# restorecon -Rv F -n /var/www/html 5.3. 重新标签整个文件系统有时我们也许会需要将整个文件系统重新标签,虽然这是在启用已停用的 SELinux 时,或在 SELinux 策略由缺省的针对型改为严格型时才有真正需要。要在重新开机后自动将整个文件系统重新标签,请执行:# touch /.autorelabel# reboot 假若一个系统在升级至 CentOS

22、-5.2 时停用了 SELinux,然后 SELinux 被启用,重新标签整个文件系统时或许会失败。如果以上的步骤不能正确地将整个文件系统重新标签,请尝试先执行 genhomedircon 这个指令:# genhomedircon# touch /.autorelabel# reboot 5.4. 允许访问某个端口我们或许会想容让 Apache 连结至某个非标准的端口并聆听对内的连接。SELinux 的策略缺省只允许每个服务访问被公认与该服务有关的端口。如果我们想容让 Apache 在 tcp 端口 81 上聆听,我们可以利用 semanage 这个指令来新增一条规则批准此事:# semana

23、ge port -a -t http_port_t -p tcp 81 Semanage 端口 a(添加) t (类型) p (协议) 端口号你可以这样令 SELinux 完整地列出每个服务可访问的端口:# semanage port -l6. 自定 SELinux 策略通过设置选项的二元值,你可以微调 SELinux 策略而不必重新编译策略的源代码。这些选项包括允许用户在 Samba 下分享他们的主目录,或者允许 Apache 从用户的主目录伺服文件。否则这些都会被 SELinux 策略所拒绝。7. 利用 audit2allow 创建自定 SELinux 策略模块在某些情形下,上述方法都不能

24、解决问题,而我们必须通过创建自定的策略模块来扩展 SELinux 策略,允许一组特定的状态出理。其中一个例子就是在 smtp 邮件服务器上增加 postgrey 服务。我们的 smtp 服务器须要通过一个 Unix 通讯端与 postgrey 沟通,但缺省的 SELinux 策略却禁止我们的 smtp 服务器如此做。结果该服务会被 SELinux 所封锁。这个问题不能通过更改或撤消文件的安全性脉络来解决,也没有可供切换二元值。我们可以通过一个二元值来停止 SELinux 保护 smtp 服务器,这样总比完全停用 SELinux 好,但不太理想。如果我们将 SELinux 切换至 Permiss

25、ive 模式并让邮件服务器运行一段时间,我们便可以在允许访问的情况下记录 SELinux 的问题。查看日志时,我们会看见以下 SELinux AVC 信息:type=AVC msg=audit(1218128130.653:334): avc:denied connectto forpid=9111 comm=smtpd path=/var/spool/postfix/postgrey/socketscontext=system_u:system_r:postfix_smtpd_t:s0 tcontext=system_u:system_r:initrc_t:s0 tclass=unix_st

26、ream_sockettype=AVC msg=audit(1218128130.653:334): avc:denied write forpid=9111 comm=smtpd name=socket dev=sda6 ino=39977017scontext=system_u:system_r:postfix_smtpd_t:s0 tcontext=system_u:object_r:postfix_spool_t:s0 tclass=sock_file 接着我们可以用 audit2allow 来产生一组允许所需行动的策略规则。我们我可创建一个本地的 postgrey 强制类型策略档(p

27、ostgreylocal.te):# grep smtpd_t /var/log/audit/audit.log | audit2allow -m postgreylocal postgreylocal.te# cat postgreylocal.temodule postgreylocal 1.0;require type postfix_smtpd_t;type postfix_spool_t;type initrc_t;class sock_file write;class unix_stream_socket connectto;#= postfix_smtpd_t =allow po

28、stfix_smtpd_t initrc_t:unix_stream_socket connectto;allow postfix_smtpd_t postfix_spool_t:sock_file write; 在上面我们看见如何从 audit.log 筛选有关 smtp 服务器的问题,并将这些问题导向 audit2allow,让它产生一组规则,是它认为可用来允许被 SELinux 策略所封锁的行动。查阅这些规则时,我们可发现该 smtp 服务器想连接及写进一个 Unix 通讯端,而从日志里我们看见这个 Unix 通讯端正正是 postgrey 服务所聆听的那个。既然这一些都合情合理,我们可

29、以续继用 audit2allow 创建一个自定的策略模块,允许这些行动:# grep smtpd_t /var/log/audit/audit.log | audit2allow -M postgreylocal 还有个命令通过audit日志自定策略 通过audit日志,添加必要的selinux设定cat /var/log/audit/audit.log | aduit2allow -M cacti & semodule -i cacti.pp接着我们利用 semodule 这个指令将我们的 postgrey 策略模块装入现有的 SELinux 策略内:semodule -i postgrey

30、local 如此便会将我们的 postgrey 策略模块新增到 /etc/selinux/targeted /modules/active/modules/postgreylocal.pp。我们可以通过 semodule -l 来检查该策略模块已被正确地装入。然后我们可以继续监视 SELinux 的日志来确定自定的策略模块有效用。满意时,我们便可以重新启用 SELinux 的 Enforcing 模式,让功能已全备的 smtp 服务器再次享有 SELinux 的保障。7.1. 手动式自定策略模块audit2allow 在大多数情况下都可以自动创建一个自定策略模块来解决某个特定问题,但有时它未能完全正确,而我们也许会想以人手编辑并编译该策略模块。就以下列的 AVC 审计日志为例现在我们可以手动地编译及装入已修改的自定政策模块: # checkmodule -M -m -o postfixlocal.mod postfixlocal.te# semodule_package -o postfixlocal.pp -m postfixlocal.mod# semodule -i postfixlocal.pp postdrop

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1