Pular para o conteúdo principal

Postagem em destaque

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

--- # 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`. ```bash sudo apt-get update sudo apt-get install openssl oathtool perl ``` Para os scripts em Lua.

BlackTDN :: Atualização de Dicionários e Tabelas de Dados

001 BlackTDN disponibiliza mais uma ferramenta para a atualização dos Dicionários e Tabela de Dados. U_NDJUPDDIC.PRG (depende de atualização dos arquivos da NDJLib).

A idéia básica é , a partir de um arquivo de configuração ndj_upd.ini, permitir a parametrização das tabelas e informações a serem atualizadas. Permite a “Simulação” e gera log ao final do Processo.

Exemplo de Configuração do arquivo ndj_upd.ini

[GENERAL]
adbConfig=SIX,SX1,SX2,SX3,SX6,SX7,SX9,SXA,SXB,SXG,SXM,SXO
adbTables=SX5
nApplyUpdate=1

[SX5]
bdbSourceName={||"\ndj_upd\sx5esp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sx5"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__cRDD}
cIndexKey=X5_FILIAL+X5_TABELA+X5_CHAVE
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0

[SIX]
bdbSourceName={||"\ndj_upd\sixesp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"six"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=INDICE+ORDEM
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0

[SX1]
bdbSourceName={||"\ndj_upd\sx1esp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sx1"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=X1_GRUPO+X1_ORDEM
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0

[SX2]
bdbSourceName={||"\ndj_upd\sx2esp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sx2"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=X2_CHAVE
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0

[SX3]
bdbSourceName={||"\ndj_upd\sx3esp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sx3"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=X3_ARQUIVO+X3_CAMPO
cIndexCond=
bEvalCond={||.T.}
cFieldDefUpdTable=X3_ARQUIVO;Obrigatorio para o SX3
aFieldsNotChange=
nSoftSeek=0

[SX6]
bdbSourceName={||"\ndj_upd\sx6esp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sx6"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=X6_FIL+X6_VAR
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=X6_CONTEUD,X6_CONTSPA,X6_CONTENG
nSoftSeek=0

[SX7]
bdbSourceName={||"\ndj_upd\sx7esp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sx7"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=X7_CAMPO+X7_SEQUENC
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0

[SX9]
bdbSourceName={||"\ndj_upd\sx9esp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sx9"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=X9_DOM+X9_CDOM+X9_EXPDOM+X9_EXPCDOM
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=1;Obrigatorio para SX9

[SXA]
bdbSourceName={||"\ndj_upd\sxaesp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sxa"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=XA_ALIAS+XA_ORDEM
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0

[SXB]
bdbSourceName={||"\ndj_upd\sxbesp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sxb"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=XB_ALIAS+XB_TIPO+XB_SEQ+XB_COLUNA
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0

[SXG]
bdbSourceName={||"\ndj_upd\sxgesp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sxg"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=XG_GRUPO
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0

[SXM]
bdbSourceName={||"\ndj_upd\sxmesp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sxm"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=XM_FILIAL+XM_CODIGO
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0

[SXO]
bdbSourceName={||"\ndj_upd\sxoesp.dbf"}
brddSource={||"DBFCDXADS"}
bdbTargetName={||"sxo"+cEmpAnt+"0"+GetDbExtension()}
brddTarget={||__LocalDriver}
cIndexKey=XO_ALIAS+XO_CAMPO
cIndexCond=
bEvalCond={||.T.}
aFieldsNotChange=
nSoftSeek=0

Ex.: do Processo de Simulação

imageimage

image

image

image

image

image

image

image

Ex.: do Processo

image

image

image 

image

image

image

Obs.: Vale lembrar que qualquer rotina que altera estrutura de dados deve ser EXAUSTIVAMENTE testada antes de posta em prática.

[]s

иαldσ dj

Comentários

  1. Ta nas prioridades incluir a gravação dos Helps de Campo e Perguntas....(Issue List em Code Google)

    ResponderExcluir
  2. OK. Finalizado. Processo de Update atualizará também Help de Campos e Help de Perguntas....

    ResponderExcluir
  3. Naldo Dj, voce por acaso já integrou o Protheus com o AD do windows? se sim, vale a pena?

    ResponderExcluir
  4. Sim. Funciona. É tão simples de habilitar/desabilitar que, seria rendundancia minha, dizer se vale apena ou não.

    ResponderExcluir

Postar um comentário

Postagens mais visitadas