Essa é uma continuação do post sobre acesso remoto, agora falando dos programas de VPN: OpenVPN, VPNC, AnyConnect e FortiClient. Uma VPN (Virtual Private Network) é uma rede particular virtual que conecta dois ou mais computadores utilizando uma rede pública (geralmente a internet) sem que outras pessoas tenham acesso a essa informação. Desse modo, é possível evitar a construção de uma rede física independente para ligar os computadores de uma empresa com várias filiais, por exemplo.
Quebra-galho: dá pra usar uma VPN no navegador através do Browsec: uma extensão disponível para Google Chrome ou para Firefox. Basta instalar e escolher uma VPN (free ou paga).
OpenVPN
O OpenVPN depende do OpenSSL para criptografia SSL/TLS e funcionalidades associadas (confidencialidade, autenticação, integridade, não-repudio). O protocolo SSL (Secure Socket Layer) foi inventado pela Netscape para dar segurança nas conexões com servidores web, sendo depois padronizado pela IETF sob o acrônimo TLS (Transport Layer Security) – veja mais sobre Criptografia clicando no link. O OpenVPN também fornece a ferramenta easy-rsa, a qual serve como uma infraestrutura de certificação X.509 para gerar um certificado de autoridade privado.
Seu funcionamento é basicamente esse: depois de criptografados, os dados são então encapsulados e transmitidos pela Internet, utilizando o protocolo de tunelamento, até encontrar seu destino, onde são recebidos, desencapsulados, descriptografados e armazenados. O tunelamento consiste em criar um túnel (conceito semelhante aos túneis rodoviários, onde quem está fora não vê o que está dentro) para que os dados possam ser enviados sem que outros usuários tenham acesso.
Cada computador da VPN precisa ter o programa de VPN instalado, como o OpenVPN no caso do Linux. A configuração no servidor/matriz podem ser vistas clicando no link. No caso do computador cliente/filial, primeiro execute algum dos seguintes comandos para instalar o OpenVPN:
$ sudo apt-get install openvpn
$ sudo apt-get install -y network-manager-openvpn network-manager-openvpn-gnome
Existem duas opções de instalação: a primeira linha permite o uso do OpenVPN através de linha de comando, enquanto que o segundo atua em conjunto com o NetworkManager, uma ferramenta de rede que possibilita configurar e modificar as conexões com o seu sistema, muito útil principalmente para conexões wireless.
O administrador de rede deve cadastrar um usuário e senha usando um programa que administra as VPNs e depois passar um arquivo de configuração de conexão (.ovpn), um arquivo do certificado de usuário (.pem), um de certificado CA (.pem) e um de chave privada (.key) ao usuário. Caso não passe o arquivo ovn, as informações deverão ser preenchidas “na mão”. O conteúdo do arquivo ovpn é algo como:
client
# Usar como interface o driver TUN
dev tun
# OpenVPN usa a porta 5000/UDP por padrão.
# Cada túnel do OpenVPN deve usar
# uma porta diferente
port 5000
proto udp
# Indica onde está o ip da Matriz
remote exemplo.com.br
resolv-retry infinite
nobind
persist-key
persist-tun
auth-user-pass
# Usa a biblioteca lzo de compressão
comp-lzo
auth-retry interact
# Nível de log
verb 3
reneg-sec 0
status crssl_client_status.log
ca RootCertificado.pem
cert UserCertificado.pem
key UserPrivateKey.key
Para criar uma nova VPN usando esse arquivo de configuração, clique no ícone do Network Manager -> Conexões VPN -> Configurar VPN e “importar uma configuração de VPN salva”. Escolha o arquivo “.ovpn” e coloque a localização dos arquivos enviados, caso estejam em pastas diferentes. Insira o usuário e a senha utilizados no computador da matriz e clique em salvar.
Também existe a opção do administrador de rede passar ao cliente uma URL para ser aberta em um browser – caso seja um número IP, digite o “https://” antes se não conseguir o acesso. Se aparecer uma tela solicitando login e senha, insira o usuário e senha fornecidos pelo administrador. Então seguirá para uma tela de download do programa para cada sistema operacional (no caso do Linux, o comando para instalação já foi explicado mais acima) e do perfil de conexão (“connection profile”, o tal arquivo “.ovpn”), que pode ser do tipo que exige login e senha digitados pelo usuário a cada conexão (“user-locked”) ou com login automático (“autologin”).

