Necromancing।
सरल। एक सामान्य या पुराने कर्नेल के साथ, आप नहीं।
जैसा कि दूसरों द्वारा बताया गया है, iptables एक पोर्ट को अग्रेषित कर सकता है।
जैसा कि दूसरों द्वारा बताया गया है, CAP_NET_BIND_SERVICE भी काम कर सकती है।
बेशक CAP_NET_BIND_SERVICE विफल हो जाएगी यदि आप अपने प्रोग्राम को स्क्रिप्ट से लॉन्च करते हैं, जब तक आप शेल दुभाषिया पर टोपी सेट नहीं करते हैं, जो कि व्यर्थ है, आप बस अपनी सेवा को रूट के रूप में चला सकते हैं ...
जैसे जावा के लिए, आपको इसे लागू करना होगा। JAVA JVM को
sudo /sbin/setcap 'cap_net_bind_service=ep' /usr/lib/jvm/java-8-openjdk/jre/bin/java
जाहिर है, इसका मतलब है कि कोई भी जावा प्रोग्राम सिस्टम पोर्ट को बांध सकता है।
मोनो / .NET के लिए डिटो।
मुझे भी यकीन है कि xinetd विचारों का सबसे अच्छा नहीं है।
लेकिन चूंकि दोनों विधियां हैक हैं, तो केवल प्रतिबंध हटाकर सीमा को क्यों नहीं बढ़ाया जाए?
किसी ने नहीं कहा कि आपको एक सामान्य कर्नेल चलाना है, इसलिए आप बस अपना स्वयं का रन बना सकते हैं।
आप बस नवीनतम कर्नेल के लिए स्रोत डाउनलोड करें (या आपके पास वर्तमान में)। बाद में, आप इस पर जाएं:
/usr/src/linux-<version_number>/include/net/sock.h:
वहां आप इस लाइन को देखें
/* Sockets 0-1023 can't be bound to unless you are superuser */
#define PROT_SOCK 1024
और इसे बदल दें
#define PROT_SOCK 0
यदि आप एक असुरक्षित ssh स्थिति नहीं चाहते हैं, तो आप इसे इस पर बदल दें: #define PROT_S100 24
आमतौर पर, मैं सबसे कम सेटिंग का उपयोग करता हूं, जिसकी आपको आवश्यकता है, जैसे http के लिए 79, या 24 जब एसएमटीपी का उपयोग पोर्ट 25 पर किया जाता है।
यह सब पहले से ही है।
कर्नेल संकलित करें, और इसे स्थापित करें।
रीबूट।
समाप्त - वह मूर्खतापूर्ण सीमा है, और यह स्क्रिप्ट के लिए भी काम करता है।
यहां बताया गया है कि आप कर्नेल कैसे संकलित करते हैं:
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 ..
संक्षेप में, iptables का उपयोग करें यदि आप सुरक्षित रहना चाहते हैं, तो कर्नेल को संकलित करें यदि आप सुनिश्चित करना चाहते हैं कि यह प्रतिबंध आपको फिर से परेशान नहीं करता है।