AllowGroups e Match Address para SSH

1

Eu tenho um servidor doméstico com algumas contas SSH que possuem senhas fracas. Como só o usamos localmente, isso não é um problema tão grande.

Agora, desejo permitir acesso externo a partir de apenas uma conta, mas ainda acesso local a partir das outras. Mas isso não funciona (porque apenas um subconjunto de opções é permitido em jogos):

AllowUsers externaluser
Match Address 192.168.0.0/24
AllowGroups localusers

Qual é a melhor maneira de imitar isso? (ou devo apenas permitir que os usuários locais também tenham acesso externo, mas sem autenticação de senha, esperando que eles mantenham suas chaves privadas privadas?)

    
por pascal 12.09.2011 / 14:33

2 respostas

3

Talvez o pam_access seria a melhor maneira de fazer isso?

por exemplo: em /etc/security/access.conf, faça linhas como:

    + : root : 192.168.0.
    + : localonlygroup : 192.168.0.
    + : remoteuser: ALL
    - : ALL : ALL

Em seguida, certifique-se de que /etc/pam.d/sshd, em torno de onde provavelmente há uma linha como:

    account    required     pam_nologin.so

adicione outra linha como:

    account    required     pam_access.so
    
por 12.09.2011 / 15:58
3

É possível conseguir exatamente o que você está tentando!

Uma solução é executar duas instâncias sshd diferentes, uma para usuários externos e outra para usuários internos. Com algum uso inteligente do iptables REDIRECT target, você pode continuar permitindo que as pessoas se conectem ao sshd na porta 22, mas dependendo de onde elas estão vindo, elas obterão a instância apropriada. Algo como:

# Connect inside users to "inside" sshd.
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 22 -j REDIRECT --to-ports 2200

# Connect out*emphasized text*side users to "outside" sshd.
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -p tcp --dport 22 -j REDIRECT --to-ports 2201

Isto pressupõe que você tenha o sshd interno escutando na porta 2200 e o sshd externo escutando na porta 2201, e que cada um deles esteja usando um arquivo sshd_config configurado apropriadamente. Note também que para isso funcionar você precisa:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 2200 -j ACCEPT
iptables -A INPUT -p tcp --dport 2201 -j ACCEPT

Fazemos exatamente isso para alguns de nossos hosts de login interativos e funciona bem.

    
por 12.09.2011 / 15:22

Tags