
Gostaria de definir alguns serviços do Linux para portas não padrão - qual é o número de porta válido mais alto?
Responder1
(2^16)-1 ou 0-65.535 (o -1 ocorre porque a porta 0 está reservada e indisponível). (editado porque o_O Tync me lembrou que não podemos usar a porta 0, e Steve Folly me lembrou que você pediu a porta mais alta, não o número de portas)
Mas você provavelmente está fazendo isso da maneira errada. Há pessoas que argumentam a favor e contra os portos não padronizados. Eu digo que eles são irrelevantes, exceto para o scanner mais casual, e o scanner mais casual pode ser mantido sob controle usando software atualizado e técnicas de firewall adequadas, juntamente com senhas fortes. Em outras palavras, melhores práticas de segurança.
Responder2
1-65535 estão disponíveis e as portas na faixa 1-1023 são asprivilegiadouns: um aplicativo precisa ser executado como root para escutar essas portas.
Responder3
Embora 1-65535 sejam portas TCP legítimas e seja verdade que 1-1023 são para serviços portuários bem conhecidos. Você pode encontrar problemas aleatórios com seus próprios serviços se eles forem iniciados após o estabelecimento de uma porta efêmera. Para quem não sabe, portas efêmeras são aquelas conectadas localmente para terminais remotos (ou algo parecido). Então, se você escrever um serviço TCP que escuta na porta 20001. Você pode estar bem hoje... e amanhã. Mas um dia seu serviço pode iniciar e tentar vincular-se a 20001 e falhará porque foi considerado uma porta efêmera. Existe uma solução. Você deve pedir ao seu administrador ou você mesmo para alterar a política de intervalo de portas efêmeras do sistema em seu servidor. Em sistemas Linux isso é feito em duas etapas:
- Dinamicamente
- Permanentemente
Ambas as etapas devem ser executadas, a menos que você esteja planejando reinicializar (nesse caso, a etapa Dinâmica não é necessária). Para definir seu intervalo de 40.000 a 65.535, faça o seguinte:
Dinâmico
echo 40000 65535 > /proc/sys/net/ipv4/ip_local_port_range
ou
sysctl -w net.ipv4.ip_local_port_range="40000 65535"
Permanente
Adicione o seguinte ao /etc/sysctl.conf:
net.ipv4.ip_local_port_range = 40000 65535
Para ler a configuração atual ou confirmar a alteração:
/sbin/sysctl net.ipv4.ip_local_port_range
A saída será algo assim:
net.ipv4.ip_local_port_range = 9000 65500
Certifique-se de compreender o propósito do seu servidor. Reduzir muito o alcance pode levar a outros problemas.
Boa codificação! (ou o que quer que você faça)
Responder4
todas as pessoas que dizem 65.535 estão corretas.
NO ENTANTO!!! com alguma manipulação cuidadosa dos parâmetros ajustáveis do kernel, você pode dizer ao Linux para usar mais. Alguns sistemas UNIX comerciais executariam serviços em portas tecnicamente fora dos limites sem problemas. Maneira super simples de contornar algumas das redes protegidas por firewall/ACL também! :P
Eu costumava rodar um segundo servidor telnet em tcp/99999 e sempre funcionou para mim. Mesmo nos casos em que as portas privilegiadas típicas (1-1024) são bloqueadas por ACL ou firewall de rede.
Quase ninguém procura portas acima de 65.535. A maioria dos equipamentos de rede não pode inspecionar nada fora do intervalo definido (0-65535) e encaminhar cegamente o tráfego, a menos que seja instruído a fazer o contrário por regra. Agora que temos sistemas de 64 bits, o intervalo superior são tecnicamente os limites de 64 bits. Não significa que as redes passarão o tráfego, mas normalmente elas passam qualquer coisa que não haja uma regra para descartar ou negar.