1 | <?xml version='1.0' encoding='UTF-8'?>
|
---|
2 | <!DOCTYPE topic PUBLIC "-//OASIS//DTD DITA Topic//EN" "topic.dtd">
|
---|
3 | <topic xml:lang="en-us" id="vrde-crypt">
|
---|
4 | <title>RDP Encryption</title>
|
---|
5 |
|
---|
6 | <body>
|
---|
7 | <p>RDP features data stream encryption, which is based on the RC4 symmetric cipher, with keys up to 128-bit. The RC4
|
---|
8 | keys are replaced at regular intervals, every 4096 packets. </p>
|
---|
9 | <p>RDP provides the following different authentication methods: </p>
|
---|
10 | <ul>
|
---|
11 | <li>
|
---|
12 | <p><b outputclass="bold">RDP 4</b> authentication was
|
---|
13 | used historically. With RDP 4, the RDP client does not
|
---|
14 | perform any checks in order to verify the identity of the
|
---|
15 | server it connects to. Since user credentials can be
|
---|
16 | obtained using a man in the middle (MITM) attack, RDP4
|
---|
17 | authentication is insecure and should generally not be used.
|
---|
18 | </p>
|
---|
19 | </li>
|
---|
20 | <li>
|
---|
21 | <p><b outputclass="bold">RDP 5.1</b> authentication
|
---|
22 | employs a server certificate for which the client possesses
|
---|
23 | the public key. This way it is guaranteed that the server
|
---|
24 | possess the corresponding private key. However, as this
|
---|
25 | hard-coded private key became public some years ago, RDP 5.1
|
---|
26 | authentication is also insecure.
|
---|
27 | </p>
|
---|
28 | </li>
|
---|
29 | <li>
|
---|
30 | <p><b outputclass="bold">RDP 5.2 or later</b>
|
---|
31 | authentication uses Enhanced RDP Security, which means that
|
---|
32 | an external security protocol is used to secure the
|
---|
33 | connection. RDP 4 and RDP 5.1 use Standard RDP Security. The
|
---|
34 | VRDP server supports Enhanced RDP Security with TLS protocol
|
---|
35 | and, as a part of the TLS handshake, sends the server
|
---|
36 | certificate to the client.
|
---|
37 | </p>
|
---|
38 | <p>The <codeph>Security/Method</codeph> VRDE property sets the required security method, which is used for a
|
---|
39 | connection. Valid values are as follows: </p>
|
---|
40 | <ul>
|
---|
41 | <li>
|
---|
42 | <p><b outputclass="bold">Negotiate.</b> Both
|
---|
43 | Enhanced (TLS) and Standard RDP Security connections are
|
---|
44 | allowed. The security method is negotiated with the
|
---|
45 | client. This is the default setting.
|
---|
46 | </p>
|
---|
47 | </li>
|
---|
48 | <li>
|
---|
49 | <p><b outputclass="bold">RDP.</b> Only Standard RDP
|
---|
50 | Security is accepted.
|
---|
51 | </p>
|
---|
52 | </li>
|
---|
53 | <li>
|
---|
54 | <p><b outputclass="bold">TLS.</b> Only Enhanced RDP
|
---|
55 | Security is accepted. The client must support TLS.
|
---|
56 | </p>
|
---|
57 | <p>
|
---|
58 | The version of OpenSSL used by <ph conkeyref="vbox-conkeyref-phrases/product-name"/> supports
|
---|
59 | TLS versions 1.0, 1.1, 1.2, and 1.3.
|
---|
60 | </p>
|
---|
61 | </li>
|
---|
62 | </ul>
|
---|
63 | <p>For example, the following command enables a client to use either Standard or Enhanced RDP Security
|
---|
64 | connection: </p>
|
---|
65 | <pre xml:space="preserve">vboxmanage modifyvm <varname>VM-name</varname> --vrde-property "Security/Method=negotiate"</pre>
|
---|
66 | <p>If the <codeph>Security/Method</codeph> property is set to either Negotiate or TLS, the TLS protocol will be
|
---|
67 | automatically used by the server, if the client supports TLS. However, in order to use TLS the server must
|
---|
68 | possess the Server Certificate, the Server Private Key and the Certificate Authority (CA) Certificate. The
|
---|
69 | following example shows how to generate a server certificate. </p>
|
---|
70 | <ol>
|
---|
71 | <li>
|
---|
72 | <p>Create a CA self signed certificate. </p>
|
---|
73 | <pre xml:space="preserve">openssl req -new -x509 -days 365 -extensions v3_ca \
|
---|
74 | -keyout ca_key_private.pem -out ca_cert.pem</pre>
|
---|
75 | </li>
|
---|
76 | <li>
|
---|
77 | <p>Generate a server private key and a request for signing. </p>
|
---|
78 | <pre xml:space="preserve">openssl genrsa -out server_key_private.pem
|
---|
79 | openssl req -new -key server_key_private.pem -out server_req.pem</pre>
|
---|
80 | </li>
|
---|
81 | <li>
|
---|
82 | <p>Generate the server certificate. </p>
|
---|
83 | <pre xml:space="preserve">openssl x509 -req -days 365 -in server_req.pem \
|
---|
84 | -CA ca_cert.pem -CAkey ca_key_private.pem -set_serial 01 -out server_cert.pem</pre>
|
---|
85 | </li>
|
---|
86 | </ol>
|
---|
87 | <p>The server must be configured to access the required files. For example: </p>
|
---|
88 | <pre xml:space="preserve">vboxmanage modifyvm <varname>VM-name</varname> \
|
---|
89 | --vrde-property "Security/CACertificate=path/ca_cert.pem"</pre>
|
---|
90 | <pre xml:space="preserve">vboxmanage modifyvm <varname>VM-name</varname> \
|
---|
91 | --vrde-property "Security/ServerCertificate=path/server_cert.pem"</pre>
|
---|
92 | <pre xml:space="preserve">vboxmanage modifyvm <varname>VM-name</varname> \
|
---|
93 | --vrde-property "Security/ServerPrivateKey=path/server_key_private.pem"</pre>
|
---|
94 | </li>
|
---|
95 | </ul>
|
---|
96 | <p>As the client that connects to the server determines what type of encryption will be used, with
|
---|
97 | <userinput>rdesktop</userinput>, the Linux RDP viewer, use the <codeph>-4</codeph> or <codeph>-5</codeph>
|
---|
98 | options. </p>
|
---|
99 | </body>
|
---|
100 |
|
---|
101 | </topic>
|
---|