AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-168178

dawud's questions

Martin Hope
dawud
Asked: 2013-09-11 13:02:24 +0800 CST

在 freeIPA 中向 SELinux 受限用户授予 sudo 访问权限

  • 4

我正在使用freeIPA为数百个虚拟机的域定义 RBAC、HBAC 和sudo规则,以及 SELinux 用户映射,我需要向多个团队(开发人员、数据库管理员、系统管理员、管理, ...)。

目前,这些机器上的 SELinux 策略设置为targeted,我正在考虑删除unconfined_uSELinux 用户以使这些系统在strict策略下运行的可能性。

为了做到这一点,要求之一是让最终用户了解他/她已从 '降级'unconfined_u到staff_u. 问题在于sudo与 SELinux 用户映射的互操作方式。一些事实:

  1. 如果你想使用一个受限的 SELinux 用户并且你希望仍然能够使用sudo,你需要使用staff_u,因为这是可以访问 SETUID 可执行文件的 SELinux 用户。

  2. 当用户登录系统时,他/她被分配一个 SELinux 用户映射。su即使在 SELinux 用户可以运行( unconfined_u) 或sudo( unconfined_u, )的情况下,该映射也不会改变staff_u。

  3. SELinux Specfor当前包含在定义的andsudo中运行命令的工具,但缺乏指定 the 的可能性。进一步的参考可以在这里找到。typesrolesuser

  4. 此部署中涉及的机器都是 freeIPA 客户端,它们的sudo策略由 freeIPA 管理,但它们也有一个puppet托管的自定义/etc/sudoers文件,作为 freeIPA 失败的后备提供。

我第一次尝试解决这个问题涉及使用包含所需规则的策略模块,以允许staff_u访问未修改的sudorules. 这种方法已被证明是错误的,因为政策可以无限增长,最后你所做的就是在政策上打一个洞。

因此,到目前为止,我处理这些事实的方式一直是重写sudorules以显式包含调用以runcon切换到适当的 SELinux 用户,因此现在需要运行一个典型的开发人员,例如:

$ sudo -u jboss runcon -u sysadm_u jboss_cli.sh

这样做的缺点是必须修改所有现有的sudorules并迫使用户改变通常运行的东西的方式。所以问题是:

  • 有没有办法在定义中明确定义 SELinux 用户Runas_Spec?
  • 如果无法通过,是否可以在 freeIPAsudoers中定义或绑定 a到 SELinux 用户映射?sudorule

考虑这种情况:

# ipa sudorule-show services_4_operators_3
  Rule name: services_4_operators_3
  Description: Operator Level 3 access to service management commands
  Enabled: TRUE
  User Groups: operators_3
  Host Groups: all-hosts
  Sudo Allow Command Groups: services
  Sudo Option: type=sysadm_t, role=sysadm_r

# ipa sudocmdgroup-show services
  Sudo Command Group: services
  Description: commands for services and daemons management
  Member Sudo commands: /sbin/service, /sbin/chkconfig

如果我尝试:

$ sudo service sshd status
sudo: unable to open /var/log/sudo-io/seq: Permission denied
时间->2013 年 9 月 11 日星期三 09:57:30
type=PATH msg=audit(1378886250.584:46644668): item=0 name="/var/log/sudo-io/seq" inode=154 dev=fd:0c mode=0100600 ouid=0 ogid=1168000009 rdev=00: 00 obj=unconfined_u:object_r:var_log_t:s0
type=CWD msg=audit(1378886250.584:46644668): cwd="/home/some_user"
type=SYSCALL msg=audit(1378886250.584:46644668):arch=c000003e syscall=2 成功=没有退出=-13 a0=7fff2e7ab970 a1=42 a2=180 a3=0 项=1 ppid=2374 pid=2442 auid=1168000009 uid =1168000009 gid=1168000009 euid=0 suid=0 fsuid=0 egid=1168000009 sgid=1168000009 fsgid=1168000009 tty=pts0 ses=6459 comm="sudo" exe="/usr/bin/sudo" subj=staff_u:staff_r: staff_sudo_t:s0-s0:c0.c1023 key="access"
type=AVC msg=audit(1378886250.584:46644668):avc: denied { read write } for pid=2442 comm="sudo" name="seq" dev=dm-12 ino=154 scontext=staff_u:staff_r:staff_sudo_t:s0 -s0:c0.c1023 tcontext=unconfined_u:object_r:var_log_t:s0 tclass=文件

因为我正在使用log_output和Defaults:

# ll -dZ /var/log/sudo-io
drwx------. root root system_u:object_r:var_log_t:s0   /var/log/sudo-io/

尝试“修复”此 AVC 拒绝将导致上述无限策略模块,因为允许:

