Temporariamente restringir logins para um usuário para um único IP

4

Antecedentes

Eu tenho um monte de dispositivos Raspberry PI 3 rodando Linux, que são compartilhados entre vários engenheiros. Por uma questão de simplicidade, cada caixa do Linux tem o mesmo nome de usuário / senha padrão (ou seja, todos fazem login como root) para testar o software que desenvolvemos. Este é um requisito hard (ou seja, não é possível alterar isso).

Problema

Ocasionalmente, dois usuários (normalmente um trabalhando no escritório e outro remotamente via VPN) efetuam login no mesmo dispositivo ao mesmo tempo, e os dois usuários podem causar problemas um ao outro se ambos estiverem executando um software que tenta obter acesso exclusivo ao hardware conectado à caixa. Além disso, às vezes um usuário reinicializa o sistema, o que realmente incomoda o outro desenvolvedor. Embora tentemos implementar agendamentos para acesso exclusivo, eles geralmente são ignorados quando alguém "precisa apenas fazer uma verificação rápida".

Pergunta

Existe uma maneira, sob demanda (ou seja, eu nem sempre quero que esse "recurso" seja ativado), para um usuário reservar o uso de uma conta (ou seja, raiz) para interação / logons SSH não interativos, de modo que somente o endereço IP (ou seja, SSH_CLIENT ) associado a esse indivíduo possa ser usado? Por exemplo, digamos que Bob e Alice desejam fazer login no host darkstar com username root . Bob faz login primeiro e seu endereço IP é 192.168.1.100 . Bob deseja acesso exclusivo a darkstar por 10 minutos, portanto, ele executa um comando especial (por exemplo, bash /opt/mine_for_10_mins.sh ) e, nesses 10 minutos:

  • Bob pode criar instâncias SSH interativas / não interativas adicionais (por exemplo, login via ssh , scp , sftp , etc.), desde que seja do mesmo endereço IP de origem de 192.168.1.100 (ou seja o que for armazenado em SSH_CLIENT ).
  • Alice, que está tentando fazer o login a partir do IP 10.10.0.200 , não consegue fazer o login até que o período de 10 minutos tenha se passado ou Bob desconecte-se. Eu gostaria de ter os dois e definir um limite superior, então Bob não pode reservar uma caixa por 48 horas, sair para o fim de semana e deixar as pessoas impossibilitadas de fazer login: se Logon de Bob cedo, ótimo; mas ele não pode reservar por mais de 10 minutos (ou talvez 12 horas) de cada vez.

Idealmente, eu gostaria de fazer isso com um temporizador, ou se for muito pouco prático / difícil, eu gostaria que a "reserva" terminasse quando Bob terminasse todas as sessões de login de 192.168.1.100 .

Trabalhe até agora

Eu tentei tocar com touch 'ing /etc/nologin , mas não consegui encontrar uma maneira de garantir que ele fosse excluído automaticamente e se nossos engenheiros estivessem trabalhando remotamente (configuração flexível de trabalho de casa) ), Eu não quero que todos sejam bloqueados fora das caixas a menos que alguém entre consertar o dispositivo remotamente (embora estejamos olhando para um KVM habilitado para rede para remediar isso).

Há também a possibilidade de executar um script que periodicamente (ou seja, a cada 5 segundos) auto-inicializa outros usuários de outros IPs, eliminando suas sshd instâncias, mas eu gostaria de tentar evitar logins completamente, como é É muito comum as pessoas executarem sessões ssh não interativas com scripts que podem interferir com outros usuários na mesma caixa do Linux, e uma abordagem baseada em pesquisa não impediria isso.

Obrigado.

    
por DevNull 24.08.2018 / 03:30

0 respostas