como fazer uma porta local segura como um usuário normal

3

Estou trabalhando em um servidor Linux compartilhado como um usuário normal sem acesso root. Posso iniciar um programa ouvindo em uma porta tcp local e ser o único usuário capaz de se conectar a essa porta? Eu posso controlar o endereço e porta do programa escuta.

Por exemplo, este programa pode ser uma versão de desenvolvimento / teste de um servidor web.

Além disso, como o servidor só aceita conexões tcp de entrada na porta 22 (ssh), estou encaminhando a porta local pelo ssh para que eu possa conectar à porta usando meu laptop. ssh -L 8080:localhost:8000 evaben@dice01 Então uma solução que ainda permita isso ou algo similar seria bom.

    
por Evan Benn 11.04.2018 / 08:34

2 respostas

3

Apenas o root pode configurar firewalls.

Uma possibilidade é executar o programa em um contêiner como o Docker. Isso requer privilégios de root, mas há uma chance de você ter permissão para instanciar contêineres do Docker mesmo que você não tenha acesso root.

Se você não tem uma maneira direta ou indireta de configurar a proteção de rede, precisará modificar o funcionamento do programa. Faça-o escutar em um soquete Unix em vez do TCP. Assumindo que o programa está dinamicamente ligado à biblioteca padrão (virtualmente todos os programas são), você não precisa mudar o programa em si, da maneira que você o executa. Você pode fazer isso com LD_PRELOAD , carregando um wrapper para o TCP função de abertura de soquete que, em vez disso, abre um soquete Unix. ttu faz exatamente isso (de acordo com a documentação, nunca usei).

    
por 11.04.2018 / 09:13
3

Can I start a program listening on a local tcp port

Sim. Se você não for root, só poderá ouvir nas chamadas "portas altas", ou seja, números de portas > 1024.

and be the only user able to connect to that port?

Não. Se você tivesse acesso root, poderia ter feito algo com iptables , mas não há nenhum conceito de controle de acesso baseado em usuário ao aceitar conexões em uma porta.

    
por 11.04.2018 / 08:44