Introdução
Gearroom empresta equipamentos a criadores locais. Os membros entram para ler seus dados de retirada, devolução e embalagem. Um limite de login deveria pausar tentativas repetidas de adivinhar senhas, mas o contador atual é compartilhado por todos. As falhas de um membro podem impedir outro de começar a trabalhar.
Use Hydra para produzir um teste pequeno e repetível, faça o contador acompanhar a conta e demonstre proteção e acesso normal. O resultado é uma política efetiva em execução, com autenticação real e registros de empréstimo intactos, não um relatório. Você só pode limitar o membro sintético de teste declarado. Use o membro de referência apenas com a senha correta conhecida e não altere servidor, contas ou registros originais.
Você precisa conhecer entrada básica no terminal, reconhecimento de caminhos e alternância entre abas. As opções necessárias de Hydra, os campos do formulário, as aspas do shell e a estrutura JSON da política são explicados aqui. O terminal Workstation e o site Equipment Desk preparados são duas interfaces do mesmo contêiner isolado de treinamento. Esta unidade começa independentemente de outros laboratórios. Todas as pessoas, senhas e registros são dados sintéticos locais de treinamento.
Reserve cerca de 55 minutos, incluindo leitura e erros comuns. É uma estimativa do autor, não um tempo medido com iniciantes. O limite pequeno de três falhas em 30 segundos seguido de um bloqueio de 12 segundos é um contrato de treinamento, não uma recomendação de segurança para produção.
Confirmar dois logins de membros funcionais
Nesta etapa, abra os dois registros conhecidos antes de testar o limite. Uma autenticação bem-sucedida significa que o servidor aceitou uma identidade específica; essa identidade determina o registro que você pode ver.
Abra Equipment Desk. Selecione Review brief na navegação superior. O membro de teste autorizado é member, senha Member24. O membro de referência normal é reference, senha Reference24. São credenciais conhecidas, não senhas que você precisa descobrir.

Use as duas entradas identificadas e o botão Sign in. A linha abaixo do formulário mostra o caminho POST real e os nomes enviados dos campos.
Selecione Member sign-in, informe as credenciais de teste e selecione Sign in. Espere Signed in as member. Selecione Open your record. Confira o empréstimo LN-204, Mina Park, Compact projector kit, retirada Thursday 14:00, devolução Monday 10:00 e a nota do cabo HDMI no bolso lateral. Selecione Sign out.

