หมายเลขพอร์ตสูงสุดคืออะไร


66

ฉันต้องการตั้งค่าบริการ linux ให้เป็นพอร์ตที่ไม่ได้มาตรฐาน - หมายเลขพอร์ตที่ถูกต้องที่สุดคืออะไร

คำตอบ:


72

(2 ^ 16) -1 หรือ 0-65,535 (-1 คือเนื่องจากพอร์ต 0 ถูกจองและไม่พร้อมใช้งาน) (แก้ไขเพราะ o_O Tync เตือนฉันว่าเราไม่สามารถใช้พอร์ต 0 ได้และ Steve Folly เตือนฉันว่าคุณขอพอร์ตสูงสุดไม่ใช่จำนวนพอร์ต)

แต่คุณอาจทำผิดแบบนี้ มีคนที่โต้เถียงและต่อต้านพอร์ตที่ไม่ได้มาตรฐาน ฉันบอกว่าพวกเขาไม่เกี่ยวข้องยกเว้นสแกนเนอร์ที่ไม่เป็นทางการที่สุดและสแกนเนอร์ที่ไม่เป็นทางการส่วนใหญ่สามารถเก็บไว้ได้โดยใช้ซอฟต์แวร์ที่ทันสมัยและเทคนิคไฟร์วอลล์ที่เหมาะสมพร้อมกับรหัสผ่านที่คาดเดายาก กล่าวอีกนัยหนึ่งแนวทางปฏิบัติด้านความปลอดภัยที่ดีที่สุด


3
-1 สำหรับคำตอบที่ผิด ลอง 65,535 แต่ประเด็นที่ดีเกี่ยวกับข้อโต้แย้งสำหรับ / เทียบกับพอร์ตที่ไม่ได้มาตรฐาน
Steve Folly

2
มีผู้รักษาความปลอดภัย / การปฏิบัติตามซึ่งบังคับให้มีการตัดสินใจประเภทนี้ เราใช้บริการ SMTP บนพอร์ตสูงที่กำหนดไว้ล่วงหน้าเพื่อป้องกันเราจากสำนักงานเจ้าหน้าที่รักษาความปลอดภัยรบกวนเรา
duffbeer703

1
สตีฟแก้ไขและคุณพูดถูก ผมตอบคำถามผิดที่มีจำนวนของฉัน :)
แมตต์ซิมมอนส์

2
@Matt: ลบ -1 :-)
Steve Folly

1
ฉันตรวจสอบความพยายามในการเข้าสู่ระบบด้วย ssh และหลายครั้งมีการบล็อก IP (โซลูชัน CPanel VPS มาตรฐาน) ฉันแค่พยายามลดจำนวนครั้งที่ฉันต้องดูในแต่ละวัน การสแกนพอร์ตจะถูกบล็อกด้วยดังนั้นควรลดจำนวนผู้ใช้ลง ฉันกำลังพิจารณา VPN ด้วย แต่ดูเหมือนว่าการเปลี่ยนพอร์ตจะเป็นขั้นตอนแรกที่ง่ายกว่า
Yehosef

41

มี 1-65535 และพอร์ตในช่วงที่ 1-1023 เป็นรายการที่มีสิทธิพิเศษ : แอปพลิเคชันจะต้องทำงานเป็นรูทเพื่อรับฟังพอร์ตเหล่านี้


8

แม้ว่า 1-65535 เป็นพอร์ต TCP ที่ถูกต้องและเป็นจริงที่ 1-1023 สำหรับบริการพอร์ตที่รู้จักกันดี คุณอาจพบปัญหาสุ่มกับบริการของคุณเองหากพวกเขาจะเริ่มต้นหลังจากพอร์ตชั่วคราวที่จัดตั้งขึ้น สำหรับผู้ที่อาจไม่รู้พอร์ตชั่วคราวคือพอร์ตที่เชื่อมต่อแบบโลคัลสำหรับจุดปลายรีโมต ดังนั้นถ้าคุณเขียนบริการ TCP ที่ฟังพอร์ต 20001 คุณอาจดีในวันนี้ ... และพรุ่งนี้ แต่วันหนึ่งบริการของคุณอาจเริ่มทำงานและพยายามเชื่อมโยงกับ 20001 และจะล้มเหลวเนื่องจากเป็นพอร์ตชั่วคราว มีทางออกคือ คุณต้องมีผู้ดูแลระบบของคุณหรือตัวคุณเองเปลี่ยนนโยบายช่วงพอร์ตชั่วคราวบนเซิร์ฟเวอร์ของคุณ บนระบบ Linux นั้นทำได้สองขั้นตอน:

  • แบบไดนามิก
  • อย่างถาวร

ต้องดำเนินการทั้งสองขั้นตอนโดยที่คุณไม่จำเป็นต้องรีบูตซึ่งในกรณีนี้ไม่จำเป็นต้องใช้ขั้นตอนแบบไดนามิก หากต้องการตั้งค่าช่วงของคุณสูงสุดถึง 40000 ถึง 65535 ให้ทำดังนี้:

พลวัต

echo 40000 65535 > /proc/sys/net/ipv4/ip_local_port_range

หรือ

sysctl -w net.ipv4.ip_local_port_range="40000 65535"

ถาวร

เพิ่มสิ่งต่อไปนี้ใน /etc/sysctl.conf:

net.ipv4.ip_local_port_range = 40000 65535

หากต้องการอ่านการตั้งค่าปัจจุบันหรือเพื่อยืนยันการเปลี่ยนแปลง:

/sbin/sysctl net.ipv4.ip_local_port_range

ผลลัพธ์จะเป็นดังนี้:

net.ipv4.ip_local_port_range = 9000 65500

ต้องแน่ใจว่าคุณเข้าใจวัตถุประสงค์ของเซิร์ฟเวอร์ของคุณ การลดช่วงมากเกินไปอาจนำไปสู่ปัญหาอื่น ๆ

Happy Coding! (หรืออะไรก็ตามที่คุณทำ)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.