Назад | Перейти на главную страницу

Можно ли использовать серверную часть MySQL для аутентификации пользователя на сервере Strongswan VPN?

Мы установили и настроили strongswan VPN-сервер с аутентификацией по имени пользователя и паролю. Можно ли хранить учетные данные пользователей в MySQL backend и настроить strongswan для использования backend для этой цели?

Пока что я только что нашел плагин mysql для целей настройки и бэкэнды Xauth с использованием AAA, радиуса и т. Д. К сожалению, это не то, что нам нужно.

Для всех, кто наткнется на это, я использовал это отличное руководство: https://www.cl.cam.ac.uk/~mas90/resources/strongswan чтобы выполнить базовую настройку, а затем настроить записи базы данных, как указано выше.

После этого я использую бесплатные сертификаты letsencrypt и CN="myvpnserver.mydomain.com" поэтому я установил leftcert=myvpnserver.mydomain.com в моем ipsec.conf. Затем я добавил запись в идентификаторы таблицы mysql с типом '2' и данными 'myvpnserver.mydomain.com' (необходимо использовать скрипт id2sql из strongswan для преобразования ввода данных). Затем я получил автоматически назначенный номер идентификатора для этой записи из моей базы данных идентификаторов и общий секретный идентификатор, как в предыдущей записи, чтобы сделать запись в shared_secret_identity следующим образом:

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 );

После этого все заработало.

В плагин sql предоставляет детали конфигурации, а также учетные данные, хранящиеся в базе данных. Необязательно хранить все в базе данных, и данные можно комбинировать с данными, предоставляемыми другими плагинами. Таким образом, можно использовать инсульт плагин для предоставления конфигураций из ipsec.conf и сертификаты от /etc/ipsec.d/ но определите имя пользователя и пароли, используемые для аутентификации EAP / XAuth в базе данных, а не в ipsec.secrets. Драйвер предоставлен mysql плагин требуется sql плагин для доступа к базам данных MySQL.

Как упоминалось выше, вы можете игнорировать таблицы, которые предоставляют конфигурации, и вместо этого просто определять секреты и имена пользователей в shared_secrets и identities таблицы соответственно и связали их через shared_secret_identity стол. В id2sql скрипт (не установлен, но встроен в scripts в каталоге сборки strongSwan) предоставляет простой способ создания записей для identities стол.

Вот несколько примеров данных SQL (дополнительную информацию о типах можно найти Вот):

INSERT INTO identities (
  type, data
) VALUES ( /* type=ID_RFC822_ADDR, data=carol@strongswan.org */
  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 
);