Restringir usuário SSH à conexão de uma máquina

5

Durante a configuração de um servidor doméstico (executando o Kubuntu 10.04), criei um usuário admin para realizar tarefas administrativas que podem exigir uma casa desmontada. Este usuário tem um diretório inicial na partição raiz da caixa.

A máquina tem um servidor SSH voltado para a Internet e eu restrinjai o conjunto de usuários que podem se conectar via SSH, mas gostaria de restringi-la ainda mais tornando admin acessível a partir do meu laptop (ou talvez apenas de o intervalo local 192.168.1.0/24).

Atualmente tenho apenas um

AllowGroups ssh-users

comigo e admin como membros do grupo ssh-users .

O que eu quero é algo que funcione como você pode esperar que essa configuração funcione (mas não funciona):

$ groups jonathan
... ssh-users
$ groups admin
... ssh-restricted-users
$ cat /etc/ssh/sshd_config
...
AllowGroups ssh-users [email protected].*
...

Existe uma maneira de fazer isso? Eu também tentei isso, mas não funcionou ( admin ainda pode logar remotamente):

AllowUsers [email protected].* *
AllowGroups ssh-users

com admin um membro de ssh-users .

Também estaria bem em permitir que admin faça login com uma chave e não permita logins de senhas, mas não encontrei nenhuma configuração geral para sshd ; existe uma configuração que requer root logins para usar uma chave, mas não para usuários gerais.

    
por Jonathan 04.01.2011 / 18:01

3 respostas

5

O módulo PAM padrão pam_access.so pode restringir logins por endereço remoto e pode ser aplicado a todos os serviços, não apenas ssh .

    
por 04.01.2011 / 19:08
1

Deve ser possível usar a diretiva Match em sshd_config . Para evitar que admin faça o login fora da sua rede local, algo como isto deve funcionar:

Match User="admin",Host="!192.168.1.0/24"
MaxAuthTries 0  # a hack — is there a better way?

Para desabilitar a autenticação de senha embutida do ssh para um usuário (embora se eu entendi a documentação corretamente, você não pode ajustar a autenticação PAM desta forma, somente a autenticação de senha integrada do sshd):

Match User="admin"
KbdInteractiveAuthentication No
    
por 04.01.2011 / 23:26
1

Uma solução seria criar uma chave ssh que seria restrita pela máquina host para ser aceitável quando a conexão vier de apenas um endereço IP ou de um domínio ou subdomínio:

Crie a chave normalmente ... algo como:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

edite o arquivo id_rsa.pub resultante (você tem a opção de escolher um nome de arquivo base diferente) que terá a seguinte aparência:

ssh-rsa AA.....

Edite o arquivo para ficar:

from="*.wangadingding.com" ssh-rsa AA....

Adicione o arquivo .pub ao ~ / .ssh / authorized_keys2 (ou crie-o) na máquina de destino

Agora, qualquer pessoa que use essa chave (presumivelmente, "admin") só poderá usá-la no domínio especificado.

    
por 01.06.2012 / 01:38