Desativar shell do usuário por motivos de segurança

45

Temos várias contas de usuário que criamos para tarefas automatizadas que exigem permissões refinadas, como transferência de arquivos entre sistemas, monitoramento, etc.

Como podemos bloquear essas contas de usuário para que esses "usuários" não tenham shell e não consigam fazer o login? Queremos evitar a possibilidade de alguém poder usar o SSH como uma dessas contas de usuário.

    
por Suman 07.11.2012 / 17:28

5 respostas

49

Você pode usar o comando usermod para alterar o shell de login de um usuário.

usermod -s /sbin/nologin myuser

ou

usermod -s /usr/sbin/nologin myuser

Se o seu sistema operacional não fornecer / sbin / nologin, você poderá definir o shell como um comando NOOP, como / bin / false:

usermod -s /bin/false myuser
    
por 07.11.2012 / 18:07
17

A alteração do shell de login não impede necessariamente que os usuários se autentiquem (exceto em alguns serviços que verificam se o shell do usuário é mencionado em /etc/shells ).

As pessoas ainda podem se autenticar nos vários serviços que o seu sistema oferece aos usuários Unix, e ainda podem estar autorizados a realizar algumas ações, embora provavelmente não executem comandos arbitrários diretamente.

A alteração do shell para /bin/false ou /usr/sbin/nologin só impedirá a execução de comandos nos serviços que podem ser usados para executar comandos (login do console, ssh, telnet, rlogin, rexec ...), portanto, < em> autorização apenas para alguns serviços.

Por ssh , por exemplo, isso ainda permite que eles façam o encaminhamento de porta.

passwd -l desativará a autenticação por senha, mas o usuário ainda poderá usar outros métodos de autenticação (como authorized_keys com ssh ).

Com pam no Linux, pelo menos, você pode usar o módulo pam_shells para restringir autenticação ou autorização a usuários com um shell permitido (aqueles mencionados em /etc/shells ). Para ssh , você desejará fazê-lo no nível de autorização ( account ) da autenticação sshd usa pam além de para outros métodos de autenticação (como authorized_keys ), ou você pode fazer isso com sshd_config diretivas em /etc/ssh/sshd_config (como AllowUsers e amigos).

No entanto, tenha em atenção que a adição de algumas restrições à autorização global de pam irá potencialmente impedir a execução de cron empregos como esses utilizadores.

    
por 18.12.2014 / 14:07
4

Você edita o arquivo /etc/passwd e altera o shell de usuários de /bin/bash ou /bin/sh para /sbin/nologin

    
por 07.11.2012 / 17:43
2

Você pode usar o comando chsh:

~# chsh myuser

Insira novos detalhes do shell quando solicitado:

Login Shell [/bin/sh]: /bin/nologin

Ou versão mais curta:

~# chsh myuser -s /bin/nologin
    
por 18.12.2014 / 12:32
2

Primeiro, desative a senha usando passwd -l username .

Observe também na página man de passwd da opção -l :

   -l, --lock
       Lock the password of the named account. This option disables a password by changing it to a value which matches no
       possible encrypted value (it adds a ´!´ at the beginning of the password).

       Note that this does not disable the account. The user may still be able to login using another authentication token
       (e.g. an SSH key). To disable the account, administrators should use usermod --expiredate 1 (this set the account's
       expire date to Jan 2, 1970).

       Users with a locked password are not allowed to change their password.
    
por 07.11.2012 / 18:29