Articles of selinux

如何在Ubuntu Linux上实施和修改基于angular色的访问控制策略?

Selinux目前安装在机器上,但没有简单的方法来为用户启用和修改RBAC。 Seedit可用于Fedora和CentOS,但不适用于Ubuntu发行版。 有没有其他RBAC解决scheme在Ubuntu / Debian上使用像Seedit这样的工具来修改策略。 SEAdmin在Ubuntu 10.04中不起作用

SELinux – 允许多个服务访问相同的/ home / dir

我目前已经启用了SELinux,并且已经能够configurationApache来允许通过chcon命令访问/ home / src / web,授予“httpd_sys_content_t”types。 但是现在我正在尝试从同一目录提供rsyslogd.conf文件,但每次启动rsyslogd时,都会在我的审计日志中看到一条logging,说明rsyslogd被拒绝访问。 我的问题是,是否有可能授予两个应用程序访问同一目录的能力,同时仍然保持SELinux启用? / home / src上的当前perms: drwxr-xr-x. src src unconfined_u:object_r:httpd_sys_content_t:s0 src 审核日志消息: type=AVC msg=audit(1349113476.272:1154): avc: denied { search } for pid=9975 comm="rsyslogd" name="/" dev=dm-2 ino=2 scontext=unconfined_u:system_r:syslogd_t:s0 tcontext=system_u:object_r:home_root_t:s0 tclass=dir type=SYSCALL msg=audit(1349113476.272:1154): arch=c000003e syscall=2 success=no exit=-13 a0=7f9ef0c027f5 a1=0 a2=1b6 a3=0 items=0 ppid=9974 pid=9975 auid=500 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 […]

SELinux – CentOSx86_64:用户命令限制