allow staff_sudo_t var_log_t:file { open read write lock create };
allow staff_sudo_t var_log_t:dir { write add_name create search };

是一个虚假的问题,如启用此类权限时所示:

$ sudo service sshd status
env: /etc/init.d/sshd: Permission denied
时间->2013 年 9 月 11 日星期三 11:00:53
type=PATH msg=audit(1378890053.185:46646934): item=0 name="/etc/init.d/sshd" inode=5490 dev=fd:01 mode=0100755 ouid=0 ogid=0 rdev=00:00 obj =system_u:object_r:sshd_initrc_exec_t:s0
类型=CWD 消息=审计(1378890053.185:46646934):cwd="/"
type=SYSCALL msg=audit(1378890053.185:46646934): arch=c000003e syscall=59 成功=没有退出=-13 a0=7fffc0829862 a1=7fffc0829578 a2=607030 a3=ffffe000 items=1 ppid=6715 pid=6720 90uid=68001 auid= =0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts2 ses=6459 comm="env" exe="/bin/env" subj=staff_u:sysadm_r:sysadm_t: s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1378890053.185:46646934):avc: denied { execute } for pid=6720 comm="env" name="sshd" dev=dm-1 ino=5490 scontext=staff_u:sysadm_r:sysadm_t:s0- s0:c0.c1023 tcontext=system_u:object_r:sshd_initrc_exec_t:s0 tclass=file

最终编辑

我终于采用了一个中期解决方案。我已将 IPA 服务器配置如下:

$ sudo -u dsastrem ipa config-show
  Maximum username length: 32
  Home directory base: /home
  Default shell: /bin/rbash
  Default users group: ipausers
  Default e-mail domain: company.com
  Search time limit: 2
  Search size limit: 100
  User search fields: uid,givenname,sn,telephonenumber,ou,title
  Group search fields: cn,description
  Enable migration mode: FALSE
  Certificate Subject base: O=COMPANY.COM
  Password Expiration Notification (days): 4
  Password plugin features: AllowNThash
  SELinux user map order: guest_u:s0$xguest_u:s0$user_u:s0$staff_u:s0-s0:c0.c1023$unconfined_u:s0-s0:c0.c1023
  Default SELinux user: guest_u:s0
  Default PAC types: MS-PAC

我已经定义了一些类似于这个的 SELinux 用户映射,将一些 RBAC 绑定到一个 SELinux 用户(staff_u)。

$ sudo -u dsastrem ipa selinuxusermap-find
---------------------------
X SELinux User Maps matched
---------------------------
  ....

  Rule name: semap_operators_3_mad
  SELinux User: staff_u:s0-s0:c0.c1023
  HBAC Rule: operators_3_access
  Description: SELinux user mapping for MAD level 3 operators
  Enabled: TRUE

  ....
----------------------------
Number of entries returned X
----------------------------

我的sudo规则现在看起来像这样:

  Rule name: services_4_operators_3
  Description: Operator Level 3 access to service management commands
  Enabled: TRUE
  User Groups: operators_3
  Host Groups: all-hosts
  Sudo Allow Command Groups: services
  Sudo Option: role=unconfined_r

这不是我的最终目标,因为我想完全消除unconfined_u,但这是向前迈出的一大步,因为它稍微增强了整体安全性。当然,Matthew 的回答是正确的,staff_u应该可以通过sudo选项过渡到更高特权的域;但仍然存在system_u无法完全替换的问题unconfined_u。也许是因为它不打算这样做。

sudo
  • 1 个回答
  • 8543 Views
Martin Hope
dawud
Asked: 2013-04-16 02:33:43 +0800 CST

如何在 freeIPA 中为内置的 sudoedit 创建一个 sudorule

  • 1

目前,当我想授予某些用户组编辑文件的权限时,我会按如下方式进行:


ipa sudocmd-add --desc=Vi IMproved default-mode, no-exec, no-suspend mode' '/usr/bin/rvim'
ipa sudocmdgroup-add edition --desc='commands for restricted edition'
ipa sudocmdgroup-add-member edition --sudocmds=/usr/bin/rvim
ipa sudorule-add edition-4-operators --desc='Operator access to restricted edition commands'
ipa sudorule-add-allow-command edition-4-operators --sudocmdgroups=edition

然后是与 HBAC、SELinux 等相关的其余选项。

我想用我的freeIPA服务器的所有 sudorules 中/usr/bin/rvim的内置替换。sudoedit(8)

我需要像往常一样申报sudoedit吗sudocmd?我可以直接添加sudoedit到sudocmdgroup而不声明它sudocmd之前吗?

linux
  • 1 个回答
  • 1131 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve