Teria sido bom saber qual servidor SSH você solicitou e quais sistemas (conjuntos de) Unix.
!
e *
não são senhas quando você as vê em /etc/passwd
ou /etc/shadow
(use getent
para ler essas entradas).
São marcadores que indicam se a conta tem uma senha ou não e se está bloqueada ou não.
Esta é uma distinção importante, dependendo da configuração e versão do PAM e da distribuição, se você estiver no Linux . Se bloqueado, é menos provável que você tenha permissão para efetuar login, mas, por outro lado, é possível que ele funcione imediatamente em sistemas mais antigos (pelo menos, essa é a minha experiência).
Você pode usar (como superusuário) passwd -l <name>
para bloquear uma conta ( !
) ou passwd -d <name>
para excluir a senha dela ( *
) e também pode combinar ambas, o que simplesmente garantiria que qualquer a senha existente é removida: passwd -dl <name>
.
Você não diz, mas assumindo o OpenSSH as diretivas relevantes em /etc/ssh/sshd_config
(o caminho pode variar) são:
HostKey ...
O servidor precisa ter uma chave de host ou RSA2 ou DSA (e a implementação mais moderna inclui também duas implementações de curva elíptica). O RSA1 foi abandonado por todas as implementações comuns de servidores SSH.
Então:
RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication no
Eu também recomendaria sempre configurar /etc/sudoers
e completamente não permitir root
login via SSH ( PermitRootLogin no
). No entanto, pode haver uma pequena desvantagem nessa configuração mais segura, quando o disco estiver cheio e seu sudo
membro não privilegiado não conseguir gravar no disco, mas root
(devido ao espaço reservado). Então YMMV.
Mais dois conselhos
Atribuir um grupo para limitar o acesso SSH
Crie um grupo ssh-users
(ou qualquer nome que você queira) e defina a respectiva diretiva em sshd_config
. Certifique-se de que root
seja ou não membro desse grupo de acordo com a política escolhida com base nas informações acima.
AllowGroups ssh-users
Designe um grupo para limitar os usuários a somente acesso via SFTP
Em sshd_config
, o seguinte garantirá que os usuários não possam escapar de /home
e que certas funcionalidades estejam desativadas para eles.
Match group sftponly
ChrootDirectory /home
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
PasswordAuthentication no
Conclusão
Então, sim, o PAM teria que ser adicionado como consideração no Linux.
Além disso, para permitir o encaminhamento de agentes ou deixar isso para seus usuários.
E por último, mas não menos importante, permitir que eles encaminhem portas ou conexões X11. Especialmente as portas podem ser indesejáveis, pois permitem que um usuário use seu servidor como proxy.
A diretiva Match
permite que você limite usuários em relação ao local de conexão (um firewall também pode fazer isso ou os wrappers TCP).
Você deseja que seus usuários tenham permissão para gerenciar as chaves ou deseja abstrair isso e tornar o acesso direto a authorized_keys
indisponível para eles?
Há certamente mais aspectos, mas eles são principalmente em um nível de detalhe mais refinado e, como tal, variações dos pontos acima mencionados.