Necromancing
ง่าย ด้วยเคอร์เนลปกติหรือเก่าคุณทำไม่ได้
ตามที่คนอื่น ๆ ชี้ให้เห็น iptables สามารถส่งต่อพอร์ต
ตามที่คนอื่น ๆ ชี้ให้เห็น CAP_NET_BIND_SERVICE ก็สามารถทำงานได้เช่นกัน
แน่นอนว่า CAP_NET_BIND_SERVICE จะล้มเหลวถ้าคุณเปิดโปรแกรมจากสคริปต์เว้นแต่ว่าคุณตั้งค่า cap บนตัวแปลเชลล์ซึ่งไม่มีจุดหมายคุณสามารถเรียกใช้บริการของคุณในฐานะ root ...
เช่นสำหรับ Java คุณต้องใช้มัน ถึง JAVA JVM
sudo /sbin/setcap 'cap_net_bind_service=ep' /usr/lib/jvm/java-8-openjdk/jre/bin/java
เห็นได้ชัดว่านั่นหมายความว่าโปรแกรม Java ใด ๆ สามารถผูกพอร์ตระบบได้
Dito สำหรับโมโน /. 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_SOCK 24
โดยทั่วไปฉันจะใช้การตั้งค่าต่ำสุดที่คุณต้องการเช่น 79 สำหรับ http หรือ 24 เมื่อใช้ SMTP บนพอร์ต 25
นั่นคือทั้งหมด
รวบรวมเคอร์เนลและติดตั้ง
Reboot
เสร็จสิ้น - ข้อ จำกัด ที่โง่คือ GONE และใช้ได้กับสคริปต์ด้วย
นี่คือวิธีที่คุณรวบรวมเคอร์เนล:
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 ถ้าคุณต้องการรักษาความปลอดภัยรวบรวมเคอร์เนลถ้าคุณต้องการให้แน่ใจว่าข้อ จำกัด นี้ไม่รบกวนคุณอีก