Pular para o conteúdo
Início » Configurando um OpenVPN Server

Configurando um OpenVPN Server

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.

  1. 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"
  1. Gere a CA:
$ source vars
$ ./clean-all
$ ./build-ca
Gerando Certificados e Chaves
  1. Gere o certificado e a chave do servidor:
$ ./build-key-server server
  1. Gere os parâmetros Diffie-Hellman:
$ ./build-dh
  1. Gere a chave HMAC (tls-auth):
$ openvpn --genkey --secret keys/ta.key
  1. Gere os certificados e chaves dos clientes:
$ ./build-key client1
Configuração do Servidor OpenVPN
  1. 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/
  1. 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
  1. 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
  1. 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
  1. 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
  1. 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:

  1. 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
  1. No cliente, adicione a autenticação do usuário ao arquivo client.conf:
auth-user-pass
  1. 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
  1. Instale o OpenVPN:
$ sudo apt install openvpn easy-rsa  # Debian
$ sudo yum install epel-release
$ sudo yum install openvpn easy-rsa  # Red Hat
  1. Configure o Easy-RSA:
$ make-cadir ~/openvpn-ca
$ cd ~/openvpn-ca
$ nano vars
# Ajuste as variáveis
$ source vars
$ ./clean-all
$ ./build-ca
  1. Gere o certificado e a chave do servidor:
$ ./build-key-server server
$ ./build-dh
$ openvpn --genkey --secret keys/ta.key
  1. 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
  1. 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
  1. 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.