Portas abaixo de 1024

5

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)

    
por serverhorror 05.06.2011 / 03:14

1 resposta

1

Até onde eu sei, isso é, na verdade, apenas uma convenção histórica ; A ideia é que, ao acessar uma porta com menos de 1024, você pode ter certeza de que está acessando o que o administrador do servidor configurou para executar no servidor. Isso fazia mais sentido quando os servidores eram poucos e enormes e você precisava de uma maneira fácil de autenticar, ou pelo menos julgar a confiabilidade de um serviço, por esses meios básicos.

A propósito, você pode achar que as Capacidades fazem o que você quer. Veja esta pergunta SO para mais informações sobre as alternativas, mas aqui está o uso da amostra:

setcap 'cap_net_bind_service=+ep' /path/to/program
    
por 05.06.2011 / 03:31