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
    • 最新
    • 标签
主页 / server / 问题 / 963100
Accepted
P Burke
P Burke
Asked: 2019-04-16 02:03:12 +0800 CST2019-04-16 02:03:12 +0800 CST 2019-04-16 02:03:12 +0800 CST

以 root 身份运行或使用 sudoers 文件条目的服务帐户运行之间的区别

  • 772

我有一个早期问题的演变。

主要问题:以 root 身份运行程序与通过具有 sudoers 文件条目的服务帐户运行程序之间有什么有意义的区别?

我必须将第 3 方软件代理部署到具有安全意识的客户的 RHEL 环境中。默认安装导致代理的文件和文件夹归 root 所有,并计划在启动、关闭或通过 crontab 文件运行;但无论哪种方式,它都作为根进程运行,安全团队中似乎没有人喜欢。

供应商建议更安全的替代方法是通过具有 sudoers 文件条目的服务帐户执行代理:例如:

agent-user ALL=NOPASSWD: /opt/agent/agent-executable

但从安全的角度来看,这实际上更好吗?或者在这种情况下最佳做法是什么?

在我看来,无论哪种方式,代理都将获得对服务器的特权访问。服务帐户是一种自定义(虽然由供应商支持)似乎是一个犯错的机会。

是NOPASSWD:一个安全漏洞,并且会规定一个/sbin/nologin提高安全性的外壳?

security
  • 1 1 个回答
  • 1066 Views

1 个回答

  • Voted
  1. Best Answer
    HBruijn
    2019-04-16T04:36:15+08:002019-04-16T04:36:15+08:00

    以 root 身份运行程序与通过具有 sudoers 文件条目的服务帐户运行程序之间有什么有意义的区别?
    但从安全的角度来看,这实际上更好吗?或者在这种情况下最佳做法是什么?

    TLDR

    最终结果确实是一样的:/opt/agent/agent-executable以 root 权限运行,所有风险都与该权限级别相关。

    “最佳实践往往只是另一种意见。”


    恕我直言,当服务由主进程和(许多)组件组成时,我建议使用 sudo 选项,这些组件不需要 root 权限才能正常运行,并且在使用agent-user身份时会愉快地运行,但是有一些特定的,容易已识别的组件(如agent-executable)确实需要这样的 root 访问权限。
    这需要管理员和主要服务支持在修改后的上下文中以提升的权限运行这些特定组件的能力。 sudo特别适合这种情况(并且是比在可执行文件上设置 SUID 位更好的选择)。

    然后你坚持最小权限的安全原则。

    例如,当您创建这样的 systemd 单元时:

    [Service]
    User=agent-user
    ExecStart=sudo /opt/agent/agent-executable 
    

    它指示 systemd(以 root 身份运行)切换到代理用户的身份,以在特权降低的环境中运行服务。然后,作为受限制的用户,您可以sudo再次提升权限以以 root 身份运行服务。
    在那种情况下,您只是很傻,不妨从一开始就以 root 身份启动代理可执行文件并执行以下操作:

    [Service]
    # User=root
    ExecStart=/opt/agent/agent-executable 
    

    注意:当您通过 sudo 或 systemd(带有和不带有显式User=root)启动进程时,生成的环境存在一些细微的差异,这些差异在此时可能不相关。

    NOPASSWD:是安全漏洞吗?

    在服务和自动化的情况下通常是不可避免的。

    规定 /sbin/nologin 的外壳会提高安全性吗?

    总的来说:没有人们想象的那么多。例如,请参阅此 Q&A。

    • 2

相关问题

  • OpenSSH 漏洞 [重复]

  • 选择什么安全套件?

  • 安全地授予对 SQL 2005 复制监视器的访问权限以创建快照

  • SSH 服务器零日漏洞利用 - 保护自己的建议

  • 如何将安全组添加到正在运行的 EC2 实例?

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