Como criar certificados no Windows com o Easy-RSA

Este texto vai servir de suporte a outros textos que estou preparando sobre o OpenVPN.

O Easy-RSA pode ser baixado e instalado como um programa independente ou como parte de uma instalação completa do OpenVPN para Windows. Se instalou junto com o OpenVPN, mova a pasta C:\Arquivos de Programas\OpenVPN\easy-rsa para c:\easy-rsa. Isso é necessário porque Easy-RSA tem um bug  que o faz falhar se o caminho tiver espaços. Se esta pasta não existir, você provavelmente não escolheu todas as opções na instalação customizada do OpenVPN. Esta pasta é instalada ao habilitar a opção “Easy RSA 3 Certificate…”.

A máquina onde são criados os certificados pode ser completamente distinta da que vai usá-los. Eu poderia criar aqui e passar para qualquer um que pedisse, que funcionaria do mesmo jeito.


O arquivo vars

Ainda usando o explorer, renomeie o aquivo “vars.example” como “vars” (remova a extensão)

Esse arquivo possui a configuração que vai ser usada por Easy-RSA para gerar os certificados. Você não precisa mexer em nada se não quiser mudar o default. Vale a pena dar uma olhada nele com um editor compatível com quebras de linhas unix (como o Notepad++) para ver as opções disponíveis. Duas configurações candidatas a personalização são os prazos de validade, mas você não precisa realmente alterar nada para que funcione para o propósito deste texto.

# In how many days should the root CA key expire?# In how many days should the root CA key expire?
#set_var EASYRSA_CA_EXPIRE 3650
# In how many days should certificates expire?
#set_var EASYRSA_CERT_EXPIRE 825

Você precisa remover o # do início de cada linha que você editar.

Criando os certificados

Abra um prompt de comando como administrador e execute EasyRSA-Start.bat. Nos meus testes clicar com o botão direito no .bat e pedir pra executar como administrador não bastou (o programa pisca e fecha). Foi preciso abrir um prompt primeiro.

No shell que se abre você vai executar os seguintes comandos em sequência:
./easyrsa init-pki
./easyrsa build-ca
./easyrsa build-server-full nome_do_certificado_servidor
./easyrsa build-client-full nome_do_certificado_cliente
./easyrsa gen-dh

Mas você vai ter que responder algumas perguntas durante o processo, por isso vou mostrar passo a passo tudo o que acontece e onde você precisa responder. Vamos supor que o certificado servidor tenha o nome “servidor-vpn” e que o cliente tenha o nome “cliente-vpn”. Os comandos ficam assim:

./easyrsa init-pki


./easyrsa build-ca

Se ocorrer o erro “extra arguments given” após digitar a senha duas vezes, você provavelmente não seguiu minha recomendação de mover a pasta para c:\easy-rsa.

A digitação de senhas em todos os passos é feita às cegas. Parece que o programa está travado, mas não está.


./easyrsa build-server-full servidor-vpn

./easyrsa build-client-full cliente-vpn

./easyrsa gen-dh

Feche o prompt de comando.

Copie os certificados criados (em c:\easy-rsa\pki\issued\*.crt)

e suas chaves (em c:\easy-rsa\pki\private\*.key) exceto a chave do certificado CA, que nunca deve ser divulgada.

Você precisa copiar também ca.crt e dh.pem. Ambos de C:\easy-rsa\pki\.

 

Clique para comentar
(Prefira clicar em "Responder" se estiver comentando um comentário)

Deixe um comentário

Você pode usar estas tags HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  

  

  

:) :( ;) O_o B) :lol: :huh: :S :D :-P 8-O :yahoo: :rtfm: :dashhead1: :clapping: more »

Vantagens e desvantagens de se usar uma VPN para uso pessoal ou trabalho

Este texto servirá de suporte a outros textos que estou elaborando e meu foco é a implementação de VPNs (realmente) particulares e gratuitas. Não vou tratar aqui de serviços profissionais pagos.

Considere que este texto está em rascunho. Muita coisa pode mudar por estar errado, incompleto, ou eu decidir redigir de outra forma; mas eu tentarei avisar sobre as mudanças nos comentários.

