A execução SSH
em uma porta alternativa não conta mais como segurança. Ele apenas adiciona um pouco de obscuridade e uma etapa adicional de complexidade para seus usuários. Ele adiciona zero obstáculo para as pessoas que desejam interromper sua rede, que estão usando scanners de portas automatizados e não se importam com qual porta está sendo executada.
Se você deseja reforçar a segurança em um sistema que permite SSH de entrada remoto baseado na Internet, controle seus usuários da maneira que o sshd_config
@Anthon indicou e, em seguida, implemente a segurança diretamente no PAM.
Crie dois grupos lusers
e rusers
. Adicione os usuários móveis remotos ao rusers
grupo. Use o módulo PAM pam_succeed_if.so para permitir o acesso a esses usuários. Adicione linhas à sua configuração do 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 sintaxe um pouco diferente, como group = lusers
.
Então, não apenas está sshd
limitando os usuários que podem se conectar, mas no caso de um bug sshd
, você ainda tem a proteção que as restrições baseadas no PAM oferecem.
Uma etapa adicional para os usuários remotos é forçar o uso de ssh_keys com senhas. Portanto, 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, poderá garantir que a chave tenha uma senha associada. Assim, limitando o acesso a locais que realmente possuem a chave SSH e a senha. E limitando possíveis vetores de ataque se a senha de um usuário for confirmada.
Em sshd_config
:
altere 2 configurações:
ChallengeResponseAuthentication yes
e
PasswordAuthentication yes
para:
ChallengeResponseAuthentication no
e
PasswordAuthentication no
Portanto, o padrão é agora permitir apenas a autenticação de chave. Em seguida, para usuários locais, você pode usar a match
configuração 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 um benefício adicional, você só precisa gerenciar uma única sshd_config
e executar o ssh em uma única porta, o que facilita seu próprio gerenciamento.
editar 21/01/2017 - Limitando o uso de authorized_keys
arquivos.
Se você deseja garantir que os usuários não possam gerar apenas uma chave ssh e usá-la com um authorized_keys
arquivo para efetuar login, você pode controlar que, definindo um local específico para o sshd, procure 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ê implementou.
lusers
grupo, mas não orusers
grupo, gerar um par de chaves e atualizá-lo~/.ssh/authorized_keys
, ele poderá fazer login a partir do controle remoto.