Por que as primeiras 1024 portas são restritas apenas ao usuário root?

51

Isso é mais curiosidade ociosa do que qualquer outra coisa. Um amigo meu me perguntou 'qual intervalo de portas é aquele que somente o root pode usar no Linux?' Eu disse a ele que 0-1024 estavam restritos. Então ele perguntou por que era assim e ... eu estava perdido. Nenhuma ideia.

Existe uma razão pela qual essas portas são restritas e 1025-65535 não são?

A maioria dos principais serviços de rede (HTTP, FTP, SSH, Telnet, HTTPS, POP, SMTP, etc.) estão nesse intervalo, de modo que as respostas possíveis foram pensadas:

  • Um usuário não confiável pode executar um programa que escutou essas portas para obter detalhes de login.
  • Um usuário não confiável pode executar um aplicativo de servidor não autorizado.

Alguém pode iluminar aqui?

    
por Andrew Lambert 13.07.2011 / 02:11

1 resposta

50

Suponha que você esteja trocando dados com um computador em uma porta < 1024 e saiba que o computador está executando alguma variante do unix. Então você sabe que o serviço que está sendo executado nessa porta é aprovado pelo administrador do sistema: ele está sendo executado como root ou pelo menos teve que ser iniciado como root.

No mundo amplo e selvagem da Internet, isso não importa. A maioria dos servidores é administrada pelas mesmas pessoas que os serviços executados nelas; você não confiaria mais nas raízes do que os outros usuários.

Com máquinas multiusuário, especialmente em uma rede local, isso pode ser importante. Por exemplo, nos dias anteriores à criptografia civil, um método popular de executar comandos shell em outra máquina era rsh ( r emote sh ell); você poderia usar a autenticação por senha, ou você poderia autenticar apenas provando que você era o usuário X na máquina A (com a máquina B sabendo que o X @ A poderia logar como X @ B sem senha). Como provar isso? O cliente rsh é a raiz setuid e usa um número de porta < 1024, portanto, o servidor sabe que o cliente com o qual está falando é confiável e não vai saber qual usuário em A está invocando-o. Da mesma forma, o NFS foi projetado para ser transparente em relação a usuários e permissões, portanto, uma configuração comum era a de que rede local, cada máquina usava o mesmo banco de dados de usuário e o usuário N em A. Os sistemas de arquivos de montagem do servidor B obteriam as permissões do usuário N em B. Novamente, o fato de o cliente NFS ser proveniente de um número de porta < em A vetou o cliente NFS, que deve certificar-se de que, se ele transmitir uma solicitação do usuário N, essa solicitação será realmente do usuário N.

Usuários não autorizados que não conseguem executar servidores em portas baixas são outro benefício, mas não o principal. Nos dias de hoje, o spoofing era uma novidade e os usuários que executavam spoofs eram rapidamente reprimidos por administradores vigilantes de qualquer maneira.

    
por 13.07.2011 / 02:42