Skip to content

naldodj/naldodj-2FA-wsl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 

Repository files navigation

naldodj-wsl-2FA

Autenticação 2FA para Usuário Root no WSL

Introdução

O Windows Subsystem for Linux (WSL) é uma ferramenta poderosa que permite aos desenvolvedores executar um ambiente Linux diretamente no Windows. No entanto, a segurança é uma preocupação importante, especialmente quando se trata de acessar o usuário root. Neste post, vamos mostrar como configurar a autenticação de dois fatores (2FA) para o usuário root ao acessar o WSL, garantindo uma camada adicional de segurança.

Objetivo

Vamos configurar um script de login que valida a senha do root e usa autenticação 2FA baseada em Time-based One-Time Password (TOTP), usando ferramentas comuns como openssl, oathtool, e perl.

Passo 1: Instalar as Ferramentas Necessárias

Primeiro, precisamos garantir que temos todas as ferramentas necessárias instaladas. Isso inclui openssl, oathtool, e perl.

sudo apt-get update
sudo apt-get install openssl oathtool perl

Para os scripts em Lua. Incluir lua, lua-posix

sudo apt-get install lua5.4
sudo apt-get install lua-posix

Passo 2: Gerar e Armazenar a Chave Secreta

Criar o diretório /root/2FA/

makedir /root/2FA/

Criar o(s) diretório(s)

makedir /root/scripts/
makedir /root/scripts/sh/
makedir /root/scripts/lua/
makedir /root/scripts/ps/
makedir /root/scripts/hb/
makedir /root/scripts/perl/

Gerar uma chave secreta que será usada para gerar os códigos TOTP. Vamos armazenar essa chave em um arquivo seguro em /root/2FA/.

Crie um script chamado: get2FAkey.sh

Ou, Crie um script chamado: get2FAkey.lua

Ou, ainda, Crie um script chamado: get2FAkey.ps1

Ou: get2FAkey.prg

Execute o script para gerar e armazenar a chave secreta:

chmod +x /root/scripts/sh/get2FAkey.sh
/root/scripts/sh/get2FAkey.sh

ou

chmod +x /root/scripts/lua/get2FAkey.lua
/root/scripts/lua/get2FAkey.lua

ou

chmod +x /root/scripts/ps/get2FAkey.lua
pwsh /root/scripts/ps�/get2FAkey.ps1

ou, após compiar: get2FAkey.prg

chmod +x /root/scripts/hb/get2FAkey
/root/scripts/hb/get2FAkey

Passo 3: Configurar o Script de Login

Agora, vamos criar um script de login que valida a senha do root e solicita o código 2FA.

Crie um script chamado: login.sh ou, Crie um script chamado: login.lua ou, ainda, Crie um script chamado: login.ps1 ou: login.prg

Passo 4: Configurar o Script para validar o Login

Vamos precisar de um scrit check_password.pl , em Perl, que será utilizado para validar a senha pelos demais scripts.

