http://www.web008.net

selinux

6. 自定 SELinux 政策

经过设置选项的二元值,你能够微调 SELinux 政策而不用再度编译政策的源代码。那几个采用包罗允许客商在 Samba 下分享他们的主目录,可能允许 Apache 从客商的主目录伺性格很顽强在荆棘载途或巨大压力面前不屈文件。不然那一个都会被 SELinux 政策所不容。

有另后生可畏版 Wiki 页是关于二元值的。

9. 额外国资本源

转载:

Contents

  1. 引言
    1. 部份难题所在
    2. 焚薮而田方案
  2. SELinux 模式
  3. SELinux 政策
  4. SELinux 访问调节
  5. 排除 SELinux 疑难
    1. 再次标签文件
    2. 裁撤缺省的安全性脉络
    3. 双重标签整个文件系统
    4. 同意访谈有些端口
  6. 自定 SELinux 政策
  7. 行使 audit2allow 创制自定 SELinux 政策模块
    1. 手动式自定政策模块
  8. 总结
  9. 外加财富
  10. 客商备注及陷阱

  11. 引言


安然加强式 Security-Enhanced Linux(SELinux)是二个在基本中施行的强制访谈调控(MAC)安全性机制。SELinux 首先在 CentOS 4 现身,并在 CentOS 5 和 6 得到重大改正。那些改过代表用 SELinux 消亡问题的方法亦随着时间而更换。

7. 利用 audit2allow 创设自定 SELinux 政策模块

在少数情状下,上述方法都不可能一蹴即至难点,而笔者辈必得经过创办自定的国策模块来扩大SELinux 政策,允许生机勃勃组特定的情事出理。此中贰个事例就是在 smtp 邮件服务器上加码 postgrey 服务。咱们的 smtp 服务器必要通过二个 Unix 通信端与 postgrey 交换,但缺省的 SELinux 政策却不允许大家的 smtp 服务器如此做。结果该服务会被 SELinux 所束缚。那一个难点不能因而转移或注销毁文件件的安全性脉络来消除,也未有可供切换二元值。我们得以经过一个二元值来终止 SELinux 爱抚 smtp 服务器,那样总比完全停用 SELinux 好,但不太美好。

若是大家将 SELinux 切换至 Permissive 情势并让邮件服务器运维风姿浪漫段时间,大家便得以在允许采访的图景下记录 SELinux 的难点。查看日志时,大家会看到以下 SELinux AVC 音讯:

 

type=AVC msg=audit(1218128130.653:334): avc:  denied  { connectto } for  pid=9111 comm="smtpd" path="/var/spool/postfix/postgrey/socket"
scontext=system_u:system_r:postfix_smtpd_t:s0 tcontext=system_u:system_r:initrc_t:s0 tclass=unix_stream_socket
type=AVC msg=audit(1218128130.653:334): avc:  denied  { write } for  pid=9111 comm="smtpd" name="socket" dev=sda6 ino=39977017
scontext=system_u:system_r:postfix_smtpd_t:s0 tcontext=system_u:object_r:postfix_spool_t:s0 tclass=sock_file 

继之大家得以用 audit2allow 来发出风流倜傥组允许所需行动的国策准则。大家本人可创制一个当地的 postgrey 强逼类型政策档(postgreylocal.te):

 

# grep smtpd_t /var/log/audit/audit.log | audit2allow -m postgreylocal > postgreylocal.te
# cat postgreylocal.te
module 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 postfix_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 服务所聆听的老大。既然那后生可畏都部队分都创制,大家得以续继用 audit2allow 创设八个自定的政策模块,允许那么些行动:

 

# grep smtpd_t /var/log/audit/audit.log | audit2allow -M postgreylocal 

随之我们使用 semodule 那么些命令将我们的 postgrey 政策模块装入现存的 SELinux 政策内:

 

semodule -i postgreylocal.pp 

