我正在尝试设置我的Web服务器,并考虑到最佳实践和一般安全性,并尽可能多地阅读。
我的服务器正在运行nginx& uwsgi已经设置为以各自用户的'nginx'和'uwsgi'运行 - 两个用户都被设置为no-login,no-password。
我的所有应用程序/项目文件夹都在我自己的(非root)用户名和“开发人员”组下。它们只是对每个人都是只读的。
第1个问题)
我的理解是这是一种很好的做法,因为服务器(uwsgi / nginx)对这些文件没有写入权限?
第二个问题)
我的帖子 pg_hba.conf 是:
local all postgres ident sameuser
local appdb appusername password
appdb& appusername已通过pgsql为特定应用程序设置
这是否意味着(unix)用户'postgres'只能在ident / unix授权的情况下在本地登录?
此外,它是否意味着对数据库'dbname'的唯一访问是通过具有正确密码的(psql)用户'dbuser'
**最终部分**
如果我的服务器(uwsgi)在技术上对我的django设置文件(包含我的数据库详细信息,包括密码和psql用户名)具有读取权限,那么这不是安全隐患吗?
欢迎任何澄清!
答案 0 :(得分:2)
是的,对于服务器来说,没有对不必要的文件进行写入或读取访问是一件好事(尽管对于Web应用程序很少见)。
是的,这意味着由postgres OS用户运行的任何进程都可以作为postgres数据库用户访问任何数据库。它由ident执行,但不是不安全和不可靠的网络标识,而是本地,安全和可靠的SO_PEERCRED。
我还建议服务不是通过密码而是通过本地标识连接 - 如果攻击者以某种方式获得设置文件的读取权限(例如来自备份,不安全的传输等),并保存密码,那么它可以对数据库做任何事情。使用ident,它必须能够以特定用户身份运行代码,这要困难得多。
一切都存在安全风险。安全是一种管理这种风险的艺术 - 管理安全和方便之间的平衡。如果您可以将服务器配置为不需要访问此文件,并且它不会过于不切实际(例如需要手动干预重启),那就去做吧。也许这种“身份”认证会更好。
答案 1 :(得分:1)