Coloque 'ForceCommand' em um arquivo de configuração específico do usuário

2

Estou tentando restringir um usuário do túnel SSH .

# sudo cat /home/user/.ssh/config
Banner none
ChrootDirectory /home/%u
PasswordAuthentication no
AllowTcpForwarding yes
X11Forwarding no
AllowAgentForwarding no
ForceCommand /bin/false

No entanto, nenhum destes parece ter qualquer efeito.

Quando prefixo /home/user/.ssh/authorized_keys com no-pty,no-agent-forwarding,no-X11-forwarding,command="/bin/false" , funciona, mas gostaria de incluir também essas diretivas na configuração permanente.

É possível restringir um usuário dessa maneira sem atualizar /etc/ssh/sshd_config ?

UPDATE Eu sei sobre Match User e Match Group ; o ponto é ter isso em uma configuração específica do usuário .

    
por aexl 24.08.2018 / 15:37

3 respostas

1

Em relação a /home/user/.ssh/config , isso é puramente para o próprio cliente ssh, usado na máquina iniciando a conexão ssh. Então não é útil aqui.

A pergunta foi atualizada dizendo que você descartou a perspectiva de adicionar Match User ou Match Group entradas em /etc/ssh/sshd_config , porque deseja uma configuração específica do usuário.

Se você quiser que determinados usuários sejam chrooted em seu diretório inicial, você poderá usar a associação ao grupo, como, por exemplo, usando Match Group e ChrootDirectory %h .

Match Group jailed
  Banner none
  ChrootDirectory %h
  PasswordAuthentication no
  AllowTcpForwarding yes
  X11Forwarding no
  AllowAgentForwarding no
  ForceCommand /bin/false
    
por 24.08.2018 / 15:45
1
# sudo cat /home/user/.ssh/config

UPDATE I know about Match User and Match Group; the point is to have this in a user-specific config.

Algo como ForceCommand funciona para limitar o que o usuário pode fazer. Isso não funciona bem em um arquivo de configuração colocado no diretório pessoal do usuário, já que eles quase certamente poderiam alterar a configuração ou, pelo menos, torná-la inacessível (por exemplo, mv ~/.ssh ~/.ssh_disabled ).

É claro que .ssh/config também é a configuração do cliente SSH , isto é, modifica o que acontece quando você faz uma conexão SSH fora desse sistema. A restrição de um usuário deve necessariamente acontecer no servidor e sshd_config é o único local em que ForceCommand está documentado. Além disso, como você diz, Include existe apenas para a configuração do cliente, então suas opções são a) coloque o ForceCommand no sshd_config da máquina com um comando Match adequado ou b) não coloque o ForceCommand em qualquer lugar.

Claro, você pode colocar a configuração do servidor SSH em conjunto a partir de arquivos distintos com algum sistema externo, o mais simples dos quais seria algo como  %código%.

    
por 25.08.2018 / 01:41
0

A primeira coisa que vem à mente: use o Include directiva .

No entanto, o só funciona dentro do /etc/ssh/ssh_config (ssh como cliente), e quando chamado /etc/ssh/sshd_config (ssh como servidor), lança um Erro " Configuração incorreta: incluir " - aparentemente, foi implementado apenas para o lado do cliente

O problema é: as diretivas que eu preciso (como ForceCommand ) são para o lado do servidor, portanto, ignoradas quando adicionadas a ssh_config .

    
por 24.08.2018 / 21:03