Peut-on utiliser un backend MySQL pour l'authentification des utilisateurs dans un serveur VPN strongswan?

Nous avons installé et configuré un serveur VPN strongswan avec authentification utilisateur / mot de passe. Est-il possible de stocker les informations d'identification des utilisateurs dans un backend MySQL et de configurer strongswan pour utiliser le backend à cette fin?

Jusqu'à présent, je viens de trouver un plugin mysql à des fins de configuration et des backends Xauth utilisant AAA, rayon, etc. Malheureusement, ce n'est pas ce dont nous avons besoin.

3 Solutions collect form web for “Peut-on utiliser un backend MySQL pour l'authentification des utilisateurs dans un serveur VPN strongswan?”

Le plugin sql fournit les détails de la configuration, mais aussi les informations d'identification stockées dans une base de données. Il n'est pas nécessaire de stocker tout dans la base de données et les données peuvent être combinées avec celles fournies par d'autres plugins. Il est donc possible d'utiliser le plugin de course pour fournir des configurations à partir de ipsec.conf et des certificats de /etc/ipsec.d/ mais définissez le nom d'utilisateur et les mots de passe utilisés pour l'authentification EAP / XAuth dans une base de données plutôt que dans ipsec.secrets . Le lecteur fourni par le plugin mysql est requis par le plugin sql pour accéder aux bases de données MySQL.

Comme mentionné ci-dessus, vous êtes libre d'ignorer les tableaux qui fournissent des configurations et plutôt de définir les secrets et les noms d'utilisateur dans les tables des identities shared_secrets et des identities , respectivement, et les shared_secret_identity par la table shared_secret_identity . Le script id2sql (non installé mais construit dans le dossier des scripts dans le répertoire de build strongSwan) fournit un moyen simple de générer des entrées pour le tableau des identities .

Voici un exemple de données SQL (plus d'informations concernant les types peuvent être trouvés ici ):

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

Pour tout le monde qui trébuche sur cela, j'ai utilisé cet excellent guide: https://www.cl.cam.ac.uk/~mas90/resources/strongswan pour effectuer l'installation de base, puis configurer les entrées de base de données comme ci-dessus.

Ensuite, j'utilise les certificats letsencrypt gratuits et le CN="myvpnserver.mydomain.com" donc j'ai défini leftcert=myvpnserver.mydomain.com dans mon ipsec.conf . J'ai ensuite ajouté une entrée dans les identités de table mysql avec le type '2' et les données 'myvpnserver.mydomain.com' (devez utiliser id2sql script de strongswan pour convertir l'entrée de données). Ensuite, j'ai obtenu le numéro d'identification attribué automatiquement pour cette entrée à partir de la base de données de mes identités et l'identifiant secret partagé comme l'entrée précédente afin de faire une entrée dans shared_secret_identity comme ceci:

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

