web-dev-qa-db-fra.com

Quel est le numéro de port maximum?

Je voudrais définir certains services Linux sur des ports non standard - quel est le numéro de port valide le plus élevé?

72
Yehosef

(2 ^ 16) -1, ou 0-65,535 (le -1 est dû au fait que le port 0 est réservé et indisponible). (modifié parce que o_O Tync m'a rappelé que nous ne pouvons pas utiliser le port 0, et Steve Folly m'a rappelé que vous avez demandé le port le plus élevé, pas le nombre de ports)

Mais vous y allez probablement dans le mauvais sens. Il y a des gens qui plaident pour et contre les ports non standard. Je dis qu'ils ne sont pas pertinents, sauf pour le scanner le plus occasionnel, et le scanner le plus occasionnel peut être tenu à distance en utilisant un logiciel à jour et des techniques de pare-feu appropriées, ainsi que des mots de passe forts. En d'autres termes, les meilleures pratiques de sécurité.

77
Matt Simmons

1-65535 sont disponibles et les ports dans la plage 1-1023 sont les privilégiés: une application doit être exécutée en tant que root pour écouter ces ports.

44
kolypto

Bien que 1-65535 soient des ports légitimes TCP et il est vrai que 1-1023 sont pour des services de port bien connus. Vous pouvez rencontrer des problèmes aléatoires avec vos propres services s'ils sont démarrés après un port éphémère est établi. Pour ceux qui ne le savent pas, les ports éphémères sont ceux qui sont connectés localement pour des points de terminaison distants (ou quelque chose dans ce sens). Donc, si vous écrivez un service TCP qui écoute sur le port 20001. Vous pouvez être bon aujourd'hui ... et demain. Mais un jour, votre service peut démarrer et tenter de se lier à 20001 et il échouera car il a été pris comme un port éphémère. Il existe une solution. Vous devez avoir votre administrateur, ou vous-même, modifiez la stratégie de plage de ports éphémères du système sur votre serveur. Sur les systèmes Linux, cela se fait en deux étapes:

  • Dynamiquement
  • En permanence

Les deux étapes doivent être effectuées, inutile que vous envisagiez de redémarrer, auquel cas l'étape dynamique n'est pas nécessaire. Pour définir votre plage de 40000 à 65535, procédez comme suit:

Dynamique

echo 40000 65535 > /proc/sys/net/ipv4/ip_local_port_range

ou

sysctl -w net.ipv4.ip_local_port_range="40000 65535"

permanent

Ajoutez ce qui suit à /etc/sysctl.conf:

net.ipv4.ip_local_port_range = 40000 65535

Pour lire le paramètre actuel ou pour confirmer la modification:

/sbin/sysctl net.ipv4.ip_local_port_range

La sortie sera quelque chose comme ceci:

net.ipv4.ip_local_port_range = 9000 65500

Assurez-vous de bien comprendre le but de votre serveur. Réduire trop la portée peut entraîner d'autres problèmes.

Happy Coding! (Ou quoi que vous fassiez)

9
Stephen Mathews