我在 Debian 10 VPS 上设置了一个 Solr 服务器,以便使用电子邮件客户端在我的电子邮件存档中进行全文搜索。我在同一主机上使用 Dovecot 作为 IMAP 服务器。
到目前为止一切顺利。
但我不明白的是:如何保护 Solr 的安全?
默认情况下,每个人都可以通过以下方式访问我的管理面板(可能还有 API)http://example.com:8983
为了关闭这个门,我根据 Solr 参考指南创建了 security.json 文件,启用了基本身份验证https://solr.apache.org/guide/8_8/basic-authentication-plugin.html
{
"authentication":{
"blockUnknown": true,
"class":"solr.BasicAuthPlugin",
"credentials":{"solr":"IV0EHq1OnNrj6gvRCwvFwTrZ1+z1oBbnQdiVC3otuq0= Ndd7LKvVBAaZIF0QAVi1ekCfAJXr1GGfLtRUXhgrF8c="},
"realm":"My Solr users",
"forwardCredentials": false
},
"authorization":{
"class":"solr.RuleBasedAuthorizationPlugin",
"permissions":[{"name":"security-edit",
"role":"admin"}],
"user-role":{"solr":"admin"}
}
}
优点:效果很好,现在人们必须进行身份验证,缺点:
- Dovecot 无法再登录 Solr,无法在我的电子邮件存档中进行搜索
- 世界其他地方可以使用标准凭证用户“solr”和密码“SolrRocks”登录。
这太愚蠢了吧?这算是保障安全吗?
那么,谁可以帮助我配置我的 Solr 和 Dovecot 服务器,以便只有我能够登录管理面板并且 Dovecot 能够继续与 Solr 一起工作。
我知道我可以关闭身份验证,然后简单地用防火墙封锁 8983 端口,但这不是解决问题的方法。此外,我也无法登录管理面板。
谢谢任何提示。
我的 Dovecot“90-plugins.conf”:
plugin {
fts = solr
fts_autoindex = yes
fts_solr = break-imap-search url=http://127.0.0.1:8983/solr/dovecot/
}
答案1
Dovecot 很好地支持 TLS 和 HTTP Basic 身份验证。
这不一定是与 solr 集成的 HBA 实现,您也可以将其应用于全部http 访问 solr 实例。如果您运行 solr 的方法(以前是 Java Web 应用程序,现在是独立应用程序)没有提供所需的选项,请通过 nginx 代理它并在那里配置 HBA。
将凭证放入 Dovecot conf 中的 URL 中:
url=https://user:[email protected]:8983/solr/dovecot/
将其托管在只有 Dovecot 才能访问的防火墙 IP 地址上仍然有意义。
对于本地部署,您不需要(通常也不应该)在可路由接口上托管 solr。相反,将您的服务器绑定到::1
/127.0.0.1