Validador de /etc/shadow
Valida o formato de uma linha de /etc/shadow (Linux) com 9 campos separados por : (login, hash, datas, validade, etc.).
O arquivo /etc/shadow: por que o Linux separou as senhas do /etc/passwd
Nos primeiros sistemas Unix, as senhas criptografadas conviviam com os metadados públicos de conta dentro do /etc/passwd. Como esse arquivo precisa ser legível por todos para que comandos como ls, ps ou id traduzam UIDs em nomes, qualquer usuário local podia ler todos os hashes e jogar em um cracker. A shadow suite, criada nos anos 1990 e adotada como padrão no Linux, resolveu isso movendo o hash para o /etc/shadow, com dono root:shadow e permissão 640. Apenas processos privilegiados (PAM, passwd, chpasswd, useradd) leem o arquivo.
Este validador analisa uma linha do shadow e informa se o formato esta bem formado: nove campos separados por dois pontos, prefixo de algoritmo reconhecido, contadores de aging válidos e marcadores de lock corretos. Tudo roda no navegador — nada e enviado ao servidor e o hash nunca sai do seu cliente.
Formato da linha: nove campos separados por dois pontos
Cada linha segue a estrutura usuario:hash:lastchg:min:max:warn:inactive:expire:reservado:
- usuário: corresponde a entrada do
/etc/passwd. - hash: senha criptografada (formatos abaixo), ou
!/*para travar a conta, ou vazio para desativar login por senha. - lastchg: dias desde 1970-01-01 da última troca de senha.
- min: dias minimos entre trocas.
- max: dias maximos de validade.
- warn: dias de aviso antes do vencimento.
- inactive: dias após o vencimento até travar a conta.
- expire: data absoluta de expiracao (dias desde a epoch).
- reservado: sem uso, mantido para extensões futuras.
Prefixos de algoritmo de hash
O $id$ inicial identifica o esquema de hashing. O crypt(5) moderno reconhece:
$1$salt$hash— MD5 crypt. Obsoleto; rápido em GPU.$2a$cost$hash/$2b$/$2y$— bcrypt (Blowfish). O cost factor regula o esforco.$5$rounds=N$salt$hash— SHA-256 crypt (glibc).$6$rounds=N$salt$hash— SHA-512 crypt, padrão em CentOS/RHEL 7-9 e Debian 11.$y$rounds$salt$hash— yescrypt, padrão no Ubuntu 22.04 LTS e versões posteriores.$argon2id$v=19$m=N,t=N,p=N$salt$hash— Argon2id, vencedor do PHC (2015), memory-hard.!ou*sozinho — conta travada, login impossível.- campo vazio — login por senha desativado; acesso so por chave ou PAM customizado.
Permissões, dono e ferramental
O estado canônico e chown root:shadow /etc/shadow e chmod 640. Qualquer permissão mais aberta vira finding sério em auditorias CIS ou Lynis. No dia a dia, o gerenciamento usa passwd (troca a própria senha), chpasswd (atualiza em lote via stdin), useradd/userdel e chage para política de aging (chage -M 90 alice força rotacao a cada 90 dias). O modulo user do Ansible e o recurso user do Puppet manipulam o shadow com segurança em frotas de servidores.
Orientacao criptografica: NIST 800-63B e migração
A NIST SP 800-63B recomenda KDFs memory-hard (Argon2, scrypt, yescrypt) e desencoraja explicitamente MD5 legado e SHA sem sal. Se sua frota ainda emite hashes $1$ ou $5$ em 2025, planeje migração: troque ENCRYPT_METHOD no /etc/login.defs para YESCRYPT ou SHA512 e force uma rotacao geral. O PCI-DSS v4, requisito 8.3.2, também exige hash unidirecional forte para autenticadores armazenados.
Cracking offline e higiene de backup
Se o /etc/shadow vaza (backup mal configurado, imagem comprometida, tar descuidado em root), os atacantes rodam John the Ripper (john --format=sha512crypt) ou Hashcat (modos 1800, 7400, 7500) offline. A defesa inteira depende da força do hash: bcrypt cost 12 ou Argon2id com m=64 MB elevam o cracking ao patamar economicamente inviavel, enquanto MD5 cai em minutos numa única RTX 4090. Criptografe os backups do shadow (LUKS, age, GPG) e nunca copie em texto claro para fora do host.
FAQ
O yescrypt e seguro em produção? Sim. E o padrão do Ubuntu 22.04+, memory-hard e considerado seguro pela NIST. Supera o SHA-512 crypt no mesmo orçamento de hardware.
Da para validar uma entrada do shadow so com regex? Apenas a sintaxe. O validador confere quantidade de campos, prefixo do hash e colunas numericas. Não prova que o hash corresponde a alguma senha — isso exige rodar o KDF contra um candidato.
Esta ferramenta armazena o que eu colo? Nunca. A analise roda inteiramente no navegador. Nenhuma requisição e disparada e nenhum log e gravado. Mesmo assim, evite colar hashes de produção em sites aleatórios — terminais e ferramentas locais são mais seguros.
O que significa o prefixo !? Um ! ou * sozinho trava a conta: o PAM rejeita qualquer senha. Um ! antes de um hash válido (!$6$...) e um "lock fraco" feito por usermod -L — o hash original e preservado e pode voltar com usermod -U.
Por que MD5 ($1$) continua anti-padrão em 2025? Uma GPU moderna calcula bilhões de hashes MD5 por segundo. Qualquer senha com menos de 12 caracteres aleatórios cai rápido. Mesmo com sal, MD5 não oferece work factor nem memory hardness. Migre para yescrypt ou Argon2id.
Ferramentas Relacionadas
Validador de IATA de Companhia Aérea
Valida códigos IATA de companhias aéreas (2 caracteres alfanuméricos, ex: LA, AA, G3).
Validador de Código IBGE de Cidade
Valida o formato de código IBGE de município brasileiro: 7 dígitos. Os 2 primeiros são UF (11=RO até 53=DF).
OAuth Scope Checker
Verifica se um scope solicitado está nos scopes concedidos (separados por espaço).
Validador de Google Analytics ID
Valida formatos de IDs do Google Analytics: UA-XXXXX-Y (universal) e G-XXXXXXXXXX (GA4). Identifica o tipo correspondente.
Checker Seções Política Privacidade
Verifica quais seções obrigatórias estão presentes em uma política de privacidade.
Validador de Número de Cartão de Crédito
Valide números de cartão de crédito pelo algoritmo Luhn. Identifica a bandeira e verifica o dígito verificador, sem enviar dados para servidores.