SELinux – CentOSx86_64:用户命令限制 SELinux是这份工作的正确工具吗? 如果是的话,最好的办法是什么? 我想限制一个特定的用户只运行一些预定义的命令/脚本列表(可能在他们的主目录中)。 另外,用户脚本可以有权限运行用户不能直接运行的命令(例如,用户脚本test.sh可以调用'ping localhost',但是用户不能直接从命令行调用'ping localhost')。 值得一提的是,我认为这些限制只需要一个用户帐户(我不需要为不同的用户帐户configuration多个不同的configuration)。 操作系统是CentOSx86_64,SELinux启用如下: SELinux status: enabled SELinuxfs mount: /selinux Current mode: enforcing Mode from config file: enforcing Policy version: 24 Policy from config file: targeted 我对SELinux很新,但是已经尝试了以下内容: (1)我认为MLS政策可能是最适合的(这个链接看起来很有希望: http : //www.centos.org/docs/5/html/Deployment_Guide-en-US/sec-mcs-getstarted.html )对于这个任务,所以我第一次试图打开这个。 “SELinux Admin GUI”没有提供任何选项来改变策略,所以我试图直接更改/ etc / selinux / config。 这在重启后出现'内核恐慌',所以我决定不使用原来的安装策略(即有针对性的)。 (2)在SELinux Admin GUI中,我创build了一个策略types为“最小terminal用户angular色”的新策略。 对于这个“名字”我称之为“限制用户”。 我没有select它将被转换到的angular色。 我没有select其他angular色。 我select了“所有”TCP和UDP端口进行绑定/连接。 […]

如何在不重新启动的情况下执行SELINUX文件系统重新标记?

我可以触摸文件/.autorelabel并重新启动,在初始化回来时,它会为我做SELINUX relabel。 但是我想在系统刚刚复制到硬盘镜像的情况下执行此操作。 我可以chroot到原始文件树,或者chroot到刚刚填充的设备映像并运行它。 我只是找不到要运行的东西。 此图像正在AWS EC2上制作成AMI,并包含CentOS 6.3。 但是重新贴上标签的时间太长(6分钟或更长)。 我想将重新标签移动到图像构build,其中额外的时间不是一个问题(因为它发生一次,而不是每次AMI启动)。 我可以使这个relabel成为文件系统最后一次卸载之前的最后一件事,直到它成为AMI并将启动。 我只需要知道该怎么做就可以了。 我已经search了手册页,没有运气。 我已经search了系统init脚本,但是在/.autorelabel被检测到的地方,目前还不清楚发生了什么。 诸如http://www.centos.org/docs/5/html/5.2/Deployment_Guide/sec-sel-fsrelabel.html这样的文档只能说明在重新启动之后如何做这些工作。 我需要在“重新启动”之前完成这项工作(卸载,构buildAMI,然后开始准备)。 最重要的是…是的,这将会重新启动…但是我希望在之前完成重新标记工作,所以每次AMI启动时都不会这样做(因为它需要很长时间)。

Gitolite3推送和selinux访问失败

我尝试用ssh和http安装gitolite3。 我主要关注了gitolite3的官方指南 ,但是我仍然徘徊在剩下的三个问题上。 当我$ git clone http://florian@server/git/testing ,这正确地创build回购。 我添加并提交一个新的文本文件,然后$ git push http://florian@server/git/testing 。 那么,这只是给了我一个信息: Everything up-to-date 这很奇怪 我$ rm -rf testing ,再次克隆回购,我的文本文件不存在。 看来阅读很好,但是写作在某处丢失了。 在/ etc / httpd / logs / suexec.log,error_log,access_log中都没有任何可疑,它们都表示成功的用户身份validation和连接。 此外,用于testing的./gitolite-admin/conf/gitolite.conf的内容是: repo testing RW+ = @all RW+ = daemon 虽然gitolite3的官方指南没有提及添加W +的testing回购。 我有点傻眼,我应该在哪里推进http工作? 为了达到这个目的,我必须echo 0 > /selinux/enforce (禁用selinux),我想再次重新启用它。 重新启用后,每次我尝试上面的$ git clone http://florian@server/git/testing ,httpd error_log有以下几行,而且命令本身失败(当然): [Sun […]

初始化脚本有权限问题,但用/ bin / sh运行解决它们?

有人能告诉我这里发生了什么事吗? 据我所知,这些执行初始化脚本的方法是相同的。 box:~# whoami root box:~# /etc/init.d/nginx restart nginx: [emerg] open() "/var/run/nginx.pid" failed (13: Permission denied) nginx: configuration file /etc/nginx/nginx.conf test failed box:~# service nginx restart nginx: [emerg] open() "/var/run/nginx.pid" failed (13: Permission denied) nginx: configuration file /etc/nginx/nginx.conf test failed box:~# head -1 /etc/init.d/nginx #!/bin/sh box:~# /bin/sh /etc/init.d/nginx restart Stopping nginx: [ OK ] Starting […]

我如何检查selinux模块的内容?

我想查看selinux模块的[textual]内容,例如/etc/selinux/targeted/modules/active/modules/udev.pp 。 我试过sedismod,但是在Fedora 21上出现以下错误: % sudo sedismod /etc/selinux/targeted/modules/active/modules/udev.pp Reading policy… libsepol.policydb_read: policydb magic number 0x39685a42 does not match expected magic number 0xf97cff8c or 0xf97cff8d sedismod: error(s) encountered while loading policy 我想了解,寻找解释的错误还没有结果。 ps我看到如何查看SELinux策略包的内容 ,但有点陈旧。

docker使fedora主机在selinux强制模式下无法启动

我做了不谨慎的事 docker run -v /:/mnt:ro someimage 它导致了一些docker工人(docker v1.7)的守护进程错误。 从那以后,我只能以宽容模式启动,并且有很多selinux错误。 最引人注目的是无法启动期刊服务。 我试图通过fixfiles relabel但没有成功。 既然它发生在Fedora 21上,我也试着升级到F22(全部在执行= 0),但升级后问题仍然存在。 现在不知道如何find解决这个问题的正确方法。

在Fedora 23下查找SELinux拒绝的本地ID

试图让SELinux更stream畅,看起来像 sealert -l <local-id> 将是一个特别有用的方式来获得帮助login拒绝。 据我所知,本地ID曾经被logging到/var/log/messages 。 但在Fedora 23中,这成为journalctl的输出。 在journalctl的输出和/var/log/audit/audit.log ,我都看到类似的消息 type=AVC msg=audit(1450844231.007:161): avc: denied { getattr } for pid=840 comm="nginx" path="/home/web/fallback/index.html" dev="vda1" ino=1448751 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:home_root_t:s0 tclass=file permissive=0 不包括本地ID。 本地ID必须从这些信息中导出,因为 sealert -a /var/log/audit/audit.log 分析完整的日志文件并生成本地ID。 但是,如果我只想了解一个事件的信息,那就很慢,很麻烦。 有没有简单的方法来find在Fedora 23下的日志拒绝的本地ID,或者同样简单的方法来获取audit.log特定日志项目的sealert消息,而无需通过长期输出来分析整个文件和troll? 非常感谢。

我如何去创build一个系统selinux策略域?

我如何创build一个selinux策略来pipe理我的systemd单元? 我正在创build一个将由systemdpipe理的守护进程,我想创build一个适当的selinux策略来处理它。 我已经尝试通过手动或通过sepolicy generate等工具创build自己的策略。 但是这个过程永远不会从init_t转换出来。 我也使用systemd策略模板,但我找不到任何好的例子。 我觉得我一定会错过一些基本的东西,但我不知道它会是什么。 sepolicy输出 policy_module(foo, 1.0.0) ######################################## # # Declarations # type foo_t; type foo_exec_t; init_daemon_domain(foo_t, foo_exec_t) permissive foo_t; ######################################## # # foo local policy # allow foo_t self:fifo_file rw_fifo_file_perms; allow foo_t self:unix_stream_socket create_stream_socket_perms; domain_use_interactive_fds(foo_t) files_read_etc_files(foo_t) miscfiles_read_localization(foo_t) ls -lZ / usr / bin / foo -rwxr-xr-x. root root unconfined_u:object_r:foo_exec_t:s0 /usr/bin/foo ps […]