sshfs: chroot todos os usuários não-root para o diretório específico

9

Em um servidor, eu preciso de acesso ssh irrestrito para o root e restrito para todos os outros usuários.

Gostaria de restringir todos os usuários não-root a:

  • sem login no ssh
  • só permite a montagem /mnt/data/ usando sshfs

Eu vejo que sshd_config permite usar Match User , ou seja:

Match User john
  ChrootDirectory /mnt/data/
  ForceCommand internal-sftp
  AllowTCPForwarding no
  X11Forwarding no

mas como posso combinar todos os usuários, exceto o root?

    
por Martin Vegter 09.11.2018 / 15:11

1 resposta

12

A diretiva Match nos arquivos de configuração de ssh suporta negação. Mas parece que negar condições em sshd_config é um pouco complicado: você tem que escrever

Match User="!root,*"

para que diretivas subseqüentes sejam aplicadas a todos os usuários, exceto o root.

Aqui está a documentação relevante: de man sshd_config :

Match Introduces a conditional block.
...
The match patterns may consist of single entries or comma-separated lists and may use the wildcard and negation operators described in the PATTERNS section of ssh_config(5).

E de man ssh_config :

PATTERNS
A pattern consists of zero or more non-whitespace characters, ‘*’ (a wildcard that matches zero or more characters), or ‘?’ (a wildcard that matches exactly one character).
...
Note that a negated match will never produce a positive result by itself.
For example, attempting to match "host3" against the following pattern-list will fail:

from="!host1,!host2"

The solution here is to include a term that will yield a positive match, such as a wildcard:

from="!host1,!host2,*"

Dica encontrada em este artigo no Portal do Cliente Red Hat.

    
por 15.11.2018 / 18:31

Tags