Skip to content

Commit 3b43cf4

Browse files
committed
feat(readme): Add configuration base mitigation of OpenVPN
1 parent a76595c commit 3b43cf4

File tree

1 file changed

+49
-4
lines changed

1 file changed

+49
-4
lines changed

README.md

Lines changed: 49 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
D(HE)ater is an attacking tool based on CPU heating in that it forces the ephemeral variant of
44
[Diffie-Hellman key exchange](https://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange) (DHE) in given
5-
cryptography protocols (e.g. TLS, SSH). It is performed without calculating a cryptographically correct ephemeral key on
6-
the client-side, but with a significant amount of calculation on the server-side. Based on this,
5+
cryptography protocols (e.g. TLS, OpenVPN, SSH). It is performed without calculating a cryptographically correct
6+
ephemeral key on the client-side, but with a significant amount of calculation on the server-side. Based on this,
77
a [denial-of-service (DoS) attack](https://en.wikipedia.org/wiki/Denial-of-service_attack) can be initiated,
88
called [D(HE)at attack](https://dheatattack.com)
99
([CVE-2002-20001](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2002-20001)).
@@ -25,6 +25,8 @@ or can be used via [Docker](https://www.docker.com/) from
2525
```shell
2626
docker pull coroner/dheater
2727
docker run --tty --rm coroner/dheater --protocol tls ecc256.badssl.com
28+
docker run --tty --rm coroner/dheater --protocol tls openvpn://vpn.example.com
29+
docker run --tty --rm coroner/dheater --protocol tls openvpntcp://vpn.example.com:443
2830
docker run --tty --rm coroner/dheater --protocol ssh ecc256.badssl.com
2931
```
3032

@@ -33,6 +35,8 @@ You can increase load by string extra threads.
3335
```shell
3436
dheat --thread-num 4 --protocol tls ecc256.badssl.com
3537
docker run --tty --rm coroner/dheater --thread-num 4 --protocol tls ecc256.badssl.com
38+
docker run --tty --rm coroner/dheater --thread-num 4 --protocol tls openvpn://vpn.example.com
39+
docker run --tty --rm coroner/dheater --thread-num 4 --protocol tls openvpntcp://vpn.example.com:443
3640
docker run --tty --rm coroner/dheater --thread-num 4 --protocol ssh ecc256.badssl.com
3741
```
3842

@@ -41,7 +45,7 @@ docker run --tty --rm coroner/dheater --thread-num 4 --protocol ssh ecc256.badss
4145
Without attacking a server or accessing its configuration it is still possible
4246
to determine whether Diffie-Hellman (DH) key exchange is enabled and if so what
4347
DH parameters (prime, generator, key size) are used. Command line tools such as
44-
[CryptoLyzer](https://gitlab.com/coroner/cryptolyzer) (TLS, SSH KEX/GEX),
48+
[CryptoLyzer](https://gitlab.com/coroner/cryptolyzer) (TLS, OpenVPN, SSH KEX/GEX),
4549
[testssl.sh](https://testssl.sh) (TLS only), or
4650
[ssh-audit](https://github.com/jtesta/ssh-audit) (SSH KEX only) can do that work.
4751

@@ -54,6 +58,16 @@ cryptolyze tls1_3 dhparams example.com
5458
testssl.sh --fs example.com
5559
```
5660

61+
### OpenVPN
62+
63+
```shell
64+
cryptolyze tls1_2 dhparams openvpn://vpn.example.com
65+
cryptolyze tls1_3 dhparams openvpn://vpn.example.com
66+
67+
cryptolyze tls1_2 dhparams openvpntcp://vpn.example.com:443
68+
cryptolyze tls1_3 dhparams openvpntcp://vpn.example.com:443
69+
```
70+
5771
### SSH
5872

5973
```shell
@@ -192,7 +206,38 @@ private key size is set according to OpenSSL default values from
192206
PerSourceNetBlockSize 32:128
193207
```
194208
195-
### IPsec
209+
### VPN
210+
211+
#### OpenVPN
212+
213+
1. Diffie-Hellman key exchange algorithms can be removed in TLS versions prior to 1.2 by setting the
214+
[tls-cipher](https://build.openvpn.net/man/openvpn-2.6/openvpn.8.html) configuration option.
215+
216+
* using OpenSSL
217+
218+
```
219+
tls-cipher ...:!kDHE
220+
```
221+
222+
* using mbed TLS any cipher suites contain DHE should be removed
223+
224+
1. Finite field Diffie-Hellman groups can be removed in TLS version 1.3 by setting the
225+
[tls-groups](https://build.openvpn.net/man/openvpn-2.6/openvpn.8.html) configuration option.
226+
227+
```
228+
tls-groups x25519:secp256r1:x448
229+
```
230+
231+
1. Control channel can be authentticated and/or encrypted by setting the tls-auth, tls-crypt, tls-crypt-v2
232+
[configuration options](https://build.openvpn.net/man/openvpn-2.6/openvpn.8.html).
233+
234+
```
235+
tls-auth file
236+
tls-crypt file
237+
tls-crypt-v2 file
238+
```
239+
240+
#### IPsec
196241
197242
##### StrongSwan
198243

0 commit comments

Comments
 (0)