strongwan 禁用用户访问

strongwan 禁用用户访问

如何使用 strongswan 公钥认证禁用特定用户的访问?

因此,我已使公钥身份验证正常工作。SAN 是电子邮件,是 ID。有没有办法拒绝特定用户 ID(rightid)的身份验证?我希望能够轻松地关闭和打开用户访问权限,我意识到我可以通过 psk 身份验证通过删除机密文件中的条目来实现。我希望有一种方法可以处理证书。我会以“保留”为由撤销证书,但 strongswan 的 pki 不支持取消撤销功能。我还尝试设置一个陷阱来拒绝身份验证,但没有成功。必须能够指定允许哪些客户端 ID 连接

conn main
       leftauth=pubkey
       leftcert=servercert.pem
       rightauth=pubkey
       leftid=mydomain.com
       type=tunnel 
       left=%any 
       leftsubnet=0.0.0.0/0 
       right=%any
       rightsubnet=192.168.137.0/24
       esp=aes128gcm16-sha256-modp3072
       ike=aes128gcm16-sha256-modp3072
       keyexchange=ikev2
       ikelifetime=28800s #Time before re authentication of keys
       auto=add

conn close
       also=main
       [email protected]
       rightauth=never
       auto=route

答案1

虽然目前没有插件可以将单个身份(或证书/密钥)列入黑名单,但白名单插入提供一种将所有允许的身份列入白名单的方法。它附带一个命令,用于在 IKE 守护程序运行时管理白名单。

可以通过以下方式以更动态的方式执行类似操作(例如拒绝所有符合特定模式的身份):外部认证插入。配置的脚本(或命令)在客户端身份验证成功后调用,并在IKE_REMOTE_ID环境变量中接收客户端身份。如果命令以除 之外的任何内容退出0,则客户端将被拒绝。


从技术上讲,阻止客户端证书的正确方法是通过 CRL 或 OCSP。请注意,“保留”原因(--reason certificate-hold带有pki --signcrl)主要适用于使用增量 CRL 的情况,因为此类撤销可以通过“removeFromCRL”原因在增量 CRL 中恢复(strongSwan 目前根本不支持)。但正如您所指出的,当使用基于旧 CRL 创建新的完整 CRL 的选项时,该pki命令目前也不支持省略(即恢复)某些撤销。--lastcrl

虽然您可以从头开始创建一个包含所有当前已撤销证书的新 CRL,但问题是目前无法手动指定cRLNumber已颁发 CRL 的序列号 ()。除非使用--lastcrl(或--basecrl),否则它将始终为 1。并且使用相同(或更低)的序列号,CRL 在重新加载时不会被替换(除非您在加载之前完全清除所有凭据和缓存,这只能通过swanctl一种激烈的措施来实现 - 就像重新启动 IKE 守护程序只是为了重新加载 CRL 一样)。

使用 OCSP 可能是一种选择,因为例如,openssl ocsp你可以提供一个简单的索引文件,你可以手动创建和修改它(参见例如我的答案在这里有关格式的描述)。除了必须运行该附加服务之外,一个可能的缺点是 OpenSSL 要求索引还包含所有当前有效的证书。

相关内容