Criando VPN's usando o OpenVPN. |
Por Matheus Cucoloto | |||
25/09/2006 | |||
Neste artigo será apresentado a facilidade em que podemos criar redes virtuais privadas (VPN), utilizando o OpenVPN em vários sistemas Operacionais distintos. O OpenVPN se destaca pelo seu suporte a conexões atrás de NAT ou Firewall. Se o servidor se encontra em um ambiente desses é apenas necessário o redirecionamento da porta em que ele esta ouvindo, por padrão na 1194. Já no ambiente do cliente, se o mesmo se encontra em algum dos ambientes mencionados a única exigência é ter pelo menos sua conexão entre ele e o servidor de VPN liberada para que o cliente o servidor troquem informações e levantem a VPN.
Instalando o OpenVPN Bom, a instalação do OpenVPN no FreeBSD é simples, podemos utilizar o pkg_add ou então a arvore Ports. Aqui utilizaremos o Ports e de preferência atualizado. (matheus@internet1)~# cd /usr/ports/security/openvpn Será apresentado um Dialog sobre o PW_SAVE, não precisaremos desta opção então apenas confirmamos pressionando ENTER. Após a compilação e instalação podemos iniciar a configuração dos arquivos do OpenVPN. Configurando o OpenVPN Primeiramente adicionamos a linha openvpn_enable="YES" e gateway_enable=”YES” no nosso arquivo rc.conf (matheus@internet1)~# echo openvpn_enable="YES" >> /etc/rc.conf Depois de instalado vamos alterar o nome do script de inicialização do OpenVPN no diretório /usr/local/etc/rc.d (matheus@internet1)~# cd /usr/local/etc/rc.d Agora criaremos o diretório de arquivos de configuração do OpenVPN: (matheus@internet1)~# mkdir -p /usr/local/etc/openvpn Criada a pasta vamos criar o arquivo openvpn.conf e preenche-lo com as configurações necessárias. (matheus@internet1)~# ee openvpn.conf -------------DADOS DO ARQUIVO----------- Quando instalamos o OpenVPN é criado no diretório /usr/local/share/doc/openvpn/ arquivos de exemplos vamos copiar deste local o diretório easy-rsa. Nesta pasta existe scripts que tornam a criação das chaves SSL facíl. (matheus@internet1)~# cd /usr/local/share/doc/openvpn Bom, para quem não usa o shell SH, vai ter que usar pelo menos nesta parte para usar os scripts, pois os mesmos foram feitos para o SH e necessitam da shell ativa, para criar variáveis e coisas afins. (matheus@internet1)~# sh Vamos editar algumas variáveis contidos no arquivo vars. # ee vars As variáveis que nos interessa estão no final do arquivo e são as seguintes: Alterando as mesmas evitamos repetir varias vezes a mesma informação. Agora podemos carregar as variáveis: # . vars Criando a CA, nesta parte será feita perguntas referentes as variáveis que editamos anteriormente e outras como “Organizational Unit Name” = comentário referente a empresa e “Common Name” = FQDN da maquina ex: srv-vpn2.dominio.com.br: # ./build-ca Criar chaves do Servidor, nesta parte será feito as mesmas perguntas do comando anterior mas adicionando mais 2 variáveis as mesmas não precisam necessariamente de informação: # ./build-key-server servidorvpn Criando as chaves do(s) cliente(s), neste caso criamos apenas 1, mas nada impede depois de você crie outras chaves, apenas deve diferenciar a variável “Common Name” de cada chave, para evitar problemas. “filialbh” é o nome que sera dado para a chave criada, altere conforme o seu ambiente. # ./build-key filialbh Gerando parâmetros Diffie Hellman para o OpenVPN: # ./build-dh Feito todo este procedimento, podemos voltar ao nosso shell de preferência: # return Iniciando o servidor OpenVPN Para tornar nossa administração mais fácíl vamos informar ao syslog para ele logar todos os eventos do OpenVPN em um arquivo /var/log/openvpn.log (matheus@internet1)~# ee /etc/syslog.conf Adicione as seguintes informações neste arquivo: -------------DADOS DO ARQUIVO----------- !openvpn -------------DADOS DO ARQUIVO----------- Criamos o arquivo: (matheus@internet1)~# touch /var/log/openvpn.log Agora vamos reiniciar o syslog: (matheus@internet1)~# /etc/rc.d/syslogd restart E iniciamos o OpenVPN: (matheus@internet1)~# /usr/local/etc/rc.d/openvpn.sh start Vamos verificar se o serviço levantou: (matheus@internet1)~# sockstat -4l | grep openvpn Por Padrão o OpenVPN escuta na porta 1194 no protocolo UDP, mas nada impede que você use outra porta ou o protocolo TCP, apenas especifique no arquivo de configuração, mais informações você pode conseguir nos arquivos de exemplo na pasta /usr/local/share/doc/openvpn. Configurando o lado Cliente da coisa Cliente FreeBSD Supondo que a maquina que ira se conectar ao nosso servidor de VPN seja um FreeBSD, instalamos o OpenVPN como fizemos anteriormente usando o Ports. Feita a instalação vamos seguir os passos seguintes: Criaremos o diretório de arquivos de configuração do OpenVPN: Criada a pasta vamos criar o arquivo openvpn.conf e preenche-lo com as configurações necessárias. (matheus@internet1-filialbh)~# ee openvpn.conf -------------DADOS DO ARQUIVO----------- Feito o arquivo de configuração agora devemos buscar os arquivos de chave para fazer a autenticação da VPN. Necessitamos do arquivofilialbh.crt filialbh.key e ca.crt que foram criados anteriormente e estão em /usr/local/etc/openvpn/easy-rsa/keys no servidor que acabamos de criar. Estes arquivos devem ser copiados para a pasta /usr/local/etc/openvpn da máquina da filial. Cabe a você a forma de transportar o arquivo (scp, www, ftp, samba, disquete, cd, dvd e afins...), tenha certeza que esses arquivos estejam seguros, pois quem tiver essa chave poderá se autenticar na VPN. Adicionamos a linha openvpn_enable="YES" e gateway_enable=”YES” no nosso arquivo rc.conf (matheus@internet1-filialbh)~# echo openvpn_enable="YES" >> /etc/rc.conf Alteramos o nome do script de inicialização do OpenVPN no diretório /usr/local/etc/rc.d (matheus@internet1-filialbh)~# cd /usr/local/etc/rc.d E iniciamos o OpenVPN: (matheus@internet1-filialbh)~# /usr/local/etc/rc.d/openvpn.sh start Agora verificaremos se existe a interface e faremos um teste de ping em um host do outro lado: (matheus@internet1-filialbh)~# ifconfig tun0 Cliente Windows Se temos do outro lado uma maquina com Windows, precisaremos baixar o OpenVPN para windows no seguinte endereço: http://openvpn.net/download.html Feita a instalação, vamos ao Windows Explorer (ctrl+e), e navegamos até a pasta C:\Arquivos de programas\OpenVPN\config. Lá iremos criar um arquivo chamado openvpn.ovpn e preencheremos ele com o seguinte conteúdo: -------------DADOS DO ARQUIVO----------- client Feito o arquivo de configuração agora devemos buscar os arquivos de chave para fazer a autenticação da VPN. Necessitamos do arquivofilialbh.crt filialbh.key e ca.crt que foram criadas anteriormente estão em /usr/local/etc/openvpn/easy-rsa/keys no servidor que acabamos de criar. Estes arquivos devem estar presentes na pasta C:\Arquivos de programas\OpenVPN\config da maquina Windows da filial. Cabe a você a forma de transportar o arquivo (scp, www, ftp, samba, disquete, cd, dvd e afins...), tenha certeza que esses arquivos estejam seguros, pois quem tiver essa chave poderá se autenticar na VPN. Depois disso já podemos levantar a VPN, clique com o botão direito do Mouse e selecione a opção “Start OpenVPN on this config file”. É possível também levantar a VPN utilizando o GUI que vem junto com a instalação, ele cria um ícone no canto do relógio, apenas 2 cliques e estará conectado. Para testarmos entre no DOS e digite ipconfig, lá ira aparecer uma nova conexão local ou um novo dispositivo com endereço IP e tudo mais, ai é só pingar o outro lado para verificar se a conexão esta OK. O OpenVPN é uma solução bastante flexível, que pode auxiliar muito em ambientes com sistemas operacionais diferentes sem abrirmos mão da segurança e da redução de custos, pois o mesmo consegue trabalhar normalmente atrás de conexões NAT ou com Firewall. Com uma simples ADSL é possível estabelecer uma VPN. Matheus Cucoloto Bom, a instalação do OpenVPN no FreeBSD é simples, podemos utilizar o pkg_add ou então a arvore Ports. Aqui utilizaremos o Ports e de preferência atualizado. (matheus@internet1)~# cd /usr/ports/security/openvpn Será apresentado um Dialog sobre o PW_SAVE, não precisaremos desta opção então apenas confirmamos pressionando ENTER. Após a compilação e instalação podemos iniciar a configuração dos arquivos do OpenVPN. Configurando o OpenVPN Primeiramente adicionamos a linha openvpn_enable="YES" e gateway_enable=”YES” no nosso arquivo rc.conf (matheus@internet1)~# echo openvpn_enable="YES" >> /etc/rc.conf Depois de instalado vamos alterar o nome do script de inicialização do OpenVPN no diretório /usr/local/etc/rc.d (matheus@internet1)~# cd /usr/local/etc/rc.d Agora criaremos o diretório de arquivos de configuração do OpenVPN: (matheus@internet1)~# mkdir -p /usr/local/etc/openvpn Criada a pasta vamos criar o arquivo openvpn.conf e preenche-lo com as configurações necessárias. (matheus@internet1)~# ee openvpn.conf -------------DADOS DO ARQUIVO----------- Quando instalamos o OpenVPN é criado no diretório /usr/local/share/doc/openvpn/ arquivos de exemplos vamos copiar deste local o diretório easy-rsa. Nesta pasta existe scripts que tornam a criação das chaves SSL facíl. (matheus@internet1)~# cd /usr/local/share/doc/openvpn Bom, para quem não usa o shell SH, vai ter que usar pelo menos nesta parte para usar os scripts, pois os mesmos foram feitos para o SH e necessitam da shell ativa, para criar variáveis e coisas afins. (matheus@internet1)~# sh Vamos editar algumas variáveis contidos no arquivo vars. # ee vars As variáveis que nos interessa estão no final do arquivo e são as seguintes: Alterando as mesmas evitamos repetir varias vezes a mesma informação. Agora podemos carregar as variáveis: # . vars Criando a CA, nesta parte será feita perguntas referentes as variáveis que editamos anteriormente e outras como “Organizational Unit Name” = comentário referente a empresa e “Common Name” = FQDN da maquina ex: srv-vpn2.dominio.com.br: # ./build-ca Criar chaves do Servidor, nesta parte será feito as mesmas perguntas do comando anterior mas adicionando mais 2 variáveis as mesmas não precisam necessariamente de informação: # ./build-key-server servidorvpn Criando as chaves do(s) cliente(s), neste caso criamos apenas 1, mas nada impede depois de você crie outras chaves, apenas deve diferenciar a variável “Common Name” de cada chave, para evitar problemas. “filialbh” é o nome que sera dado para a chave criada, altere conforme o seu ambiente. # ./build-key filialbh Gerando parâmetros Diffie Hellman para o OpenVPN: # ./build-dh Feito todo este procedimento, podemos voltar ao nosso shell de preferência: # return Iniciando o servidor OpenVPN Para tornar nossa administração mais fácíl vamos informar ao syslog para ele logar todos os eventos do OpenVPN em um arquivo /var/log/openvpn.log (matheus@internet1)~# ee /etc/syslog.conf Adicione as seguintes informações neste arquivo: -------------DADOS DO ARQUIVO----------- !openvpn -------------DADOS DO ARQUIVO----------- Criamos o arquivo: (matheus@internet1)~# touch /var/log/openvpn.log Agora vamos reiniciar o syslog: (matheus@internet1)~# /etc/rc.d/syslogd restart E iniciamos o OpenVPN: (matheus@internet1)~# /usr/local/etc/rc.d/openvpn.sh start Vamos verificar se o serviço levantou: (matheus@internet1)~# sockstat -4l | grep openvpn Por Padrão o OpenVPN escuta na porta 1194 no protocolo UDP, mas nada impede que você use outra porta ou o protocolo TCP, apenas especifique no arquivo de configuração, mais informações você pode conseguir nos arquivos de exemplo na pasta /usr/local/share/doc/openvpn. Configurando o lado Cliente da coisa Cliente FreeBSD Supondo que a maquina que ira se conectar ao nosso servidor de VPN seja um FreeBSD, instalamos o OpenVPN como fizemos anteriormente usando o Ports. Feita a instalação vamos seguir os passos seguintes: Criaremos o diretório de arquivos de configuração do OpenVPN: Criada a pasta vamos criar o arquivo openvpn.conf e preenche-lo com as configurações necessárias. (matheus@internet1-filialbh)~# ee openvpn.conf -------------DADOS DO ARQUIVO----------- Feito o arquivo de configuração agora devemos buscar os arquivos de chave para fazer a autenticação da VPN. Necessitamos do arquivofilialbh.crt filialbh.key e ca.crt que foram criados anteriormente e estão em /usr/local/etc/openvpn/easy-rsa/keys no servidor que acabamos de criar. Estes arquivos devem ser copiados para a pasta /usr/local/etc/openvpn da máquina da filial. Cabe a você a forma de transportar o arquivo (scp, www, ftp, samba, disquete, cd, dvd e afins...), tenha certeza que esses arquivos estejam seguros, pois quem tiver essa chave poderá se autenticar na VPN. Adicionamos a linha openvpn_enable="YES" e gateway_enable=”YES” no nosso arquivo rc.conf (matheus@internet1-filialbh)~# echo openvpn_enable="YES" >> /etc/rc.conf Alteramos o nome do script de inicialização do OpenVPN no diretório /usr/local/etc/rc.d (matheus@internet1-filialbh)~# cd /usr/local/etc/rc.d E iniciamos o OpenVPN: (matheus@internet1-filialbh)~# /usr/local/etc/rc.d/openvpn.sh start Agora verificaremos se existe a interface e faremos um teste de ping em um host do outro lado: (matheus@internet1-filialbh)~# ifconfig tun0 Cliente Windows Se temos do outro lado uma maquina com Windows, precisaremos baixar o OpenVPN para windows no seguinte endereço: http://openvpn.net/download.html Feita a instalação, vamos ao Windows Explorer (ctrl+e), e navegamos até a pasta C:\Arquivos de programas\OpenVPN\config. Lá iremos criar um arquivo chamado openvpn.ovpn e preencheremos ele com o seguinte conteúdo: -------------DADOS DO ARQUIVO----------- client Feito o arquivo de configuração agora devemos buscar os arquivos de chave para fazer a autenticação da VPN. Necessitamos do arquivofilialbh.crt filialbh.key e ca.crt que foram criadas anteriormente estão em /usr/local/etc/openvpn/easy-rsa/keys no servidor que acabamos de criar. Estes arquivos devem estar presentes na pasta C:\Arquivos de programas\OpenVPN\config da maquina Windows da filial. Cabe a você a forma de transportar o arquivo (scp, www, ftp, samba, disquete, cd, dvd e afins...), tenha certeza que esses arquivos estejam seguros, pois quem tiver essa chave poderá se autenticar na VPN. Depois disso já podemos levantar a VPN, clique com o botão direito do Mouse e selecione a opção “Start OpenVPN on this config file”. É possível também levantar a VPN utilizando o GUI que vem junto com a instalação, ele cria um ícone no canto do relógio, apenas 2 cliques e estará conectado. Para testarmos entre no DOS e digite ipconfig, lá ira aparecer uma nova conexão local ou um novo dispositivo com endereço IP e tudo mais, ai é só pingar o outro lado para verificar se a conexão esta OK. O OpenVPN é uma solução bastante flexível, que pode auxiliar muito em ambientes com sistemas operacionais diferentes sem abrirmos mão da segurança e da redução de custos, pois o mesmo consegue trabalhar normalmente atrás de conexões NAT ou com Firewall. Com uma simples ADSL é possível estabelecer uma VPN. Matheus Cucoloto
|
|||
ltima Atualizao ( 28/09/2006 ) |