Linux/BSD - OpenConnect


Use of the VPN is required to access department resources from off-campus. This provides greater security than if department-operated systems were exposed directly to the Internet.

With the current deployment, we suggest the use of a script solution called openconnect-sso which leverages the open-source compatible client known as OpenConnect. This document details leveraging the openconnect-sso tool directly from the command line.


Installing OpenConnect

The OpenConnect client is not usually pre-installed on most Linux distributions nor many other Unix-like operating systems. The exact package names can vary from distribution to distribution, but here are some common ones, along with their easy copy/paste install lines:

Debian / Ubuntu and derivatives

sudo apt install openconnect

Fedora

sudo dnf install openconnect

Arch and derivatives

sudo pacman -S openconnect

pkgsrc (NetBSD / Multiple operating systems)

cd /usr/pkgsrc/net/openconnect && sudo make install clean clean-depends

pkgin (NetBSD / Multiple operating systems)

sudo pkgin install openconnect

OpenBSD

doas pkg_add openconnect

FreeBSD

sudo pkg install openconnect

Using your distribution’s package manager, install the package and proceed to Connect to the VPN.


Setting up openconnect-sso

Directions shown in this section are for Debian / Ubuntu and derivatives.

First update your packages and install the pre-requisites.

sudo apt-get update
sudo apt-get install pipx python3-pip python3-venv -y

Now ensure that pipx is in your path.

which pipx

If there is no output from the command then continue to the next step. If you do get output skip to appending the correct entry into your path.

Find pipx in your local path.

user@host:~$ find ./ -iname \*pipx\*
find: ‘./.dbus’: Permission denied
find: ‘./.cache/dconf’: Permission denied
find: ‘./.cache/doc’: Permission denied
./.local/lib/python3.6/site-packages/pipx-0.16.4.dist-info
./.local/lib/python3.6/site-packages/pipx
./.local/lib/python3.6/site-packages/pipx/pipx_metadata_file.py
./.local/lib/python3.6/site-packages/pipx/__pycache__/pipx_metadata_file.cpython-36.pyc
./.local/bin/pipx

Notice the last entry which is a file named pipx. If you found the entry from the find you can proceed to append the correct entry into your path. If no entry existed you would need to append this into your .bashrc file (or whatever editor you use).

user@host:~$ echo 'export PATH=${PATH}:~/.local/bin' >> ~/.bashrc

Next you must proceed append the correct entry into your path. For this example the entry we want is ./.local/bin/pipx.

user@host:~$ export PATH=${PATH}:~/.local/bin
user@host:~$ which pipx
.local/bin/pipx

Now install openconnect-sso.

pipx install "openconnect-sso[full]"

Connect to the VPN with openconnect-sso

When you are ready to establish a connection you have to choose whether you want all traffic to go over your VPN (Full Tunnel) or only traffic destined for WWU address space (Split Tunnel).

For Full Tunnel use:

openconnect-sso --server remotevpn.wwu.edu/fullmfa --user $USERNAME@wwu.edu

For Split Tunnel use:

openconnect-sso --server remotevpn.wwu.edu/splitmfa --user $USERNAME@wwu.edu

You will be prompted for your password. After this a window will pop up to request your second factor of authentication.

Note

The $VARIABLE syntax in the following lines means you need to replace the $VARIABLE (including the $) with what you want the value to be.

$USERNAME is your WWU Universal Account username.

Please be aware that this window will need to remain open for the tunnel to remain connected. Unfortunately openconnect-sso does not have a background flag the way OpenConnect does.