Como restringir um usuário SSH para permitir somente o tunelamento SSH?

22

Como posso restringir um usuário no servidor SSH para permitir somente os privilégios para SSH TUNNELING ? Ou seja, eles não podem executar comandos mesmo se fizerem login via SSH.

Meus servidores Linux são Ubuntu 11.04 e OpenWrt.

    
por LanceBaynes 03.06.2011 / 10:47

3 respostas

20

No lado do servidor, você pode restringir isso definindo o shell do usuário como /bin/true . Isso permitirá que eles autentiquem, mas não executem nada, já que eles não obtêm um shell para executá-lo. Isso significa que eles estarão limitados a qualquer subconjunto de itens que o SSH possa oferecer. Se ele oferecer o encaminhamento de porta, ele ainda poderá fazer isso.

No lado do cliente, você provavelmente desejará se conectar com o -N . Isso impede que o cliente solicite um comando remoto, como um shell, ele pára após a conclusão da autenticação. Obrigado aos comentaristas por divulgar isso.

    
por 03.06.2011 / 10:52
8

O seguinte tem a vantagem de que os encaminhamentos de soquete de agente X11 e SSH também não são permitidos, o que pode ainda ser permitido no modo Calebs. Outra vantagem é que, se o usuário for capaz de alterar seu shell padrão de qualquer outra forma, isso ainda restringirá seu acesso SSH a apenas encaminhamentos TCP.

Coloque o seguinte no seu /etc/ssh/sshd_config :

Match User that-restricted-guy
  AllowTcpForwarding yes
  X11Forwarding no
  AllowAgentForwarding no
  ForceCommand /bin/false

para permitir que o usuário that-restricted-guy encaminhe quaisquer conexões TCP através de sua máquina habilitada para SSH (conexão a esta máquina, também a localhost e até conexão desta máquina a outras máquinas).

Se você quiser ainda mais restritivo (o que é uma boa ideia), você também pode fazer o seguinte:

Match User even-more-restricted-guy
  PermitOpen 127.0.0.1:12345
  X11Forwarding no
  AllowAgentForwarding no
  ForceCommand /bin/false

Isso permitirá que o usuário even-more-restricted-guy sempre encaminhe conexões para a porta TCP 123.0.0.1 TCP 12345 (como é visível através da máquina habilitada para SSH).

Quando o usuário normalmente se conecta, ele será desconectado instantaneamente porque o comando /bin/false será acionado, o que não faz nada, mas sair instantaneamente com um código 1. Se você quiser evitar isso e manter aberta a conexão de encaminhamento, adicione o -N flag para o comando ssh . Isso não tentará executar nenhum comando, mas ainda permitirá configurar os encaminhamentos do TCP.

Um exemplo de um comando de encaminhamento que deve funcionar na última configuração:

ssh -L 12345:127.0.0.1:12345 -N even-more-restricted-guy@insert-your-machine
    
por 14.01.2017 / 22:51
1

Você pode controlar o que as pessoas podem fazer em ssh fazendo a correspondência entre grupos, supondo que sua versão do ssh seja nova o suficiente para suportá-lo (openssh 5.x +).

Basicamente, nós os tratamos como se fossem usuários do sftp, mas permitimos o encaminhamento do tcp e opcionalmente especificam os destinos para os quais eles podem encaminhar. Se você der a eles um diretório pessoal, mas não criar nenhum diretório sob ele, eles não poderão transferir nenhum arquivo porque não terão permissão para fazê-lo.

Match Group                     nicepeople
    PubkeyAuthentication        yes
    PasswordAuthentication      yes
    PermitEmptyPasswords        no
    GatewayPorts                no
    ChrootDirectory             /opt/dummy_location/%u
    ForceCommand                internal-sftp
    AllowTcpForwarding          yes
        PermitOpen              192.168.0.8:22
        PermitOpen              192.168.0.5:8080
    # Or leave out the PermitOpen to allow forwarding to anywhere.
    HostbasedAuthentication     no
    RhostsRSAAuthentication     no
    AllowAgentForwarding        no
    Banner                      none

Você pode repetir esses blocos Match Group para cada grupo que deseja fornecer diferentes comportamentos ou restrições.

Você pode controlar ainda mais onde essa pessoa pode ir na rede usando o iptables

/sbin/iptables -I OUTPUT -m owner --gid-owner 500 -j REJECT
/sbin/iptables -I OUTPUT -m owner --gid-owner 500 -m tcp -p tcp -d 192.168.0.0/24 -j ACCEPT

Isso pressupõe que o grupo "nicepeople" GID seja 500.

Algumas das opções ssh acima estão disponíveis nas versões mais antigas do openssh, mas não na seção do Match Group. O Match Group é muito limitado no OpenSSH 4.xe anterior.

    
por 01.01.2015 / 04:50