与此相类似便会将大家的 postgrey 政策模块新增至/etc/selinux/targeted/modules/active/modules/postgreylocal.pp。大家能够通过 semodule -l 来检查该攻略模块已被科学地装入。

然后大家能够三番两次监视 SELinux 的日记来分明自定的宗旨模块有成效。知足时,大家便足以再度启用 SELinux 的 Enforcing 形式,让效果已全备的 smtp 服务器再一次享有 SELinux 的维持。

1.1. 部份难题所在

要更领悟 SELinux 为什么是重中之重、及可感觉您做什么样,最简单易行的主意正是参照一些例证。在未启用 SELinux 的情状下,要调节顾客的文本访谈权,独有通过讨论访谈调节(DAC)方法如文件权限或访问调节清单(ACL)。不论顾客或程序都能够将不安全的文书权限赋予别的人,或反过来访问系统在正规运作下毫不访谈的部份。举个例说:

  • 管理员无法决定客户:客商能够把什么人都可读入的权位给与敏感文件,举个例子 ssh 金钥及惯常用来放置这一个金钥的目录,~/.ssh/

  • 经过可以校勘安全性属性:每位顾客的邮件文件应该只供该顾客读入,但邮件客户端软件有力量将它们改为何人都可读入。

  • 经过继续顾客的权能:即使 Firefox 被木马程序所攻陷,它只怕会阅读客商的贴心人 ssh 金钥,就算它从未理由这么做。

大致在传统 DAC 形式只在四个权力品级,root 及客商,而中等不能够大致地实践最小权限的见识。相当多由 root 指导1的进程在最二零二零时期会撇除它们的权力并以受节制的客商地方来运营,有个别则会在 chroot 的图景下实行,但那么些安全措施都以酌情的。

4. SELinux 访问调控

SELinux 具有二种访谈调整方法:

  • 抑遏类型(TE):TE 是针对型政策所运用的最首要访谈调整机制
  • 据说⻆色的访谈调整(RBAC):它以 SELinux 客户(未必等同 Linux 用户)为底工,但缺省的针对型政策未有使用它

  • 多层保证(MLS):广大不获接纳,并且平日掩盖在缺省的针对型政策内。

怀有进度及文件都持有一个 SELinux 的安全性脉络。让大家查阅 Apache 的主页,/var/www/html/index.html 的 SELinux 安全性脉络来拜访它们怎样运行:

 

$ ls -Z /var/www/html/index.html -rw-r--r--  username username system_u:object_r:httpd_sys_content_t /var/www/html/index.html 

美高梅163888 1

注: -Z 这么些标旗在大多数工具内都可用来显示 SELinux 安全性脉络(比方:ls -Z、 ps axZ 等)。

除外正式的文书权限及具备权,大家更能够看看 SELinux 脉络栏:system_u:object_r:httpd_sys_content_t。

这是建基于「客商:角色:类型:多层保证」。在上述例子里,「客户:角色:类型」栏都有呈现,而「多层有限援救」是蒙蔽的。在缺省的针对型政策里,类型是用来试行「强逼类型」的显要字段,在这里边它是 httpd_sys_content_t。

今天让我们看看 Apache 网页服务器,httpd,这几个历程的 SELinux 安全性脉络:

 

$ ps axZ | grep httpd
system_u:system_r:httpd_t        3234 ?        Ss     0:00 /usr/sbin/httpd

从类型栏大家来看 Apache 在 httpd_t 这些类型本地内启动。

最终,让我们看看位于大家的主目录内的多个文本的安全性脉络:

 

$ ls -Z /home/username/myfile.txt
-rw-r--r--  username username user_u:object_r:user_home_t      /home/username/myfile.txt

它的品类是 user_home_t,那是身处每一种户主目录内的文本的缺省类型。

