Mise à jour 2017:
Beaucoup mieux que CAP_NET_BIND_SERVICE ou un noyau personnalisé.
Dans le prolongement de la fabuleuse recommandation de Joshua (= déconseillée sauf si vous savez ce que vous faites) de pirater le noyau:
Je l'ai d'abord posté ici .
Facile. Avec un noyau normal ou ancien, vous ne le faites pas.
Comme souligné par d'autres, iptables peut transférer un port.
Comme d'autres l'ont également souligné, CAP_NET_BIND_SERVICE peut également faire le travail.
Bien sûr, CAP_NET_BIND_SERVICE échouera si vous lancez votre programme à partir d'un script, sauf si vous définissez le plafond sur l'interpréteur de commandes, ce qui est inutile, vous pourriez tout aussi bien exécuter votre service en tant que root ...
par exemple pour Java, vous devez l'appliquer à la JAVA JVM
sudo /sbin/setcap 'cap_net_bind_service=ep' /usr/lib/jvm/java-8-openjdk/jre/bin/java
Évidemment, cela signifie alors que tout programme Java peut lier des ports système.
Dito pour mono / .NET.
Je suis également sûr que xinetd n'est pas la meilleure des idées.
Mais comme les deux méthodes sont des hacks, pourquoi ne pas simplement lever la limite en levant la restriction?
Personne n'a dit que vous deviez exécuter un noyau normal, vous pouvez donc simplement exécuter le vôtre.
Vous venez de télécharger la source pour le dernier noyau (ou le même que vous avez actuellement). Ensuite, vous allez à:
/usr/src/linux-<version_number>/include/net/sock.h:
Là vous cherchez cette ligne
/* Sockets 0-1023 can't be bound to unless you are superuser */
#define PROT_SOCK 1024
et changez-le en
#define PROT_SOCK 0
si vous ne voulez pas avoir une situation ssh non sécurisée, vous la modifiez comme suit: #define PROT_SOCK 24
En règle générale, j'utiliserais le paramètre le plus bas dont vous avez besoin, par exemple 79 pour http, ou 24 lorsque vous utilisez SMTP sur le port 25.
C'est déjà tout.
Compilez le noyau et installez-le.
Redémarrez.
Terminé - cette limite stupide est GONE, et cela fonctionne également pour les scripts.
Voici comment compiler un noyau:
https://help.ubuntu.com/community/Kernel/Compile
# You can get the kernel-source via package linux-source, no manual download required
apt-get install linux-source fakeroot
mkdir ~/src
cd ~/src
tar xjvf /usr/src/linux-source-<version>.tar.bz2
cd linux-source-<version>
# Apply the changes to PROT_SOCK define in /include/net/sock.h
# Copy the kernel config file you are currently using
cp -vi /boot/config-`uname -r` .config
# Install ncurses libary, if you want to run menuconfig
apt-get install libncurses5 libncurses5-dev
# Run menuconfig (optional)
make menuconfig
# Define the number of threads you wanna use when compiling (should be <number CPU cores> - 1), e.g. for quad-core
export CONCURRENCY_LEVEL=3
# Now compile the custom kernel
fakeroot make-kpkg --initrd --append-to-version=custom kernel-image kernel-headers
# And wait a long long time
cd ..
En un mot, utilisez iptables si vous voulez rester en sécurité, compilez le noyau si vous voulez être sûr que cette restriction ne vous dérange plus.