我正在尝试了解通过 Postfix/Dovecot 支持网络认证用户和各种网络服务(如 Gitlab)发送电子邮件的正确方法。
我的网络身份验证服务器是 Ubuntu 22.04,使用 OpenLDAP 和 Kerberos。我的网络身份验证用户都从posixAccount
和PostfixBookMailAccount
对象类继承,而我的服务帐户仅从后者继承。这是一种尝试,只允许我的用户登录各种机器,但不允许服务帐户登录,但支持两者的电子邮件。
我尝试配置 Dovecot 以使用pam
适用于用户电子邮件的驱动程序,但 Gitlab 不起作用。我修改了 PAM 配置(所有配置都使用 Kerberos 但不使用 LDAP),在 Kerberos 之前添加了 LDAP。这包括将 PAM LDAP 配置为基于用户查找mailEnabled
而不是posixAccount
用户查找进行搜索,但可能有些问题,因为它仍然适用于用户但不适用于服务。
我也尝试配置 Dovecot 以使用ldap
驱动程序并进行类似的搜索mailEnabled
,但也出现问题,因为它不适用于任何帐户。
看来我可能会屈服并为 Gitlab 之类的服务创建用户帐户,但这会激起我的安全恐惧。
在继续研究或走错方向之前,我首先想了解区分这两个电子邮件来源是否有意义,或者我是否只是在过度思考。如果我需要区分,有人可以给我指出概述这种方法的参考资料,或者在配置 Postfix/Dovecot 时是否有/需要考虑哪些方面提供一些提示吗?到目前为止,我还没有找到适合这两种帐户类型的组合。我的网络搜索没有找到任何关于采取什么方法的信息,因此也没有找到任何相关材料。
我的10-auth.conf
包含:
auth_krb5_keytab = /etc/dovecot/dovecot.keytab
auth_mechanisms = plain login gssapi
其中 keytab 填充了imap
、nslcd
和smtp
主体。
当配置为 PAM 时,我的auth-network.conf.ext
外观如下:
passdb {
driver = pam
}
userdb {
driver = passwd
args = uid=vmail gid=vmail home=/srv/vmail/%u mail=maildir:/srv/vmail/%u/Maildir
}
当配置为 LDAP 时,它是:
passdb {
args = /etc/dovecot/dovecot-ldap.conf.ext
driver = ldap
}
userdb {
driver = prefetch
}
userdb {
args = /etc/dovecot/dovecot-ldap.conf.ext
driver = ldap
}
这是标准做法。相关概念是,帐户的存在或作为帐户进行身份验证的能力不应与该帐户访问服务的授权挂钩- 例如,这就是为什么 PAM 对所有事物都有单独的
auth
(身份验证)和account
(授权)堆栈。因此,您可以进行基于 Kerberos 的身份验证(绕过 PAM 的 GSSAPI 或通过 PAM 的密码),同时仍让服务通过从其 PAM
account
堆栈调用 pam_ldap.so 来验证授权。标准方法是使用 LDAPauthorizedService
属性,该属性与 LDAP 服务名称 1:1 对应(但您可以使用非基于 PAM 的系统的自定义值来扩展它)。这样,您的“服务”帐户就可以被授权仅访问特定服务(例如 SMTP),但尽管是 posixAccount,仍然无法使用 SSH/Telnet/cron/sudo,因为它们没有允许
authorizedService: sshd
SSH 登录的权限。或者,您可以使用
pam_succeed_if
来要求特定 POSIX 组的成员资格(例如,如果您的常规用户是“用户”的成员,但服务帐户不是),以实现相同的目标,即防止服务帐户通过 SSH 等登录。与 AD 相比,它实际上没有“完整”帐户和“仅 LDAP”帐户之间的区别,因此任何需要 LDAP 读取权限的服务只会获得一个“完整”用户帐户(它是唯一存在的类型)并且所有形式的访问都通过 ACL 进行控制,而不是通过帐户的存在进行控制。
不确定这种方法是否完整,但至少它适用于电子邮件。我的经过网络身份验证的用户现在都具有
authorizedService
以下服务的属性:而我的服务用户却没有。我的每台客户端机器和邮件服务器本身
gitlab
的相关部分包含:/etc/sssd/sssd.conf
example.com/EXAMPLE.COM
你的域名在哪里;)我认为如果不添加授权服务属性,
su
我就无法切换到其他用户,例如:没有它
gdm-password
我就无法从锁定屏幕登录。我没有找到太多关于使用此属性的信息,如果这是标准方法,我会感到有点惊讶。此链接https://freeradius-users.freeradius.narkive.com/IW953CLH/ldap-authorizedservice-attribute-matching#post2提供了我应该授权哪些服务的提示,并且还建议了如果您有任何其他显示管理器,还需要哪些其他服务。