03 Systems & networks

WireGuard

A few thousand lines of auditable kernel code instead of a VPN appliance with a support contract.

Role
Private networking
Licence
GPL v2
Since
2016
Upstream
Project site ↗

WireGuard is how the machines, the offices and the laptops talk to each other. It provides one flat encrypted network, and public keys are the entire identity model.

Why we still choose it

The most important security property of a VPN is whether anyone has read the code, more than which ciphers it supports. The previous generation of VPN software runs to hundreds of thousands of lines, with decades of accumulated negotiation machinery. WireGuard is small enough that reviewing it is a realistic exercise, and it has been reviewed.

There is one fixed cipher suite, so there is nothing to misconfigure and no downgrade attack. Peers are identified by public keys, as in SSH, so revoking a device means deleting a stanza instead of running a certificate authority. It is connectionless and runs in the kernel, so a laptop moving from office wifi to a train keeps its tunnel, which is what staff notice.

How we run it

It is declared in NixOS with everything else, and the keys are held outside the repository. We design the topology up front: hub-and-spoke where the number of peers justifies it, full mesh where it does not. Services that need a second factor get it at the service, not at the tunnel.

Where it falls short

WireGuard is only a tunnel. It has no user management, no portal and no built-in multi-factor authentication, and key distribution is left to you. All of these are smaller problems than running a certificate authority, but they still need handling, and the operational layer around WireGuard is most of what we are paid for.

Nästa steg

Tell us what you are running.
We will tell you what it should be.

A first conversation costs nothing and takes forty minutes. You will leave it with our opinion of your stack, which is occasionally that you should change nothing at all.