Meu colega de trabalho apontou para a mesma direção que o / u / meuh, usando uma abordagem um pouco diferente.
Match Address "172.24.*.33"
PermitRootLogin yes
Match Address "192.168.1.18,192.168.1.20"
PermitRootLogin yes
Eu quero permitir SSH para todos os usuários como normal exceto que eu quero restringir o acesso do root com base em um conjunto de endereços IP. Portanto, os usuários peter
, paul
, lary
podem efetuar login de qualquer lugar, mas root
pode efetuar login apenas dos hosts a.b.c.d
e q.r.s.t
.
sshd_config
AllowUsers
não funciona para isso. Se eu especificar algo, então devo especificar todos os usuários. AllowGroups
é verificado incondicionalmente, mesmo que o usuário esteja na lista de permissões em AllowUsers
; por isso, se eu tentar listar usuários não raiz colocando-os em um grupo e, em seguida, adicionar o grupo a AllowGroups
, a autenticação ainda falhará, pois a raiz não está em um grupo permitido válido. sshd_config
DenyUsers
pode funcionar se eu puder de alguma forma colocar na lista de permissões o conjunto de IPs da qual a raiz do IP é negada. Se eu tivesse apenas um IP, ele poderia funcionar com o operador !
. options
no arquivo authenticated_keys e desativando completamente a senha do root. O problema é que esse arquivo não é uma política do sistema e pode ser sobrescrito por outro usuário (acesso root). Atualmente, é a melhor opção que eu tenho, e eu não gosto disso. Além disso, se eu nuke a senha de root, alguém do meu grupo ficará muito zangado comigo. (Se eu não eliminar a senha de root, alguém pode logar via root com a senha de qualquer IP.) Eu tentei fazer isso com o PAM, especificamente via pam_listfile
, mas minha abordagem não parecia funcionar:
auth required pam_sepermit.so
auth required pam_listfile.so file=/etc/root-whitelist.txt sense=allow item=rhost apply=root
auth include password-auth
Dentro do arquivo root-whitelist.txt
, foram permitidos endereços IP, linha por linha. Não consegui obter a regra para negar o acesso a IPs não listado.
A abordagem pam_listfile
é utilizável e eu simplesmente entendi errado? Existe uma maneira melhor?
Meu colega de trabalho apontou para a mesma direção que o / u / meuh, usando uma abordagem um pouco diferente.
Match Address "172.24.*.33"
PermitRootLogin yes
Match Address "192.168.1.18,192.168.1.20"
PermitRootLogin yes
Dependendo da sua versão do ssh, você pode definir uma condição de correspondência
em torno de seus AllowUsers. man sshd_config
lista os comandos permitidos em Match. Se AllowUsers estiver lá, tente o seguinte. Certifique-se de que esteja no final do arquivo.
Match User root
AllowUsers root@ a.b.c.d [email protected]
Por exemplo, não no Debian OpenSSH_6.0p1, mas sim no Ubuntu OpenSSH_6.6.1p1.
Outro colega de trabalho me apontou a direção do módulo pam_access . Isso usa o formato normalmente encontrado em /etc/security/access.conf
, mas qualquer arquivo pode ser especificado; ele pode ser ativado para todo o sistema ou apenas para o processo sshd. Eu não tentei isso, mas presumivelmente eu posso configurar o pam_access usando os padrões (no RHEL) adicionando-o à seção auth
em /etc/pam.d/sshd
. Então o arquivo access.conf
se parece com isto:
+ : root : hosta hostb hostx
- : root : ALL