Ensuite, cela a fonctionné.

 # Configure StrongSwan + FreeRADIUS (MariaDB Backend) - CentOS7 # Install Require Packages : [root@strongswan ~]# yum install -y epel-release [root@strongswan ~]# yum update && yum install -y gcc gcc-c++ pam-devel zlib-devel systemd-devel openssl-devel [root@strongswan ~]# yum install -y freeradius freeradius-mysql freeradius-utils mariadb mariadb-server # Download StrongSwan : [root@strongswan ~]# wget http://www.strongswan.org/download/strongswan-5.5.0.tar.gz [root@strongswan ~]# tar zvxf strongswan-5.5.tar.gz [root@strongswan ~]# cd strongswan-5.5.0 # Compile StrongSwan : [root@strongswan ~]# ./configure --prefix=/usr --sysconfdir=/etc/strongswan --localstatedir=/var --enable-unity --enable-xauth-eap --enable-eap-identity --enable-eap-md5 --enable-xauth-pam --enable-eap-tls --enable-eap-radius --enable-eap-mschapv2 --enable-dhcp --enable-systemd --enable-eap-dynamic --enable-openssl --enable-addrblock --enable-certexpire --enable-radattr --enable-swanctl --disable-gmp [root@strongswan ~]# make && make install # Generate Certificates : [root@strongswan ~]# cd /etc/strongswan/ipsec.d/ [root@strongswan ipsec.d]# ipsec pki --gen --type rsa --size 2048 --outform pem > private/strongswanKey.pem [root@strongswan ipsec.d]# ipsec pki --self --ca --lifetime 3650 --in private/strongswanKey.pem --type rsa --dn "C=Ir, O=IT, CN=StrongSwanVPN" --outform pem > cacerts/strongswanCert.pem [root@strongswan ipsec.d]# ipsec pki --gen --type rsa --size 2048 --outform pem > private/vpnHostKey.pem [root@strongswan ipsec.d]# chmod 600 private/vpnHostKey.pem [root@strongswan ipsec.d]# ipsec pki --pub --in private/vpnHostKey.pem --type rsa | ipsec pki --issue --lifetime 730 --cacert cacerts/strongswanCert.pem --cakey private/strongswanKey.pem --dn "C=Ir, O=IT, CN=StrongSwanVPN" --san 192.168.1.1 --flag serverAuth --outform pem > certs/vpnHostCert.pem # Generate Client Certificate : [root@strongswan ipsec.d]# ipsec pki --gen --type rsa --size 2048 --outform pem > private/ClientKey.pem [root@strongswan ipsec.d]# chmod 600 private/ClientKey.pem [root@strongswan ipsec.d]# ipsec pki --pub --in private/ClientKey.pem --type rsa | ipsec pki --issue --lifetime 730 --cacert cacerts/strongswanCert.pem --cakey private/strongswanKey.pem --dn "C=Ir, O=IT, CN=StrongSwanVPN" --outform pem > certs/ClientCert.pem # Export CLIENT CERTIFICATE As a PKCS#12 File : [root@strongswan ipsec.d]# openssl pkcs12 -export -inkey private/ClientKey.pem -in certs/ClientCert.pem -name "Client's VPN Certificate" -certfile cacerts/strongswanCert.pem -caname "strongSwan Root CA" -out Client.p12 # Configure StrongSwan : [root@strongswan ~]# vim /etc/strongswan/ipsec.conf ------------------------ config setup uniqueids=no conn standard_ikev2 keyexchange=ikev2 ike=aes256-sha256-modp1024,3des-sha1-modp1024,aes256-sha1-modp1024! esp=aes256-sha256,3des-sha1,aes256-sha1! fragmentation=no rekey=no left=192.168.1.1 leftsendcert=always leftfirewall=yes leftsubnet=0.0.0.0/0 leftcert=vpnHostCert.pem right=%any rightauth=eap-radius rightsourceip=10.0.0.0/24 eap_identity=%any dpdaction=clear auto=add ------------------------ [root@strongswan ~]# vim /etc/strongswan/ipsec.secrets : RSA vpnHostKey.pem [root@strongswan ~]# vim /etc/strongswan/strongswan.conf ------------------------ charon { load_modular = yes compress = yes plugins { include strongswan.d/charon/*.conf eap-radius { servers { server-a { accounting = yes secret = 123456 address = 192.168.1.1 auth_port = 1812 acct_port = 1813 } } } } include strongswan.d/*.conf } ------------------------ [root@strongswan ~]# vim /etc/sysctl.conf net.ipv4.ip_forward = 1 net.ipv4.conf.all.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 # start strongswan service : [root@strongswan ~]# systemctl start strongswan && systemctl enable strongswan # Configure FreeRADIUS : [root@strongswan ~]# vim /etc/raddb/mods-available/sql ------------------------ database = "mysql" driver = "rlm_sql_mysql" server = "localhost" port = 3306 login = "radius" password = "radius-password" radius_db = "radius" read_clients = yes ------------------------ # Enable sql Module : [root@strongswan ~]# ln -s /etc/raddb/mods-available/sql /etc/raddb/mods-enabled/sql # Comment "files" and Uncomment "sql" : [root@strongswan ~]# vim /etc/raddb/sites-available/default # Comment -> "files" and Uncomment -> "sql" : [root@strongswan ~]# vim /etc/raddb/sites-available/inner-tunnel [root@strongswan ~]# vim /etc/raddb/client.conf ------------------------ client 0.0.0.0 { secret = 123456 nas_type = other shortname = 0.0.0.0 require_message_authenticator = no } ------------------------ [root@strongswan ~]# cat /etc/strongswan/ipsec.d/cacerts/strongswanCert.pem > /etc/raddb/certs/ca.pem [root@strongswan ~]# cat /etc/strongswan/ipsec.d/certs/vpnHostCert.pem > /etc/raddb/certs/server.pem [root@strongswan ~]# cat /etc/strongswan/ipsec.d/private/vpnHostKey.pem > /etc/raddb/certs/server.key [root@strongswan ~]# cat /etc/raddb/certs/server.key >> /etc/raddb/certs/server.pem # start radiusd service : [root@strongswan ~]# systemctl start radiusd && systemctl enable radiusd ## Configure MariaDB : [root@strongswan ~]# systemctl start mariadb && systemctl enable mariadb [root@strongswan ~]# mysql_secure_installation [root@strongswan ~]# mysql -u root -p Enter Password: ****** MariaDB> create database radius; MariaDB> grant all privileges on radius.* to radius@localhost identified by "radius-password"; MariaDB> flush privileges; MariaDB> use radius; MariaDB> source /etc/raddb/mods-config/sql/main/mysql/schema.sql; # add username|password : MariaDB> INSERT INTO radcheck (username,attribute,op,VALUE) VALUES ('ehsan','Cleartext-Password',':=','eh@12345'); MariaDB> INSERT INTO radcheck (username,attribute,op,VALUE) VALUES ('alireza','Cleartext-Password',':=','abc123'); 
  • Site de l'AWS sur le site VPN - Même gamme
  • Solution VPN logicielle la plus simple dans Windows Server 2003
  • Tirer un tunnel VPN
  • Est-il fondamentalement possible de configurer un VPN avec un "CNAME" faux?
  • Une part lente de SMB / CIFS provoque des performances de réseau lentes et lâches à destination ou à partir de celles rapides dans Windows 7
  • Assistance sur la configuration pour connecter un server hors site au réseau local via RRAS VPN - Server 2008 R2
  • Windows Server 2008 R2 en tant que server VPN
  • Impossible de créer une connection TCP avec OpenVPN Server
  • Opensource SSL VPN pour ordinateur portable à domicile?
  • mappage du server 2008 lecteur réseau vers Vista Premium Premium x64
  • Un user incapable de VPN dans une machine
  • Les astuces du serveur de linux et windows, tels que ubuntu, centos, apache, nginx, debian et des sujets de rĂ©seau.