Como impedir que os usuários estendam sua janela de login válido


14

Estive trabalhando em alguns procedimentos de proteção de segurança de uma caixa RedHat, e eu queria saber se seria possível impedir que um usuário alterasse sua senha, uma vez expirada.

Para um de nossos clientes, o requisito é que eles só tenham acesso ao servidor por meio de contas temporárias, o que significa que, uma vez criadas as credenciais do usuário, a senha deve expirar dentro de 4 horas e, quando a senha expirar, somente o root poderá alterá-la. .

Para o primeiro requisito (senhas expirando após 4 horas), acho que isso poderia ser alcançado definindo passwordMaxAge = 144000 . Mas ainda não consegui encontrar uma maneira de impedir que os usuários alterassem senhas expiradas, sem desativar a expiração da senha.

Alguém pode ajudar?


4
Tudo bem se o usuário mantiver as sessões de login existentes abertas após a janela de 4 horas? A expiração da senha do usuário não os expulsará se eles já estiverem conectados. Eu poderia manter uma sessão SSH aberta por semanas.
wyzard --stop Prejudicar Monica--

Em vez de depender de cronjobs / e modificação de binários do sistema que você pode ser capaz de escrever um módulo pam simples, ou talvez haja mesmo um lá fora (ou você pode talvez pam_time garfo para incluir mais opções)
PlasmaHH

Respostas:


21

Geralmente, a expiração de senha é usada para forçar os usuários a alterar suas senhas. Parece que você deseja fazer é bloquear a conta, o que impede todo o login.

O que eu sugiro que você faça é, ao criar a conta, também configurar um trabalho que bloqueará a conta após quatro horas.

Por exemplo:

useradd temp8143
echo chage -E 0 temp8143 | at now + 4 hours

( chage -Eespera que as datas de vencimento sejam fornecidas em dias, portanto, contornamos isso com um trabalho).


3
Essa é uma boa solução. +1 de mim.
Jenny D

2
Ah, explosão - Eu gosto desta idéia bem ; também +1. Você pode até fazer um atted userdel, o que teria a vantagem de arrumar todas essas contas temporárias para que elas não fiquem para sempre.
21915 MadHatter

2
Eu acho que isso é melhor do que minha sugestão, na verdade.
21715 Jenny D

Eu acho que passwd -l temp813vai conseguir a mesma coisa que chage -E 0 temp8143.
Nate Eldredge

5
@NateEldredge Não exatamente. passwd -lnão impedirá logins de chaves ssh ou logins de impressões digitais, por exemplo, enquanto chage -E 0impedirá.
Michael Hampton

24

Se você remover o bit setuid do comando passwd, somente o root poderá usá-lo. Isso também impedirá que os usuários alterem a senha antes que ela expire - o que poderia ser uma maneira de os usuários estenderem a conta por mais quatro horas.

[jenny@finch ~] sudo chmod -s /usr/bin/passwd
[jenny@finch ~]$ passwd
Changing password for user jenny.
Changing password for jenny.
(current) UNIX password: 
New password: 
Retype new password: 
passwd: Authentication token manipulation error

O root ainda pode alterar qualquer senha:

[jenny@finch ~]$ sudo passwd jenny
Changing password for user jenny.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

5
Elegante e muito UNIX. +1 de mim. @ borntohula, não se esqueça de aceitar esta resposta clicando no contorno "tick" se estiver satisfeito com ela.
21915 MadHatter

6
Isso quase funciona. O problema é que a remoção do bit setuid será desfeita se passwdfor atualizada pelo sistema.
Michael Hampton

3
@MichaelHampton True. É para isso que serve, por exemplo, a marionete. Além disso, todo mundo não verifica em seus sistemas novos bits setuid / setgid após cada atualização?
21139 Jenny D

1
@JennyD - eles provavelmente deve verificar se há bits setuid / setgid mudando, mas muito poucas pessoas fazem
Warren

2
@warren - pode ter havido um leve traço de sarcasmo nessa frase. Um traço muito pequeno. Minúsculo.
Jenny D
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.