Aula 21: Configuração de Servidores VPN no Linux
Introdução
Uma VPN (Virtual Private Network) cria uma conexão segura entre redes através da internet, permitindo o acesso remoto seguro a recursos de rede. Nesta aula, vamos explorar como configurar e gerenciar um servidor VPN no Linux, utilizando o OpenVPN, que é uma solução de VPN altamente configurável e amplamente utilizada. Vamos cobrir a instalação, configuração básica, segurança e práticas recomendadas.
O que é uma VPN?
VPN é uma tecnologia que permite a criação de uma conexão segura e criptografada entre duas redes ou entre um usuário e uma rede, utilizando a internet como meio de comunicação. Ela oferece privacidade, segurança e acesso remoto seguro.
Vantagens de uma VPN
- Segurança: Criptografa os dados transmitidos, protegendo-os contra interceptações.
- Privacidade: Oculta o endereço IP do usuário, mantendo a navegação anônima.
- Acesso Remoto: Permite que usuários remotos acessem recursos de rede como se estivessem localmente conectados.
Instalação do OpenVPN
Para configurar um servidor VPN, usaremos o OpenVPN, que é uma solução de VPN robusta e flexível.
No Servidor
Para instalar o OpenVPN em distribuições baseadas em Debian (como Ubuntu):
$ sudo apt update
$ sudo apt install openvpn easy-rsa
Para distribuições baseadas em Red Hat (como CentOS):
$ sudo yum install epel-release
$ sudo yum install openvpn easy-rsa
Configuração do OpenVPN
Configuração do CA (Certificate Authority)
O primeiro passo é configurar uma autoridade certificadora (CA) para gerenciar certificados.
- Configure o Easy-RSA:
$ make-cadir ~/openvpn-ca
$ cd ~/openvpn-ca
$ nano vars
Edite o arquivo vars
e ajuste as seguintes variáveis:
export KEY_COUNTRY="BR"
export KEY_PROVINCE="SP"
export KEY_CITY="SaoPaulo"
export KEY_ORG="NerdExpert"
export KEY_EMAIL="[email protected]"
export KEY_OU="MinhaUnidadeOrg"
export KEY_NAME="EasyRSA"
- Gere a CA:
$ source vars
$ ./clean-all
$ ./build-ca
Gerando Certificados e Chaves
- Gere o certificado e a chave do servidor:
$ ./build-key-server server
- Gere os parâmetros Diffie-Hellman:
$ ./build-dh
- Gere a chave HMAC (tls-auth):
$ openvpn --genkey --secret keys/ta.key
- Gere os certificados e chaves dos clientes:
$ ./build-key client1
Configuração do Servidor OpenVPN
- Copie os arquivos necessários para o diretório de configuração do OpenVPN:
$ cd ~/openvpn-ca/keys
$ sudo cp ca.crt server.crt server.key dh2048.pem ta.key /etc/openvpn/
- Crie um arquivo de configuração para o servidor OpenVPN:
$ sudo nano /etc/openvpn/server.conf
Adicione a seguinte configuração:
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
tls-auth ta.key 0
cipher AES-256-CBC
auth SHA256
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
log /var/log/openvpn.log
verb 3
- Inicie e habilite o serviço OpenVPN:
$ sudo systemctl start openvpn@server
$ sudo systemctl enable openvpn@server
Configuração do Firewall
Certifique-se de que seu firewall permite tráfego VPN (porta 1194):
Para ufw
(firewall do Ubuntu):
$ sudo ufw allow 1194/udp
$ sudo ufw enable
Para firewalld
(firewall do CentOS):
$ sudo firewall-cmd --permanent --add-port=1194/udp
$ sudo firewall-cmd --reload
Configuração do Cliente OpenVPN
- No cliente, instale o OpenVPN:
Para distribuições baseadas em Debian:
$ sudo apt install openvpn
Para distribuições baseadas em Red Hat:
$ sudo yum install openvpn
- Copie os arquivos de configuração do cliente:
No servidor, copie os arquivos ca.crt
, client1.crt
, client1.key
, e ta.key
para o cliente. Crie um arquivo de configuração para o cliente:
$ sudo nano /etc/openvpn/client.conf
Adicione a seguinte configuração:
client
dev tun
proto udp
remote your_server_ip 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
tls-auth ta.key 1
cipher AES-256-CBC
auth SHA256
comp-lzo
verb 3
- Inicie o OpenVPN no cliente:
$ sudo openvpn --config /etc/openvpn/client.conf
Configuração de Segurança
Configuração de Autenticação
Adicione a autenticação do usuário para aumentar a segurança:
- No servidor, edite o arquivo
server.conf
para incluir a autenticação do usuário:
plugin /usr/lib/openvpn/openvpn-plugin-auth-pam.so login
- No cliente, adicione a autenticação do usuário ao arquivo
client.conf
:
auth-user-pass
- Reinicie o serviço OpenVPN no servidor:
$ sudo systemctl restart openvpn@server
Configuração de Logs
Os logs do OpenVPN são armazenados em /var/log/openvpn.log
. Para monitorar os logs em tempo real:
$ sudo tail -f /var/log/openvpn.log
Exemplos Práticos
Exemplo 1: Configurando um Servidor VPN Básico
- Instale o OpenVPN:
$ sudo apt install openvpn easy-rsa # Debian
$ sudo yum install epel-release
$ sudo yum install openvpn easy-rsa # Red Hat
- Configure o Easy-RSA:
$ make-cadir ~/openvpn-ca
$ cd ~/openvpn-ca
$ nano vars
# Ajuste as variáveis
$ source vars
$ ./clean-all
$ ./build-ca
- Gere o certificado e a chave do servidor:
$ ./build-key-server server
$ ./build-dh
$ openvpn --genkey --secret keys/ta.key
- Configure o servidor OpenVPN:
$ sudo cp ca.crt server.crt server.key dh2048.pem ta.key /etc/openvpn/
$ sudo nano /etc/openvpn/server.conf
# Adicione a configuração
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
tls-auth ta.key 0
cipher AES-256-CBC
auth SHA256
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
keepalive 10 120
comp-lzo
persist-key
persist-tun
status openvpn-status.log
log /var/log/openvpn.log
verb 3
$ sudo systemctl start openvpn@server
$ sudo systemctl enable openvpn@server
- Configure o firewall:
Para ufw
:
$ sudo ufw allow 1194/udp
$ sudo ufw enable
Para firewalld
:
$ sudo firewall-cmd --permanent --add-port=1194/udp
$ sudo firewall-cmd --reload
- Configure o cliente OpenVPN:
$ sudo apt install openvpn # Debian
$ sudo yum install openvpn # Red Hat
$ sudo nano /etc/openvpn/client.conf
# Adicione a configuração
client
dev tun
proto udp
remote your_server_ip 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert client1.crt
key client1.key
tls-auth ta.key 1
cipher AES-256-CBC
auth SHA256
comp-lzo
verb 3
$ sudo openvpn --config /etc/openvpn/client.conf
Configurar e gerenciar servidores VPN no Linux é uma habilidade essencial para administradores de sistemas, permitindo a criação de conexões seguras e criptografadas entre redes e usuários remotos.
Sou um profissional na área de Tecnologia da informação, especializado em monitoramento de ambientes, Sysadmin e na cultura DevOps. Possuo certificações de Segurança, AWS e Zabbix.