OpenVPN multiclient no Rocky Linux 9.3
Introdução
Em meio ao vasto universo do Linux, a criação de um servidor OpenVPN se destaca como uma tarefa fundamental para garantir segurança e versatilidade na comunicação entre dispositivos distintos. Este artigo oferece um guia prático, detalhando o passo a passo para configurar um servidor OpenVPN multiclient no sistema operacional Rocky Linux 9.3.
A abordagem aqui apresentada é simplificada e eficiente – basta copiar e colar os comandos na sequência correta para garantir uma implementação bem-sucedida. Prepare-se para mergulhar nessa jornada, onde a segurança e a conectividade convergem no cenário robusto do OpenVPN sobre o Rocky Linux 9.3.
Infraestrutura Local
Antes de mergulharmos na configuração, é importante entender a infraestrutura local. A empresa em questão possui um domínio de intranet denominado “minhaempresa.local”, com o servidor de DNS configurado no endereço 172.1.6.0.1. Esses detalhes serão fundamentais durante o processo de configuração.
Preparando o Ambiente
Antes de iniciarmos, é imperativo garantir que todos os comandos a seguir sejam executados com as permissões de superusuário (root). Certifique-se de estar autenticado como root antes de prosseguir.
Iniciaremos instalando os pacotes fundamentais. Para facilitar esse processo, é crucial que o repositório EPEL esteja configurado no sistema. Execute os seguintes comandos:
yum install -y openvpn easy-rsa
mkdir -p /var/log/openvpn /etc/openvpn/server/static
mkdir /etc/openvpn/easy-rsa && cp -r /usr/share/easy-rsa/3/* /etc/openvpn/easy-rsa/
Configuração dos Certificados
A geração dos certificados é um passo crucial. Utilize o seguinte script para configurar as variáveis
cat > /etc/openvpn/easy-rsa/vars << 'EOF'
if [ -z "$EASYRSA_CALLER" ]; then
echo "You appear to be sourcing an Easy-RSA *vars* file." >&2
echo "This is no longer necessary and is disallowed. See the section called" >&2
echo "*How to use this file* near the top comments for more details." >&2
return 1
fi
set_var EASYRSA_REQ_COUNTRY "BR"
set_var EASYRSA_REQ_PROVINCE "RJ"
set_var EASYRSA_REQ_CITY "Rio de Janeiro"
set_var EASYRSA_REQ_ORG "Minha Empresa"
set_var EASYRSA_REQ_EMAIL "[email protected]"
set_var EASYRSA_REQ_OU "Setor de TI"
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"
set_var EASYRSA_CA_EXPIRE 3650
set_var EASYRSA_CERT_EXPIRE 3650
set_var EASYRSA_CRL_DAYS 3650
EOF
Agora, rode essa sequência de comandos para gerar os certificados e copia-los para o local correto:
cd /etc/openvpn/easy-rsa/
./easyrsa init-pki
echo -e "\n" | ./easyrsa build-ca nopass
echo -e "\n" | ./easyrsa gen-req server nopass
echo -e "yes" | ./easyrsa sign-req server server
./easyrsa gen-dh
openvpn --genkey secret pki/ta.key
./easyrsa gen-crl
mkdir -p /etc/openvpn/server/certs
cp /etc/openvpn/easy-rsa/pki/{ca.crt,dh.pem,ta.key} /etc/openvpn/server/certs
cp /etc/openvpn/easy-rsa/pki/issued/server.crt /etc/openvpn/server/certs
cp /etc/openvpn/easy-rsa/pki/private/server.key /etc/openvpn/server/certs
Configuração do Servidor OpenVPN
Agora, vamos o arquivo de configuração do servidor com o o comando abaixo:
cat > /etc/openvpn/server/server.conf << 'EOF'
port 11941
proto tcp
dev tun
ca /etc/openvpn/server/certs/ca.crt
cert /etc/openvpn/server/certs/server.crt
key /etc/openvpn/server/certs/server.key
dh /etc/openvpn/server/certs/dh.pem
crl-verify /etc/openvpn/easy-rsa/pki/crl.pem
server 192.168.17.0 255.255.255.0
client-config-dir /etc/openvpn/server/static
topology subnet
push "dhcp-option DNS 172.16.0.1"
push "dhcp-option DOMAIN minhaempresa.local"
push "redirect-gateway autolocal"
push "route 0.0.0.0 0.0.0.0"
keepalive 10 120
tls-auth /etc/openvpn/server/certs/ta.key 0
cipher AES-256-GCM
auth SHA256
comp-lzo
persist-key
persist-tun
verb 4
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
EOF
Habilite e inicie o servidor OpenVPN:
systemctl enable openvpn-server@server
systemctl start openvpn-server@server
Agora vamos ativar o encaminhamento de pacotes IPv4 e aplicar a regra de MASQUERADE com os seguintes comandos:
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 192.168.17.0/24 -j MASQUERADE
Configuração do Cliente
Agora, crie o certificado para o primeiro cliente:
cd /etc/openvpn/easy-rsa
echo -e "\n" | KEY_CN="cliente01" ./easyrsa gen-req cliente01 nopass
echo -e "yes" | ./easyrsa sign-req client cliente01
Copie os certificados para o local correto:
mkdir -p /etc/openvpn/client/cliente01/
cp /etc/openvpn/easy-rsa/pki/private/cliente01.key /etc/openvpn/client/cliente01/
cp /etc/openvpn/easy-rsa/pki/issued/cliente01.crt /etc/openvpn/client/cliente01/
cp /etc/openvpn/easy-rsa/pki/{ca.crt,ta.key} /etc/openvpn/client/cliente01/
Configuração do Cliente OpenVPN
Com um único comando, gere o arquivo de configuração do cliente contendo a chave:
cat > /etc/openvpn/client/cliente01/cliente01.ovpn << EOF
# Modo cliente
client
# Uso de túnel TUN (Layer 3)
dev tun
# Uso do protocolo TCP
proto tcp
# Endereço IP e porta do servidor OpenVPN
remote vpn.minhaempresa.com.br 11941
# Tentar reconectar indefinidamente em caso de falha
resolv-retry infinite
# Não vincular a uma porta específica localmente
nobind
# Persistir chave privada entre reconexões
persist-key
# Persistir túnel entre reconexões
persist-tun
# Verificar o certificado do servidor
remote-cert-tls server
# Uso do algoritmo de criptografia AES-256-CBC
cipher AES-256-GCM
auth SHA256
# Compressão LZO ativada
comp-lzo
# Indicar que a chave TLS-Auth é uma chave de direção
key-direction 1
# Nível de detalhe dos logs (1 a 4, sendo 3 um bom equilíbrio)
verb 3
# Início da seção CA (Certification Authority)
<ca>
`cat /etc/openvpn/client/cliente01/ca.crt`
</ca>
# Fim da seção CA
# Início da seção Certificado do Cliente
<cert>
`cat /etc/openvpn/client/cliente01/cliente01.crt`
</cert>
# Fim da seção Certificado do Cliente
# Início da seção Chave Privada do Cliente
<key>
`cat /etc/openvpn/client/cliente01/cliente01.key`
</key>
# Fim da seção Chave Privada do Cliente
# Início da seção Autenticação TLS
<tls-auth>
`cat /etc/openvpn/client/cliente01/ta.key`
</tls-auth>
# Fim da seção Autenticação TLS
EOF
Configure as opções de IP que o cliente irá obter:
cat > /etc/openvpn/server/static/cliente01 << EOF
ifconfig-push 192.168.17.2 255.255.255.0
push "dhcp-option DNS 172.16.0.1"
push "dhcp-option DOMAIN minhaempresa.local"
push "redirect-gateway autolocal"
push "route 0.0.0.0 0.0.0.0"
EOF
Copie o arquivo /etc/openvpn/client/cliente01/cliente01.ovpn
para a máquina cliente e configure-a para se conectar.
Revogando Certificado do Cliente
Caso seja necessário revogar o certificado de um cliente específico, como no exemplo do cliente01, siga os passos abaixo. Estes comandos garantem a revogação segura do certificado, além de atualizar a Lista de Revogação de Certificados (CRL) e reiniciar o servidor OpenVPN para aplicar as alterações.
cd /etc/openvpn/easy-rsa/
echo -e "yes" | ./easyrsa revoke cliente01
./easyrsa gen-crl
rm -r /etc/openvpn/client/cliente01
rm -r /etc/openvpn/server/static/cliente01
systemctl restart openvpn-server@server
Lembre-se de ajustar o nome do cliente conforme necessário. Essa sequência de comandos assegura a revogação eficaz do certificado, mantendo a integridade e segurança do seu ambiente OpenVPN.
Conclusão
Com esses passos, você configurou com sucesso um servidor OpenVPN multiclient no Rock Linux 9.3. Essa solução oferece uma maneira segura e eficiente de estabelecer conexões entre diferentes dispositivos em sua rede. Personalize as configurações conforme necessário e expanda sua rede de forma segura. Aproveite a liberdade e segurança proporcionadas pelo OpenVPN no ambiente Linux!
Esse artigo foi útil? Colabore com o nosso site para podermos continuar dando mais dicas como essa!
Formas de doação:
- Boleto / Cartão de crédito: https//bit.ly/AprendendoLinux
- Pix: [email protected]
- PicPay: @henrique_fagundes
- PayPal: [email protected]
- Bitcoin: bc1qtnn5z058htzy799dslwrpjcdpm0vuta3vrj28l
Favorecido: Luiz Henrique Marques Fagundes