Meu primeiro contato com VPNs  foi com um cliente que comecei a atender em 2019. A empresa tinha a matriz com todos os servidores em uma cidade e a filial em outra. Em cada ponta uma conexão com a internet e um computador rodando PFsense que agia como gateway VPN. Havendo internet nas duas pontas as máquinas PFsense estabeleciam um “túnel” ligando as redes das duas localidades, para todos os efeitos práticos como se existisse um cabo realmente longo ligando as duas. Isso permitia coisas interessantes, sem que nenhuma aplicação tenha sido feita com isso em mente:

  • Os “busca preço” (aqueles terminais com leitor de código de barras disponibilizados para clientes) na loja obtinham o preço atualizado de cada produto consultando no servidor na outra cidade;
  • Cada funcionário do administrativo trabalhava o dia inteiro no servidor remoto, cada um usando uma conexão RDP;
  • De qualquer uma das pontas eu podia administrar roteadores e outros dispositivos de rede da outra simplesmente digitando o endereço IP correspondente no navegador.

Nesse ponto você pode estar pensando: “não preciso de VPN para fazer nada disso”. Não, não precisa mesmo. Você pode criar acessos individuais para cada um desses usos e encaminhar portas no roteador para eles. Mas além de você precisar saber precisamente que portas precisa encaminhar em cada aplicação (que porta o busca preço usa?), rapidamente fica muito inconveniente administrar isso.  Por exemplo, cada interface web de roteador e impressora de rede por default usa a porta 80, mas você não pode ter duas aplicações usando a mesma porta de entrada no roteador. Para poder ter acesso simultâneo a cada um dos dispositivos precisa arbitrar novas portas e encaminhar de acordo*. Por exemplo, dispositivos que você acessaria assim de qualquer lado de uma VPN:

  • http://10.129.40.100
  • http://10.129.40.130
  • http://10.129.40.147
  • http://10.129.40.168

Sem VPN vai continuar acessando assim localmente mas vai ter que acessar da ponta remota com algo assim (um encaminhamento diferente no roteador para cada):

  • http://matriz-olinda.dyndns.org
  • http://matriz-olinda.dyndns.org:3070
  • http://matriz-olinda.dyndns.org:3071
  • http://matriz-olinda.dyndns.org:3072

E o problema se repete na outra direção.

(*) Se seu roteador suportar uma porta externa diferente da interna no encaminhamento. Se não suportar você vai ter que mudar as portas default nos dispositivos e aí a complicação sobe a outro nível.

Ainda temos o problema da segurança. Qualquer indivíduo fazendo um portscan no endereço IP referente a matriz-olinda.dyndns.org vai eventualmente encontrar as portas abertas por mais que você tente obfuscar usando números de porta incomuns (só existem 65536 possibilidades). Além do fato de que o provedor de acesso em cada ponta pode bisbilhotar todo o tráfego que não seja naturalmente criptografado.

Quando você usa uma VPN apenas uma porta precisa ser encaminhada no roteador. Dentro do túnel suas aplicações podem usar as portas que queiram sem você estar nem ciente de quais são. E mesmo que você não criptografe o túnel, bisbilhotar no seu tráfego ou fazer um portscan para saber que portas estão abertas requer outro nível de conhecimento e acesso à sua rede.

E quando eu finalmente entendi como a configuração OpenVPN nos PFSense funcionava, a flexibilidade alcançou outro nível. Instalei clientes OpenVPN no meu desktop em casa e no notebook e com dois cliques eu podia estabelecer uma conexão de onde eu estivesse e trabalhar como se estivesse dentro da empresa. Administrar a coisa toda ficou muito mais fácil. Eu pude até desenvolver um software de consulta de preços acessando o servidor Winthor do cliente como se ele estivesse na minha casa.

Então só tem vantagens?

Não. A principal desvantagem é a complexidade para instalar e configurar a VPN (pelo menos usando opções gratuitas). Começa apenas “bem pouco amigável” e vai crescendo em complicação dependendo do seu objetivo. Uma vez que você consiga, basta salvar as configurações das duas pontas que refazer se torna muito fácil. Mas chegar a esse ponto pode ser uma luta. Eu pretendo criar uma série de textos explicando como fazer isso para diversos cenários, detalhando as armadilhas em que caí no caminho.

Por que não usar software de controle remoto como Anydesk e Teamviewer?

VPN e controle remoto resolvem problemas distintos e na maioria das vezes você vai usar ambos. Implementar uma VPN não vai necessariamente fazer você deixar de precisar do controle remoto.

