arkadijs / aws-vpn-client

Connect to the AWS Client VPN with SAML using OSS Client

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Open two terminal windows (or tabs). Run ./samlserver in one, then run ./aws-connect.sh in another. Proceed with Google account selection and confirm non-secure form submission. The VPN should be up with various 10.x/16 routes setup to VPN gateway.

macOS users

Depending on your machine Security & Privacy settings and macOS version (10.15+), you may get an error cannot be opened because the developer cannot be verified. Please read on for a simple workaround.

Alternativelly, to set global preference to Allow apps downloaded from: Anywhere, execute:

$ sudo spctl --master-disable

aws-vpn-client

This is PoC to connect to the AWS Client VPN with OSS OpenVPN using SAML authentication. Tested on macOS and Linux, should also work on other POSIX OS with a minor changes.

See my blog post for the implementation details.

Content of the repository

How to use

  1. Build patched openvpn version and put it to the folder with a script
  2. Start HTTP server with go run server.go
  3. Set VPN_HOST in the aws-connect.sh
  4. Replace CA section in the sample vpn.conf with one from your AWS configuration
  5. Finally run aws-connect.sh to connect to the AWS.

Additional Steps

Inspect your ovpn config and remove the following lines if present

  • auth-user-pass (we dont want to show user prompt)
  • auth-federate (do not retry on failures)
  • auth-retry interact (propietary AWS keyword)
  • remote and remote-random-hostname (already handled in CLI and can cause conflicts with it)

Todo

Better integrate SAML HTTP server with a script or rewrite everything on golang

About

Connect to the AWS Client VPN with SAML using OSS Client

License:MIT License


Languages

Language:Ruby 51.3%Language:Shell 33.3%Language:Go 15.3%