Como limitar o acesso ssh apenas ao host local?

4

Eu preciso proibir o acesso ssh (exceto localhost) para o usuário especificado.

ssh localhost deve funcionar. ssh hostname de fora não deve funcionar para esse usuário.

Todos os outros usuários devem funcionar normalmente.

    
por denys 30.10.2012 / 13:54

4 respostas

6

Veja as diretivas AllowUsers e DenyUsers do sshd_config página man (e possivelmente também AllowGroups e DenyGroups ).

Basicamente, essas diretivas levam uma lista de padrões de usuários no formato user@host , separados por espaços. As diretivas têm a seguinte precedência: DenyUsers , AllowUsers , DenyGroups e finalmente AllowGroups .

Para o caso simples de permitir apenas um usuário específico de localhost , apenas a seguinte linha deve ser adicionada:

AllowUsers user@localhost

Isso implicitamente negará qualquer usuário de qualquer lugar que não seja user@localhost .

    
por 30.10.2012 / 14:02
4

Que tal se você forçar a autenticação de chave pública para o usuário específico e, em seguida, restringir sua chave pública com uma opção from= no arquivo de chaves autorizado.

Para forçar um usuário específico a usar autenticação de chave pública:

Match User Bad_User
    PasswordAuthentication no
    AuthorizedKeysFile /somewhere/the/user/cannot/touch

E, em seguida, no arquivo de chaves autorizado, configure a chave dele assim:

from=localhost ssh-rsa AAAA...

Você pode ler mais sobre as diretrizes Match em man sshd_config e sobre as opções de chaves autorizadas em man sshd .

    
por 30.10.2012 / 20:01
2

Você poderia usar o PAM (UsePAM em sshd_config) e adicionar

account  required     pam_access.so

para a configuração do PAM para ssh.

Em seguida, você pode definir as políticas de acesso em /etc/security/access.conf

+ : john : 127.0.0.1 ::1
- : john : ALL
+ : ALL : ALL

(não testado)

    
por 30.10.2012 / 22:42
-1

Se você deseja restringir o encaminhamento de TCP para esse usuário, também é possível configurar isso no arquivo sshd_config , que normalmente está em /etc/ssh/sshd_config , com uma regra de Match , como a abaixo:

Match User <username>
  AllowTcpForwarding no
Match User <username> Address *,!127.0.0.1,!::1
  ForceCommand /bin/false

Isso imporá que sempre que o usuário com o nome de usuário especificado efetuar login no SSH, se não for do host local (isto é, endereço IP 127.0.01 ou :: 1), o sistema executará /bin/false para retornar um código de erro, em vez de executar algo útil como uma concha.

Como rudimeier apontado , é necessário proibir o encaminhamento de porta para evitar que o usuário abra uma conexão SSH inicial com o encaminhamento de porta para localhost e não executando o comando (por exemplo, usando -N e -L argumentos para OpenSSH), em seguida, abrindo uma conexão SSH subseqüente através desse túnel, o que parece vir de localhost e, portanto, ser permitido.

    
por 15.05.2018 / 13:07