可以在 strongswan VPN 服务器中使用 MySQL 后端进行用户身份验证吗?

可以在 strongswan VPN 服务器中使用 MySQL 后端进行用户身份验证吗?

我们已经安装并配置了strongswan具有用户名/密码身份验证的 VPN 服务器。是否可以将用户的凭据存储在MySQL后端并配置 strongswan 以将后端用于此目的?

到目前为止,我只找到了一个用于配置目的的 mysql 插件和使用 AAA、radius 等的 Xauth 后端。不幸的是,这不是我们需要的。

答案1

sql 插件提供配置详细信息,以及存储在数据库中的凭据。不需要将所有内容都存储在数据库中,并且可以将数据与其他插件提供的数据相结合。因此,可以使用中风插件提供来自的配置ipsec.conf和来自的证书,/etc/ipsec.d/但在数据库中定义用于 EAP/XAuth 身份验证的用户名和密码,而不是在 中ipsec.secrets。由 提供的驱动程序mysql插件需要sql插件访问 MySQL 数据库。

如上所述,您可以忽略提供配置的表,而只需分别在shared_secretsidentities表中定义机密和用户名,并通过shared_secret_identity表将它们关联起来。id2sql脚本(未安装,但内置scripts在 strongSwan 构建目录中的文件夹中)提供了一种生成表条目的简单方法identities

以下是一些示例 SQL 数据(有关类型的更多信息可以找到这里):

INSERT INTO identities (
  type, data
) VALUES ( /* type=ID_RFC822_ADDR, [email protected] */
  3, X'6361726f6c407374726f6e677377616e2e6f7267'
);

INSERT INTO shared_secrets (
  type, data
) VALUES ( /* type=SHARED_EAP/XAUTH, data=Ar3etTnp01qlpOgb */
  2, X'4172336574546e703031716c704f6762'
);

/* assumes the entries above are the first ones in their respective
 * tables, as their id column is auto_increment */
INSERT INTO shared_secret_identity (
  shared_secret, identity
) VALUES (
  1, 1 
);

答案2

对于那些偶然发现这个问题的人,我使用了这个优秀的指南:https://www.cl.cam.ac.uk/~mas90/resources/strongswan进行基本设置,然后按照上述方法设置数据库条目。

之后,我使用免费的 letsencrypt 证书和我在 中CN="myvpnserver.mydomain.com"设置的 so 。然后,我在 mysql 表标识中添加了一个条目,类型为“2”和数据(必须使用 strongswan 中的 id2sql 脚本来转换数据条目)。然后,我从我的标识数据库中获取了该条目的自动分配的 ID 号和与上一个条目类似的共享密钥 ID,以便像这样进入 shared_secret_identity:leftcert=myvpnserver.mydomain.comipsec.conf'myvpnserver.mydomain.com'

INSERT INTO shared_secret_identity (shared_secret, identity) VALUES ( id_of_user_logging_in_that_was_set_in_shared_secrets_database, automatically_assigned_id_number_for_myvpnser.mydomain.com_in_identities_database );

之后它就起作用了。

相关内容