Pular para o conteúdo principal

Descomplicando OpenVPN/Wireguard com Firewall UFW




 Descomplicando OpenVPN/Wireguard com Firewall UFW


Esse tutorial tem intuito de utilizar VPN com a ferramenta Openvpn ou Wireguard no debian 12.

Primeira parte: Construir uma vpn com Openvpn, entre um servidor e cliente, utilizando chaves para autenticação:

Segunda parte: Montar uma vpn com uma sede e duas filiais.

Obs: Esse tutorial é somente para montar uma VPN simples e rápida, outra dica foi necessário liberar meu ip público no modem adsl ou firewall, para as portas 1194 e 51820, guarde somente essa informação, durante o decorrer essa informação será assimilada.


O Que é VPN?


VPN (Virtuap Private Network) é um meio no qual estalece uma conexão entre dispositivos por meio da internet, sendo o meio em uma rede privada e segura.

Tipos de vpn:


Gateway to Gateway --> Conectar 2 servidores diretamente. (Ex: Ligar 2 filiais)

Host to Host --> Conectar máquina para outra máquina (Ex: Hamachi)

Host to Gateway --> Utilizada para conectar máquina em um rede corporativa (Ex: Estação de trabalho ligada na empresa)


OpenVPN


Tutorial para criar uma vpn (Server to Client)

Criando primeiramente a estrutura do Openvpn Server, deve instalar o pacote openvpn e easy-rsa


root@vpnserver:~# hostnamectl set-hostname vpnserver

root@vpnserver:~# apt install openvpn easy-rsa -y

root@vpnserver:~# mkdir -p /var/log/openvpn/

root@vpnserver:~# chmod 755 /var/log/openvpn


Criando estrutura da pasta PKI e realizando ajuste nas váriaveis, Ca (Autoridade certificadora), Assinando certificado(Servidor e cliente), DH (Diffie-Hellman):

Obs: Em 'pass phrase' , recomenda-se utilizar um o máximo seguro possíve.


root@vpnserver:~# /usr/share/easy-rsa/easyrsa init-pki

root@vpnserver:~# cat << EOF >> /etc/openvpn/server/pki/vars

set_var EASYRSA_REQ_COUNTRY    "BR"

set_var EASYRSA_REQ_PROVINCE   "DISTRITO FEDERAL"

set_var EASYRSA_REQ_CITY       "BRASILIA"

set_var EASYRSA_REQ_ORG        "Spinal Corp"

set_var EASYRSA_REQ_EMAIL      "spinal@spinal.com"

set_var EASYRSA_REQ_OU         "Community"

set_var EASYRSA_ALGO           "ec"

set_var EASYRSA_DIGEST         "sha512"

EOF

root@vpnserver:~# /usr/share/easy-rsa/easyrsa build-ca

root@vpnserver:~# /usr/share/easy-rsa/easyrsa gen-req server nopass

root@vpnserver:~# /usr/share/easy-rsa/easyrsa sign-req server server

root@vpnserver:~# /usr/share/easy-rsa/easyrsa gen-dh

root@vpnserver:~# /usr/share/easy-rsa/easyrsa gen-req client nopass

root@vpnserver:~# /usr/share/easy-rsa/easyrsa sign-req client client

root@vpnserver:~# openvpn --genkey secret /etc/openvpn/server/pki/static.key


Mode de arquivo  Servidor (server.conf)

dev tun

ifconfig 10.100.0.1 10.100.0.2

port 1194

verb 4

keepalive 10 120

persist-key

persist-tun

float

proto udp

cipher AES-256-GCM

auth SHA256

ca /etc/openvpn/server/pki/ca.crt

cert /etc/openvpn/server/pki/issued/server.crt

key /etc/openvpn/server/pki/private/server.key

tls-server

tls-auth /etc/openvpn/server/pki/static.key 0

dh /etc/openvpn/server/pki/dh.pem

log-append /var/log/openvpn/openvpn.log


Inicializar o serviço e habilita-lo


root@vpnserver:/etc/openvpn# systemctl enable openvpn@server --now


No outro servidor cliente ou estação de trabalho, configurar o cliente:

Obs: Copie os arquivos do servidor para o cliente na seguinte pasta /etc/openvpn/client/:

Resultado do seguinte comando (gen-req client nopass e sign-req client client) no qual foi gerado no servidor, exemplo de cópia com o comando scp.


root@vpnclient:/etc/openvpn# hostnamectl set-hostname vpnclient

root@vpnclient:/etc/openvpn# apt install openvpn easy-rsa -y