Para testar, volte ao ícone de rede e escolha a VPN inserida no menu “Conexões VPN”. Se não estiver usando o NetworkManager, no terminal de texto, vá para o diretório onde está seu arquivo “.ovpn” e digite o seguinte comando como super usuário:
$ sudo openvpn --config client.ovpn
Abra um terminal só para executar esse comando, pois vai ficar “preso” durante toda a conexão na VPN – digitando “CTRL+C” nesse mesmo terminal, a conexão será encerrada.
Verifique pelo comando “ifconfig tun0” as configurações de sua rede túnel – se não aparecer a conexão “tun0”, é porque não foi criado o túnel da VPN. Note que o IP classe 192.168.2.0/24 (note o 2 no meio) geralmente é o reservado para a VPN. Pode ser necessário adicionar regras para permitir o tráfego UDP na porta utilizada na regra de iptables da matriz e da filial – veja mais no post de comandos de rede Linux. Para desligar a VPN, use o comando “sudo ifconfig tun0 down”.
VPNC
Outro programa é o VPNC (para cliente Cisco), compatível com IPsec, que pode ser instalado através do seguinte comando:
$ sudo apt-get install network-manager-vpnc # ou somente "vpnc" para ficar só
Para conectar/desconectar via terminal, utilizam-se os seguintes comandos, respectivamente:
$ sudo vpnc /<caminho-do-arquivo-conf>/VPN-file.conf
$ sudo vpnc-disconnect
Esse arquivo de configuração (.conf) tem o seguinte formato (é mais seguro não usar as últimas duas linhas com o nome de usuário/senha, digitando-os no prompt):
IPSec gateway {numero_ip}
IPSec ID {name_of_the_vpn}
IPSec secret {pass code for the name_of_the_vpn}
Xauth username {real_or_virtual_user}
Xauth password {password for the real_or_virtual_user}
Você também pode editar o arquivo “vpn2ctio” e conectar usando o comando “vpnc vpn2ctio”, que perguntará o usuário e senha. Os arquivos de configuração normalmente são armazenados no diretório “/etc/vpnc” – utilize “chmod 600 vpn2ctio” para evitar visualizações de ‘curiosos’.
Caso possua um arquivo “.pcf“, você pode convertê-lo para “.conf” através de um script em Perl e do “cisco decrypt program” (veja mais detalhes no link), alterando suas permissões através de “chmod 600 file.conf” e procedendo da mesma forma que descrito anteriormente.
Também é possível usar tanto o arquivo “.conf” como o “.pcf” diretamente pela interface gráfica, clicando em “Conexões VPN -> Configurar VPN -> VPN -> Importar” e escolher o arquivo enviado pelo administrador do sistema. Não esqueça de checar o item “permitir que todos os usuários conectem a essa rede. Caso não apareça para adicionar/importar a VPN, instale o pacote “network-manager-vpnc-gnome”.
AnyConnect
Outro programa que funciona parecido é o AnyConnect VPN Client (também para cliente cisco). Abra um navegador e vá para o link fornecido pelo administrador do sistema. Em seguida, você será redirecionado para uma página de login. Depois da autenticação, o processo de instalação no cliente tem início – caso necessário, clique no link com o kernel do seu sistema operacional, salve o arquivo que aparecer na pop up, vá ao terminal, torne o arquivo baixado executável e execute-o como super usuário. Por fim, vá ao menu Aplicações -> Internet -> Cisco AnyConnect Client (ou lançador com esse nome no GNOME), entre com as credenciais e conecte – para ver o status da conexão, clique no ícone aberto com o botão direito.
Para desinstalar, rode o bash “/opt/cisco/secureclient/bin/vpn_uninstall.sh” e depois apaguei o que sobrou (/opt/cisco/anyconnect, /opt/cisco/secureclient, /var/log/secureclient).
De todos os modos, o administrador de rede deve cadastrar um usuário e senha para que, ao entrar no túnel, o usuário seja autenticado, aumentado a segurança. Outras opções são usando os programas OpenSwan e Racoon.
OpenConnect
O OpenConnect é um cliente para Cisco AnyConnect SSL VPN, livre e que permite se conectar a um AnyConnect VPN. Para seu uso, você pode instalá-lo através dos seguintes comandos:
sudo apt-get install network-manager-openconnect
sudo apt-get install network-manager-openconnect-gnome
Para acessar uma VPN, primeiro acesse as configurações de rede para configurar uma VPN. Selecione a opção “VPN Compatível com Cisco Any Connect (openconnect)” e clique em Criar. Preencha as configurações conforme o indicado pelo responsável pela VPN e faça o acesso. Das próximas vezes, basta acessar as configurações de rede e selecionar essa VPN já criada e configurada.
Forticlient – SSLVPN
Desenvolvido pela Fortinet, o FortiClient é um cliente para acesso a VPN. Inclusive, é a opção atualmente usada para acesso à VPN da USP (inclusive ex-alunos/Alumni). Esse tutorial usa o FortiClient oficial, com download direto do site, só que o programa é grande e não é opensource. No entanto, existe um cliente chamado OpenFortiVPN que funciona em linha de comando e pode ser integrado ao NetworkManager. Ele suporta SSL VPN da Fortinet e pode ser usado em vez do FortiClient oficial.
Para instalação, basta usar o comando “sudo apt install openfortivpn”. Pegando o exemplo da USP, você pode conectar com o seguinte comando, usando a senha única:
sudo openfortivpn orion.uspnet.usp.br:31443 -u NUMERO_USP
Se quiser salvar as configurações, crie/edite o arquivo “/etc/openfortivpn/config” como sudo com o seguinte conteúdo:
host = orion.uspnet.usp.br
port = 31443
username = NUMERO_USP
password = SENHA_UNICA
Se quiser, não precisa deixar a senha no arquivo. Depois basta rodar “sudo openfortivpn”. Para testar, compare a saída antes e depois do comando “ip route”: o IP da VPN deve aparecer (no caso da USP é 143.107.x.x). Para cancelar o túnel, pressione CTRL+C ou mate o processo via terminal com o comando “sudo pkill openfortivpn”.
Você pode facilitar o acesso incluindo um lançador no GNOME. Para isso, crie um arquivo vpn.sh (por exemplo) com o seguinte conteúdo:
!/bin/bash
sudo openfortivpn
Depois dê permissão de execução com o comando “chmod +x ~/Documentos/scripts/vpn.sh” (sugestão de caminho) e crie o lançador com o comando “nano ~/.local/share/applications/vpn.desktop” e o seguinte conteúdo:
[Desktop Entry]
Name=VPN Forti
Comment=Conectar à VPN
Exec=/home/username/Documentos/scripts/vpnusp.sh
Icon=network-vpn
Terminal=true
Type=Application
Categories=Network;
Depois de salvar, o lançador aparecerá no menu de aplicativos. Se você não quiser digitar a senha de usuário toda vez, pode configurar o sudoers através do comando “sudo visudo” e adicionar a linha “username ALL=(ALL) NOPASSWD: /usr/bin/openfortivpn” (altere username par ao seu uruário).
IPsec
O OpenVPN utiliza a biblioteca OpenSSL, e assim como outros protocolos de segurança (SSL, TLS, etc), operam desde a camada de transporte (camada 4) até a camada de aplicação (camada 7). Já o IPsec opera sob a camada de rede (ou camada 3) do modelo OSI, sendo parte obrigatória do IPv6 e opcional para o uso com IPv4. Veja mais comparações entre o OpenVPN e o IPSec clicando no link. Nesse link também comenta-se das implementações “site-to-site” e “client-to-site” (ou “road warrior”).
O IP Security Protocol (IPsec) é uma extensão do protocolo IP que visa a ser o método padrão para o fornecimento de privacidade do usuário, integridade dos dados e autenticidade das informações ou prevenção de identity spoofing (garantia de que uma pessoa é quem diz ser), quando se transferem informações através de redes IP. Ou seja, é o protocolo de criptografia da internet para tunelamento, criptografia e autenticação. Se dois nós da rede têm IPsec, automaticamente há troca de chaves e criptografia, modo de funcionamento esse denominado “modo transporte”.






One comment