Skip to content

Security: shaanen/documentation

Security

SECURITY.md

Security

This document contains some information about the security of the software, more specifically: the configuration choices that were made.

OpenVPN

Crypto

The crypto configuration when a server was installed with the 1.0.0 release of the software and the configuration was not updated since then, but the server configuration is regenerated, as recommended on every update:

tls-version-min 1.2
tls-cipher TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384
dh none
ncp-ciphers AES-256-GCM
cipher AES-256-GCM
auth SHA256
tls-auth /path/to/tls-auth.key 0

The basic OpenVPN server (and client) crypto configuration for installations after 2018-02-25:

tls-version-min 1.2
tls-cipher TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384
dh none
ncp-ciphers AES-256-GCM
cipher AES-256-GCM
auth none
tls-crypt /path/to/tls-crypt.key

We chose TLS-ECDHE-RSA-WITH-AES-256-GCM-SHA384 because it is the first non-EC cipher mentioned in the modern Mozilla Server Side TLS configuration recommendation.

PHP

CentOS 7 by default provides PHP 5.4. This is not without risks. This version is no longer maintained by the PHP project and depends fully on the Red Hat engineers that update it when (security) issues appear.

See the resources/ directory for PHP setting changes.

Sessions

We use fkooman/secookie, a library to implement secure PHP sessions (and cookies).

OAuth

The built-in OAuth server uses public key cryptography signed Bearer tokens constructed and verified by libsodium. The reason we are using public key cryptography for the Bearer tokens is that no "back channel" is needed between the services verifying the token and issuing the token. This is especially helpful in the case of Guest Usage.

Ed25519 is used for the signatures as documented here.

CA

The CA of the VPN service is "online" as it needs to generate valid certificates on the fly. The easy-rsa software is used as CA.

There aren’t any published security advisories