root@vpnclient:/etc/openvpn/client# scp root@192.168.15.126:/etc/openvpn/* /etc/openvpn/client

root@vpnclient:/etc/openvpn/client# ls

ca.crt client.crt  client.key static.key

root@vpnclient:/etc/openvpn# cat client.conf 

dev tun

proto udp

ifconfig 10.100.0.2 10.100.0.1

remote 192.168.15.126

resolv-retry infinite

nobind

persist-key

persist-tun

cipher AES-256-CBC

auth SHA256

ca /etc/openvpn/client/ca.crt

cert /etc/openvpn/client/client.crt

key /etc/openvpn/client/client.key

tls-client

tls-auth /etc/openvpn/client/static.key 1

verb 3

keepalive 10 120

remote-cert-tls server

root@vpnclient:/etc/openvpn# systemctl enable openvpn@client --now


Realizar o teste de conexão e fechar o tunel:


root@vpnclient:/etc/openvpn# ping 10.100.0.1 -c1

PING 10.100.0.1 (10.100.0.1) 56(84) bytes of data.

64 bytes from 10.100.0.1: icmp_seq=1 ttl=64 time=1.26 ms


Dicas: Criando um Arquivo ovpn:

Altere os campos ca, cert,key e tls-auth para o seguinte configuração:

<Tag></tag>

Adicione esse argumento key-direction 1


dev tun

proto udp

ifconfig 10.100.0.2 10.100.0.1

remote 177.41.135.74

;remote 192.168.15.126

resolv-retry infinite

nobind

persist-key

persist-tun

cipher AES-256-CBC

auth SHA256

tls-client

verb 3

keepalive 10 120

remote-cert-tls server

key-direction 1

<ca>

-----BEGIN CERTIFICATE-----

Insira os valores do arquivo aqui

-----END CERTIFICATE-----

</ca>

<cert>

-----BEGIN CERTIFICATE-----

Insira os valores do arquivo aqui

-----END CERTIFICATE-----

</cert>

<key>

-----BEGIN PRIVATE KEY-----

Insira os valores do arquivo aqui

-----END PRIVATE KEY-----

</key>

<tls-auth>

-----BEGIN OpenVPN Static key V1-----

Insira os valores do arquivo aqui

-----END OpenVPN Static key V1-----

</tls-auth>


Testando a configuração ovpn


root@vpnclient:/etc/openvpn# systemctl stop openvpn@client

root@vpnclient:/etc/openvpn# /usr/sbin/openvpn client_full_mod.ovpn


Aplicar segurança no Servidor do Openvpn (Recomendação que seja feita tambem no cliente), mas para fins de documentação será implatada somente no servidor:

Neste tutorial estaremos utilizando o ufw para liberar a porta 22 tcp e 1194 udp e bloquear o ping.


root@vpnserver:/etc/openvpn# apt-get install ufw -y

root@vpnserver:/etc/openvpn# echo 'export PATH=$PATH:/usr/sbin' >> /root/.bashrc

root@vpnserver:/etc/openvpn# echo "y" | ufw enable

root@vpnserver:/etc/openvpn# ufw allow 22/tcp

root@vpnserver:/etc/openvpn# ufw allow 1194/udp

root@vpnserver:/etc/openvpn# ufw deny proto icmp


Wireguard:

Conforme a figura abaixo, será configurada uma vpn com a sede e duas filiais.



Deve-se instalar o wireguard e configurar a chave pública e privada no servidor, será habilitado o serviço e liberada a porta 51820 com protocolo udp.


root@vpnserver:/etc/openvpn# apt install wireguard -y

root@vpnserver:/etc/openvpn# wg genkey >> /etc/wireguard/sede-privatekey

root@vpnserver:/etc/openvpn# wg pubkey < /etc/wireguard/sede-privatekey > /etc/wireguard/sede-publickey

root@vpnserver:/etc/openvpn# chmod 600 /etc/wireguard/sede-privatekey

root@vpnserver:/etc/wireguard# cat sede-privatekey 

4DzdIrHcAKybELErqTK93qys5twNPSmX5+lzZ1xD8Uk=

root@vpnserver:/etc/openvpn# cat << EOF > /etc/wireguard/sede-server.conf

[Interface]

Address = 10.10.0.1/24

SaveConfig = true

ListenPort = 51820

PrivateKey = 4DzdIrHcAKybELErqTK93qys5twNPSmX5+lzZ1xD8Uk=

root@vpnserver:/etc/openvpn# systemctl enable wg-quick@wg0 --now

root@vpnserver:/etc/wireguard# ufw allow 51820/udp


