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 diretivacommand=
.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.