偏偏相近的等级次序才可交互作用访谈,由此以 httpd_t 运行的 Apache 能够读入具有httpd_sys_content_t 类型的 /var/www/html/index.html。由于 Apache 在 httpd_t 那几个本地内运转但不属 username 那一个顾客,纵使 /home/username/myfile.txt 可供任哪个人读入,Apache 却不能够访谈该文件,因为它的 SELinux 安全性脉络而不是 httpd_t 类型。若是Apache 被人占有,又比如它仍未获得校订 SELinux 标签至另二个系统的 root 权限,它将会无法引导 httpd_t 当地外的长河(藉此幸免权力进级),或访谈与 httpd_t 本地不相干的文本。

3. SELinux 政策

正如大家所说,SELinux 坚决守住细微权限这些思想;在缺省气象下全方位均被谢绝,而系统的每部份有二个攻略来允许它访谈所需的功用。这一个描述用来描写严格型攻略最为适宜。然则要令那类政策适用于公司级 Linux 也许会选取到的后生可畏黄金时代遭受,编写方面是费力的。后果也许是 SELinux 会为系统管理员及顾客产生不菲难题,而系统管理员索性停用 SELinux 而不消除这一个主题素材,最后照旧违背了放置的掩护。

SELinux 的设计允许调配不一致品种的国策。CentOS 4、5 及 6 内的缺省政策是针对型布署,特地「针对」和规定与限制选定的系统经过。CentOS 4 只定义了 15 个目的(包罗 http、named、dhcpd、mysqld)。随后在 CentOS 5 这几个数字已升超越 200 个目的。

系统内其余任何系统经过、客户程序和有着自制应用程序都在美高梅163888,不受规定与限制的本地下运营,并且不归入SELinux 的掩护范围内。

与上述同类做的靶子之生龙活虎,是要令每一个已设置及在开机时实行的进度,都缺省在二个受规定与限制的本土下运作。针对型大意在打算时尽或者保证最多的显要进程而不会对顾客的经验爆发不利于影响,所以大多数客商以至乎不应察觉 SELinux 正在运作中。

8. 总结

那篇小说尝试向 SELinux 的新顾客概述怎么样使用它。SELinux 缺省会被安装及启用,对一大半客户来讲,它会默默地升高系统的安全性。SELinux 适用于各等级次序的设置,满含:服务器、工作台、桌面Computer、及台式机。

固然如此 SELinux 对不熟知它的客户来说就像很复杂及令人生畏,但这不是在安装时停用它的二个说辞。若果 SELinux 确实拉动难点,你能够轻便地将它切换至 Permissive 情势,届时它便会将标题记录下来,而不会进展封锁。当难题应运而生时,那篇小说所示范的手艺能够用来消亡困难及缓慢解决它们。

1.2. 化解方案

SELinux 更能坚决守住非常小权限的意见。在缺省的 enforcing 处境下,一切均被反驳回绝,接着有一应有尽有例外的政策来允许系统的各种成分(服务、程序、客户)运作时所需的访问权。当生机勃勃项服务、程序或顾客尝试访谈或改造贰个它不须用的文件或财富时,它的央求会遭反驳回绝,而以此行动会被记录下来。

鉴于 SELinux 是在幼功中施行的,应用程序无须被非常编写或重写便得以选取SELinux。当然,如若贰个程序极其当心稍后所聊起的 SELinux 错误码,它的运作或许会更通畅。假诺 SELinux 拦阻了二个行走,它会以贰个标准的(起码是常规的)「谢绝访谈」类错误来反映给该应用程序。不过,超多应用程序不会测量试验系统函数所重临的错误码,因而它们或许不会输出新闻解释难题所在,也许输出错误音讯。

一手包办大权独揽上,下列样例方案可提供更加高安全度:

  • 受制唯有有个别获授权的次第可读入顾客的 ~/.ssh/ 目录

  • 幸免派发邮件程序(Mail Delivery Agent)改过全体群组、群组织设立置或任何读档权限

  • 掣肘浏覧器读入顾客的主目录

