Depois de mostrar a instalação e configuração do OpenVPN no PfSense, vamos mostrar como instalar o cliente e como criar um cenário de testes virtualizado.
O servidor OpenVPN
Inicialmente vamos selecionar a aba de VPN e em seguida vamos clicar em OpenVPN.
Para esse tutorial, vamos usar o “Wizards” de criação para o OpenVPN. Dessa forma, vamos clicar em “Wizards“.
Agora vamos selecionar o tipo de servidor de autenticação. Nesse caso, vamos selecionar “Local User Access”. Dessa forma, o servidor OpenVPN dentro do pfSense será usado para a autenticação dos usuários da VPN.
Criando a Autoridade Certificadora do Servidor OpenVPN
Agora vamos criar a nossa autoridade certificadora (CA).
Para isso vamos preencher alguns campos como na figura abaixo. E Vamos descrever o que inserir nos campos logo abaixo.
- Descriptive name: Aqui vamos dar o nome da Autoridade Certificadora. Em nosso caso estamos usando o nome “CA_myVPN”.
- Key length: O tamanho da chave, para esse tutorial vamos usar o tamanho padrão de 2048 bit. No entanto, poderíamos aumentar o tamanho da chave para até 16386 bit.
- Lifetime: Estamos usando o padrão que é de quase 10 anos. Podemos mudar esse valor para uma data que atenda a nossa necessidade.
- Common Name: O nome interno para o certificado. Nesse caso, vamos deixar em branco e vamos herdar o mesmo nome usado em “Descriptive name“.
- Country Code,State or Province,City e Organization: Essa é a parte onde inserimos informações sobre o código do país, estado, cidade e o nome da organização. Nesse caso, estamos usando informações fictícias de uma organização situada em São Paulo.
Em seguida vamos clicar em “Add new CA” para criar a nova Autoridade Certificadora.
Criando o Certificado do Servidor OpenVPN
Inicialmente, vamos informar que desejamos adicionar um novo Certificado clicando no botão “Add new Certificate“. A figura a seguir descreve onde deveremos clicar.
Agora, vamos criar o certificado do servidor VPN. Para isso vamos iniciar dando um nome como por exemplo “Server_Cert_VPN”.
Podemos observar que muitos campos foram preenchidos automaticamente com as informações que inserimos na criação da Autoridade Certificadora.
No entanto, o campo Lifetime foi preenchido automaticamente com o valor 398.
Nota. Para evitar problemas com algumas plataformas, o Lifetime de um certificado não deve superar os 398 dias.
Depois de preenchido, vamos clicar em “Create new Certificate”.
Informações do Servidor OpenVPN
Vamos inserir as informações do servidor OpenVPN para permitir o acesso dos clientes.
Abaixo vamos descrever os campos:
- Description: aqui gosto de informar um nome que depois facilite o cliente ao identificar em qual VPN está se conectando. Portanto, vale a pena colocar um nome que descreva sua VPN. Aqui, vamos usar a description “my_OpenVPN”
- Protocol: podemos escolher entre TCP e UDP na camda de transporte. Além disso, podemos escolher entre IPv6 e IPv4 ou usar ambos ao mesmo tempo. Para esse tutorial, vamos usar apenas UDP e IPv4.
- Interface: Aqui vamos indicar qual interface o servidor OpenVPN vai operar. Nesse caso, estamos usando um servidor VPN para permitir acesso externo de clientes. Portanto vamos usar a interface WAN.
- Local Port: Informa a porta que o servidor OpenVPN vai usar para aguardar a comunicação com os clientes. Vamos escolher a porta padrão 1194. No entanto, se você já estiver usando essa porta com outro serviço, você pode mudar a porta para que não haja conflito.
Configurando a Criptografia
Vamos explicar os principais campos relacionados à criptografia do servidor OpenVPN após a figura abaixo.
- TLS Authentication: Nesse campo vamos marcar a opção para habilitar a autenticação por TLS.
- Automatically generate a TLS Key : Vamos marcar essa opção para gerar a chave TLS de forma automática.
- TLS Shared Key : Aqui poderíamos inserir uma chave TLS que foi gerada no passado. No entanto, para esse tutorial vamos deixar esse campo em branco.
- DH Parameters Length: O tamanho da chave Diffie-Hellman (DH) para a segurança na troca de parâmetros da VPN, nesse caso vamos usar 2048bit.
- Data Encryption Algorithms: aqui temos os algoritmos que podem ser negociados entre cliente e servidor. É importante usar algoritmos compatíveis com os clientes OpenVPN.
- Fallback Data Encryption Algorithm: Aqui podemos indicar o algoritmo que será usado quando a negociação dos algoritmos listados acima falhar.
- Auth Digest Algorithm: Aqui vamos indicar o método de autenticação entre cliente e servidor VPN.
- Hardware Crypto: Como o nome diz, esse campo possibilita usar hardware de aceleração. No entanto, não vamos usar nesse tutorial.
Configurações do Túnel OpenVPN
Agora vamos criar as configurações que vão ser usadas no túnel VPN entre o cliente e o Servidor OpenVPN.
Apresentamos a figura abaixo com as configurações usadas e depois descrevemos cada campo.
- Tunnel Network: Aqui vamos indicar a rede que será usada no túnel VPN entre o cliente e o servidor VPN. Vale ressaltar, que devemos usar uma rede que não é usada por outra rede interna. Em nosso caso, vamos usar a rede “10.0.8.0/24“.
- Redirect Gateway: Se selecionarmos esse campo, faremos com que os clientes usem o gateway do servidor OpenVPN como gateway padrão. Dessa forma, todo o tráfego para Internet passará pelo servidor OpenVPN.
- Local Network: Aqui podemos definir a rede local que será acessada pelos clientes OpenVPN. Nesse caso, vamos escolher a rede “192.168.56.0/24“.
- Concurrent Connections: Número de clientes que podem acessar o servidor OpenVPN ao mesmo tempo. Se estivermos rodando o servidor OpenVPN em um hardware mais limitado, podemos reduzir o número de clientes concorrentes.
- Allow Compression & Compression: permite a compressão dentro da VPN. No entanto, não vamos para garantir uma maior segurança.
- Type-of-Service: Esse campo pode ser marcado quando queremos inserir algum tipo de qualidade de serviço para o tráfego da VPN.
- Inter-Client Communication: Se marcarmos essa opção os clientes do OpenVPN poderão se comunicar. Essa comunicação entre clientes vai depender da necessidade do projeto de VPN.
- Duplicate Connections: Marcando essa opção o mesmo usuário de VPN pode manter mais de uma conexão com a VPN. Pode ser útil em caso de múltiplos dispositivos do usuário.
- Duplicate Connection Limit: Aqui podemos limitar o número de conexões simultâneas que um mesmo usuário pode fazer com o Servidor OpenVPN.
Parâmetros do Cliente OpenVPN
Agora vamos falar dos principais paramentos que podem ser passados para o cliente OpenVPN.
- Dynamic IP: permite manter a conexão do cliente mesmo que mude o IP.
- Topology: Temos a opção de usar o “Subnet” para permitir um IP para cada cliente na rede VPN ou isolar os clientes usando a opção “net30”. Nesse tutorial vamos usar a opção “Subnet”.
- DNS Default Domain & DNS Server 1-4 : Aqui podemos indicar os servidores DNS que serão usados pelos clientes da nossa VPN. Nesse caso estamos usando o “DNS Default Domain” apontando para o DNS da google “8.8.8.8” e o “DNS Server 1” apontando para um segundo DNS da google “8.8.4.4”.
- NTP Servers: especificar um servidor Network Time Protocol para os clientes da VPN.
- NetBIOS & WINS : Marcando as opções relacionadas ao NetBIOS e o WINS vamos permitir o funcionamento desses protocolos pelos clientes que estão acessando nossa VPN.
Aplicando as regras de firewall para o OpenVPN
Agora vamos usar as opções Firewall Rule e OpenVPN rule para aplicar as regras de VPN em nosso firewall. Esse procedimento poderia ser feito de forma manual caso o administrador prefira.
Finalizando a Instalação do servidor OpenVPN
Agora terminamos a instalação do servidor OpenVPN. O próximo passo vai ser criar um usuário para fazermos o teste.
Em seguida, vamos ver o nosso servidor OpenVPN criado.
Pacote para exportar Clientes OpenVPN
Agora, vamos instalar um pacote que vai permitir exportar a configuração dos clientes de nossa VPN.
Para isso, vamos clicar em System-> Package Manager.
Depois vamos clicar em Available packages e pesquisar por openvpn. Depois disso vamos clicar em Install para o pacote openvpn-client-export.
Depois, teremos uma página pedindo para confirmar a ação.
E finalmente veremos a tela que demonstra que o pacote foi instalado.
Criando um usuário para a VPN
Agora precisamos criar um usuário para podermos exportar a configuração para uma máquina que será usada como cliente do nosso servidor OpenVPN.
Para criar um usuário para nossa VPN, vamos clicar em System->User Manager.
Em seguida, vamos clicar em “User” e depois em “Add”.
Agora vamos criar nosso usuário, nesse caso vamos criar um usuário chamado “maria” e vamos usar uma senha para o usuário maria.
Depois vamos marcar a opção “Click to create a user certificate”.
Agora vamos dar um nome descritivo para o certificado da maria. Nesse caso demos o nome “maria cert”.
Observe que o Certificate authority está indicando o certificado que criamos lá quando configuramos o servidor OpenVPN.
Em seguida podemos clicar em Save.
Veremos uma tela como a figura abaixo demonstrando que o usuário maria foi criado com sucesso.
Exportando o usuário OpenVPN
Agora vamos clicar em VPN e vamos escolher OpenVPN.
Em seguida, vamos clicar em Client Export, como na figura abaixo.
Agora veremos alguns parâmetros que podem ser definidos para o cliente. Vamos comentar sobre cada parâmetro abaixo da figura.
Remote Access Server: Aqui vamos escolher o protocolo UDP e a porta que será usada para o servidor 1194.
- Host Name Resolution: Aqui podemos deixar o “Interface IP Address” que vai usar o IP da WAN do nosso pfsense. Além disso temos outras opções como usar Multi WAN com portforwarding e DDNS. No entanto, para esse tutorial vamos usar apenas o “Interface IP Address”.
- Verify Server CN: Aqui temos a opção de verificar de forma automática o certificado do servidor.
- Block Outside DNS: Aqui podemos forçar os clientes de nossa VPN a usar o DNS do servidor OpenVPN.
- Legacy Client: Se marcar essa opção não teremos configurações do OpenVPN 2.5 e isso permitirá compatibilidade com versões mais antigas.
- Silent Installer: Uma opção de instalação silenciosa para Windows.
- Bind Mode: Por default escolhemos a opção “Do not bind the local port” e isso permite que múltiplos clientes se conectem a mesma porta do nosso servidor OpenVPN. Se você escolher a opção “bind to default OpenVPn port” só poderá atender a um cliente por vez.
- PKCS#11 Certificate Storage e Microsoft Certificate Storage: temos as opções de armazenamento de certificados.
- Além disso, podemos usar a opção de password para Viscosity bundle com o Password Protect Certificate.
- Use A Proxy: indica se usaremos um proxy para acessar o servidor OpenVPN.
- Additional configuration options: Aqui podemos inserir configurações adicionais para o cliente OpenVPN.
Caso você tenha alterado algum parâmetro, então deve clicar em “Save as default”. Dessa forma a configuração que foi criada será padronizada.
Selecionando o certificado do usuário
Agora vamos selecionar o certificado do nosso usuário.
Nesse caso vamos exportar para uma máquina Linux então vamos escolher a opção indicada “Most Clients”
Em seguida, você vai fazer o download do arquivo “ovpn” para um diretório do seu computador.
Se você desejar, pode editar o arquivo “ovpn” e verificar como está a configuração. Observe no nosso arquivo a linha” remote 10.0.2.15 1194 udp4” indica que nosso servidor openvpn tem o IP “10.0.2.15” na WAN e usa a porta 1194 UDP.