![](https://tse4.mm.bing.net/th?id=OIG2.My09hQevS_MuQYyq0JN5&pid=ImgGn)
---
## 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`.
```bash
sudo apt-get update
sudo apt-get install openssl oathtool perl
```
Para os scripts em Lua. Incluir `lua`, `lua-posix`
```bash
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/`
```bash
makedir /root/2FA/
```
Criar o(s) diretório(s)
```bash
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](https://github.com/naldodj/naldodj-2FA-wsl/blob/main/src/sh/get2FAkey.sh)
Ou, Crie um script chamado: [get2FAkey.lua](https://github.com/naldodj/naldodj-2FA-wsl/blob/main/src/lua/get2FAkey.lua)
Ou, ainda, Crie um script chamado: [get2FAkey.ps1](https://github.com/naldodj/naldodj-2FA-wsl/blob/main/src/ps/get2FAkey.ps1)
Ou: [get2FAkey.prg](https://github.com/naldodj/naldodj-2FA-wsl/blob/main/src/hb/get2FAkey.prg)
Execute o script para gerar e armazenar a chave secreta:
```bash
chmod +x /root/scripts/sh/get2FAkey.sh
/root/scripts/sh/get2FAkey.sh
```
ou
```bash
chmod +x /root/scripts/lua/get2FAkey.lua
/root/scripts/lua/get2FAkey.lua
```
ou
```bash
chmod +x /root/scripts/ps/get2FAkey.lua
pwsh /root/scripts/ps/get2FAkey.ps1
```
ou, após compiar: [get2FAkey.prg](https://github.com/naldodj/naldodj-2FA-wsl/blob/main/src/hb/get2FAkey.prg)
```bash
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](https://github.com/naldodj/naldodj-2FA-wsl/blob/main/src/sh/login.sh)
ou, Crie um script chamado: [login.lua](https://github.com/naldodj/naldodj-2FA-wsl/blob/main/src/lua/login.lua)
ou, ainda, Crie um script chamado: [login.ps1](https://github.com/naldodj/naldodj-2FA-wsl/blob/main/src/ps/login.ps1)
ou: [login.prg](https://github.com/naldodj/naldodj-2FA-wsl/blob/main/src/hb/login.prg)
### Passo 4: Configurar o Script para validar o Login
Vamos precisar de um scrit [check_password.pl](https://github.com/naldodj/naldodj-2FA-wsl/blob/main/src/perl/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**:
```bash
chmod +x /root/scripts/sh/login.sh
```
ou
```bash
chmod +x /root/scripts/lua/login.lua
```
ou
```bash
chmod +x /root/scripts/ps/login.ps1
```
ou, após compilar: [login.prg](https://github.com/naldodj/naldodj-2FA-wsl/blob/main/src/hb/login.prg)
```bash
chmod +x /root/scripts/hb/login
```
3. **Execute o script de login**:
```bash
/root/scripts/sh/login.sh
```
ou
```bash
/root/scripts/lua/login.lua
```
ou
```bash
pwsh /root/scripts/ps/login.ps1
```
ou, opcionalmente e através do script [run_pslogin.sh](https://github.com/naldodj/naldodj-2FA-wsl/blob/main/src/ps/run_pslogin.sh)
```bash
/root/scripts/ps/run_pslogin.sh
```
ou, após compilar: [login.prg](https://github.com/naldodj/naldodj-2FA-wsl/blob/main/src/hb/login.prg)
```bash
/root/scripts/hb/login
```
4. **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
5. Configure o script para ser executado no login:
Salve os scripts em suas respectivas pastas
```bash
/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:
```bash
nano /root/.bashrc
```
Adicione a seguinte linha ao final do arquivo:
```bash
#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:
```bash
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
```bash
sudo editor /etc/wsl.conf
```
```bash
[user]
default=[NonRootUser]
```
2. **Alterar o dono do arquivo para o usuário root:
```bash
sudo chown root:root /etc/wsl.conf
```
3. **Alterar as permissões do arquivo para que apenas o dono (root) tenha acesso:
```bash
sudo chmod 600 /etc/wsl.conf
```
4. **Através do Powershell, Reincie a distro :
```bash
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**:
```sh
git clone https://github.com/harbour/core.git
cd core
```
2. **Instalar Dependências**:
```sh
sudo apt-get update
sudo apt-get install build-essential git libssl-dev libpcre3-dev libncurses5-dev libcurl4-openssl-dev
```
3. **Compilar e Instalar o Harbour**:
```sh
make
sudo make install
```
4. **Dependência Opcional**:
Se encontrar problemas relacionados ao `libpcre3`, instale:
```sh
sudo apt-get install libpcre3
```
### Verificação
Verifique se o Harbour foi instalado corretamente:
```sh
hbmk2 -version
```
### Compilar e Executar Seus Scripts
1. **Salvar os Scripts**: Salve `login.prg` e `get2FAkey.prg` nos arquivos correspondentes.
2. **Compilar os Scripts**:
```sh
hbmk2 login.prg -o login
hbmk2 get2FAkey.prg -o get2FAkey
```
3. **Executar os Scripts**:
```sh
sudo ./login
sudo ./get2FAkey
```
### Dependências Adicionais
Certifique-se de ter o OpenSSL, Python e o OATH Toolkit instalados:
```sh
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](https://www.blacktdn.com.br/2024/06/blacktdn-como-forcar-solicitacao-da.html)
## GitHub:
[Autenticação 2FA para Usuário Root no WSL](https://github.com/naldodj/naldodj-2FA-wsl)
[Harbour](https://github.com/harbour/core)
---
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlDjz0NoBlv9BvvFK_WCciUGLEs4yrIl_Pe5jJuNuxhTgiRfijMNrY6vXCU9djvIgM2flHZGCbLDlak3cPauym8CmwaJ6K6HLP8Ha8C6HFnmDK6yh3dICopO7kXyBixnWBYCYlqLCw_gSO0P9D9t9Ywvf1Ql-H0A0i65qD-2a4M9YAaP_LSoIADADi44s/s16000-rw/BTDN_ROOT_2FA_01.jpg)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjYuv-rNWN-OjlCKCXNR6zQTbtS6L6SQchoj2uOkWbJMIJHsyz74PCCJHXiXLcorHYstkxJs04Juu1yj3Sl0EZX4c_Zgw3h4s31PhcskSeZA-ik-t30uLlOZtNyBUmXIqMnIW1qAYxSJybgV0Pm7GGwak8DQ4ipR9JXSJ-lIfFwuahqLkdkLBAmyALKNc/w576-h86-rw/BTDN_ROOT_2FA_02.jpg)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiHQ0tTcKwlHmKvxxGYOpoEbzyOXqaRZYCmWMSVzS4iDJ6GymIHlEkBxoT3tdnzMTVvbVmTl6xgjpNhtRPoYEZ1ill3xKZkl_GtQREKEEcW8rUDL59iL93d4sIt02mhoTB0p_6iLwAdy42kzptUc-09XZLzlSpiT0M0uHxT3skJL42bOqd3lPCZ6fbXlzY/w571-h115-rw/BTDN_ROOT_2FA_03.jpg)
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWLqcTCjUDZOSZBi7iGJbahMo-NOxdhP4tGoekRGk-rbvQzKMkY9cQ1TRb90n0CsuDooHJL9BcQqxQoWkGVMnZMj2pbyDQv0h6lGhRTUgKpPIiyuiBbPN2fqf2bLEZClLnZHm8eyCWSo3K2Dx9NIvtPJsV23sFGQ3bgubJsT11vMppFiE8zx2viYNnjQc/s16000-rw/BTDN_ROOT_2FA_04.jpg)
Comentários
Postar um comentário