唯独直到第 6 版的 CentOS,那个方案都不带有在SELinux 法则内。这是一个发展中的领域,事实上亦不会在长期内贯彻。那是由于中游发行者的系统管理员客商群难以承担上述的做法,势必会「啼哭」大器晚成番,并扩充中游的支撑职业量。

5.4. 允许访谈某些端口

大家大概会想容让 Apache 连结至某些非规范的端口并聆听对内的连续几天。SELinux 的国策缺省只同意每种服务寻访被公众承认与该服务有关的端口。借使大家想容让 Apache 在 tcp 端口 81 上聆听,大家能够动用 semanage 这么些命令来新添一条准绳批准那件事:

 

# semanage port -a -t http_port_t -p tcp 81 

你可以那样令 SELinux 完整地列出各种服务可访谈的端口:

 

# semanage port -l 

5.3. 再一次标签整个文件系统

奇迹我们可能会必要将全方位文件系统重新标签,即使这是在启用已停用的 SELinux 时,或在 SELinux 政策由缺省的针对型改为严格型时才有实在须要。要在再一次开机后活动将全方位文件系统重新标签,请实行:

 

# touch /.autorelabel
# reboot 

即使一个连串在晋级至 CentOS-5.2 时停用了 SELinux,然后 SELinux 被启用,重新标签整个文件系统时或者会停业。即便以上的步骤不能够科学地将全体文件系统重新标签,请尝试先进行genhomedircon 这么些命令:

 

# genhomedircon
# touch /.autorelabel
# reboot 

2. SELinux 模式

SELinux 具备八个中央的操作方式,此中 Enforcing 是缺省的格局。别的,它还或者有三个 targetedmls 的修饰语。那拘留SELinux 准则的运用有多大规模,当中 targeted 是较宽大的品级。

  • Enforcing: 这些缺省形式会在系统上启用并实行 SELinux 的安全性政策,推却访谈及记录行动

  • Permissive: 在 Permissive 情势下,SELinux 会被启用但不会奉行安全性政策,而只会产生警报及记录行动。Permissive 形式在废除 SELinux 的主题素材时很有用

  • Disabled: SELinux 已被停用

SELinux 的情势能够经过 Adminstration 选单里的 SELinux 图像管理分界面、只怕在命令行施行 system-config-selinux 来查看及更换(SELinux 图像处理分界面是 policycoreutils-gui 组件的风流洒脱部份,缺省是不会被安装的)。

较钟爱命令行的客商可利用 sestatus 这几个命令来查看现时的 SELinux 意况:

 

# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 21
Policy from config file:        targeted

setenforce 那一个命令可以即时切换 EnforcingPermissive 那五个方式,但请当心这一个退换在系统再度开机时不会被保存。

要令退换过渡系统开机,请在 /etc/selinux/config 内改进 SELINUX= 那后生可畏行为 enforcing、permissive 或 disabled。比方:SELINUX=permissive。

美高梅163888 2

注: 当你由 Diabled 切换至 PermissiveEnforcing 方式时,大家刚强推荐你再次辅导体系并再一次标签文件系统。

7.1. 手动式自定政策模块

audit2allow 在非常多景色下都足以自行创造三个自定政策模块来解决某些特定难点,但奇迹它不能完全精确,而小编辈只怕会想以人口编辑并编写翻译该政策模块。就以下列的 AVC 审计日志为例:

 