Compare Member e Record com equipamento, retirada, devolução e nota de embalagem. Um login bem-sucedido sozinho não prova que o registro original está intacto.
Selecione Member sign-in novamente, use as credenciais de referência e selecione Open your record. Confira LN-119, Theo Bell, Portable audio recorder e a nota sobre o protetor de vento. Selecione Sign out outra vez. São registros separados; preservar ambos faz parte da tarefa. O navegador normalmente armazena automaticamente o cookie, um identificador de sessão emitido pelo servidor, após um login correto. Sair encerra essa sessão.
Alterne para Workstation. Seu diretório inicial configurado é /home/labex/project/login-limits. pwd imprime o diretório atual:
pwd
Você deve ver /home/labex/project/login-limits. Se estiver em outro lugar, cd muda o diretório:
cd /home/labex/project/login-limits
cat exibe um arquivo. Leia a política preparada:
cat policy.json
Isto é JSON, um formato de texto estruturado com campos nomeados entre aspas duplas. Dois-pontos ligam nomes a valores, vírgulas separam campos e chaves delimitam um objeto. A chave key é atualmente global, portanto o mesmo contador pode incluir contas diferentes. failed_attempts, window_seconds e cooldown_seconds são os valores combinados de três falhas, janela de 30 segundos e bloqueio de 12 segundos. entry_groups lista os caminhos preparados de login; mantenha esse mapeamento nesta unidade. Você investigará grupos de entrada no próximo laboratório independente.
deskctl é o comando preparado de manutenção limitada. Sua ação status lê a política ativa real; não faz login, limpa contadores ou altera o serviço:
deskctl status
A política ativa deve corresponder ao arquivo. Uma revisão identifica a política em uso. Editar o arquivo depois não mudará essa política ativa até você aplicá-la.
Observar o problema do contador compartilhado
Nesta etapa, envie apenas as senhas incorretas fornecidas para o membro de teste autorizado e observe como o contador global também recusa o membro de referência.
Permaneça em Workstation. Leia o arquivo completo de candidatos permitidos:
cat wrong-passwords.txt
NotThis11
NotThis22
NotThis33
NotThis44
NotThis55
Todos os cinco são deliberadamente incorretos para a conta de teste. Não acrescente credenciais reais nem teste outra conta repetidamente. Hydra gerará as tentativas limitadas; isto não é uma competição de velocidade nem uma tarefa para descobrir senhas.
127.0.0.1 é o endereço de loopback deste contêiner; a porta 8080 alcança seu serviço local preparado, não um site externo. O formulário principal envia uma requisição POST para /signin. POST carrega campos nomeados no corpo. Aqui são username e password, separados por &. O argumento http-post-form de Hydra tem três partes separadas por dois-pontos: caminho, campos e condição de resposta. ^USER^ e ^PASS^ são marcadores de Hydra. S=Signed in as exige o texto de resposta realmente autenticada; uma página limitada ou recusada não deve contar como login válido.
As opções de Hydra são -I para ignorar um aviso anterior de restauração neste espaço, -l member para um usuário fixo, -P para seu arquivo fornecido de senhas, -s para a porta e -t 1 para um trabalhador. Um trabalhador facilita observar essa sequência pequena. Ele não cria um limite no servidor. O último argumento entre aspas simples continua sendo um argumento só, mesmo com espaços e &.
O próximo bloco também usa curl, um cliente HTTP de terminal. Ele é separado do navegador e não reutiliza sua sessão automaticamente. --data fornece campos POST, -s oculta o progresso, -o salva o corpo da resposta e -w imprime o status HTTP. O \n entre aspas adiciona uma nova linha ao status. Aspas simples reservam &, espaços e %{http_code} para curl em vez de deixar o shell interpretá-los. Esses dois logins de diagnóstico usam senhas corretas conhecidas.
Primeiro espere as tentativas anteriores expirarem naturalmente. deskctl wait observa a disponibilidade; não reinicia contadores nem acrescenta tentativas:
deskctl wait
Execute os três comandos a seguir juntos, como um só bloco. Eles capturam ambas as respostas durante o bloqueio de 12 segundos, sem necessidade de ler entre comandos:
hydra -I -l member -P wrong-passwords.txt -s 8080 -t 1 127.0.0.1 http-post-form '/signin:username=^USER^&password=^PASS^:S=Signed in as'
curl -s -o test-login.html -w 'Test member HTTP %{http_code}\n' --data 'username=member&password=Member24' http://127.0.0.1:8080/signin
curl -s -o reference-login.html -w 'Reference member HTTP %{http_code}\n' --data 'username=reference&password=Reference24' http://127.0.0.1:8080/signin
Hydra deve informar 0 valid password found, pois todos os candidatos são incorretos. As duas linhas de diagnóstico devem mostrar HTTP 429. Um 429 significa que o serviço limita tentativas, não que a senha está errada. Curl pode terminar normalmente ao receber recusa HTTP; leia o status e o corpo salvo em vez de tratar o código de saída como autenticação. Neste cenário, a terceira tentativa recusada inicia o bloqueio; as seguintes são limitadas antes de suas senhas serem verificadas.
grep busca texto. A opção -o imprime só as palavras correspondentes, sem a página HTML ao redor:
grep -o 'Too many attempts' reference-login.html
A senha correta de referência também foi recusada. Esse é o problema do negócio: um contador global pausa o novo login de outro membro.
Leia os eventos existentes do servidor:
deskctl events
Procure member em /signin com resultados rejected, threshold e depois limited, seguido do login de reference marcado como limited. São decisões reais do servidor, não interpretações da saída de Hydra. O histórico continua legível após o bloqueio; você não precisa capturar uma página passageira.
Se algum diagnóstico chegou tarde, deixe deskctl wait terminar e repita o mesmo bloco pequeno de três comandos. Se Hydra relatar erro de sintaxe ou conexão, corrija primeiro o argumento entre aspas, o endereço 127.0.0.1, a porta 8080 ou o caminho declarado antes de interpretar resultados. Uma falha de conexão não prova proteção. HTTP 400 indica campos incorretos; 404 indica caminho incorreto. Corrija erros comuns sem redefinir o ambiente.
Aplicar uma política por conta
Nesta etapa, altere somente a chave do contador para que cada membro tenha um limite independente. Preserve os valores de treinamento e o mapeamento de entradas.
Permaneça em Workstation. O comando seguinte substitui seu policy.json local. cat > policy.json escreve texto no arquivo; > sobrescreve um arquivo existente. Um here-document fornece as linhas até o fechamento EOF. As aspas em 'EOF' mantêm o corpo literal. Coloque o marcador sozinho na linha, sem espaços iniciais:
cat > policy.json <<'EOF'
{
"key": "account",
"entry_groups": {
"/signin": "loans",
"/mobile/signin": "loans"
},
"failed_attempts": 3,
"window_seconds": 30,
"cooldown_seconds": 12
}
EOF
O único valor alterado é key: account agrupa tentativas pelo ID de membro enviado, em vez de combinar todas as contas. Baixar o limite a zero, excluir uma conta ou recusar todos não preservaria o serviço normal.
Aplique o arquivo usando o comando de controle preparado:
deskctl apply policy.json --wait
apply valida o arquivo e altera explicitamente a política ativa. --wait espera a expiração natural de bloqueios ou janelas parciais de falhas antes de aplicar uma política diferente. Uma janela parcial pode levar até 30 segundos para terminar. A política antiga permanece ativa durante a espera. O comando não reinicia o serviço, descarta o histórico nem limpa contadores ativos. Reaplicar a mesma política não produz mudança e não pode desbloquear uma conta.
Na primeira mudança, espere ok: true, changed: true e uma nova revisão com key igual a account. Se já aplicou o mesmo arquivo válido, changed: false é normal.
deskctl status
Leia a política ativa, não apenas o arquivo. Um erro JSON costuma indicar vírgula, aspas ou chave ausente; compare com o bloco completo, corrija e aplique novamente. Uma política inválida deixa a ativa intacta. Não reinicie o servidor nem edite sua implementação para passar na verificação.
Comprovar proteção e recuperação normal
Nesta etapa, teste a política efetiva, preserve o acesso de referência e confirme a recuperação natural do membro limitado.
Permaneça em Workstation. Comece com contadores naturalmente estabilizados:
deskctl wait
Execute novamente este bloco completo. Os caminhos, as senhas conhecidas de diagnóstico e os candidatos incorretos não mudaram; a chave ativa do contador mudou:
hydra -I -l member -P wrong-passwords.txt -s 8080 -t 1 127.0.0.1 http-post-form '/signin:username=^USER^&password=^PASS^:S=Signed in as'
curl -s -o test-login.html -w 'Test member HTTP %{http_code}\n' --data 'username=member&password=Member24' http://127.0.0.1:8080/signin
curl -s -o reference-login.html -w 'Reference member HTTP %{http_code}\n' --data 'username=reference&password=Reference24' http://127.0.0.1:8080/signin
Espere zero descobertas de Hydra, Test member HTTP 429 e Reference member HTTP 200. A conta protegida segue limitada, enquanto a referência independente pode se autenticar. HTTP 200 sozinho não basta; confira a identidade no corpo salvo:
grep -o 'Signed in as reference' reference-login.html
grep -o 'Too many attempts' test-login.html
Leia as decisões registradas na nova revisão:
deskctl events
Você deve ver um limite atingido e um login limitado de member junto com um login autenticado de reference. Só eventos da política atual comprovam a correção. O histórico da política global antiga permanece, mas não comprova a nova. Se pausou entre comandos e perdeu o bloqueio, espere naturalmente e repita o mesmo bloco limitado; não amplie candidatos nem apague contadores.
Agora deixe terminar o bloqueio do membro de teste:
deskctl wait
Alterne para Equipment Desk. Selecione Member sign-in, use member / Member24, selecione Sign in e depois Open your record. Deve continuar sendo LN-204, Mina Park, Compact projector kit, com todos os dados originais. Este novo login demonstra recuperação após expiração natural. Selecione Sign out, use Member sign-in com reference / Reference24 e abra LN-119 novamente. Confirme o gravador e a nota do protetor de vento e saia.
Por fim selecione Visitor guide. As informações públicas de retirada continuam disponíveis. Seus logins curl no terminal e este navegador usam sessões separadas; a resposta anterior de curl não autentica o navegador automaticamente. Se um registro retornar 403, faça login no formulário real e use Open your record. Corrija um erro comum de senha ou caminho em vez de reiniciar a VM.
Seu policy.json agora corresponde à política real por conta. O servidor tem evidências genuínas da revisão atual: falhas repetidas, tentativa com senha correta limitada, autenticação normal de referência durante o limite e login de teste recuperado naturalmente, com ambos os registros originais intactos. A avaliação lê esses fatos existentes e páginas públicas; não envia logins ausentes, redefine limites ou completa a recuperação por você. Este treinamento controlado de um único processo comprova o comportamento local declarado, não uma defesa completa de produção contra todo ataque de autenticação.
Resumo
Você usou uma sequência limitada de Hydra para revelar um contador global, aplicou uma política por conta sem reiniciar ou redefinir o serviço e verificou recusa e disponibilidade. O membro de teste continuou limitado mesmo com senha correta, outro membro pôde se autenticar e a expiração natural restaurou o acesso a registros intactos. A política atual e decisões reais do servidor comprovam o resultado, não uma saída vazia de Hydra ou apenas um status verde.



