Cập nhật 2017:
Tốt hơn nhiều so với CAP_NET_BIND_SERVICE hoặc hạt nhân tùy chỉnh.
Theo dõi khuyến nghị tuyệt vời của Joshua (= không được đề xuất trừ khi bạn biết bạn làm gì) để hack kernel:
Lần đầu tiên tôi đăng nó ở đây .
Đơn giản. Với một nhân bình thường hoặc cũ, bạn không.
Như được chỉ ra bởi những người khác, iptables có thể chuyển tiếp một cổng.
Như những người khác đã chỉ ra, CAP_NET_BIND_SERVICE cũng có thể thực hiện công việc.
Tất nhiên, CAP_NET_BIND_SERVICE sẽ thất bại nếu bạn khởi chạy chương trình của mình từ một tập lệnh, trừ khi bạn đặt giới hạn trên trình thông dịch shell, điều này là vô nghĩa, bạn cũng có thể chạy dịch vụ của mình dưới dạng root ...
ví dụ: đối với Java, bạn phải áp dụng nó đến JVM JAVA
sudo /sbin/setcap 'cap_net_bind_service=ep' /usr/lib/jvm/java-8-openjdk/jre/bin/java
Rõ ràng, điều đó có nghĩa là bất kỳ chương trình Java nào cũng có thể liên kết các cổng hệ thống.
Dito cho mono / .NET.
Tôi cũng khá chắc chắn xinetd không phải là ý tưởng hay nhất.
Nhưng vì cả hai phương pháp đều là hack, tại sao không nâng giới hạn bằng cách nâng giới hạn?
Không ai nói bạn phải chạy kernel bình thường, vì vậy bạn chỉ có thể chạy kernel của riêng mình.
Bạn chỉ cần tải xuống nguồn cho kernel mới nhất (hoặc giống như bạn hiện có). Sau đó, bạn đi đến:
/usr/src/linux-<version_number>/include/net/sock.h:
Có bạn tìm dòng này
/* Sockets 0-1023 can't be bound to unless you are superuser */
#define PROT_SOCK 1024
và thay đổi nó thành
#define PROT_SOCK 0
nếu bạn không muốn có một tình huống ssh không an toàn, bạn hãy thay đổi nó thành: #define PROT_SOCK 24
Nói chung, tôi sẽ sử dụng cài đặt thấp nhất mà bạn cần, ví dụ 79 cho http hoặc 24 khi sử dụng SMTP trên cổng 25.
Đó là tất cả.
Biên dịch kernel và cài đặt nó.
Khởi động lại.
Đã kết thúc - giới hạn ngu ngốc đó là ĐÁNH GIÁ, và điều đó cũng hoạt động đối với các tập lệnh.
Đây là cách bạn biên dịch kernel:
https://help.ubfox.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 ..
Tóm lại, hãy sử dụng iptables nếu bạn muốn giữ an toàn, biên dịch kernel nếu bạn muốn chắc chắn rằng hạn chế này không bao giờ làm phiền bạn nữa.