Um usuário que possui um shell válido e nenhuma senha ainda pode efetuar login por métodos não baseados em senha, sendo o mais comum uma chave ssh. Um shell válido é necessário para executar tarefas agendadas. Um shell válido também é necessário para que su bin -c 'wibble'
funcione (no Linux, pelo menos, su bin -s /bin/sh -c 'wibble'
também funcionará).
No caso de bin
, a maioria dos sistemas nunca executa um comando como bin
em operação normal, portanto, configurar o shell para /bin/false
seria ok.
Não há risco de ataque direto permitindo que bin
efetue login via SSH, pois isso exigiria a criação de /bin/.ssh/authorized_keys
como usuário bin
ou como raiz. Em outras palavras, a única maneira de entrar é estar dentro. No entanto, ter um shell válido aumenta o risco de configuração incorreta. Também pode permitir alguns ataques remotos com serviços diferentes de SSH; por exemplo, um usuário informa que um invasor pode definir uma senha para daemon
remotamente via Samba, em seguida, use essa senha para efetuar login no SSH.
Você pode conectar o furo SSH listando os nomes dos usuários do sistema em uma diretiva DenyUsers
em /etc/ssh/sshd_config
(infelizmente, você não pode usar um intervalo numérico). Ou, inversamente, você pode colocar uma diretiva AllowGroups
e permitir apenas os grupos que contêm usuários físicos (por exemplo, users
se você conceder a todos os seus usuários físicos essa associação de grupo).
Existem bugs sobre este assunto no Debian ( # 274229 , # 330882 , # 581899 ), atualmente aberto e classificado como" wishlist ". Eu tenho a tendência de concordar que estes são bugs e os usuários do sistema devem ter /bin/false
como seu shell, a menos que pareça necessário fazer o contrário.