Openconnect VPN

Nikos Mavrogiannopoulos

Security Technologies

Red Hat

February, 2016 ● VPN story

● The

● Future plans

VPN story

3/17/13 Red Hat 3 VPN story

• Task – Setup a VPN service to inter-connect devices

3/17/13 Red Hat 4 VPN story

3/17/13 Red Hat 5 VPN story

3/17/13 Red Hat 6 VPN story

3/17/13 Red Hat 7 VPN story

• Requirements: – Simple setup for users

3/17/13 Red Hat 8 VPN story

• Requirements: – Standards based solution

3/17/13 Red Hat 9 VPN story

• Requirements: – The administrator should be able to view who is connected on every moment

3/17/13 Red Hat 10 VPN story

• Requirements: – The administrator should be able to disconnect and block access to users

3/17/13 Red Hat 11 VPN story

• Solution: – Based on OpenVPN and lots of custom scripts

3/17/13 Red Hat 12 VPN story

• Solution: – Based on OpenVPN and lots of custom scripts

3/17/13 Red Hat 13 VPN story

• Requirements: Involved configuration files for – Simple setup for users client setup, TCP/UDP had to be selected by user – Standards based solution

– The administrator should be able to view who is connected on every moment

– The administrator should be able to disconnect and block access to users

3/17/13 Red Hat 14 VPN story

• Requirements: Was using TLS for key – Simple setup for users exchange; everything else was custom – Standards based solution

– The administrator should be able to view who is connected on every moment

– The administrator should be able to disconnect and block access to users

3/17/13 Red Hat 15 VPN story

No support; lots • Requirements: of custom scripts – Simple setup for users

– Standards based solution

– The administrator should be able to view who is connected on every moment

– The administrator should be able to disconnect and block access to users

3/17/13 Red Hat 16 VPN story

• Requirements: – Simple setup for users

– Standards based solution

– The administrator should be able to view who is connected on every moment

– The administrator should be able to disconnect and block access to users

No support

3/17/13 Red Hat 17 VPN story

• AnyConnect VPN

3/17/13 Red Hat 18 VPN story

• CISCO AnyConnect VPN – A proprietary VPN implementation based on standard protocols

– A VPN channel established over an HTTPS session (TLS 1.x)

– Supports dual TCP/UDP; UDP via a pre-draft DTLS version

– Open-source compatible client →

● Implements a compatible protocol we call “Openconnect protocol”

3/17/13 Red Hat 20 VPN story

• CISCO AnyConnect VPN – A proprietary VPN implementation based on standard protocols

– A VPN channel established over an HTTPS session (TLS 1.x)

– Supports dual TCP/UDP; UDP via a pre-draft DTLS version

– Open-source compatible client → openconnect PN ● Implements a compatible protocol we call “Openconnect protocol”t V an pli om s rd da an St

3/17/13 Red Hat 21 History

• OpenConnect doesn't need any user configuration

# openconnect server.example.com:443 POST https://server.example.com/ Attempting to connect to server 127.0.0.1:443 SSL negotiation with server.example.com Connected to HTTPS on server.example.com XML POST enabled Please enter your username Username:test POST https://server.example.com/auth Please enter your . Password: POST https://server.example.com/auth Got CONNECT response: HTTP/1.1 200 CONNECTED CSTP connected. DPD 90, Keepalive 32400 Connected tun0 as 192.168.1.191, using SSL Established DTLS connection (using GnuTLS). Ciphersuite (DTLS1.2)-(RSA)-(AES-128-GCM).

3/17/13 Red Hat 22 History

• OpenConnect doesn't need any user configuration

# openconnect server.example.com:443 POST https://server.example.com/ Attempting to connect to server 127.0.0.1:443 SSL negotiation with server.example.com Connected to HTTPS on server.example.com XML POST enabled Please enter your username Username:test POST https://server.example.com/auth Please enter your password. up Password: et POST https://server.example.com/auth r s Got CONNECT response: HTTP/1.1 200 CONNECTED se CSTP connected. DPD 90, Keepalive 32400 u ple Connected tun0 as 192.168.1.191, using SSL m Established DTLS connection (using GnuTLS). Ciphersuite (DTLS1.2)-(RSA)-(AES-128-GCM).Si

3/17/13 Red Hat 23 VPN story

• Requirements: – Simple setup for users

– Standards based solution

– The administrator should be able to view who is connected on every moment

– The administrator should be able to disconnect and block access to users

3/17/13 Red Hat 24 VPN story

• Requirements: – Simple setup for users

– Standards based solution

– The administrator should be able to view who is connected on every moment

– The administrator should be able to disconnect and block access to users

– The server should isolate users between them

– The server should operate under the least possible privilege

3/17/13 Red Hat 25 The server

3/17/13 Red Hat 26 The server

• Openconnect server: started in 2013

• Today the server interoperates with both openconnect and Anyconnect clients

– Is available for and *BSD systems

3/17/13 Red Hat 27 The server

• Features: – Supports for password (file, PAM, radius), certificate or Kerberos

– Supports setting resource limits per client or groups of clients (e.g., cgroups, bandwidth)

– Processing scales with the number of CPUs

– Supports LZS, LZ4 compression

– Supports TLS 1.2, DTLS 1.2 and AES-GCM

– Supports online user management

3/17/13 Red Hat 28 The server

• Features: – Privilege separation between main server and worker processes

● Isolation of worker processes (using seccomp)

– Isolated software security module handles PAM/radius and keys

3/17/13 Red Hat 29 The server

• Features: – Privilege separation between main server and worker processes

● Isolation of worker processes (using seccomp)

– Isolated software security module handles PAM/radius and keys

+ ion lat ge so ile r i riv se t p U as Le

3/17/13 Red Hat 30 The server

• occtl: Control tool to administer the server and view clients

3/17/13 Red Hat 31 The server

3/17/13 Red Hat 32 The server

3/17/13 Red Hat 33 The server

iew rv ve o er Us

3/17/13 Red Hat 34 The server

3/17/13 Red Hat 35 The server

3/17/13 Red Hat 36 The server

ck blo ct/ ne on isc d er Us

3/17/13 Red Hat 37 VPN story

• Requirements: – Simple setup for users

– Standards based solution

– The administrator should be able to view who is connected on every moment

– The administrator should be able to disconnect and block access to users

– The server should isolate users between them

– The server should operate under the least possible privilege

3/17/13 Red Hat 38 Future plans

3/17/13 Red Hat 39 Future plans

• Extend and simplify the openconnect protocol

– e.g., drop legacy pre-DTLS 1.0 support

– Publish and standardize on an SSL/VPN protocol

• Improve performance by utilizing an in-kernel TLS/DTLS stack

3/17/13 Red Hat 40 Questions

● www.infradead.org/openconnect

● www.infradead.org/ocserv

3/17/13 Red Hat 41