Forçando uma mudança de senha no OpenBSD

Forçando uma mudança de senha no OpenBSD

No OpenBSD 5.6 preciso provisionar várias contas de usuário com senhas padrão. Gostaria que os usuários, no primeiro login SSH, fossem forçados a alterar suas senhas padrão.

No CentOS e no Debian posso fazer isso usando chage -d 0 $username.

Parece no manual login.conf que eu deveria conseguir realizar a mesma coisa no OpenBSD com algo como:

  • usermod -f 1 $usernameou
  • usermod -f "Jan 1 2015" $username

Configurá-lo dessa forma solicita a alteração apropriada em userinfo $username, mas efetuar login como $username via SSH na verdade não impõe uma alteração de senha - ele abre o shell com bastante alegria, alheio ao fato de a senha ter sido marcada como inativa acima.

Algumas postagens de 2000 falam sobreescrevendo um shell de login wrapperpara forçar uma alteração de senha. Dito isto, dada a estrutura óbvia em usermode chpass, parece que isso está embutido, mas não está documentado tão amplamente quanto os equivalentes do Linux.

Um profissional do BSD pode lançar alguma luz sobre a abordagem convencional para isso?

Responder1

De acordo com login.conf (5), o período de carência padrão para uma senha expirada (também conhecida como "morta") é 0. A menos que esse valor seja definido em /etc/login.conf, um usuário não poderá fazer login para alterar sua senha se a data atual do sistema for maior que o 6º campo da senha de um usuário entrada em /etc/master.passwd- consulte passwd (5).

Para resolver o problema, você precisará especificar uma data formatada em número de segundos desde a época que está dentro do período de carência de sua escolha, por exemplo, 2 semanas, que você também configurará no formato /etc/login.conf. Para escolher manualmente o prazo de validade da senha de ontem, podemos usar:

# date -d yesterday +%s
1463597700

E, em seguida, insira esse valor no campo nº 6 /etc/master.passwdusando vipw. A linha relevante ficará mais ou menos assim:

user:$2b$08$01234567890abcdef:1000:1000::1463597700:0:user:/home/user:/bin/ksh

Executar usermod como você indicou ( usermod -f "May 17 2016" user) fará essencialmente a mesma coisa, mas em ambos os casos /etc/login.conftambém deve ser alterado anexando o seguinte à default:\seção relevante para sua classe de usuário:

    :password-dead=2w:\
    :password-warn=2w:

A primeira linha permite uma carência de duas semanas para que o usuário altere sua senha; a segunda linha emitirá avisos de que a senha de um usuário está programada para expirar. Se expirar, seus usuários verão algo como o seguinte:

WARNING: Your password has expired.
You must change your password now and login again!
Changing local password for user.
Old password:
New password:
Retype new password:
Connection to openbsd-server closed.

Você também pode configurar :passwordtime=7776000:para /etc/login.confimpor uma alteração de senha adicional a cada 90 dias. Observe que se você precisar de verificações adicionais sobre a complexidade da senha dos usuários, como proibir a reutilização de senha, você deverá instalar e configurar passwordqca partir de pacotes ou outro programa verificador de senha.

informação relacionada