A execução de SSH em uma porta alternativa não conta mais como segurança. Isso adiciona apenas um pouco de obscuridade e uma etapa adicional de complexidade para seus usuários. Ele adiciona zero obstáculos para pessoas que querem quebrar sua rede, que estão usando scanners de porta automatizados e não se importam com a porta em que estão sendo executados.
Se você deseja reforçar a segurança em um sistema que permite o SSH de entrada remoto baseado na Internet, controle seus usuários no sshd_config como @Anthon indicado e, em seguida, implemente a segurança diretamente no PAM.
Crie dois grupos, lusers e rusers . Adicione os usuários móveis remotos ao grupo rusers . Use o módulo PAM pam_succeed_if.so para permitir o acesso a esses usuários. Adicione linhas à configuração do seu pam para ssh:
account sufficient pam_succeed_if.so user ingroup lusers
account sufficient pam_succeed_if.so user ingroup rusers
Alguns módulos pam_succeed_if.so podem exigir que você use uma sintaxe ligeiramente diferente, como group = lusers .
Então, não apenas sshd está limitando os usuários que podem se conectar, mas no caso de um bug em sshd , você ainda tem a proteção que as restrições baseadas em PAM oferecem.
Um passo adicional para os usuários remotos é forçar o uso de ssh_keys com senhas. Assim, os usuários locais podem efetuar login com chaves ou senhas, mas os usuários remotos devem ter uma chave e, se você criar as chaves para eles, verifique se a chave possui uma senha associada. Assim, limitar o acesso a locais que realmente possuem a chave SSH e a frase secreta. E limitar potenciais vetores de ataque se a senha de um usuário for comprometida.
Em sshd_config :
altere 2 configurações:
ChallengeResponseAuthentication yes
e
PasswordAuthentication yes
para:
ChallengeResponseAuthentication no
e
PasswordAuthentication no
Portanto, o padrão é permitir agora apenas a autenticação por chave. Em seguida, para usuários locais, você pode usar a configuração match config para alterar o padrão para usuários locais. Supondo que sua rede privada local seja 192.168.1.0/24, adicione a sshd_config :
Match Address 192.168.1.0/24
PasswordAuthentication yes
Agora, os usuários locais podem se conectar com senhas ou chaves, e usuários remotos serão forçados a usar chaves. Cabe a você criar as chaves com frases secretas.
Como benefício adicional, você só precisa gerenciar um único sshd_config e só precisa executar o ssh em uma única porta, o que facilita seu próprio gerenciamento.
edit 2017-01-21 - Limitando o uso de arquivos authorized_keys .
Se você quiser ter certeza de que os usuários não podem apenas gerar uma chave ssh, e usá-la com um arquivo authorized_keys para login, você pode controlar isso definindo um local específico para o sshd procurar por chaves autorizadas.
Em /etc/ssh/sshd_config , altere:
AuthorizedKeysFile %h/ssh/authorized_keys
para algo como:
AuthorizedKeysFile /etc/.ssh/authorized_keys/%u
Apontar para um diretório controlado no qual os usuários não têm permissão para gravar significa que eles não podem gerar sua própria chave e usá-la para solucionar as regras que você estabeleceu.