Mate sessões de login ociosas

1

Eu estou procurando uma maneira eficaz de matar as sessões de login ocioso (console, ssh, etc). Há toneladas de respostas na internet sobre como fazer isso, mas todas elas cobrem apenas casos de uso muito básicos.

Os requisitos são:

  • A configuração deve se aplicar a todas as sessões de login (a sessão de login é definida como uma sessão de pam).
  • Não deve ser substituível pelo usuário.
  • Deve ser difícil / impossível enganar. Infelizmente, isso é um requisito subjetivo. Se o usuário colocar um pássaro bebendo no teclado, não vale a pena protegê-lo. Mas se eles podem apenas definir uma configuração em sua configuração do cliente ssh, ou perfil de shell para neutralizar efetivamente o tempo limite, então isso deve ser protegido contra.
  • A atividade é definida como qualquer IO no fluxo SSH (antes da criptografia). No pior caso, poderia ser definido como IO no TTY / STDIN / STDOUT / STDERR. O primeiro é preferido porque coisas como o tunelamento ssh devem mantê-lo ativo. Mas com um tempo limite alto o suficiente (horas), o último seria aceitável.

As soluções que não funcionam:

Análise de trabalho Cron w / who output:

Isso não funciona porque nem todas as sessões serão exibidas nessa lista. Por exemplo, você pode fazer ssh foo.example.com bash e esta sessão não será mostrada na lista. Você também pode fazer ssh -N foo.example.com , ou um% background ControlMaster process, que não será exibido.

Usando sshd_config ' ClientAliveInterval & ClientAliveCountMax :

Esta é outra recomendação que eu vejo muito, e não funciona como matar conexões ociosas não é de todo o que se pretendia fazer. Essas configurações foram feitas para detectar e matar as conexões mortas, e não as inativas. Essas configurações são muito fáceis de ignorar, definindo ServerAliveInterval no cliente.

Shell TMOUT variable

Esta é uma solução muito fraca, pois requer um shell e é facilmente anulada pelo usuário.

    
por Patrick 15.01.2017 / 07:27

0 respostas