--- 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`