Como restringir membros de um determinado grupo a um login por usuário?

4

Eu tenho um servidor ssh. Alguns dos meus usuários fazem login várias vezes simultaneamente; alguns dos que estão fazendo isso não deveriam ser, e eu suspeito de compartilhamento de conta. Aqueles que não deveriam ser todos membros de um determinado grupo unix.

O que eu gostaria é uma maneira de restringir o número de logins simultâneos que os membros do grupo 402 podem ter para "um de cada", com o login mais recente tendo precedência.

Esse último bit é importante; esses usuários às vezes legitimamente perdem sua conexão com a máquina e precisam restabelecê-la, e eu não quero que eles sejam bloqueados para fora da máquina porque há uma sessão de suspensão que eles não podem matar. Em vez disso, quero uma nova tentativa de conexão autenticada para desconectar automaticamente a antiga.

Alguém faz algo assim? Alguém tem alguma sugestão inteligente baseada em PAM ou similar?

    
por MadHatter 21.07.2011 / 11:38

2 respostas

4

Acredito que você poderia usar o /etc/security/limits.conf para impor isso, a sintaxe é:

<domain> <type> <item> <value>

Assim, uma linha de trabalho pode se parecer com:

@402 hard maxlogins 1

Quanto às sessões perdidas, você poderia definir um baixo ClientAliveInterval no sshd para garantir que as sessões mortas não durassem muito tempo?

    
por 21.07.2011 / 11:48
3

Use a diretiva MaxSessions em sshd_config.

Match Group groupname
MaxSessions 1
ClientAliveInterval 30
ClientAliveCountMax 1

No final do arquivo, para que os valores sejam substituídos apenas pelo grupo groupname (você deve usar nome, não ID numérico). Se o cliente não responder por mais de uma mensagem enviada a cada 30 segundos, o cliente será desconectado. Você pode mexer com valores numéricos para sua satisfação. Parece funcionar no meu RHEL 6.

    
por 21.07.2011 / 15:40