Openvpn加密认证配置

Openvpn服务端有针对认证和加密的配置下,下面来介绍下。

一、auth 认证

使用消息摘要算法,认证数据通道包,默认值是SHA1。
可配置值:

  • SHA256
  • SHA384
  • SHA512
  • RSA-SHA512

auth none 禁用认证校验

二、cipher 加密

使用密码加密算法,加密数据通道包,默认值是BF-CBC。
可配置值:

  • AES-128-GCM
  • AES-192-GCM
  • AES-256-GCM
  • AES-128-CBC
  • AES-192-CBC
  • AES-256-CBC

cipher none 禁用加密

三、tls-auth

这是一个额外的安全配置项。
在TLS控制通道之上添加额外的HMAC身份验证层,可以缓解Dos攻击和对TLS堆栈的攻击,通过使用HMAC签名对每个TLS控制信道数据包进行签名来完成此操作。
tls-auth 在OpenVPN的TCP/UDP端口上启用了一种 HMAC防火墙,其中带有错误HMAC签名的TLS控制通道数据包可以立即丢弃而无需响应。
注意:
1、--tls-auth 必须和 --auth 功能一起使用,auth 配置为 none 时,就不能使用 tls-auth 功能。
2、Client配置文件把key文件写入ovpn文件中时,要求设置 --key-direction 参数。

我自己的vps服务器在国外,已启用 --tls-auth 配置,此时openvpn服务器不配置此功能 tcp方式无法连接,udp方式正常,内网测试时配置与否不影响连接。怀疑是GFW从中有限制,但无从考量。
服务器配置方法:
生成 tls-auth key

1
openvpn --genkey --secret /etc/openvpn/tls-auth.key

server.conf配置文件:

1
tls-auth ta.key 0

四、tls-crypt

这也是一个额外的安全配置项。
使用密钥文件中的密钥加密和验证所有控制通道数据包。
--tls-crypt 是OpenVPN 2.4的新功能,除了身份验证之外还提供加密 (与 tls-auth 不同)。
使用后有以下好处:

  • 1、隐藏用于TLS连接的证书,提供更深层隐私
  • 2、使得识别OpenVPN流量变得更加困难

客户端 client.ovpn 配置与 --tls-auth 相反,--tls-crypt 不要求用户设置 --key-direction 参数。
服务器配置方法:
生成 tls-crypth key

1
openvpn --genkey --secret /etc/openvpn/tls-crypt.key

server.conf配置文件:

1
tls-crypt tls-crypt.key 0

tls-authtls-crypt 都提供了额外的安全层并减轻DoS攻击。同一个openvpn服务器两者只能启用一个,而且OpenVPN默认不使用它们。

四、客户端配置

1、tls-auth

client.ovpn

1
2
3
4
5
6
7
8
9
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
....
....
....
-----END OpenVPN Static key V1-----
</tls-auth>
# auth-key文件写入ovpn文件中时,要求必须设置key-direction参数
key-direction 1

2、tls-crypt

client.ovpn

1
2
3
4
5
6
7
<tls-crypt>
-----BEGIN OpenVPN Static key V1-----
....
....
....
-----END OpenVPN Static key V1-----
</tls-crypt>

官网地址:https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage