Nekromanzierung.
Einfach. Mit einem normalen oder alten Kernel ist dies nicht der Fall.
Wie bereits von anderen erwähnt, können iptables einen Port weiterleiten.
Wie auch von anderen erwähnt, kann CAP_NET_BIND_SERVICE auch die Aufgabe übernehmen.
Natürlich schlägt CAP_NET_BIND_SERVICE fehl, wenn Sie Ihr Programm von einem Skript aus starten, es sei denn, Sie setzen die Obergrenze für den Shell-Interpreter, was sinnlos ist. Sie können Ihren Dienst genauso gut als root ausführen ...
z. B. für Java müssen Sie ihn anwenden an die JAVA JVM
sudo /sbin/setcap 'cap_net_bind_service=ep' /usr/lib/jvm/java-8-openjdk/jre/bin/java
Dies bedeutet natürlich, dass jedes Java-Programm System-Ports binden kann.
Dito für Mono / .NET.
Ich bin mir auch ziemlich sicher, dass xinetd nicht die besten Ideen sind.
Aber da beide Methoden Hacks sind, warum nicht einfach das Limit durch Aufheben der Beschränkung aufheben?
Niemand hat gesagt, dass Sie einen normalen Kernel ausführen müssen, also können Sie einfach Ihren eigenen Kernel ausführen.
Sie laden einfach den Quellcode für den neuesten Kernel herunter (oder den gleichen, den Sie aktuell haben). Anschließend gehen Sie zu:
/usr/src/linux-<version_number>/include/net/sock.h:
Dort suchen Sie nach dieser Zeile
/* Sockets 0-1023 can't be bound to unless you are superuser */
#define PROT_SOCK 1024
und ändere es auf
#define PROT_SOCK 0
Wenn Sie keine unsichere SSH-Situation haben möchten, ändern Sie diese folgendermaßen: #define PROT_SOCK 24
Im Allgemeinen würde ich die niedrigste Einstellung verwenden, die Sie benötigen, z. B. 79 für http oder 24, wenn Sie SMTP an Port 25 verwenden.
Das ist schon alles.
Kompilieren Sie den Kernel und installieren Sie ihn.
Starten Sie neu.
Fertig - diese dumme Grenze ist GEGANGEN und das funktioniert auch für Skripte.
So kompilieren Sie einen Kernel:
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 ..
Kurz gesagt, verwenden Sie iptables, wenn Sie sicher bleiben möchten, und kompilieren Sie den Kernel, wenn Sie sicher sein möchten, dass diese Einschränkung Sie nie wieder stört.