这是我的问题的后续这里。
我正在设置第一个网络服务器,并正在摸索要创建哪些用户帐户以及提供更好安全性的权限。以下是我所拥有的。
对于 2 个开发人员,我有 2 个帐户(并且它们被添加到补充组中devs
),并且只有他们被允许 ssh 到服务器。对于Web应用程序(基于Django),我创建了1个具有shell访问权限的普通用户app
(尚未将其配置为--system
用户并属于组app
)。 2 个开发人员在 ssh 连接到服务器后,将 su 进行app
任何更新并启动/停止应用程序。app
不允许用户执行(通过不添加到usingsu
中的组设置来阻止)。我还有一个没有能力执行备份相关任务的第三个帐户,其中 cron 作业将进行 ssh 并获取日志文件、状态等。/etc/pam.d/su
pam_wheel.so
su
如果安全方面需要改进,请告诉我。(PS:我是新手)
答案1
su
需要共享密码。我更喜欢须藤。因此,开发人员可以运行为sudo -u app command
运行,或运行为 启动交互式 shell 。可能如果您已将的 shell 设置为 /bin/false 或 /bin/true 之类的内容。command
app
sudo -u app -i
app
sudo -u app -i /bin/bash
app
如果他们不需要完整的 shell 作为应用程序,而只需要重新启动应用程序,您可以限制他们可以作为应用程序运行的命令。在他们需要访问的目录上使用默认 ACL,这会向开发人员和应用程序授予访问权限,这样您就不会遇到文件系统权限问题。恕我直言,您需要遵循最小特权原则。如果他们不需要这样做,请不要授予他们这样做的权限。
通常我更喜欢仅将密钥用于 ssh。如果可以的话,请禁用开发人员的密码,并将 sudo 规则设置为不需要密码。这样任何人都不需要密码,因此也没有密码可以泄露/丢失/重置。
今晚的阅读作业,因为这篇文章的内容有点多:“文件系统 ACL 如何工作”和“如何配置 sudo”。也许接下来是管理 ssh 密钥。