Conceder permissão de processo apenas a um intervalo específico de portas locais

1

Estou procurando uma maneira de impedir que um processo específico seja vinculado a qualquer coisa fora de um intervalo específico de portas locais. Vamos dizer localhost: 50000 - localhost: 50050 é um intervalo permitido. Eu não estou procurando mudar o alcance de portas efêmeras.

É possível conceder direitos de processo apenas a um intervalo muito específico de portas locais às quais é permitido vincular? Isso seria factível se meu aplicativo fosse amigável ao contêiner, mas eu preciso fazer isso sem uma camada de abstração do docker.

Este aplicativo tenta um bind (0) onde ele irá escolher aleatoriamente 5 portas locais para vincular.

    
por Brando___ 09.08.2017 / 23:18

2 respostas

2

Você pode isolar seu processo em um espaço de nome IP separado (consulte man ip-netns ). Então, não importa qual porta se liga porque você tem que encaminhar o tráfego lá de qualquer maneira.

Para o mundo externo, seria como se o processo usasse as portas certas (não para netstat , mas para conexões feitas).

    
por 09.08.2017 / 23:36
0

Se você estiver executando seu processo sempre como o mesmo usuário não raiz, poderá usar iptables para descartar tráfego para outras portas que não sejam as portas especificadas usando owner module.

Se o seu sistema estiver executando o SELinux, escrever uma política para restringir seu aplicativo provavelmente será uma opção significativamente melhor e você não precisará alterar nada no código-fonte. Ferramentas como polgengui podem ser úteis para começar.

    
por 09.08.2017 / 23:25