Como a condição Address em um bloco condicional Match em sshd_config pode ser negada?

5

Eu gostaria de forçar os usuários a um comando específico quando eles fazem login de fora da minha LAN via SSH na minha LAN. Minha ideia era usar ForceCommand em um bloco condicional Match , que corresponde a todos os endereços, exceto os da minha LAN.

Eu tentei o seguinte, de acordo com man 5 sshd_config :

  • Match Address !192.168.1.0/24 permitiu que usuários de qualquer lugar executassem qualquer comando.
  • Match Address !192.168.* permitiu que usuários de qualquer lugar executassem qualquer comando.
  • Match !Address 192.168.* impediu a execução de qualquer comando por meio do sshd se recusando a iniciar.

A negação de um padrão usando ! é descrita em man 5 ssh_config (Seção "Padrões") . Como isso pode ser aplicado aos endereços?

    
por Oswald 16.07.2012 / 22:56

1 resposta

5

De acordo com esta resposta do ServerFault , por algum motivo desconhecido, você precisa adicionar uma correspondência de caractere curinga para fazer isso . A notação CIDR, no entanto, parece funcionar. Por exemplo:

Match Address *,!192.168.1.0/24
    ForceCommand /bin/false

Isso funciona para mim com o OpenSSH 5.9p1.

    
por 17.07.2012 / 08:27