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.
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
.
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
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 : Dependente de LUA,PERL e PHYTON Ou: hb_get2FAkey.prg : Não Dependente de LUA,PERL ou PHYTON
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 compilar: get2FAkey.prg
chmod +x /root/scripts/hb/get2FAkey
/root/scripts/hb/get2FAkey
ou, após compilar: hb_get2FAkey.prg
chmod +x /root/scripts/hb/hb_get2FAkey
/root/scripts/hb/hb_get2FAkey
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 : Dependente de LUA,PERL e PHYTON ou: hb_login.prg : Não dependente de LUA,PERL e PHYTON
Vamos precisar de um scrit check_password.pl , em Perl
, que será utilizado para validar a senha pelos demais scripts (exceto para hb_login.prg)
-
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
ou, após compilar: hb_login.prg
chmod +x /root/scripts/hb/hb_login
-
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
ou, após compilar: hb_login.prg
/root/scripts/hb/hb_login
-
Configure o aplicativo de 2FA (como Microsoft Authenticator, Google Authenticator ou Authy) com a chave secreta armazenada em:
sh_2FAsecret_key.txt
oulua_2FAsecret_key.txt
oups_2FAsecret_key.txt
ouhb_2FAsecret_key.txt
ou -
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 /root/scripts/hb/login /root/scripts/hb/hb_get2FAkey /root/scripts/hb/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 /$(whoami)/scripts/hb/hb_login -u=$(whoami)
Teste a configuração: Feche o terminal WSL e abra novamente com o comando:
wsl --user root
- **Defina o usuário padrao
sudo editor /etc/wsl.conf
[user]
default=[NonRootUser]
- **Alterar o dono do arquivo para o usuário root:
sudo chown root:root /etc/wsl.conf
- **Alterar as permissões do arquivo para que apenas o dono (root) tenha acesso:
sudo chmod 600 /etc/wsl.conf
- **Através do Powershell, Reincie a distro :
wsl --shutdown
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.
Para instalar e usar o Harbour a partir do repositório GitHub e compilar seus scripts usando hbmk2
, siga estes passos:
- Clonar o Repositório:
git clone https://github.com/harbour/core.git
cd core
- Instalar Dependências:
sudo apt-get update
sudo apt-get install build-essential git libssl-dev libpcre3-dev libncurses5-dev libcurl4-openssl-dev
- Compilar e Instalar o Harbour:
make
sudo make install
- Dependência Opcional:
Se encontrar problemas relacionados ao libpcre3
, instale:
sudo apt-get install libpcre3
Verifique se o Harbour foi instalado corretamente:
hbmk2 -version
-
Salvar os Scripts: Salve
login.prg
eget2FAkey.prg
nos arquivos correspondentes. -
Compilar os Scripts:
hbmk2 login.hbp
hbmk2 get2FAkey.hbp
ou
hbmk2 hb_login.hbp
hbmk2 hb_get2FAkey.hbp
- Executar os Scripts:
sudo ./login
sudo ./get2FAkey
ou
sudo ./hb_login
sudo ./hb_get2FAkey
Certifique-se de ter o OpenSSL, Python e o OATH Toolkit instalados:
sudo apt-get install openssl python3 oathtool
-
login.prg e hb_login.prg:
- Valida a senha do root.
- Verifica o código 2FA.
-
get2FAkey.prg e hb_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
.
BlackTDN :: Como Forçar a Solicitação da Senha ao Acessar o WSL como Root
Autenticação 2FA para Usuário Root no WSL Harbour