ISENÇÃO DE RESPONSABILIDADE : Eu sei como executar daemons que escutam as portas < 1024 usando privbind
ou algum iptables
REDIRECT. Ou, de maneira mais geral, como disponibilizar daemons em portas privilegiadas que normalmente não são executadas lá.
A pergunta em si é uma espécie de meta pergunta.
PERGUNTA : Por que é que os ports < 1024 são geralmente reservados para o usuário root. De um ponto de vista pragmático, eu adoraria ser capaz de dizer a um daemon sob qual porta lisen e não ter que se preocupar com privilégios de root. Quanto mais penso nisso, mais chego à conclusão de que especificamente esse tipo de "segurança" é apenas um inchaço histórico.
Um sysctl ao longo das linhas de sysctl -w net.ipv[46].conf.port.80=www-data
(algo assim, espero que a ideia seja o que vem por aí) seria o que eu realmente desejaria.
Desta forma, seria possível manter o "nível atual de segurança", mas ainda permitir que usuários arbitrários escutem em portas inferiores. As capacidades do Linux ( CAP_NET_BIND_SERVICE
) são um primeiro passo na direção certa - pelo menos na minha opinião - mas dado que eu estou acostumado a portas sendo < 1024 sendo algo especial, hesito em abandonar completamente a restrição. Eu simplesmente não consigo ver uma razão objetiva porque é esse o caso.
Alguém, por favor, me ilumine:)
Nota : Sim, eu li alguns dos títulos semelhantes, mas não estou muito satisfeito com um "Você não deveria estar fazendo isso". Ter que saltar através de aros para obter o apache escute na porta 80, onde tudo o que ele faz é começar com root
e, em seguida, eliminar privilégios é desnecessário (pelo menos eu acho que). Por que não posso simplesmente deixá-lo rodar como um usuário normal e fazê-lo funcionar? Dessa forma, um erro de escalonamento de privilégios não permitiria privilégios de root. Tudo o que há são privilégios de www-data
(ou seja qual for o usuário na distribuição escolhida)