OpenForttivpn est un client des services de tunnel PPP + TLS VPN. Il engendre un processus PPPD et exploite la communication entre la passerelle et ce processus.
Il est compatible avec les VPN Fortinet.
man openfortivpn
Connectez-vous simplement à un VPN:
openfortivpn vpn-gateway:8443 --username=foo
Connectez-vous à un VPN à l'aide d'un royaume d'authentification:
openfortivpn vpn-gateway:8443 --username=foo --realm=bar
Stockez le mot de passe en toute sécurité avec un programme Pinentry:
openfortivpn vpn-gateway:8443 --username=foo --pinentry=pinentry-mac
Connectez-vous avec un certificat d'utilisateur et aucun mot de passe:
openfortivpn vpn-gateway:8443 --username= --password= --user-cert=cert.pem --user-key=key.pem
Ne définissez pas les routes IP et n'ajoutez pas de serveurs de noms VPN à /etc/resolv.conf
:
openfortivpn vpn-gateway:8443 -u foo --no-routes --no-dns --pppd-no-peerdns
Utilisation d'un fichier de configuration:
openfortivpn -c /etc/openfortivpn/my-config
Avec /etc/openfortivpn/my-config
contenant:
host = vpn-gateway
port = 8443
username = foo
set-dns = 0
pppd-use-peerdns = 0
# X509 certificate sha256 sum, trust only this one!
trusted-cert = e46d4aff08ba6914e64daa85bc6112a422fa7ce16631bff0b592a28556f993db
Pour la liste complète des options de configuration, consultez la section CONFIGURATION
de
man openfortivpn
La prise en charge de SmartCard a besoin openssl pkcs engine
et opensc
pour être installée. Le moteur PKCS11 de LiBP11 doit être compilé avec P11-Kit-Devel installé. Vérifiez n ° 464 pour une discussion sur les questions connues dans ce domaine.
Pour utiliser votre carte à puce, mettez au moins pkcs11:
à l'option de configuration ou de ligne de commande utilisateur. Il prend le jeton PKCS complet ou partiel # 11 URI.
user-cert = pkcs11:
user-cert = pkcs11: token =someuser
user-cert = pkcs11: model =PKCS%2315%20emulated ; manufacturer=piv_II;serial=012345678;token=someuser
username =
password =
Dans la plupart des cas, user-cert = pkcs11:
le fera, mais si nécessaire, vous pouvez obtenir le jeton-uri avec p11tool --list-token-urls
.
Plusieurs lecteurs ne sont actuellement pas pris en charge.
La prise en charge de SmartCard a été testée avec Yubikey sous Linux, mais d'autres cartes à smart compatibles PIV peuvent également fonctionner. Sur Mac OS X Mojave, il est connu que le PKCS Engine-by-ID n'est pas trouvé.
Certaines distributions Linux fournissent des packages openfortivpn
:
Sur MacOS, Homebrew et Macports fournissent un package openfortivpn
. Soit installer Homebrew puis installer OpenForttivpn:
# Install 'Homebrew'
/usr/bin/ruby -e " $( curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install ) "
# Install 'openfortivpn'
brew install openfortivpn
ou installer macports puis installer OpenForttivpn:
# Install 'openfortivpn'
sudo port install openfortivpn
Un aperçu plus complet peut être obtenu à partir de la répologie.
Pour d'autres distros, vous devrez construire et installer à partir de la source:
Installez les dépendances de construction.
gcc
automake
autoconf
openssl-devel
make
pkg-config
gcc
automake
autoconf
libssl-dev
make
pkg-config
gcc
automake
autoconf
pkg-config
openssl
net-dialup/ppp
pkg-config
pkg-config
autoconf
gcc
automake
libopenssl-devel
automake
autoconf
pkg-config
[email protected]
automake
autoconf
libressl
pkgconf
Sur Linux, si vous gérez vous-même votre noyau, assurez-vous de compiler ces modules:
CONFIG_PPP=m
CONFIG_PPP_ASYNC=m
Sur macOS, installez «Homebrew» pour installer les dépendances de construction:
# Install 'Homebrew'
/usr/bin/ruby -e " $( curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install ) "
# Install Dependencies
brew install automake autoconf [email protected] pkg-config
# You may need to make this openssl available to compilers and pkg-config
export LDFLAGS= " -L/usr/local/opt/openssl/lib $LDFLAGS "
export CPPFLAGS= " -I/usr/local/opt/openssl/include $CPPFLAGS "
export PKG_CONFIG_PATH= " /usr/local/opt/openssl/lib/pkgconfig: $PKG_CONFIG_PATH "
Construire et installer.
./autogen.sh
./configure --prefix=/usr/local --sysconfdir=/etc
make
sudo make install
Si vous ciblez des plates-formes avec PPPD <2.5.0 telles que la version actuelle de MacOS, nous vous suggérons de configurer avec Option --Enable-legacy-ppd:
./autogen.sh
./configure --prefix=/usr/local --sysconfdir=/etc --enable-legacy-pppd
make
sudo make install
Si vous devez spécifier l'emplacement OpenSSL, vous pouvez définir la variable d'environnement $PKG_CONFIG_PATH
. Pour le réglage fin, vérifiez les arguments de configuration disponibles avec ./configure --help
surtout lorsque vous êtes en compilation croisée.
Enfin, installez la dépendance d'exécution ppp
ou pppd
.
OpenForttivpn a besoin de privilèges élevés à trois étapes lors de la configuration du tunnel:
/usr/sbin/pppd
;/etc/resolv.conf
(lorsque le tunnel est en place). Pour ces raisons, vous devez utiliser sudo openfortivpn
. Si vous en avez besoin pour être utilisable par les utilisateurs non-Sudoer, vous pourriez envisager d'ajouter une entrée dans /etc/sudoers
ou un fichier sous /etc/sudoers.d
.
Par exemple:
visudo -f /etc/sudoers.d/openfortivpn
Cmnd_Alias OPENFORTIVPN = /usr/bin/openfortivpn
%adm ALL = (ALL) OPENFORTIVPN
Adaptez l'exemple ci-dessus en modifiant le chemin openfortivpn
ou en choisissant un groupe différent de adm
- comme un groupe openfortivpn
dédié.
AVERTISSEMENT : assurez-vous que seuls les utilisateurs de confiance peuvent exécuter OpenForttivpn en tant que racine! Comme décrit dans # 54, un utilisateur malveillant pourrait utiliser les options --pppd-plugin
et --pppd-log
pour détourner le comportement du programme.
Dans certains cas, le serveur peut exiger que le client VPN se charge et interagisse avec une page Web contenant JavaScript. Selon la complexité de la page Web, l'interprétation de la page Web pourrait être hors de portée d'un programme de ligne de commande tel qu'OpenForttivpn.
Dans de tels cas, vous pouvez utiliser un programme externe engendrant un navigateur Web à part entière tel que OpenForttivpn-WebView pour authentifier et récupérer un cookie de session. Ce cookie peut être alimenté à OpenForttivpn en utilisant l'option --cookie-on-stdin
. De toute évidence, une telle solution nécessite une session graphique.
N'hésitez pas à faire des demandes de traction!
Le style de codage C doit suivre le style de codage du noyau Linux.