Para quem tem um Raspberry Pi (aproveite a promoção do Pplware – ver aqui) lá por casa, certamente já teve a necessidade de se ligar a ele a partir do exterior ou então aceder a um outro serviço que apenas está disponível quando estamos ligados à rede local.
A melhor solução e a mais segura é estabelecer um túnel VPN e nesse sentido hoje ensinamos como instalar um servidor VPN L2TP sobre IPSec num Raspberry Pi 2 usando o SoftEther VPN.
O SoftEther VPN é um software relativamente recente e surpreendeu-nos muito pela positiva. Apesar de ser gratuito e open-source, é de nível profissional e de fácil configuração comparado com outras soluções VPN.
É extremamente completo, com muitas funcionalidades avançadas, como por exemplo integração com servidores RADIUS, routers CISCO, criação de Virtual Hubs (separação de ligações para segurança), configuração de permissões por utilizador, bridging, clustering, etc. Além disso dispõe de um serviço de DNS dinâmico, não sendo assim necessário configurar um destes serviços à parte, caso o vosso pacote de internet não ofereça um IP estático.
Para além de L2TP sobre IPSec, suporta também outros tipos de VPNs como OpenVPN, SSTP etc. Optamos por L2TP sobre IPSec por ser considerada uma solução bastante segura, caso seja bem configurada e por a maior parte dos sistemas operativos (Windows, MAC OSX, IOS, Android…) terem suporte nativo a este tipo de VPNs, não sendo necessário instalar software adicional para se realizar a ligação.
Configuração no Raspberry Pi 2:
Para obterem e compilar o SoftEther basta que executem os seguintes comandos num terminal:
wget http://www.softether-download.com/files/softether/v4.15-9546-beta-2015.04.05-tree/Linux/SoftEther_VPN_Server/32bit_-_ARM_EABI/softether-vpnserver-v4.15-9546-beta-2015.04.05-linux-arm_eabi-32bit.tar.gz tar zxvf softether-vpnserver-v4.15-9546-beta-2015.04.05-linux-arm_eabi-32bit.tar.gz cd vpnserver sudo make
Em seguida vamos mover o directório de instalação, configurar as permissões correctas, fazer o download e activar um script para inicialização automática no boot e iniciar o serviço.
cd .. sudo mv vpnserver /usr/local cd /usr/local/vpnserver sudo chmod 600 * sudo chmod 700 vpncmd vpnserver sudo sed -i 's/AcceptOnlyTls false/AcceptOnlyTls true/g' /usr/local/vpnserver/vpn_server.config sudo wget http://pipplware.pplware.pt/pipplware/dists/stable/main/misc/vpnserver -O /etc/init.d/vpnserver sudo chmod 755 /etc/init.d/vpnserver sudo update-rc.d vpnserver defaults sudo /etc/init.d/vpnserver start sudo /usr/local/vpnserver/vpncmd
Pressionar 1 seguido de Enter 3 vezes e executar:
ServerPasswordSet
Insiram uma password à vossa escolha. Se tiverem intenção de gerirem o(s) servidor(es) através da internet (não incluído no tutorial) escolham uma password forte, por questões óbvias de segurança. No fim escrevam o comando “exit” seguido de Enter. E está completa a configuração no Raspberry Pi. Vamos agora configurar o servidor usando o SoftEther VPN Server Manager no Windows.
Configuração da VPN usando o SoftEther VPN Server Manager for Windows:
Numa máquina com o Windows fazer o download da ultima versão do SoftEther VPN Server Manager for Windows aqui e instalar. Durante o processo, seleccionem “Admin Tools Only”.
Após a instalação, iniciar o programa e clicar em “New Setting”. Preencher os campos:
- Hostname: IP do servidor, neste caso do RPi. Tanto pode ser um IP público ou privado dependendo se o servidor está na rede local ou numa rede externa (neste caso é local)
- Password: A password definida no ultimo passo da configuração do Raspberry.
Clicar em OK e depois duplo-click na nova entrada criada. No próximo ecrã, seleccionar apenas “Remote Access VPN Server” e “Next”. Escrever um “Virtual Hub Name” à escolha e fazer OK.
No próximo ecrã, é-nos apresentado o serviço DDNS gratuito do SoftEther VPN:
Alterem o Dynamic DNS Hostname se desejarem, apontem este endereço e façam Exit. Será este o endereço usado para se fazer a ligação depois nos clientes. Se já tiverem um DDNS configurado que pretendam usar em alternativa, simplesmente ignorem este passo e façam Exit.
No próximo ecrã seleccionem a primeira opção, L2TP over IPSec:
Em baixo devem escolher uma chave partilhada (Pre-Shared Key) com uma password forte mas de preferência com menos de 9 caracteres senão clientes Android podem ter problemas. Todos os clientes terão de saber esta chave para se poderem conectar, para além de uma chave individual específica de cada utilizador, que será configurada mais tarde.
Fazer OK e no próximo ecrã seleccionar a opção “Disable VPN Azure” uma vez que não temos interesse neste serviço.
De seguida iremos configurar cada utilizador. Selecionar “Create Users” e configurar como desejado:
Neste caso, para manter as coisas simples, seleccionamos apenas “Password Authentication” e definimos uma password para o utilizador em questão. Relembramos que devem definir uma password forte. Para máxima segurança podem definir uma data de expiração da conta, definir politicas de segurança para o utilizador em questão e usar um certificado de autenticação ou via RADIUS em vez de password. Estas opções não são cobertas neste tutorial.
Fazer OK para terminar. Caso desejem, podem adicionar já mais utilizadores, para isso façam “New” no próximo ecrã, caso contrário façam “Exit”.
Após saírem do menu de configuração dos utilizadores, em “Step 3. Set Local Bridge” devem seleccionar a interface de ligação á rede do servidor, no nosso caso, a interface Ethernet (eth0) do Raspberry Pi. “Close” em seguida.
O próximo ecrã é o painel principal de controlo do nosso servidor VPN:
Aqui podemos controlar tudo relativamente ao servidor VPN, como hubs virtuais, ver o status do servidor, conexões, encriptação etc. Mais uma vez, para manter as coisas simples não vamos falar sobre todas as opções, apenas realizar as configurações finais:
Em “Management of Listeners”, eliminar todas as portas, excepto a 443.
Clicar em “OpenVPN / MS-SSTP Setting” , desmarcar as duas caixas e fazer OK.
Clicar em “Encryption and Network”. Em “Encryption Algorithm Name”, selecionar “AES256-SHA” ou outra, conforme desejarem. Quanto mais para baixo, mais forte é a encriptação, mas exige maior capacidade de processamento. Em “VPN over ICMP / DNS Settings”, desmarcar as duas caixas e fazer OK. Ok novamente para voltar ao painel da imagem em cima.
Por fim fazer Exit e está terminada a configuração da VPN.
Configuração do router:
O último passo a fazer é configurar o vosso router para aceitar e reencaminhar as ligações VPN para o vosso Raspberry/servidor. Esta parte depende bastante do router do vosso ISP, pelo que terão de adaptar ao vosso caso. Neste tutorial é usado um Thomson TG784n, usado por 2 grandes operadoras nacionais:
Escrever o endereço de IP do vosso router num browser e fazer login:
Ir a Ferramentas -> Partilha de Jogos e Aplicações -> Criar novo jogo ou aplicação e configurar conforme a imagem em cima. O protocolo a usar é o UDP e as portas a reencaminhar são a 500 (ISAKMP) e 4500 (IPSec NAT Traversal). No fim clicar em Aplicar.
De seguida ir a Ferramentas -> Partilha de Jogos e Aplicações -> Associar jogo ou aplicação a um equipamento de rede local. Seleccionar a aplicação criada em cima (SoftEther), atribuir ao servidor (Raspberry)e clicar em Adicionar:
Por fim carregar em Aplicar. E está tudo terminado!
Nota: Devem apenas abrir no router, as portas indicadas no tutorial para o exterior para não comprometer a segurança. Aconselhamos também o uso de uma firewall para além da do router.
Agora precisam apenas de configurar os dispositivos que pretendem ligar ao vosso servidor VPN. Como referimos no início do tutorial, quase todos os aparelhos actuais são compatíveis com este tipo de servidor VPN, não precisando de instalar qualquer aplicação adicional para se conectarem, basta usar os clientes nativos do sistema operativo. Se configuraram conforme o indicado precisarão dos seguintes dados:
- Endereço do servidor (IP estático ou o DDNS fornecido pelo SoftEther ou outro DDNS pré-configurado)
- Pre Shared Key
- Utilizador
- Password
Esperemos que tenham gostado de mais um tutorial e que vos possa ser útil.
Boas!
Antes de colocar a minha dúvida, não posso deixar de frisar a boa ideia que foi criar um site específico para alocar a documentação do PiPplware. Sendo uma distro muito bem conseguida, também havia a falta de um sítio dedicado à mesma.
Agora a minha dúvida, esta configuração VPN, permite que o dispositivo remoto (ex.: smartphone) que se liga à VPN possa ter uma ligação de Internet segura? Isto para aquelas situações quando o utilizador se liga a uma rede aberta ou menos segura.
Obrigado.
Boas
Sim permite uma ligação segura partindo do princípio que a ligação à internet no local onde está o servidor (Ex: Casa) é segura.
A partir do momento que se liga à sua VPN privada, a partir de uma outra rede, todo o tráfego desde o dispositivo até ao servidor VPN é encriptado e seguro.
Essa situação é um bom exemplo, onde se ligar a uma VPN privada é conveniente, para segurança de dados.
Diogo, obrigado pelo esclarecimento.
Boas,
Bom tutorial, facil de seguir, e implementar.
Gostava de saber, depois de ter instalado o softether, como é que posso fazer a atualização do mesmo.
Tenho de voltar a compilar a versão mais recente? Isso não vai apagar a minha configuração atual?
Obrigado
Boas
Sim, tem de compilar o programa novamente e copiar para o local onde está instalado. São os primeiros passos do tutorial, na parte do Raspberry. Tem de ter a atenção para não copiar o ficheiro de configuração, para não perder as alterações.
Olá, esta a dar-me um erro neste passo:
sudo sed -i ‘s/AcceptOnlyTls false/AcceptOnlyTls true/g’ /usr/local/vpnserver/vpn_server.config
diz “no such file or directory”
Refaça os passos desde o inicio. Se continuar com o mesmo erro coloque um screenshot do resultado de todos os comandos executados.
Olá, muito bom dia.
Também estou com difuculdades em seguir o tutorial, mas no meu caso, é devido ao ficheiro com o script já não se encontrar online. Será possível voltarem a colocar online, ou facultarem-me o mesmo?
Muito obrigado e continuação de muitos e bons tutoriais
Está aqui:
sudo wget http://pipplware.pplware.pt/pipplware/dists/wheezy/main/misc/vpnserver -O /etc/init.d/vpnserver
Muito Obrigado Diogo.
Funciona 100%
Melhores Cumprimentos
Carlos
Bom Tutorial, tudo muito bem explicado, correu bem consigo ver todos os aparelhos que tenho na minha rede em casa e consigo ter acesso ao ficheiros de todos só menos no raspberry pi. Já revi todos os passos e mais alguns que encontrei na net mas mesmo assim não consigo estando ligado por vpn ter acesso ao pi, nem ssh nem vnc.
O que será que fiz de mal?
Obrigado e continuação de bom trabalho.
Boa tarde,
Eu pessoalmente não uso o SoftEther no Raspberry, mas pelo conhecimento que tenho, você provavelmente tem de criar uma rota no raspberry, da rede que é atribuida pelo software a clientes, para o ip ou subnet do Raspberry. Isto é um problema que já foi descrito por mais utilizadores, mas é uma questão de configuração adequada. Para mais informações, consulte os manuais do SoftEther.
Está-me a dar um erro estranho.
pi@rspi:/usr/local/vpnserver $ uname -r
4.4.9+
Ao executar o seguinte comado:
pi@rspi:/usr/local/vpnserver $ sudo /usr/local/vpnserver/vpncmd
vpncmd command – SoftEther VPN Command Line Management Utility
SoftEther VPN Command Line Management Utility (vpncmd command)
Version 4.22 Build 9634 (English)
Compiled 2016/11/27 15:23:56 by yagi at pc30
Copyright (c) SoftEther VPN Project. All Rights Reserved.
By using vpncmd program, the following can be achieved.
1. Management of VPN Server or VPN Bridge
2. Management of VPN Client
3. Use of VPN Tools (certificate creation and Network Traffic Speed Test Tool)
Select 1, 2 or 3: 1
Specify the host name or IP address of the computer that the destination VPN Server or VPN Bridge is operating on.
By specifying according to the format ‘host name:port number’, you can also specify the port number.
(When the port number is unspecified, 443 is used.)
If nothing is input and the Enter key is pressed, the connection will be made to the port number 8888 of localhost (this computer).
Hostname of IP Address of Destination:
If connecting to the server by Virtual Hub Admin Mode, please input the Virtual Hub name.
If connecting by server admin mode, please press Enter without inputting anything.
Specify Virtual Hub Name:
Error occurred. (Error code: 2)
Protocol error occurred. Error was returned from the destination server.
pi@rspi:/usr/local/vpnserver $
Olá , claro isto post é realmente agradável e aprendi muitas
coisas Ԁe sߋbre blogging. Obrigado.