Comportamento de Correspondência Inesperado no sshd_config

1

Estou tentando configurar as seguintes restrições no meu sshd_config :

  1. Usuários com endereços IP locais não enfrentam restrições
  2. Usuários com endereços IP não locais, que estão no grupo sftp , têm permissão para usar o sftp em uma cadeia chroot
  3. Usuários com endereços IP não locais, que não estão no grupo sftp , não podem fazer nada.

Veja o que eu criei:

Match Address 10.0.0.0/24,172.16.0.0/20,192.168.0.0/16
        X11Forwarding yes

Match Address *,!10.0.0.0/24,!172.16.0.0/20,!192.168.0.0/16 Group sftp
        X11Forwarding no
        AllowTcpForwarding no
        ChrootDirectory %h
        ForceCommand internal-sftp

Match Address *,!10.0.0.0/24,!172.16.0.0/20,!192.168.0.0/16 Group *,!sftp
        X11Forwarding no
        AllowTcpForwarding no
        ForceCommand /sbin/nologin

O problema: quando eu tento logar de um endereço interno, como um usuário não-sftp, sou rejeitado; o terceiro jogo é acionado.

De acordo com a% man_de% manpage, uma correspondência só é satisfeita se todas as suas cláusulas forem satisfeitas, mas no meu caso, a primeira cláusula não está satisfeita (eu estou vindo de uma máquina com um 172.16.0.0/20 Endereço IP), apenas o segundo é (não estou no grupo sftp).

A% man_de% manpage está errada? É possível fazer o que estou tentando fazer?

UPDATE: por sugestão do @ steve, executei o sshd no modo de depuração e obtive isto:

debug1: userauth-request for user root service ssh-connection method none
debug1: attempt 0 failures 0
debug1: connection from 172.19.187.49 matched 'Address *,!10.0.0.0/24,!172.16.0.0/20,!192.168.0.0/16' at line 144
debug1: user root does not match group list sftp at line 144
debug1: connection from 172.19.187.49 matched 'Address *,!10.0.0.0/24,!172.16.0.0/20,!192.168.0.0/16' at line 150
debug1: user root matched group list *,!sftp at line 150
debug1: PAM: initializing for "root"

As cláusulas no-internal-adress são correspondentes; também, o primeiro Match não é mencionado no log de depuração, o que parece estranho.

ATUALIZAÇÃO:

Como apontou @Gilles, minhas especificações de endereço, conforme mostrado acima, estão incorretas. O que eu deveria ter usado era 10.0.0.0/8, não 10.0.0.0/24 e 172.16.0.0/12, não 172.16.0.0/20. Eu estava contando os bits da máscara de 32 em vez de 0. Yikes.

Com os endereços corrigidos, a configuração funciona. Obrigado Gilles e Uriel!

(Eu também alterei o / sbin / nologin na última linha para / bin / false; o primeiro leva a uma estranha mensagem de erro do sftp: sshd_config .)

    
por Thomas Okken 22.08.2015 / 21:07

2 respostas

0

Suas netmaks estão incorretas. Se você quiser incluir redes privadas, use:

10.0.0.0/8,172.16.0.0/12,192.168.0.0/16

Provavelmente é por isso que você não corresponde, em vez de um erro ssh .

    
por 22.08.2015 / 22:46
1

Eu estava respondendo a uma pergunta semelhante em Superuser.com , mas depois das respostas eu não tenho mais certeza se está certo.

Em suma, acredito que atualmente não é possível e até openssh-7.0 está fora, mas esses bugs não foram corrigidos, então teremos que insistir no upstream.

Também há resposta alternativa com feedback positivo, mas acho que é assim que você está tentando alcançar seus resultados. Eu não tentei, mas parece que isso está relacionado apenas a grupos. Caso contrário, *,!something não faz muito sentido.

Para não culpar todo o processo até aqui e não apresentar nenhum feedback construtivo, recomendo que você execute dois serviços sshd separados em portas diferentes. Um seria usuário AllowGroup sftp e forçar sftp server. O outro responderia apenas a solicitações da sua rede interna.

    
por 22.08.2015 / 21:28