Summary:
SELinux is preventing postdrop (postfix_postdrop_t) "getattr" to
/var/log/httpd/error_log (httpd_log_t).
Detailed Description:
SELinux denied access requested by postdrop. It is not expected that this access
is required by postdrop and this access may signal an intrusion attempt. It is
also possible that the specific version or configuration of the application is
causing it to require additional access.
Allowing Access:
Sometimes labeling problems can cause SELinux denials. You could try to restore
the default system file context for /var/log/httpd/error_log,
restorecon -v '/var/log/httpd/error_log'
If this does not work, there is currently no automatic way to allow this access.
Instead, you can generate a local policy module to allow this access - see FAQ
(http://fedora.redhat.com/docs/selinux-faq-fc5/#id2961385) Or you can disable
SELinux protection altogether. Disabling SELinux protection is not recommended.
Please file a bug report (http://bugzilla.redhat.com/bugzilla/enter_bug.cgi)
against this package.
Additional Information:
Source Context                system_u:system_r:postfix_postdrop_t
Target Context                root:object_r:httpd_log_t
Target Objects                /var/log/httpd/error_log [ file ]
Source                        postdrop
Source Path                   /usr/sbin/postdrop
Port                          <Unknown>
Host                          sanitized
Source RPM Packages           postfix-2.3.3-2
Target RPM Packages
Policy RPM                    selinux-policy-2.4.6-137.1.el5
Selinux Enabled               True
Policy Type                   targeted
MLS Enabled                   True
Enforcing Mode                Enforcing
Plugin Name                   catchall_file
Host Name                     sanitized
Platform                      Linux sanitized 2.6.18-53.1.21.el5 #1 SMP Tue
                              May 20 09:35:07 EDT 2008 x86_64 x86_64
Alert Count                   599
First Seen                    Wed Jul  2 08:27:15 2008
Last Seen                     Sun Aug 10 22:47:52 2008
Local ID                      c303a4ea-8e7a-4acc-9118-9cc61c6a2ec8
Line Numbers
Raw Audit Messages
host=sanitized type=AVC msg=audit(1218397672.372:352): avc:  denied  { getattr } for  pid=4262 comm="postdrop"
path="/var/log/httpd/error_log" dev=md2 ino=117005 scontext=system_u:system_r:postfix_postdrop_t:s0
tcontext=root:object_r:httpd_log_t:s0 tclass=file
host=sanitized type=SYSCALL msg=audit(1218397672.372:352): arch=c000003e syscall=5 success=no exit=-13 a0=2
a1=7fffd6febca0 a2=7fffd6febca0 a3=0 items=0 ppid=4261 pid=4262 auid=4294967295 uid=48 gid=48 euid=48 suid=48
fsuid=48 egid=90 sgid=90 fsgid=90 tty=(none) comm="postdrop" exe="/usr/sbin/postdrop"
subj=system_u:system_r:postfix_postdrop_t:s0 key=(null) 

就上述荒诞实践 audit2allow 并查看所得的 postfixlocal.te 政策档时,大家会见到:

 

# grep postdrop /var/log/audit/audit.log | audit2allow -M postfixlocal
# cat postfixlocal.te
    module postfixlocal 1.0;
    require {
            type httpd_log_t;
            type postfix_postdrop_t;
            class dir getattr;
            class file { read getattr };
    }
    #============= postfix_postdrop_t ==============
    allow postfix_postdrop_t httpd_log_t:file getattr; 

自个儿期望第后生可畏件引起您关切的事,就是 postdrop 为啥须须访问/var/log/httpd/error_log?那应该在大家预料之外,由此大家便要评估应否允许那些行走。大家有数个选拔:大家得以忽视那几个张冠李戴并容让 SELinux 继续封锁及记录这个访谈的行路,又或然大家能够允许那一个行动并创办 audit2allow 所推荐的自定政策模块。我们也足以选拔编辑这一个自定政策模块的 .te 档并防守审计这么些一定错误,并让 SELinux 继续封锁该访问权。我们能够编辑 allow 这一行,并改为 dontaudit

 

    #============= postfix_postdrop_t ==============
    dontaudit postfix_postdrop_t httpd_log_t:file getattr; 

明日大家能够手动地编写翻译及装入已修正的自定政策模块:

 

# checkmodule -M -m -o postfixlocal.mod postfixlocal.te
# semodule_package -o postfixlocal.pp -m postfixlocal.mod
# semodule -i postfixlocal.pp 

postdrop 访问 /var/log/httpd/error_log 时依然会被 SELinux 封锁,但我们再不会在发生封锁时摄取到警示,或在日记内填满错误新闻。

5.2. 收回缺省的安全性脉络

restorecon 这一个命令能够用来裁撤为文件缺省的安全性脉络。

让大家重新以 Apache 作为样例。设假有位客户在他的主目录内编辑了一个index.html 档并将该公文迁移(mv)至 DocumentRoot 的 /var/www/html 内。纵使复制(cp)那几个命令广泛会沿用指标目录或文件的安全性脉络,迁移(mv)指令则会保留源文件的安全性脉络。大家得以应用 chcon 那个命令来改变问题文件的安全性脉络,但鉴于那么些文件已经身处 Apache 缺省的 DocumentRoot(/var/www/html)内,大家只须打消那一个目录或文件的安全性脉络便成了。要独自撤消index.html 档的脉络,大家能够动用:

 

# restorecon -v /var/www/html/index.html 

假如要以回递的不二秘诀收回整个目录的缺省安全性脉络:

 

# restorecon -Rv /var/www/html 

除开,假若大家只想检查 /var/www/html 目录内有啥样文件的安全性脉络须求被注销,大家在利用 restorecon 时能够利用 -n 那么些标旗来防备重复标签的行路:

 

# restorecon -Rv -n /var/www/html 

5. 排除 SELinux 疑难

您终有一天会被 SELinux 阻止你拜望所需的东西,何况要化解这几个标题。SELinux 谢绝有个别文件、进度或能源被访问的基要原因有数个:

  • 多少个被错误标签的公文。
  • 二个进度在错误的 SELinux 安全性脉络下运维。
  • 政策失误。有些进程要访谈贰个在编写制定政策时意料不到的公文,并发出错误音讯。

  • 三个窜犯的计策。

头四个情景大家得以管理,而发出警示及通知正便是第四个情状的意料表现。

日志档是消逝其余困难的机要,而 SELinux 亦不例外。SELinux 缺省会通过 Linux 审计系统 auditd 将日志写在 /var/log/audit/audit.log 内,而该务性格很顽强在艰难险阻或巨大压力面前不屈缺省为启用的。要是 auditd 长驻程序还未有运营,消息将会被写进 /var/log/messages。SELinux 的日志都以 AVC 那些入眼字作标签,让 grep 等程序可轻便地把它们从别的音讯中过滤出来。

由 CentOS 5 起,你能够用 SELinux 覆灭困难工具帮助你深入分析日志档,将它们调换为供人阅读的格式。那一个工具包罗五个以可读格式展现音信及施工方案的图像分界面、二个桌面通报图示、与及三个长驻进程,setroubleshootd,它负责查阅新的 SELinux AVC 警示并传递至通报图示。不运维 X 服务器的客户可安装以电邮通报。SELinux 消灭困难工具是由 setroubleshoot 组件所提供的。那个工具得以从 X 窗口图像管理员的「系统」选单或从命令行教导:

 

sealert -b 

不运维 X 服务器的人得以通过命令行发生供人阅读的告知:

 

sealert -a /var/log/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
# ls -Z /html/index.html
-rw-r--r--  root root user_u:object_r:default_t        /html/index.html
# ls -Z | grep html
drwxr-xr-x  root root user_u:object_r:default_t        html 

作者们能够观望 /html 这么些目录以致 /html/index.html 这么些文件都具有缺省的 default_t 安全性脉络类型。借使大家开采浏览器并尝试查看该页,SELinux 将会正确地不肯它们被访谈并记下错误,因为该目录与公事具备不无误的安全性脉络。大家亟须设置供 Apache 使用的 httpd_sys_content_t 正确安全性脉络。

 

# chcon -v --type=httpd_sys_content_t /html
context of /html changed to user_u:object_r:httpd_sys_content_t
# chcon -v --type=httpd_sys_content_t /html/index.html
context of /html/index.html changed to user_u:object_r:httpd_sys_content_t
# ls -Z /html/index.html
-rw-r--r--  root root user_u:object_r:httpd_sys_content_t    /html/index.html
# ls -Z | grep html
drwxr-xr-x  root root user_u:object_r:httpd_sys_content_t    html 

大家同样也得以应用 -奥德赛 那些回递标旗同期将它们的脉络设置:

 

# chcon -Rv --type=httpd_sys_content_t /html 

以那几个法子改动安全性脉络在系统再次开机后仍会获保留,直至该部份文件系统被另行标签。这几个动作也算颇常,因而准确的清除办法,就是于测量检验后编写一条自定的规行矩步(所谓的国策模块),并把它与地方的法则实行合并。它将会是土生土养的 200 多条法规外的一条法则。要作出长久性、能联接文件系统重新标签的安全性脉络更换,大家得以接收SELinux 管理工科具,或许在命令行实践 semanage 这么些命令:

 

semanage fcontext -a -t httpd_sys_content_t "/html(/.*)?" 

那样便会将 /html 以下的万事参与 httpd_sys_content_t 那几个文件脉络类型。

10. 客商备注及陷阱

此部份由一个人靠此页学懂 SELinux 的顾客所提供。此文书档案是一个有过之而无不比及详细的财富。可是,它微微枯燥。它违漏了数个实际的关键,令小编尝试规范职业时感到很心酸。在乎这里针对 CentOS 6。

  1. semanage 收录在 policycoreutils-python 这些组件内,它缺省是不棉被服装置的。在乎 policycoreutils 是另一个组件。

  2. 在保管连串时,寻觅适用的系统是劳累的。此中一个初步化点是 ls -Z。查看七个零部件所设置的目录及数量,然后复制所运用的系统。下三个工具是 seinfo -t,它会列出种类现正应用的兼具脉络。grep 你的应用程序的名称。

  3. 决不要忘记 chcon 的 -t 参变。它唯有设置脉络体系,那也是你普要做的专业,何况较钦命 ls -Z 所反映的整句符串更为轻松。

  4. 应用 audit2allow 比这里的介绍呈现轻松。当八个系统现身冲突时,请从 audit.log 找寻错误新闻并将它们放入独立的文本内。然后这样把错误传给 audit2allow

 

audit2allow -M mynewpolicyname <errors.txt
  • 这么会发出 mynewpolicyname.temynewpolicyname.pp,和实惠的携带关于怎么样输入那么些新的计划。该政策会批准先前促成冲突的行动。
我是尝试令 postfix 执行一个原先安装在非 SELinux
系统上的脚本时,才发现这个程序。在 SELinux 下,该脚本需要在
*postfix_pipe_exec_t* 脉络下执行,它的后台目录需要有
*postfix_pipe_tmp_t* 脉络。然而该脚本亦会呼唤 *spamassassin* 的
*spamc* 程序进行处埋。很可惜,该程序在 *spamc_t*
下运行,因此不能读入或写入后台目录。 

我在 *audit.log* 内找到两则错误信息:一个是 spamc_t 尝试读入 spool
目录;另一个是写进该目录。针对这些错误信息执行上述步骤后,我们取得如下的
*.te* 档: 

 

module mynewpolicy 1.0;

require {
        type spamc_t;
        type postfix_pipe_tmp_t;
        class file { read write };
}

#============= spamc_t ==============
allow spamc_t postfix_pipe_tmp_t:file { read write };
  • 一旦你查看最终黄金时代行,那几个攻略可能 spamc_t 脉络读入及写入具备 postfix_pipe_tmp_t 脉络的文本。spamassassin 便可照旧般运作

郑重声明:本文版权归美高梅163888所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。