Limitar logins simultâneos a vários desktops na rede Linux do LDAP?

5

Como posso limitar o número de computadores desktop, dentro de uma rede LDAP autenticada por LDAP, que uma única conta de usuário está conectada ao mesmo tempo?

Este é o cenário a ser evitado: um usuário com uma conta válida faz login na mesma conta em 10 áreas de trabalho diferentes para poder jogar com seus 9 amigos; Nenhum desses amigos tem contas válidas na rede.

O servidor é o RHEL 5 com o OpenLDAP, os desktops são o Fedora 11 (será o CentOS 5.4 quando disponível). Todos os logins da área de trabalho são via LDAP no servidor.

Nota: A limitação de logins simultâneos em uma máquina única pode ser feita com maxlogins em /etc/security/limits.conf , mas isso é inútil no cenário declarado.

Além disso, observe: Em uma rede do Windows com o Active Directory, softwares como o UserLock e o LimitLogin podem fazer isso; mas esta rede não tem Windows nem servidor AD.

EDIT: Eu sei que o LDAP não pode fazer isso sozinho; se houver um produto complementar maduro e bem testado, semelhante aos produtos baseados no Windows mencionados acima, isso seria uma boa notícia. Vou até considerar soluções não grátis / non- libre .

    
por watch uname 21.10.2009 / 22:30

1 resposta

3

Depois de pesquisar, não parece que o LDAP ou o Kerberos farão isso. Aparentemente, não há atributos para isso no LDAP e realmente não há como trabalhar com uma perspectiva LDAP. Não há logout do LDAP, portanto, ele nunca poderá diminuir a contagem de login.

Perante isto, parece que a solução terá de ser ad hoc.

Você precisará de um serviço que monitore /var/run/utmp ou o comando w (mostra usuários atualmente conectados) em cada máquina e os relate a um servidor central por algum mecanismo (nfs mount + arquivo de texto, por exemplo) .

Em seguida, você precisará de um script de login que exclua o usuário se ele exceder o limite de logins simultâneos. O script de login lerá do servidor central qual é a contagem de login atual. Como alternativa, você pode ter um serviço que modifique o maxlogins em /etc/security/limits.conf com base no valor da contagem de login recuperada do servidor central.

maxlogins = $total_logins - $current_logins

Basicamente, a consideração mais importante é que os usuários não têm permissão para alterar a contagem de login ou podem alterar manualmente o valor para permitir mais logins.

    
por 22.10.2009 / 18:09