Мы установили и настроили 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
);