Criando configuração do cliente 1: (Mesmo procedimento para o cliente 2 - No futuro do tutorial, volte aqui)


root@vpnclient:~# echo 'export PATH=$PATH:/usr/sbin' >> /root/.bashrc

root@vpnclient:~# apt-get install resolvconf wireguard -y

root@vpnclient:~# cd /etc/wireguard/

root@vpnserver:/etc/openvpn# wg genkey >> /etc/wireguard/filial01-privatekey

root@vpnserver:/etc/openvpn# wg pubkey < /etc/wireguard/filial01-privatekey > /etc/wireguard/filial01-publickey

root@vpnserver:/etc/openvpn# chmod 600 /etc/wireguard/filial01-privatekey

root@vpnclient:/etc/wireguard# cat filial01-publickey 

5pYcSEdAl2luanDXeQqftvRtwPjUtUL+zjnrmINPxwk=

root@vpnclient:/etc/wireguard# cat << EOF > /etc/wireguard/filial01.conf

[Interface]

Address = 10.10.0.2/24

PrivateKey = OJzd3XXqfVfTciBfi2HRUMVmCy7QJ0O9hAoN1XVJVlg=

DNS = 8.8.8.8


[Peer]

PublicKey = UM/0dh6kXqgyzdLKYNNe4hyhk/c5Rf0UZMuOmWm+/Ew=

AllowedIPs = 10.10.0.1/32, 10.10.0.2/32, 10.10.0.3/32

Endpoint = 192.168.15.126:51820

# Endpoint = 177.41.135.74:51820

EOF

root@vpnclient:/etc/wireguard# wg-quick up /etc/wireguard/wg0-client.conf

root@vpnclient:/etc/wireguard# wg-quick down /etc/wireguard/wg0-client.conf

Teste de conexão, pode ser utilizado o comando ping entre os mesmos.


Habilitar o cliente via systemd


root@vpnclient:/etc/wireguard# systemctl enable wg-quick@wg0-client --now


No lado do servidor libere a chave pública e seu respectivo ip para realizar a conexão:


root@vpnserver:/etc/wireguard# wg set sede-server peer 5pYcSEdAl2luanDXeQqftvRtwPjUtUL+zjnrmINPxwk= allowed-ips 10.10.0.2


Repetir os comandos anterior da filial 01 para filial 02, deve ser inserir as informações da nova chave pública e privada e inserir o ip desejado e liberar novamente a nova chave e o ip configurado conforme modelo abaixo:

Obs: A configuração é a mesma, somente lembre que a chave privada é a nova criada pela servidor e a chave pública é a mesma do servidor:


root@vpnserver:/etc/wireguard# wg set sede-server peer 1jka2gimya9dCs4fLbYFC8e5kMEE1OtMdRL0QJ/bH0U= allowed-ips 10.10.0.3


No servidor podemos verificar que há conexão com 2 filiais com ips 10.10.0.2 e 10.10.0.3


root@vpnserver:/etc/wireguard# wg show

interface: sede-server

  public key: UM/0dh6kXqgyzdLKYNNe4hyhk/c5Rf0UZMuOmWm+/Ew=

  private key: (hidden)

  listening port: 51820


peer: 1jka2gimya9dCs4fLbYFC8e5kMEE1OtMdRL0QJ/bH0U=

  endpoint: 192.168.15.129:46887

  allowed ips: 10.10.0.3/32

  latest handshake: 4 seconds ago

  transfer: 532 B received, 476 B sent


peer: 5pYcSEdAl2luanDXeQqftvRtwPjUtUL+zjnrmINPxwk=

  endpoint: 192.168.15.125:54432

  allowed ips: 10.10.0.2/32

  latest handshake: 13 minutes, 30 seconds ago

  transfer: 308 B received, 220 B sent


Observações finais, caso montou sua vpn com wireguard ou openvpn internamente com ip interno, somente como mencionado liberar no seu modem adsl ou firewall corporativo, liberar a porta configurada para que realize o tunelamento das conexões com ip público e interligando redes distintas
Qualquer dúvida veja a configuração com o seguinte ip: 177.41.135.74.

Ass: Luiz Guilherme Nunes Fernandes
Email: narutospinal@gmail.com
Informativo: Entusiasta e colaborador em Software Livre.



Comentários

Postagens mais visitadas deste blog

Instale o Telegram Desktop 0.8

