Tadeu Bento

OpenVPN: Recomendações de Segurança

Com todas as polémicas recentes em torno da segurança informática muitos power-users e administradores de sistemas decidiram criar os seus próprios VPNs para acederem à Internet de forma segura. Neste artigo passo algumas recomendações de segurança relacionadas com a configuração do OpenVPN.

AVISO: este artigo apresenta apenas recomendações e não poderei, em caso algum, ser responsabilizado por danos decorrentes da utilização da informação aqui apresentada.

1. Servidores Virtuais Privados (VPS) e Containers

2. Cifras

Devemos limitar o número de cifras (tls-cipher) disponíveis ao mínimo absoluto. Caso todos os clientes a suportem devermos utilizar únicamente a cifra TLS-DHE-RSA-WITH-AES-256-GCM-SHA384. Devem-se evitar todas as cifras conhecidas como pouco seguras: DES, 3DES-EDE e RC4.

Caso o servidor e todos os clientes utilizem OpenVPN 2.3.3 ou superior são recomendadas as seguintes cifras TLSv1.2 DHE + RSA (da mais segura para a menos segura):

TLS-DHE-RSA-WITH-AES-256-GCM-SHA384
TLS-DHE-RSA-WITH-AES-256-CBC-SHA256
TLS-DHE-RSA-WITH-AES-128-GCM-SHA256
TLS-DHE-RSA-WITH-AES-128-CBC-SHA256

A primeira é a minha recomendação mesmo que os clientes incluam dispositivos móveis – qualquer CPU ARM moderno será capaz de lidar com esta cifra sem problemas.

Restantes configurações recomendadas:

tls-version-min 1.2
auth SHA512
cipher AES-256-CBC

Note-se que no parametro cipher o ideal seria um configuração como AES-512-CBC no entanto devido a diversas questões técnicas esta cifra não existe (ainda) oficialmente e apenas algumas versões do OpenVPN (como a incluída no DD-WRT) a suportam.

3. Gestão de Certificados e Chaves

O OpenVPN baseia-se num sistema PKI com certificados e chaves públicas e privadas que são utilizadas para a identificação, autenticação e comunicação entre os/dos clientes e o servidor. Deveremos tomar especial atenção a:

4. Outras Configurações

push "redirect-gateway def1"
push "dhcp-option DOMAIN vpntest.server.dev"
push "dhcp-option DNS 64.6.65.6"
push "dhcp-option DNS 208.67.220.220"

A primeira linha informa o cliente de que todo o tráfego deverá ser enviado através do VPN enquanto as duas últimas definem dois servidores de DNS públicos comuns.

5. Exemplo de Configuração (Servidor + Cliente)

Apresento agora um exemplo de configuração de um servidor de OpenVPN que inclui todas as recomendações anteriores e outros parâmetros necessários:

local xxx.xxx.xxx.xxx # IP do Servidor VPN
port 443
proto udp
dev tun
server yyy.yyy.yyy.0 255.255.255.0
user nobody
group nogroup
script-security 1
remote-cert-eku "TLS Web Client Authentication"

# Ciphers
cipher AES-256-CBC
tls-version-min 1.2
auth SHA512
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384

# Routes and DNS
push "redirect-gateway def1"
push "dhcp-option DOMAIN vpntest.server.dev"
push "dhcp-option DNS 64.6.65.6"
push "dhcp-option DNS 208.67.220.220"

# Connection Options
client-to-client
keepalive 10 120
comp-lzo
max-clients 10
persist-key
persist-tun

# Certificates
ca ca.crt
cert server.crt
key server.key
dh dh.pem
tls-auth ta.key 0

# Logging
verb 3
status /var/log/openvpn-status.log # Log das ligações ativas
log-append /var/log/openvpn.log

Agora um exemplo de uma configuração para cliente apropriada:

client
pull
dev tun
proto udp
remote xxx.xxx.xxx.xxx 443 udp # IP do Servidor VPN
user nobody
group nogroup
nobind
comp-lzo
verb 3
resolv-retry infinite
persist-key
persist-tun
mute-replay-warnings
redirect-gateway def1

verify-x509-name 'C=PT, ST=Lisbon, L=Lisbon, O=VPN, OU=VPN, CN=vpntest.server.dev, emailAddress=vpn@server.dev' subject

# Ciphers
tls-version-min 1.2
auth SHA512
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384
cipher AES-256-CBC

# Client Keys
<ca>
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN RSA PRIVATE KEY-----
-----END RSA PRIVATE KEY-----
</key>
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
-----END OpenVPN Static key V1-----
</tls-auth>
key-direction 1

Espero que este artigo seja útil a todos os que já têm ou pretendem criar VPNs com o OpenVPN. Aqui foram resumidas muitas políticas de segurança recomendadas pela comunidade, instituições governamentais e algumas que resultam do puro entendimento detalhado do funcionamento do OpenVPN.

Exit mobile version