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 publicos de conta dentro do /etc/passwd. Como esse arquivo precisa ser legivel por todos para que comandos como ls, ps ou id traduzam UIDs em nomes, qualquer usuario local podia ler todos os hashes e jogar em um cracker. A shadow suite, criada nos anos 1990 e adotada como padrao no Linux, resolveu isso movendo o hash para o /etc/shadow, com dono root:shadow e permissao 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 validos 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:
- usuario: 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 ultima troca de senha.
- min: dias minimos entre trocas.
- max: dias maximos de validade.
- warn: dias de aviso antes do vencimento.
- inactive: dias apos o vencimento ate travar a conta.
- expire: data absoluta de expiracao (dias desde a epoch).
- reservado: sem uso, mantido para extensoes 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; rapido 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, padrao em CentOS/RHEL 7-9 e Debian 11.$y$rounds$salt$hash— yescrypt, padrao no Ubuntu 22.04 LTS e versoes posteriores.$argon2id$v=19$m=N,t=N,p=N$salt$hash— Argon2id, vencedor do PHC (2015), memory-hard.!ou*sozinho — conta travada, login impossivel.- campo vazio — login por senha desativado; acesso so por chave ou PAM customizado.
Permissoes, dono e ferramental
O estado canonico e chown root:shadow /etc/shadow e chmod 640. Qualquer permissao mais aberta vira finding serio em auditorias CIS ou Lynis. No dia a dia, o gerenciamento usa passwd (troca a propria senha), chpasswd (atualiza em lote via stdin), useradd/userdel e chage para politica de aging (chage -M 90 alice forca rotacao a cada 90 dias). O modulo user do Ansible e o recurso user do Puppet manipulam o shadow com seguranca em frotas de servidores.
Orientacao criptografica: NIST 800-63B e migracao
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 migracao: troque ENCRYPT_METHOD no /etc/login.defs para YESCRYPT ou SHA512 e force uma rotacao geral. O PCI-DSS v4, requisito 8.3.2, tambem 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 forca do hash: bcrypt cost 12 ou Argon2id com m=64 MB elevam o cracking ao patamar economicamente inviavel, enquanto MD5 cai em minutos numa unica 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 producao? Sim. E o padrao do Ubuntu 22.04+, memory-hard e considerado seguro pela NIST. Supera o SHA-512 crypt no mesmo orcamento 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. Nao 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 requisicao e disparada e nenhum log e gravado. Mesmo assim, evite colar hashes de producao em sites aleatorios — terminais e ferramentas locais sao mais seguros.
O que significa o prefixo !? Um ! ou * sozinho trava a conta: o PAM rejeita qualquer senha. Um ! antes de um hash valido (!$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-padrao em 2025? Uma GPU moderna calcula bilhoes de hashes MD5 por segundo. Qualquer senha com menos de 12 caracteres aleatorios cai rapido. Mesmo com sal, MD5 nao 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).