Telegram Desktop é um software livre cliente multi-plataforma para o GNU\ Linux, Windows e Mac OS. O cliente tem suporte para notificações , enviar mensagens e arquivos de mídia e inserção de emoji . Enquanto o cliente Telegram desktop ainda está em desenvolvimento , que permite aos usuários enviar e receber mensagens a partir do desktop Linux, tem um recurso para sincronização em todas as plataformas com suporte , para que você possa ler as suas notificações móveis , tanto do computador e telefone , sem faltar nada. Além disso, tem o apoio de transferência de arquivos e os usuários podem criar grupos de até 200 pessoas e enviar mensagens .   A última versão disponível é Telegram do Desktop 0.8 , que foi lançado recentemente, vindo com mudanças, algumas são:   Adicionado comentário mensagens antes de encaminhadas;   Hashtags sugestões em novos campos de mensagens e de busca (com base em pesquisas recentes); Bot...

Como Instalar a Fonte ttf-mscorefonts (Times New Roman, Arial, etc) no Ubuntu, Linux Mint e Derivados

Quando instalamos uma distribuição GNU/Linuxmsabemos que vem o LibreOffice por padrão porém geralmente não vem instalado a fonte ttf-mscorefonts que contém as fontes Times New Roman, Arial, etc, como essas fontes são muito útil para os universitários, pelo mundo corporativo e a Associação Brasileira de Normas Técnicas (ABNT), exige que os trabalhos sejam entregues nas fontes Times New Roman e Arial, por meio desta postagem espero pode ajudar a todos com a instalação da fonte ttf-mscorefonts que contém essas fontes. Ao instalar o GNU/Linux abra o terminal e execute o comando: $ sudo apt-get install ttf-mscorefonts-installer Leia os termos de uso e avance clicando em “Ok” Agora aceite os termos de uso clicando em “Sim” Pronto agora abra o LibreOffice e veja se as fontes Times New Roman, Arial estão instaladas. Caso ocorra algum erro ou precisa reinstalar, execute: $ sudo apt-get install --reinstall ttf-mscorefonts-installer

Aprenda a apagar as linhas vazias no LibreOffice Calc

Estes dias eu precisei realizar uma tarefe um tanto quanto inusitada: apagar as linhas vazias de uma planilha do LibreOffice Calc. E após ter pesquisado muito na internet (além de ter tendado de todas as formas fazer isso), acabei achando a  solução nesta lista de discussão . Basicamente, este procedimento é possível através da implementação de Macros no LibreOffice.  Mas o que são Macros? Os Macros são definidos na programação como um padrão de entrada que é substituído por um novo padrão de saída, e podem ser aplicados como recurso de linguagem em programação, em planilhas, serem aplicadas para converter entradas periféricas em comandos e ações dentro do sistema operacional. Em outras palavras, os Macros são códigos que tem a finalidade de “pegar algo” afim de “transformar em outro algo”. Abaixo iremos detalhar em um passo-a-passo o procedimento para implementação de uma Macro no Calc que irá permitir-nos apagar linhas vazia dentro das nossas planilhas. Vamos l...

Como Instalar a Fonte ttf-mscorefonts (Times New Roman, Arial, etc) no Ubuntu, Linux Mint e Derivados

Quando instalamos uma distribuição GNU/Linuxmsabemos que vem o LibreOffice por padrão porém geralmente não vem instalado a fonte ttf-mscorefonts que contém as fontes Times New Roman, Arial, etc, como essas fontes são muito útil para os universitários, pelo mundo corporativo e a Associação Brasileira de Normas Técnicas (ABNT), exige que os trabalhos sejam entregues nas fontes Times New Roman e Arial, por meio desta postagem espero pode ajudar a todos com a instalação da fonte ttf-mscorefonts que contém essas fontes. Ao instalar o GNU/Linux abra o terminal e execute o comando: $ sudo apt-get install ttf-mscorefonts-installer Leia os termos de uso e avance clicando em “Ok” Agora aceite os termos de uso clicando em “Sim” Pronto agora abra o LibreOffice e veja se as fontes Times New Roman, Arial estão instaladas. Caso ocorra algum erro ou precisa reinstalar, execute: $ sudo apt-get install --reinstall ttf-mscorefonts-installer

Como Instalar o Gophish (Um Guia para Entender o Conceito de Phishing e Como se Proteger Dele)

  O que é Gophish? Gophish é uma ferramenta de código aberto que permite aos usuários realizar campanhas de engenharia social para coletar credenciais de autenticação e outros dados confidenciais (phishing). Esta ferramenta foi projetada para ser usada por pesquisadores de segurança para melhorar a segurança da rede. Gophish foi criado em 2016 por Jordan Wright, um pesquisador de segurança baseado em San Francisco, EUA. Sendo também uma das melhores ferramentas do mercado para realizar testes de segurança contra phishing, caso seja utilizado de forma fraudulenta.   Como Gophish funciona? O Gophish é executado em um servidor, o que significa que você precisa ter acesso a um servidor para usar a ferramenta. Depois de configurada, a ferramenta pode ser usada para criar simulações de phishing com diferentes tipos de conteúdo, como mensagens de e-mail, páginas da web e mensagens de texto. Esses exercícios de phishing são enviados aos destinatários pretendidos, que são os usuár...

