VPN
Uma Virtual Private Network (VPN) permite que você atravesse redes não confiáveis como se estivesse em uma rede privada. Ela dá a você a liberdade de acessar a internet com segurança no seu smartphone ou notebook ao se conectar a uma rede não confiável, como o wi-fi em um hotel ou café. [1]
Docker
Docker é uma plataforma aberta, criada com o objetivo de facilitar o desenvolvimento, a implantação e a execução de aplicações em ambientes isolados. Foi desenhada especialmente para disponibilizar uma aplicação da forma mais rápida possível. [2]
Docker Compose é uma ferramenta que foi desenvolvida para ajudar a definir e compartilhar aplicativos de vários contêineres. Com o Compose, você pode criar um arquivo YAML para definir os serviços e, com um único comando, pode girar tudo ou destruir tudo. [3]
Instalação
Arquivo docker-compose.yml: [4]
version: '3.7'
services:
openvpn:
cap_add:
- NET_ADMIN
image: kylemanna/openvpn
container_name: openvpn
ports:
- "1194:1194/udp"
restart: always
volumes:
- ./openvpn-data/conf:/etc/openvpn
expose:
- 5555
networks:
- skynet
web:
image: 'ruimarinho/openvpn-monitor'
environment:
- OPENVPNMONITOR_DEFAULT_DATETIMEFORMAT=%%d/%%m/%%Y
- OPENVPNMONITOR_DEFAULT_LATITUDE=-37
- OPENVPNMONITOR_DEFAULT_LONGITUDE=144
- OPENVPNMONITOR_DEFAULT_MAPS=True
- OPENVPNMONITOR_DEFAULT_MAPSHEIGHT=500
- OPENVPNMONITOR_DEFAULT_SITE=Live
- OPENVPNMONITOR_SITES_0_ALIAS=server1
- OPENVPNMONITOR_SITES_0_HOST=openvpn
- OPENVPNMONITOR_SITES_0_NAME=server1
- OPENVPNMONITOR_SITES_0_PORT=5555
- OPENVPNMONITOR_SITES_0_SHOWDISCONNECT=True
networks:
- skynet
auth:
image: 'beevelop/nginx-basic-auth'
ports:
- '8080:80'
links:
- "web:web"
environment:
- PORT=80
- FORWARD_HOST=web
- FORWARD_PORT=80
## escape $ with $$ in Docker yml due to variable expansion
## example user/pass generated with htpasswd is admin:batman
- HTPASSWD=admin:$$apr1$$2tupacmb$$heiUX0m1cgIACrT63/y3k/
networks:
- skynet
networks:
skynet:
name: skynet
ipam:
driver: default
config:
- subnet: "192.168.35.0/20"
Inicialize os arquivos de configuração e certificados
docker-compose run --rm openvpn ovpn_genconfig -u udp://VPN.SERVERNAME.COM
docker-compose run --rm openvpn ovpn_initpki
Corrija a permissão (dependendo da forma como lida com seus backups, isso pode não ser necessário)
sudo chown -R $(whoami): ./openvpn-data
Iniciar o processo OpenVPN server
docker-compose up -d openvpn
Você pode acessar os logs do contêiner com:
docker-compose logs -f
Gerar um certificado de cliente
export CLIENTNAME="your_client_name"
# with a passphrase (recommended)
docker-compose run --rm openvpn easyrsa build-client-full $CLIENTNAME
# without a passphrase (not recommended)
docker-compose run --rm openvpn easyrsa build-client-full $CLIENTNAME nopass
Recupere a configuração do cliente com certificados incorporados
docker-compose run --rm openvpn ovpn_getclient $CLIENTNAME > $CLIENTNAME.ovpn
Revogar um certificado de cliente
# Keep the corresponding crt, key and req files.
docker-compose run --rm openvpn ovpn_revokeclient $CLIENTNAME
# Remove the corresponding crt, key and req files.
docker-compose run --rm openvpn ovpn_revokeclient $CLIENTNAME remove
Dicas de depuração
Crie uma variável de ambiente com o nome DEBUG e valor 1 para habilitar a saída de depuração (usando “docker -e”)
docker-compose run -e DEBUG=1 -p 1194:1194/udp openvpn
Obs.: para que o monitor tenha acesso ao servidor OpenVPN é necessário incluir no arquivo de configuração do OpenVPN a seguinte linha:
vim openvpn-data/conf/openvpn.conf
management openvpn 5555
Configuração OpenVPN no Linux
- Mova o arquivo ovpn para
"/etc/openvpn"
"cd /etc/openvpn"
e insira o arquivo"yourserver.txt"
contendo:your_server_user_name
your_server_passowrd
- No arquivo
"OpenVPNConfigFile.ovpn"
encontre ou adicione"auth-user-pass yourserver.txt"
Isso permitirá que você pule a inserção de suas credenciais sempre que iniciar a conexão openvpn. - Renomeie
"OpenVPNConfigFile.ovpn"
para"OpenVPNConfigFile.conf"
- Em
"/etc/default/openvpn"
descomentar'AUTOSTART="all"'
"sudo service openvpn start"
A conexão será estabelecida toda vez que você iniciar o computador.
Dicas
Editar o arquivo vim ~/.bashrc
, adicionar em .bashrc a linha a seguir, e posteriormente executar o comando source ~/.bashrc
alias meuip='dig @resolver4.opendns.com myip.opendns.com +short'
Após esses passos, é possível usar o comando “meuip” para identificar o IP externo e testar se a VPN está ativa.
Para executar o OpenVpn automaticamente, é necessário editar o arquivo /etc/default/openvpn e remover o comentário da linha AUTOSTART
=”all”. Copiar o arquivo .opvn
para o diretório /etc/openvpn/client.conf
sudo vim /etc/default/openvpn
# Descomentar a linha AUTOSTART="all"
# Mover o arquivo .ovpn para /etc/openvpn/
sudo cp arquivo.ovpn /etc/openvpn/arquivo.conf
Para executar o OpenVPN client no modo “dettached”:
sudo openvpn --config arquivo.ovpn --askpass --daemon
DNS Leak
To avoid DNS leak use the following commands: (source)
sudo apt install openvpn-systemd-resolved
and append the following lines to your .ovpn file:
script-security 2
dhcp-option DNS 208.67.222.222
dhcp-option DNS 208.67.220.220
dhcp-option DNS 8.26.56.26
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved