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.