Como Instalar o SuperTuxKart 1.1

SuperTuxKart é um jogo de corrida disponível para Linux, Windows e Mac OS X. A versão mais recente disponível é SuperTuxKart 1.1 , que vem com uma lista enorme de recursos e algumas podem ser vistas abaixo: Melhor manipulação multiplayer online; Melhorias na interface do usuário; A nova arena “Pumpkin Park”; Melhor suporte móvel; A capacidade de exibir emojis e vários outros recursos; Em relação à rede e Internet, há suporte para IPv6, suporte de IA para servidores de rede local,; Vários problemas de atraso resolvidos e outras melhorias.   Para saber todas as mudanças clique aqui . Para instalar SuperTuxKart 1.1 no Ubuntu, Linux Mint , Elementary OS e derivados, execute:   $ sudo add-apt-repository ppa:stk/dev $ sudo apt-get update $ sudo apt-get install supertuxkart 

FLISOL-DF 2024 Inscrições Abertas!

FLISOL-DF 2024, será no dia 27 de abril no Centro Universitário Estácio de Brasília. As inscrições são gratuitas e podem ser feitas nos links abaixo: Participante: https://flisoldf.blog.br/inscreva-se/ Submissão de palestras: https://flisoldf.blog.br/submissao-de-palestras/ Colaborador: https://flisoldf.blog.br/quero-colaborar/   Mais informações podem ser vistas no site oficial do evento: https://flisoldf.blog.br/  

Comandos Úteis para o Linux Mint, Ubuntu e Derivados

Alguns dias sugeriram que eu postasse alguns comandos uteis  utilizados no Linux Mint e para o Ubuntu, mas com tantas distros baseadas no Ubuntu esses comandos também podem ser utilizados nas distros como: Ubuntu 15.04, Ubuntu 14.10, Ubuntu 14.04 , Linux Mint 17.2, Linux Mint 17.1, Linux Mint 17, Pinguy OS 14.04, Elementary OS 0.3, Deepin 2014, Peppermint Five, LXLE 14.04 and Linux Lite 2 2 , DuZeru, Kaiana e derivados . Segue alguns comandos importantes para manutenção do sistema, principalmente para usuários iniciantes... 1- Atualizar a lista de pacotes:  $ sudo apt-get update 2- Atualizar toda a distro:  $ sudo apt-get -f dist-upgrade ou update-manager -d -c 3- Instalar pacotes:  $ sudo apt-get install [nome do pacote] 4- Procurar arquivos corrompidos:  $ sudo apt-get check 5- Corrigir problemas de dependências, concluir instalação de pacotes pendentes e outros erros: $ sudo apt-get -f install 6- Se o comando sudo apt-get -f install nã...

Como Instalar o Kernel 5.13

F oi publicada a versão final do kernel 5.13 e algumas novidades desta versão são: Suporte inicial e inicial para Apple M1;   Novo módulo de segurança Linux "Landlock";   Suporte gráfico inicial para Alder Lake S. Suporte para AMD FreeSync HDMI;   Novo controlador de resfriamento Intel ; Suporte para Realtek RTL8156 e RTL8153D ; Novo suporte de controlador para controlador de jogo Luna da Amazon;   Suporte para touchpad e teclado para laptops Microsoft Surface recentes.   Para saber todas as novidades clique aqui .  Para instalar o Kernel 5.13 no Ubuntu, Linux Mint, Debian e sistemas derivados 64 Bits, execute: $ wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.13/amd64/linux-headers-5.13.0-051300_5.13.0-051300.202106272333_all.deb $ wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.13/amd64/linux-headers-5.13.0-051300-generic_5.13.0-051300.202106272333_amd64.deb $ wget -c https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.13/amd...

Certificado FLISOL-DF 2024 Liberado

Foi disponibilizado o link para baixar o certificado de Participante e de Palestrante do FLISOL-DF2024. Para baixar o seu clique no link: https://certified.flisol.app/ Para saber sobre os dados estatísticos do FLISOL 2024 clique no link: https://flisol.info/FLISOL2024/Brasil/Estatisticas