OpenFortivPN es un cliente para los servicios de túnel VPN PPP+TLS. Aterre un proceso PPPD y opera la comunicación entre la puerta de enlace y este proceso.
Es compatible con Fortinet VPNS.
man openfortivpn
Simplemente conéctese a una VPN:
openfortivpn vpn-gateway:8443 --username=foo
Conéctese a una VPN usando un reino de autenticación:
openfortivpn vpn-gateway:8443 --username=foo --realm=bar
Almacene la contraseña de forma segura con un programa de Pinentry:
openfortivpn vpn-gateway:8443 --username=foo --pinentry=pinentry-mac
Conéctese con un certificado de usuario y sin contraseña:
openfortivpn vpn-gateway:8443 --username= --password= --user-cert=cert.pem --user-key=key.pem
No configure las rutas IP y no agregue servidores de nombres VPN a /etc/resolv.conf
:
openfortivpn vpn-gateway:8443 -u foo --no-routes --no-dns --pppd-no-peerdns
Uso de un archivo de configuración:
openfortivpn -c /etc/openfortivpn/my-config
Con /etc/openfortivpn/my-config
que contiene:
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
Para obtener la lista completa de opciones de configuración, consulte la sección CONFIGURATION
de
man openfortivpn
Smartcard Support necesita openssl pkcs engine
y opensc
para instalarse. El motor PKCS11 de LibP11 debe compilarse con P11-Kit-devel instalado. Verifique el #464 para una discusión de temas conocidos en esta área.
Para hacer uso de su tarjeta inteligente, pon al menos pkcs11:
a la opción de configuración o línea de comandos de Cuerto de Certificado del usuario. Se necesita la URI de token PKCS#11 completa o parcial.
user-cert = pkcs11:
user-cert = pkcs11: token =someuser
user-cert = pkcs11: model =PKCS%2315%20emulated ; manufacturer=piv_II;serial=012345678;token=someuser
username =
password =
En la mayoría de los casos, user-cert = pkcs11:
lo hará, pero si es necesario, puede obtener el token-uri con p11tool --list-token-urls
.
Actualmente no son compatibles con múltiples lectores.
El soporte de Smartcard se ha probado con Yubikey bajo Linux, pero otras tarjetas inteligentes habilitadas para PIV también pueden funcionar. En Mac OS X Mojave se sabe que el motor PKCS por ID no se encuentra.
Algunas distribuciones de Linux proporcionan paquetes openfortivpn
:
En MacOS, tanto Homebrew como MacPorts proporcionan un paquete openfortivpn
. Instale homebrew y luego instale OpenFortivpn:
# Install 'Homebrew'
/usr/bin/ruby -e " $( curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install ) "
# Install 'openfortivpn'
brew install openfortivpn
o instalar MacPorts y luego instalar OpenFortivpn:
# Install 'openfortivpn'
sudo port install openfortivpn
Se puede obtener una descripción más completa de Repology.
Para otras distribuciones, deberá construir e instalar desde la fuente:
Instalar dependencias de compilación.
gcc
automake
openssl-devel
make
pkg-config
autoconf
gcc
automake
autoconf
libssl-dev
make
pkg-config
gcc
automake
openssl
pkg-config
autoconf
net-dialup/ppp
pkg-config
gcc
automake
autoconf
libopenssl-devel
pkg-config
autoconf
automake
[email protected]
pkg-config
libressl
: automake
autoconf
pkgconf
En Linux, si administra su kernel usted mismo, asegúrese de compilar esos módulos:
CONFIG_PPP=m
CONFIG_PPP_ASYNC=m
En MacOS, instale 'HomeBrew' para instalar las dependencias de compilación:
# 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 "
Construir e instalar.
./autogen.sh
./configure --prefix=/usr/local --sysconfdir=/etc
make
sudo make install
Si se dirige a las plataformas con PPPD <2.5.0, como la versión actual de MacOS, le sugerimos que configure con la opción --enable-legacy-pppd:
./autogen.sh
./configure --prefix=/usr/local --sysconfdir=/etc --enable-legacy-pppd
make
sudo make install
Si necesita especificar la ubicación OpenSSL, puede establecer la variable de entorno $PKG_CONFIG_PATH
. Para ajustar el ajuste, verifique los argumentos de configuración disponibles con ./configure --help
especialmente cuando se compila cruzado.
Finalmente, instale ppp
o pppd
de dependencia de tiempo de ejecución.
OpenFortivPN necesita privilegios elevados en tres pasos durante la configuración del túnel:
/usr/sbin/pppd
;/etc/resolv.conf
(cuando el túnel está arriba). Por estas razones, debe usar sudo openfortivpn
. Si necesita que sea utilizable por usuarios que no son Sudoer, puede considerar agregar una entrada en /etc/sudoers
o un archivo en /etc/sudoers.d
.
Por ejemplo:
visudo -f /etc/sudoers.d/openfortivpn
Cmnd_Alias OPENFORTIVPN = /usr/bin/openfortivpn
%adm ALL = (ALL) OPENFORTIVPN
Adapte el ejemplo anterior cambiando la ruta openfortivpn
o eligiendo un grupo diferente de adm
, como un grupo openfortivpn
dedicado.
ADVERTENCIA : ¡Asegúrese de que solo los usuarios de confianza puedan ejecutar OpenFortivpn como root! Como se describe en el #54, un usuario malicioso podría usar --pppd-plugin
y --pppd-log
opciones para desviar el comportamiento del programa.
En algunos casos, el servidor puede requerir que el cliente VPN se cargue e interactúe con una página web que contiene JavaScript. Dependiendo de la complejidad de la página web, la interpretación de la página web podría estar fuera del alcance de un programa de línea de comandos como OpenFortivPN.
En tales casos, puede utilizar un programa externo que genere un navegador web completo, como OpenFortIVPN-WebView para autenticar y recuperar una cookie de sesión. Esta cookie se puede alimentar a OpenFortivpn usando la opción --cookie-on-stdin
. Obviamente, dicha solución requiere una sesión gráfica.
¡No dude en hacer solicitudes de extracción!
El estilo de codificación C debe seguir el estilo de codificación del núcleo Linux.