Como faço para restringir um usuário SSH especificado para se conectar somente a partir de um IP ou nome de host?

4

Eu tenho um servidor de monitoramento que requer os detalhes da conexão SSH de uma conta de usuário não sudo de cada caixa que ele monitora. Existe uma maneira que eu possa configurar uma conta de usuário específica de tal forma que ela possa ser autenticada a partir de um IP específico (ou melhor ainda, hostname)? Eu não quero restringir a capacidade de outros usuários no servidor para poder se conectar de outros endereços (caso contrário eu usaria apenas um firewall), ou usa a autenticação por senha somente para o serviço de monitoramento .

    
por Programster 18.07.2015 / 10:24

4 respostas

4

Veja man sshd_config . Existe a possibilidade de adicionar AllowUsers block onde você pode especificar usuário e host assim:

AllowUsers user@host # or IP

É claro que você precisa especificar também outros usuários dos quais deseja permitir o login, se tiver algum.

Outra solução (depende de correções de bugs!)

Ao pensar nisso mais uma vez, existe a possibilidade de modificar o seu sshd_config assim:

Match Host !hostname
    DenyUsers user
Match Host hostname
    AllowUsers user

Isso facilmente bloquearia todos os usuários, exceto de user de hostname e, de qualquer outro lugar, bloquearia user .

MAS isso não funciona, por causa de alguns erros reportados upstream [1] [2]. Mas nós temos prometido que será corrigido no próximo lançamento.

por Jakuje 18.07.2015 / 10:35
3

Você pode usar curingas para a linha AllowUsers no arquivo /etc/ssh/sshd_config . Por isso, seria viável adicionar a linha:

AllowUsers *@192.168.1.100

Ou:

AllowUsers *@hostname

Para permitir que todos tenham acesso ao endereço IP ou ao nome do host.

Lembre-se de:

service ssh restart

Depois de fazer as alterações, desde que você esteja em uma versão antes de 15.04. O 15.04 usa systemd agora, então tem um mecanismo diferente para controlar os serviços.

    
O
por Arronical 18.07.2015 / 15:14
1

Como esse é o melhor resultado de pesquisa no google, acho que as pessoas também devem estar cientes da configuração de permissões no arquivo /etc/hosts.allow (cortesia de Cameron Oltmann's postagem no blog sobre o assunto):

  

Para limitar o acesso ssh a uma caixa linux com base no endereço IP de origem,   editar /etc/hosts.allow:

sshd : localhost : allow
sshd : 192.168.0. : allow
sshd : 99.151.250.7 : allow
sshd : mydomain.net : allow
sshd : ALL : deny
     

A entrada acima permitirá acesso ssh do host local, o 192.168.0.x   sub-rede, o endereço IP único 99.151.250.7 e mydomain.net (supondo   mydomain.net tem um registro ptr no local para facilitar a pesquisa inversa).   Todos os outros endereços IP terão acesso negado ao sshd.

     

Notas: Você pode permitir ou negar com base no endereço IP, na sub-rede ou no nome do host.   Listar regras em ordem de mais para menos específico. O arquivo só é lido   até que uma linha correspondente seja encontrada, portanto, se você iniciar com ssdh: ALL:   negar, nenhuma conexão ssh será permitida.

E você deve poder usar user@address neste arquivo, por este link lifewire.com :

  

Os formulários mais complexos daemon @ host e user @ host são explicados no   seções em padrões de terminal do servidor e em pesquisas de nome de usuário do cliente,   respectivamente.

    
por Gregory Martin 18.11.2017 / 00:42
0

De acordo com as páginas do manual , isso deve funcionar:

DenyUsers user@"!host,*"

Eu testei isso no Debian e ele pareceu funcionar corretamente.

    
por Roman Hocke 05.06.2017 / 14:54