Vantagens da VPN:

  • Para monitorar de casa quem está conectado ao roteador Wi-Fi da empresa, por exemplo, com o Anydesk você precisa fazer uma conexão Anydesk a uma das máquinas da empresa que ninguém esteja usando, abrir um navegador e acessar a Web UI do roteador. Com uma VPN estabelecida você pode ter o endereço do roteador na empresa como um favorito no seu navegador em casa e clicar nele. E isso fica muito mais ágil mesmo em conexões lentas porque o que está trafegando pela internet até sua casa são as páginas do roteador e não a imagem do computador remoto;
  • Também com o anydesk você pode acessar um computador remoto para trabalhar nele, mas outra pessoa não pode fazer isso ao mesmo tempo. Usando uma VPN você pode em muitas situações levar o seu computador da empresa para casa, estabelecer a conexão com o servidor no escritório e trabalhar como se não tivesse saído de lá. Isso nem sempre é verdade pois aplicações que fazem uso desleixado dos recursos de rede podem ficar extremamente lentas se o tráfego tiver que ocorrer via internet;
  • Dá medo pensar no desastre global que seria se um dia um zeroday for descoberto no anydesk/teamviewer que permita login sem precisar da senha. Até descobrirem e disponibilizarem um patch (e todo mundo aplicar) o estrago vai ser grande;
  • Você não depende de que mais um serviço de terceiros esteja funcionando. Eu já precisei ter que esperar os servidores anydesk voltarem a funcionar para poder fazer um acesso remoto;
  • Os softwares de controle remoto somente são gratuitos de verdade para uso doméstico. E o custo só é realmente barato num aplicação “um para muitos” (uma pessoa apenas acessando muitos computadores).

Vantagens do controle remoto:

  • Como o próprio nome diz, VPN não é para controle remoto. Você não pode ver o que outro usuário está fazendo ou mostrar a ele como se faz algo usando (apenas) uma VPN;
  • A facilidade com que você instala e usa o anydesk/teamviewer é extraordinária;
  • Você pode transferir arquivos entre máquinas com extrema facilidade.
1 comentário
  • Jefferson - 6.302 Comentários

    Esqueci de citar uma vantagem do controle remoto: você pode ser promíscuo com ele.

    Não importa quais são os (maus) hábitos do dono da outra máquina. Mesmo que tenha mais vírus que um laboratório de biopesquisa eles não tem como infectar a sua máquina a não ser que explorem uma vulnerabilidade específica do software que você está usando. Ao usar uma VPN a superfície de ataque é bem mais ampla, por isso você só deve estabelecer VPNs com redes confiáveis. No caminho inverso, você só deve permitir que conectem à sua rede via VPN máquinas sobre às quais você tem controle.

Clique para comentar
(Prefira clicar em "Responder" se estiver comentando um comentário)

Deixe um comentário

Você pode usar estas tags HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  

  

  

:) :( ;) O_o B) :lol: :huh: :S :D :-P 8-O :yahoo: :rtfm: :dashhead1: :clapping: more »

openvpn: erro “waiting for tun/tap interface to come up” ao tentar conectar

O problema aconteceu no Windows 7 64 bits. Eu estava configurando outro notebook para acessar a VPN de uma empresa e já tinha feito essa mesma configuração várias vezes, usando os mesmos arquivos de  configuração, copiados de uma máquina onde tudo funciona.

O primeiro sintoma de que havia algo errado foi que ao instalar o cliente OpenVPN o instalador demorou um tempo anormal na fase de instalação do “TAP Adapter”. Conseguiu instalar, mas depois não consegui estabelecer a conexão. Dava várias vezes a mensagem “waiting for tun/tap interface to come up” e em seguida dava uma mensagem dizendo que o comando route havia falhado. Provavelmente uma consequência direta do adaptador TAP não estar respondendo.

Olhe as propriedades do “TAP-Windows adapter” procurando por qualquer driver “estranho” anexado a ele. No meu caso, desabilitar a porcaria do “Diebold Network Adapter” (instalado automaticamente pelo maldito gbplugin) resolveu o problema imediatamente.

Clique para comentar
(Prefira clicar em "Responder" se estiver comentando um comentário)

Deixe um comentário

Você pode usar estas tags HTML

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

  

  

  

:) :( ;) O_o B) :lol: :huh: :S :D :-P 8-O :yahoo: :rtfm: :dashhead1: :clapping: more »