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
.
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.
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
.
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
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.