Passo 5: Testar o Script de Login

  1. Defina permissões de execução para o script:

    chmod +x /root/scripts/sh/login.sh

    ou

     chmod +x /root/scripts/lua/login.lua

    ou

     chmod +x /root/scripts/ps/login.ps1

    ou, após compilar: login.prg

     chmod +x /root/scripts/hb/login
  2. Execute o script de login:

    /root/scripts/sh/login.sh

    ou

    /root/scripts/lua/login.lua

    ou

    pwsh /root/scripts/ps/login.ps1

    ou, opcionalmente e através do script run_pslogin.sh

    /root/scripts/ps/run_pslogin.sh

    ou, após compilar: login.prg

    /root/scripts/hb/login
  3. Configure o aplicativo de 2FA (como Microsoft Authenticator, Google Authenticator ou Authy) com a chave secreta armazenada em: sh_2FAsecret_key.txt ou lua_2FAsecret_key.txt ou ps_2FAsecret_key.txt ou hb_2FAsecret_key.txt ou

  4. Configure o script para ser executado no login:

    Salve os scripts em suas respectivas pastas

    /root/scripts/sh/get2FAkey.sh
    /root/scripts/sh/login.sh
    
    /root/scripts/lua/get2FAkey.lua
    /root/scripts/lua/login.lua
    
    /root/scripts/perl/check_password.pl
    
    /root/scripts/ps/get2FAkey.ps1
    /root/scripts/ps/login.ps1
    /root/scripts/ps/run_pslogin.sh
    
    /root/scripts/hb/get2FAkey.prg
    /root/scripts/hb/login.prg
    /root/scripts/hb/get2FAkey
    /root/scripts/hb/login
    

    Edite o arquivo .bashrc do root:

    nano /root/.bashrc

    Adicione a seguinte linha ao final do arquivo:

    #Scripts Login
    #/root/scripts/sh/login.sh
    #/root/scripts/lua/login.lua
    #/root/scripts/ps/run_pslogin.sh
    /root/scripts/hb/login

    Teste a configuração: Feche o terminal WSL e abra novamente com o comando:

    wsl --user root

Passo 6: Garanta que os scripts não possam ser acessados via \wsl.localhost\ no windows

  1. **Defina o usuário padrao
sudo editor /etc/wsl.conf
[user]
default=[NonRootUser]
  1. **Alterar o dono do arquivo para o usuário root:
sudo chown root:root /etc/wsl.conf
  1. **Alterar as permissões do arquivo para que apenas o dono (root) tenha acesso:
sudo chmod 600 /etc/wsl.conf
  1. **Através do Powershell, Reincie a distro :
wsl --shutdown

Conclusão

Com essas etapas, você configurou um sistema de autenticação robusto para o usuário root no WSL, utilizando uma senha e autenticação de dois fatores (2FA). Isso adiciona uma camada extra de segurança, protegendo contra acessos não autorizados. Lembre-se de armazenar a chave secreta em um local seguro e ajustar as permissões dos arquivos conforme necessário.

Essa configuração pode ser adaptada e aprimorada conforme suas necessidades específicas, mas serve como uma base sólida para garantir a segurança no uso do WSL.


Extra: Harbour Version

Para instalar e usar o Harbour a partir do repositório GitHub e compilar seus scripts usando hbmk2, siga estes passos:

Instalação do Harbour

  1. Clonar o Repositório:
git clone https://github.com/harbour/core.git
cd core
  1. Instalar Dependências:
sudo apt-get update
sudo apt-get install build-essential git libssl-dev libpcre3-dev libncurses5-dev libcurl4-openssl-dev
  1. Compilar e Instalar o Harbour:
make
sudo make install
  1. Dependência Opcional:

Se encontrar problemas relacionados ao libpcre3, instale:

sudo apt-get install libpcre3

Verificação

Verifique se o Harbour foi instalado corretamente:

hbmk2 -version

Compilar e Executar Seus Scripts

  1. Salvar os Scripts: Salve login.prg e get2FAkey.prg nos arquivos correspondentes.

  2. Compilar os Scripts:

hbmk2 login.prg -o login
hbmk2 get2FAkey.prg -o get2FAkey
  1. Executar os Scripts:
sudo ./login
sudo ./get2FAkey

Dependências Adicionais

Certifique-se de ter o OpenSSL, Python e o OATH Toolkit instalados:

sudo apt-get install openssl python3 oathtool

Resumo dos Scripts

  1. login.prg:

    • Valida a senha do root.
    • Verifica o código 2FA.
  2. get2FAkey.prg:

    • Gera uma chave secreta para 2FA.
    • Armazena a chave em um arquivo protegido.

Seguindo estas etapas, você conseguirá configurar o Harbour a partir do código-fonte, compilar e executar seus scripts utilizando hbmk2.


Referência(s):

BlackTDN :: Como Forçar a Solicitação da Senha ao Acessar o WSL como Root

GitHub:

Autenticação 2FA para Usuário Root no WSL Harbour