Após dois anos e meio desde a publicação da versão 2.5, foi lançado o OpenVPN 2.6.0, um pacote para criar redes privadas virtuais que permite estabelecer uma conexão criptografada entre duas máquinas clientes ou operar um servidor VPN centralizado para o funcionamento simultâneo de vários clientes. O código do OpenVPN é distribuído sob a licença GPLv2, e pacotes binários prontos são disponibilizados para Debian, Ubuntu, CentOS, RHEL e Windows.
Principais novidades:
- Suporte para um número ilimitado de conexões foi garantido.
- Incluído o módulo do núcleo ovpn-dco, que permite acelerar significativamente o desempenho. VPN. A aceleração é alcançada transferindo todas as operações de criptografia, processamento de pacotes e gerenciamento de canal para o núcleo do Linux, eliminando as sobrecargas associadas à troca de contexto, possibilitando a otimização do desempenho através do acesso direto às APIs internas do núcleo e evitando a lenta transferência de dados entre o núcleo e o espaço do usuário (criptografia, descriptografia e roteamento são realizados pelo módulo sem enviar o tráfego para o manipulador no espaço do usuário).
Em testes realizados, comparando com uma configuração baseada na interface tun, a utilização do módulo no lado do cliente e do servidor com a cifra AES-256-GCM permitiu um aumento de largura de banda de 8 vezes (de 370 Mbit/s para 2950 Mbit/s). Ao aplicar o módulo apenas no lado do cliente, a largura de banda aumentou três vezes para o tráfego de saída e permaneceu inalterada para o tráfego de entrada. Ao aplicar o módulo apenas no lado do servidor, a largura de banda aumentou 4 vezes para o tráfego de entrada e 35% para o tráfego de saída.
- Possibilidade de usar o modo TLS com certificados autoassinados foi disponibilizada (com a opção “—peer-fingerprint” é possível omitir os parâmetros “—ca” e “—capath” e operar sem iniciar um servidor PKI baseado em Easy-RSA ou software semelhante).
- No servidor UDP foi implementado um modo de negociação de conexão baseado em Cookie, onde um Cookie baseado em HMAC é usado como identificador de sessão, permitindo que o servidor realize a verificação sem manter estado.
- Adicionada a capacidade de compilar com a biblioteca OpenSSL 3.0. O parâmetro “—tls-cert-profile insecure” foi adicionado para escolher o nível mínimo de segurança do OpenSSL.
- Novos comandos de gerenciamento remote-entry-count e remote-entry-get foram adicionados para contar o número de conexões externas e exibir sua lista.
- No processo de concordância de chaves, o método mais prioritário para obter material para a geração de chaves agora é o mecanismo EKM (Exported Keying Material, RFC 5705), em vez do mecanismo específico do OpenVPN PRF. Para utilizar o EKM, é necessária a biblioteca OpenSSL ou mbed TLS 2.18+.
- Compatibilidade com OpenSSL em modo FIPS garantida, permitindo o uso do OpenVPN em sistemas que atendem aos requisitos de segurança FIPS 140-2.
- Na mlock, foi implementada uma verificação para reservar memória suficiente. Se houver menos de 100 MB de RAM disponível, a chamada setrlimit() é feita para aumentar o limite.
- Adicionada a opção ‘—peer-fingerprint’ para verificar a validade ou vinculação do certificado com o fingerprint baseado no hash SHA256, sem usar tls-verify.
- Para scripts, foi disponibilizada a autenticação adiada (deferred), implementada com a opção ‘—auth-user-pass-verify’. Scripts e plugins agora suportam notificar o cliente sobre a autenticação pendente ao usar autenticação adiada.
- Modo de compatibilidade ‘—compat-mode’ adicionado, permitindo conexões a servidores antigos que utilizam OpenVPN 2.3.x ou versões anteriores.
- Na lista passada pelo parâmetro ‘—data-ciphers’, é permitido especificar o prefixo ‘?’ para determinar cifras opcionais, que serão usadas apenas se suportadas na SSL-biblioteca.
- Adicionada a opção ‘—session-timeout’ com a qual é possível limitar o tempo máximo de sessão.
- É permitido especificar o nome e a senha no arquivo de configuração usando a tag <auth-user-pass><\/auth-user-pass>.
- Foi disponibilizada a configuração dinâmica do MTU do cliente, com base nos dados de MTU fornecidos pelo servidor. Para alterar o tamanho máximo do MTU, foi adicionada a opção ‘—tun-mtu-max’ (padrão 1600).
- Adicionado o parâmetro ‘—max-packet-size’ para definir o tamanho máximo dos pacotes de controle.
- O suporte ao modo de inicialização OpenVPN através do inetd foi removido. A opção ncp-disable foi removida. As opções verify-hash e o modo de chaves estáticas foram declarados obsoletos (apenas o TLS permanece). Os protocolos TLS 1.0 e 1.1 foram atualizados para obsoletos (o parâmetro tls-version-min padrão agora é 1.2). A implementação interna do gerador de números pseudoaleatórios (—prng) foi removida, deve-se usar a implementação de PRNG das bibliotecas criptográficas mbed TLS ou OpenSSL. O suporte ao filtro de pacote PF (Packet Filtering) foi interrompido. A compressão está desativada por padrão (—allow-compression=no).
- CHACHA20-POLY1305 foi adicionado à lista de cifras padrão.
Fonte: opennet.ru
