Como posso restringir um usuário no servidor SSH para conceder-lhe apenas os privilégios para SSH TUNNELING ? ou seja, eles não podem executar comandos, mesmo que se conectem via SSH.
Meus servidores Linux são Ubuntu 11.04 e OpenWrt.
Como posso restringir um usuário no servidor SSH para conceder-lhe apenas os privilégios para SSH TUNNELING ? ou seja, eles não podem executar comandos, mesmo que se conectem via SSH.
Meus servidores Linux são Ubuntu 11.04 e OpenWrt.
Respostas:
No lado do servidor, você pode restringir isso configurando o shell do usuário para /bin/true
. Isso permitirá que eles se autentiquem, mas na verdade não executam nada, pois não recebem um shell para executá-lo. Isso significa que eles serão limitados a qualquer subconjunto de coisas que o SSH possa oferecer a eles. Se oferecer encaminhamento de porta, eles ainda poderão fazer isso.
No lado do cliente, você provavelmente desejará se conectar ao -N
. Isso impede que o cliente solicite um comando remoto, como um shell, apenas para após a conclusão da parte de autenticação. Obrigado aos comentaristas por esclarecer isso.
useradd sshtunnel -m -d /home/sshtunnel -s /bin/true
.
A seguir, temos a vantagem de que os encaminhamentos de soquete do agente X11 e SSH também não são permitidos, o que ainda pode ser permitido no modo Calebs. Outra vantagem é que, se o usuário puder alterar seu shell padrão de qualquer outra maneira, isso ainda restringirá seu acesso SSH apenas aos encaminhamentos TCP.
Coloque o seguinte em 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 todas as conexões TCP através de sua máquina habilitada para SSH (conexão com esta máquina, também localhost
e até mesmo conexão desta máquina com 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
encaminhe apenas conexões para a porta 12345.0.0.1 TCP 12345 (como é visível na sua máquina habilitada para SSH).
Quando o usuário normalmente se conecta, ele será desconectado instantaneamente porque o /bin/false
comando será acionado, o que não fará nada além de sair instantaneamente com o código 1. Se você quiser evitar isso e manter a conexão de encaminhamento aberta, adicione o -N
sinalizador ao ssh
comando Isso não tentará executar nenhum comando, mas ainda permitirá configurar os encaminhamentos de TCP.
Um exemplo de 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
Você pode controlar o que as pessoas podem fazer no ssh combinando grupos, assumindo que sua versão do ssh é nova o suficiente para suportá-lo (openssh 5.x +).
Basicamente, nós os tratamos como se fossem usuários de sftp, mas permitimos o encaminhamento de tcp e, opcionalmente, especificamos os destinos para os quais eles podem encaminhar. Se você atribuir a eles um diretório pessoal, mas não criar diretórios nele, 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 do Grupo de correspondências para cada grupo que deseja fornecer comportamentos ou restrições diferentes.
Você pode controlar ainda mais onde essa pessoa pode ir na rede usando 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 GID do grupo "pessoas legais" 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 Match Group. O Match Group é muito limitado no OpenSSH 4.xe versões anteriores.