desenv-web-rp.com

Desabilitar o Shell do usuário por motivos de segurança

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 bloqueamos essas contas de usuário para que esses "usuários" não tenham Shell e não possam fazer login? Queremos evitar a possibilidade de alguém fazer o SSH como uma dessas contas de usuário.

64
Suman

Você pode usar o comando usermod para alterar o Shell de logon 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
69
jordanm

Alterar o Shell de logon não impede necessariamente a autenticação dos usuários (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 seu sistema fornece aos usuários unix e ainda podem estar autorizadas a executar algumas ações, embora provavelmente não executem diretamente comandos arbitrários.

Alterando o Shell para /bin/false ou /usr/sbin/nologin impedirá que eles executem comandos nos serviços que podem ser usados ​​para executar comandos (login no console, ssh, telnet, rlogin, rexec ...), afetando autorização apenas para alguns serviços.

Para ssh, por exemplo, isso ainda permite que eles realizem 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 pam_shells módulo para restringir autenticação ou autorização a usuários com um Shell permitido (aqueles mencionados em /etc/shells). Para ssh, você deve fazer isso no nível de autorização (account), como para autenticação sshd usa pamalém disso = 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).

Entretanto, tenha em atenção que adicionar algumas restrições na autorização global de pam impedirá a execução de trabalhos cron como esses usuários.

22
Stéphane Chazelas

Você edita o /etc/passwd e altere o Shell dos usuários de /bin/bash ou /bin/sh para /sbin/nologin

4
Mark Cohen

Primeiro, desative a senha usando passwd -l username.

Observe também na página man para passwd para a 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.
4
mdpc

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
2
Let'sTalk

Para impedir que o usuário faça logon e até autenticação através do ssh, que habilita o encaminhamento de porta (como é descrito aqui Stephane), modifico o usuário para ser semelhante ao usuário nobody do sistema:

  • autenticação de senha bloqueada em /etc/shadow (com * ou !! no campo apropriado)
  • shell desativado em /etc/passwd (por exemplo. /sbin/nologin no campo apropriado)
  • dir de origem somente leitura em /etc/passwd (por exemplo. / no campo apropriado)
1
keypress