Como “jail” os recursos de rede de uma conta de usuário no Linux?

4

A caixa Linux a está conectada a uma linha DSL residencial com registro DNS dinâmico, hospedando uma sessão tmux na qual vários clientes se conectam no modo somente leitura por SSH. Todos os usuários se conectam usando as mesmas credenciais: usuário b .

Example: ssh [email protected] tmux attach -t screencast

Tudo funciona bem, mas eu tive um usuário fazendo coisas "impertinentes" da caixa para a Internet. Isso é inaceitável, pois sou responsável pelo meu contrato de Internet com o ISP; como faço para prender completamente todos os usuários, além de conceder a capacidade de usar a conta b , sobre ssh , usando tmux para assistir à sessão screencast na minha máquina a ?

Estou pensando em atualizar o ipchains logo após um usuário se conectar através do ssh, permitindo o tráfego de volta para esse endereço IP apenas, mas ... com vários visualizadores compartilhando a mesma conta?

    
por Robottinosino 30.08.2012 / 10:10

1 resposta

1

Eu não entendo completamente seus requisitos: em qual máquina os usuários serão presos? Eles podem fazer qualquer coisa que não envolva a rede? No entanto, acho que posso dizer quais são os blocos de construção necessários.

Para restringir um usuário a conexões de rede específicas, consulte Como restringir o acesso à internet para um usuário em particular na lan usando o iptables no Linux . Resumindo, para restringir o tráfego de rede do usuário 1234 à conexão com 192.0.2.42 (o endereço IP da máquina A) via ssh:

iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner 1234 -d 192.0.2.42 --dport 22 -j ACCEPT
iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner 1234 -j DROP

Lembre-se também de bloquear o IPv6 se você o tiver.

Na máquina A, para restringir os usuários restritos à conta B, o método mais eficaz é fazer com que esses usuários não tenham credenciais para outras contas. Você pode usar as diretivas Match em sshd_config para restringir conexões de determinados Endereços IP para autenticar certos usuários, mas isso pode não ser uma boa coisa, pois impediria que você obtivesse acesso administrativo.

Match 192.0.2.99
    AllowTCPForwarding No
    AllowUsers B
    PasswordAuthentication No
    X11Forwarding No

Para restringir a conta B a um único comando, existem duas maneiras:

  • Dê aos usuários uma chave privada (preferencialmente uma por usuário) e defina restrições para essa chave na authorized_keys arquivo com uma diretiva command= .

    command="tmux attach-session -r -t screencast" ssh-rsa …
    
  • Defina o shell do usuário para um script que lance tmux com os argumentos certos. Isso tem a vantagem de permitir a autenticação de senhas, mas pode ser mais difícil de acertar de uma maneira que não permita que o usuário abra um prompt de shell.

Eu acho que o tmux que o tmux não permite escudos do shell em uma sessão somente leitura, mas não tenho certeza, verifique se os usuários não podem escapar nesse ponto.

    
por 31.08.2012 / 02:59