---
title: 'Autenticação de 2 fatores utilizando o WireGuard VPN'
disqus: hackmd
---
Autenticação de 2 fatores utilizando o WireGuard VPN
===
## Sumario
[TOC]
## Sobre o projeto
Utilizar o WireGuarden VPN para estabalacer um Servidor e Clientes, esse Clientes poderam enviar um tipo de sinal, fazendo o VPN emitir um codigo HASH, o mesmo sera usado para validar a segurança, cobrida pelo Modelo PAM
Atualização semanal
===
Semana 01: Dia 16/02/2023 - 22/02/2023
--
```
Começo das aulas e apresentação dos temas
```
Semana 02: Dia 23/02/2023 - 01/03/2023
--
```gherkin
Crianção dos grupos e definindo qual tema trbalhar.
Criação do HackMD para criar o relato semanal sobre o projeto.
```
Semana 03: Dia 02/03/2023 - 08/02/2023
--
```gherkin
Hugo:
#Estudando o módudo PAM
> É um sistema de autenticação de usuários
em sistemas Linux e Unix, que permite a criação
de módulos adicionais para autenticação, como
senhas, tokens ou impressões digitais.
Que controlar o acesso de usuários ao sistema e
é altamente configurável. (Verificando modelos de autenticação).
Rafael C:
#Estudando sobre o WireGuard VPN
> Estudando o que é WireGuard VPN, como
implementá-lo e como fazer a autenticação dupla.
Rafael R:
# Estudando sobre o Módulo Pam.
> Vi o conceito e o que exatamente ele é.
uma "Autenticação personalizada" e que
os módulos PAM podem ser configurados
para serem usados por aplicativos ou
serviços específicos do sistema, estou
checando essas possibilidades. (Vendo também na
Linguágem C.)
Rogerio:
# Estudando sobre o Módulo Pam.
> Estudando o funcinameto do módelo PAM utilixando
o hash como o segundo autenticador, ao utilizar o
WireGarden VPN, devemos definir um servidor e um
cliente, e quando esse cliente exclusivo mandar
uma mensagem para o servidor, faria o VPN gerar o
codigo hash que seria utilizado pelo PAM.
Thomas:
#Estudando sobre o WireGuard VPN
> Estudando sobre o funcionamento do
WireGuard VPN e sua interação com o kernel Linux.
```
Semana 04: Dia 09/03/2023 - 15/03/2023
--
```gherkin
Hugo:
#Estudando sobre o WireGuard VPN
> Ele usa uma arquitetura simplificada que facilita a implementação,
a configuração e a manutenção do servidor VPN e dos clientes.
Além disso, ele é projetado para ser mais eficiente em termos de
recursos, o que significa que ele pode fornecer um desempenho mais
rápido e mais confiável do que outros protocolos VPN.
(Procurando forma de que os usuários se autentiquem antes de
estabelecerem uma conexão com a rede VPN.)
Rafael C:
#Estudando sobre o WireGuard VPN
> Resumidamente o WireGuard é uma solução de VPN moderna e
segura que oferece alta velocidade e eficiência, além de ser
fácil de configurar e usar. Atualmente estou estudando como
posso implementar o pacote Pam no WireGuard VPN dentro do
Arch Linux.
Rafael R:
#Módulo Pam no Arch Linux.
> Como estou com dificuldade para ver como fazer com a linguagem
C, Resolvi voltar para a "Base" e ver como se faz o módulo Pam no
arch linux, por enquanto apenas tentando entender melhor, estudando
ele.
Rogerio:
#Estudando sobre o WireGuard VPN Junto com Arch Linux.
> Para melhorar o entendimento da criação de servidores e clientes
no WireGuard VPN, a implementação e testes no Arch Linux se tornou
esencial, algumas conplicações com o Arch Linux apareceram, porem
o estudo para contornar a situação segue procedendo.
Thomas:
#Estudando Wireguard VPN
> Estou estudando o funcionamento do Wireguard VPN e a
possibilidade de integração do mesmo no módulo PAM como um dos
fatores. Descobri que o VPN foi escrito em linguagem C, agora
estudarei o funcionamento do código e como implementa-lo no PAM.
```
Semana 05: Dia 16/03/2023 - 22/03/2023
--
```gherkin
Hugo:
#Estudando sobre o WireGuard VPN
> Estudos relacionados a conectividade de multiplas
maquinas a um unico servidor ultilizando o WireGuard VPN
para que a aultentificação de dois fatores seja realizada
Rafael C:
# Estudos do PAM
> Estudei junto com Rafael R. as configurações e
parâmetros do PAM para entender mais sobre
o Modulo PAM, para futuramente conseguir
fazer o Modulo PAM e o WireGuard VPN interagir
na autenticação.
Rafael R:
#Estudos do PAM, pam_oath
> Estudei sobre o módulo pam e sua implementação no
Arch Linux, vendo a configuração e seus parametros,
tentando entender o "Pam base-stack". depois disso
fui verificar o "pam_oath", que providencia uma senha
de uso "Único", por enquanto apenas tentando ver como
posso utilizar e como linkar com o WireGuard.
Rogerio:
#Testeando o WireGuard VPN para iniciar altomaticamente.
> Por falta de tempo essa semana, a implementação teve um pequeno
contra-tempo, alguns teste foram feitos, porem sem muito avanço.
Thomas:
#Estudos do Wireguard VPN
> Estudei sobre as configurações do Wireguard VPN e como
implementá-lo ao Arch Linux. Ao implementar a VPN estudei
maneiras de configuração e iniciei estudos de como interligá-lo
ao módulo PAM de alguma forma que ambos interajam para
realização da autenticação.
```
Semana 06: Dia 23/03/2023 - 29/03/2023
--
```gherkin
Hugo:
# Recomeço do módulo PAM
> revisão dos estudos realizado até agora,
olhando por uma perspectiva diferente, para
poder ir mais a fundo no módulo
Rafael C:
# Começo de verdade do módulo PAM
> Estudando mais a fundo o modulo PAM, junto com o Rafael R.
Rafael R:
# Começo de verdade do módulo PAM
> Depois da "Reunião" do teams descobri que é realmente melhor começar a programar
o próprio módulo PAM, estou pesquisando como se faz isso, mas com a explicação dada
na reunião tive um bom norte.
Rogerio:
# ligação entre o WireGarden VPN e o Celular
> Utilizando a maquina virtual como cliente para conectar meu celular nele podendo
enviar um "codigo" para voltar um outro dado aleatorio.
Thomas:
#Configurações Wireguard VPN
> Estudando tipos de configuração do Wireguard e como utilizá-lo
melhor no projeto em geral. Vendo como utilizar chaves públicas
e privadas e outros elementos para autenticação.
```
Semana 07: Dia 30/03/2023 - 05/04/2023
--
```gherkin
Hugo:
#Integração módulo PAM maquina virtual
> começo da ultilização do módulo PAM na pratica
Rafael C:
# Atividades
> Esse semana, não consegui tempo para estudar o Modulo PAM,
pois estava realizando trabalhos de outras materias.
Rafael R:
# Módulo PAM, vendo como faz em C
> Comecei a ver as ferramentas (Usando o pacman) na máquina virtual e já consegui
ter uma boa ideia de pelo menos o básico do módulo PAM, ainda não entendi exatamente
como funciona as bibliotecas do C nele, mas estou pesquisand
Rogerio:
# ligação entre o WireGarden VPN e o Celular
> Utilização do WireGuarden na criação do servidor e utilização do celular como
cliente, configuração do wg0.conf e aplicativo mobile para tentar estabelecer
conexão entre eles.
Thomas:
#Mudança de foco
> Não estava conseguindo avançar direito com os objetivos
no Wireguard VPN então decidi começar estudos sobre o
módulo PAM para ajudar no progresso com os demais colegas.
```
Semana 08: Dia 06/04/2023 - 12/04/2023
--
```gherkin
Hugo:
#Periodo de Prova
> Tempo gasto com estudos para provas
Rafael C:
# Periodo de Prova
> Periodo de provas, não tive tempo para avançar com os estudos.
Rafael R:
# Periodo de prova
> Consegui avançar um pouco em un código teste, mas ainda não terminei, não tive
tanto tempo para o projeto por conta de provas
Rogerio:
# Em espera
> Perio de Provas, não tive avanço no projeto
Thomas:
# Periodo de provas
> Pela quantidade de provas nesses tempos o estudo
sobre o PAM ficou prejudicado.
```
Semana 09: Dia 13/04/2023 - 19/04/2023
--
```gherkin
Hugo:
# Um passo para trás
> Revisão módulo PAM com maior compreenção do que devo fazer
devido a explicação em sala
Rafael C:
# Pacotes Desnecessarios
> Após explicação da sala de aula sobre o Modulo PAM em linguagem C,
percebi que estava utilizando pacotes desnecessarios para tal implementação.
Rafael R:
# Apresentado em sala de aula, PAM
> Depois da explicação em sala de aula, eu percebi que estava indo nos diretórios
errados, vendo "Posições" erradas, tanto que instalei pacotes sem necessidade, agora
com uma explicação consegui visualizar melhor.
Rogerio:
# WireGuard testado em outro computar de reds distintas.
> Utilização do WireGuard em conjunto com o Rafael R, porem não consegui estabelecer
uma conecção com a maquina dele, voltando a estudas alguns videos para tentar ver
como a conecção deve ser feita.
Thomas:
# Programação
> Em aula com o professor foi apresentado exemplos de utilização
do módulo PAM na programação em C. Utilizando essa base iniciei
estudos de como fazer a programação para realizar a autenticação
que desejamos.
```
Semana 10: Dia 20/04/2023 - 26/04/2023
--
```gherkin
Hugo:
# Progressão módulo PAM
> Avanço no Módulo PAM com a criação de um programa por mais que não 100%
funcional.
Rafael C:
# Avanço no Modulo PAM
> Com o avanço do Modulo PAM, comecei a ajudar o Rogerio no WireGuard.
Rafael R:
# Consegui testar um módulo PAM
> Eu consegui finalmente criar um módulo programando (Mas ainda não tendo muito
noção do código eu si, eu digo dos comandos), porém está tendo um problema, pois eu
fiz um módulo que printa algo na tela no login, ele printa de fato a mensagem, porém
depois é exibido que "Module Unknown" e dá problemas na máquina.
Rogerio:
# WireGuard em dois terminais.
> Utilização do WireGuard em dois terminais diferentres, um como cliente e outro
como servidor, para outros testes e para tentar começar a implentear o modelo pam
como segundo fator de segurança.
Thomas:
# Problemas na máquina
> Tive um problema em meu computador com o Virtual Box, a máquina
que estava utilizando deu algum erro e não conseguia iniciar,
assim não consegui começar a testar algumas coisas sobre o PAM.
```
Semana 11: Dia 27/04/2023 - 03/05/2023
--
```gherkin
Hugo:
# A progresso do interronpida
> A Pregressão do projeto foi interrompida durante esta semana.
Rafael C:
# Sem Avanço
> Não tive tempo para avançar no projeto,
pois estava estudando "Listas Circulares" para uma apresentação.
Rafael R:
# Não tive tempo para pesquisar
> Eu ainda tentei arrumar o módulo, porém não sei exatamente onde está o erro, não
sei se estou compilando o ".so" errado ou se estou colocando no diretório errado, ou
se é algum erro de escrita no "/usr/lib/security"
Rogerio:
# Reorganização do projeto
> com base nas dificuldades do projeto, foi acordado com todos os membros
que se as adiversidades forem muito grnade, focaremos mais no projeto
voltado para o sistema PAM, não tivemos um avanço nesta semana.
Thomas:
# Testes PAM
> Realização de testes simples por enquanto, como printar
uma mensagem na tela se o login for bem sucedido. Estudando
outros tipos de testes para melhorar a compreensão.
```
Semana 12: Dia 04/05/2023 - 10/05/2023
--
```gherkin
Hugo:
# Junção das partes do projeto
> com a conexão entre dois terminais, com algumas falhas na conexão não
conseguimos integrar o PAM ainda.
Rafael C:
# Conexão com dois terminais
> Com o Rogerio, conseguimos fazer a conexão com dois terminais.
Rafael R:
#
> Como thomas falou anteriormente, com trabalhando juntos a gente conseguiu fazer
funcionar, eu estava escrevendo errado no diretório final, havia escrevendo errado
"Required" e "Auth", mas agora está indo melhor
Rogerio:
# conexão entre os termianis
> Com alguns testes conseguimos estabeleser uma conexão entre doisterminais, porem
a conexão não estava bem feita e não conseguimos tranferir os dados da forma que
queriamos, voltamos a estudar mais sobre o link entre o servidor e o cliente.
Thomas:
# Continuação dos testes com PAM
> Tive algumas ideias para testar com o PAM porém os
resultados não estão sendo agradáveis. Não sei exatamente
o que de errado estou fazendo e estou estudando melhor para
avançar. Tentei fazer um módulo para criação de uma palavra
de segurança que deveria ser escrita junto ao login para
liberar o acesso mas está dando errado.
```
Semana 13: Dia 11/05/2023 - 17/05/2023
--
```gherkin
Hugo:
# erro no sistema
> com os erros que ocorreram estamos verificando suas fontes para poder
corrigi-los alguns erros mostram que o problema está na conexão IP a próxima
alternativa é configurar o "eth0" na máquina fisica.
Rafael C:
# Trabalho em equipe, PAM
> Trabalhei junto com rafael e thomas para tentar fazer o código de ambos funcionar,
tivemos certa dificuldade mas o andamento do projeto está bem.
Rafael R:
# Testes de códigos do PAM, e uma falha.
> Tive ideias também para códigos e felizmente eles estão funcionando, não
exatamente para o projeto, mas testei pam de horário, tentei fazer de senha e também
de rede (que deu errado).
Rogerio:
# falha na conexão
> O cliente esta conseguindo enviar arqueivos para o servidor, porem o servidor
manda arquivos para o cliente e mesmo não esta recebendo, alguns erros indicam que
poder ser a conexão IP, a interface do WireGuard mostra que esta tudo certo então
a unica alternativa que falta é a posivel configuração fisica da maquina o "Eth0".
Thomas:
# Testes funcionando
> Algumas ideia de autenticação que tive começaram a dar certo. Entendi melhor como
funciona o código do PAM e agora estou conseguindo testar códigos melhores.
```
Semana 14: Dia 18/05/2023 - 24/05/2023
--
```gherkin
Hugo:
# mudanças no eth0
> configuramos o eth0 para estabelecer a conexão entre duas maquinas e com o
auxilio do programa "tdpdump" conseguimos verificar o trafego de IPs para saber
onde a conexão está chegando.
Rafael C:
# Análise do Wireguard
> Vendo comandos no PAM para o wireguard, tentando descobrir se há alguma forma do
Wireguard mandar arquivos para o usuário para a verificação do pam.
Rafael R:
# Fazendo testes (dando errado) mas indo
> Trabalhando para ver comandos utéis no PAM para o wireguard, vendo se dá para
verificar o IP do usuário, mas por enquanto não parece estar sendo uma opção
plausível.
Rogerio:
# Correção de erros
> Após modificar alguns arquivos do "Eth0" foi posivel estabelecer uma conexão entre
as maquinas sem muitos problemas, mas para uma melhor verificação foi utilizado um
programa chamado "tcpdump", ele permite olhar o trafego de IPs para verificar para
onde a conexão esta passando.
Thomas:
# Continuação dos testes
> Realizei testes do PAM relacionados com horário e estou pesquisando comandos mais
úteis para tentar fazer a verificação do Wireguard.
```
Semana 15: Dia 25/05/2023 - 31/05/2023
--
```gherkin
Hugo:
# junção
> resolvemos unir as duas partes do projeto, verificamos que o Ping é um bom
método para verificar se a conexão foi feita.
Rafael C:
# Reta final
> Com o grupo decidimos que vamos dar foco em juntar as partes finais do trabalho,
juntando a ideia do Ping para a verificação junto com wireguard já configurado.
Rafael R:
# Testes com Ping.
> Teve a ideia do Ping, estou estudando com ele para ver essa possibilidade, mas
também verificando outras possibilidades.
Rogerio:
# PAM e WirGuard em teste
> Decidimos juntar as partes que temos do projeto para dar inico a finalização do
mesmo, com alguns testes decidimos utilizar o ping como um metodo de verificação
quando ambos estão conectados.
Thomas:
# Continuação dos testes
> Em grupo observando que a, provável, melhor maneira para testar a conexão com
o Wireguard era pelo comando "ping" do linux. Tentamos um fazer um código inicial
que teria que verificar a saída do comando mas não funcionou. Agora estamos vendo
outras maneiras de tentar analizar a saída do comando.
```
Semana 16: Dia 01/06/2023 - 07/06/2023
--
```gherkin
Hugo:
# dois fatores
> a conexão está estabelecida porém o PAM não está realizando os dois fatores,
utilizamos novos comandos em C para fazer a análise da saída do "ping".
Rafael C:
# Testes junto com o grupo
> Como explicado por Thomas e Rafael, alguns comandos não agiam como planejavamos,
então estamos fazendo um pouco do zero, mas ainda estamos em uma boa caminhada.
Rafael R:
# Testes dando um pouco errado.
> Infelizmente tivemos um problema, os comandos que aprendemos no C não funcionavam
exatamente como planejado, utilizando comandos para abertura de arquivos que não
exatamente funcionavam.
Rogerio:
# Falha ao tentar utilizar o ping
> com alguns comandos que testamos junto do PAM não estavamos conseguindo fazer a
verificação de dois fatores, resolvemos trocar os comandos utilizados para verificar
o ping so cliente.
Thomas:
# Continuação de testes
> Pesquisamos diversos comandos em C que supostamente fariam a análise da saída
do "ping" mas estava dando muito certo. Descobrimos que os comandos que tentamos
não conseguiam fazer o que queríamos.
```
Semana 17: Dia 08/06/2023 - 14/06/2023
--
```gherkin
Hugo:
# 2 fatores + Wireguard
> a conexão foi estabelecida e o PAM está fazendo a verificação com o "ping"
o que deixa o usuário utilizar o Server.
Rafael C:
# Ajuda com Wireguard
> Ajudei o Rogerio a fazer os testes com o wireguard, principalmente com a conexão
de cliente e servidor, queremos que o servidor e cliente se "Pinguem" para a
verificação com o ping vindo PAM.
Rafael R:
# Vendo a parte teorica do PAM
> Enquanto o thomas estava fazendo mais o código do PAM, eu fui um pouco a parte
Teorica do PAM, tentando entender mais sobre os comandos que utilizamos, já que
estavam sendo utilizados sem muito conhecimento por trás.
Rogerio:
# WireGuard e PAM unidos
> Os teste utilizando o PAM deram certo, o WireGuard estabelece uma conexão entre o
cliente e o servidor, e o PAM consegue "pingar" para verificar se esta funciando,
apos a verificação o usuario do servidor pode esta livre para poder usar a maquina.
Thomas:
# TESTE DANDO CERTO
> Conseguimos uma forma de analisar a saída do "ping" através do comando
"system('ping -c 1 10.50.25 > /root/pam_teste/ping.txt')". Isso fez com que a
saída do comando seja colocada num txt criado e assim possamos analisar se
o "ping" está dando certo e se a conexão com o Wireguard está ativa.
```
Semana 18: Dia 15/06/2023 - 21/06/2023
--
```gherkin
Hugo:
# Projeto finalizado
> projeto está finalizado, com seu objetivo alcançado
Rafael C:
# Projeto finalizado
> Finalmente tudo está ocorrendo bem, o trabalho foi um sucesso.
Rafael R:
# PAM pronto.
> Felizmente o trabalho deu certo, o código está dando certo e apenas estamos dando
toques finais, tentando "Encurtar" os comandos, deixar mais simples.
Rogerio:
# WireGuard pronto
> O projeto esta no final e com tudo dando certo.
Thomas:
# PAM pronto
> Código pronto e dando certo. Apenas demos uns toques finais para deixá-lo mais
apresentável e condizente.
```
Semana 19: Dia 22/06/2023
--
```gherkin
Apresentação do trabalho.
```
###### tags: `Documentation`