Score:6

จะทราบได้อย่างไรว่าบริการใดกำลังฟังอยู่บนพอร์ตเฉพาะของเซิร์ฟเวอร์ Ubuntu โดยไม่มีรหัสกระบวนการ

ธง in

ฉันได้ตัดสินใจโพสต์คำถามนี้แม้ว่าจะมีคำถามที่คล้ายกันมากมาย แต่ไม่มีใครตอบคำถามของฉันเลย

  1. ฉันตรวจสอบพอร์ตที่เซิร์ฟเวอร์ของฉันรับฟังเป็นระยะๆ
  2. ระบบปฏิบัติการ Ubuntu ของฉันโดยผลลัพธ์ของ lsb_rease -a:
รหัสผู้จัดจำหน่าย: Ubuntu
คำอธิบาย: Ubuntu 20.04.3 LTS
เผยแพร่: 20.04
ชื่อรหัส: โฟกัส
  1. ฉันเรียกใช้คำสั่ง netstat -tulpn4 และผลลัพธ์แสดงพอร์ตที่ไม่รู้จัก:
tcp 0 0 127.0.0.53:53 0.0.0.0:* ฟัง 580/systemd-resolve 
tcp 0 0 0.0.0.0:62176 0.0.0.0:* ฟัง 900/sshd: /usr/sbin 
tcp 0 0 0.0.0.0:1122 0.0.0.0:* ฟัง 1158/sshd: ชื่อผู้ใช้    
tcp 0 0 0.0.0.0:3333 0.0.0.0:* ฟัง 1158/sshd: ชื่อผู้ใช้    
udp 0 0 0.0.0.0:51820 0.0.0.0:* -                   
udp 0 0 127.0.0.53:53 0.0.0.0:* 580/systemd-แก้ไข 
udp 0 0 X.X.X.X:1194 0.0.0.0:* 870/openvpn         
  1. ฉันได้ใช้เครื่องมือและคำแนะนำมากมายเพื่อค้นหาสาเหตุที่เซิร์ฟเวอร์ของฉันกำลังฟังพอร์ต 51820 โดยไม่ต้องหาคำตอบ
  2. ฉันเหนื่อย:
    • sudo lsof -i :51820 - และได้ผลลัพธ์ที่ว่างเปล่า
    • sudo netstat -ltnp | grep -w ':51820' - และได้ผลลัพธ์ที่ว่างเปล่า
    • sudo ฟิวเซอร์ 51820/udp - และได้ผลลัพธ์ที่ว่างเปล่า
    • sudo netstat -ถั่วลิสง | เกรป ":51820" - ผลลัพธ์คือ:
udp 0 0 0.0.0.0:51820 0.0.0.0:* 0 26262 -                   
udp6 0 0 :::51820 :::* 0 26263 - 
  • sudo ss -nlp | เกรป 51820 ผลลัพธ์คือ:
UDP UNCONN 0 0 0.0.0.0:51820 0.0.0.0:*                                                                                                     
udp UNCONN 0 0 [::]:51820 [::]:*  
  1. ฉันได้ดูคำตอบต่อไปนี้แล้วและไม่พบวิธีแก้ไข:

หลังจากค้นหาเว็บเกี่ยวกับพอร์ต 51820 ฉันพบว่ามันคือ "wireguard" ที่ฉันติดตั้งซึ่งกำลังฟังอยู่บนพอร์ตนั้น แต่คำถามยังคงเหมือนเดิมในคำสั่งใดๆ ที่ฉันได้ลอง ฉันไม่พบสิ่งนั้น

anx avatar
fr flag
anx
ที่เกี่ยวข้อง: [wireguard ไม่ฟังพอร์ต](https://serverfault.com/questions/1015322/the-wireguard-not-listening-on-port-after-started)
CrazyTux avatar
in flag
@anx tnx สำหรับความคิดเห็นของคุณ บริการ "wireguard" ของฉันทำงานได้ดีและคำตอบในโพสต์ที่เกี่ยวข้องยังไม่ได้แก้ปัญหาของฉันในการตรวจจับกระบวนการที่ทำให้พอร์ตเฉพาะฟังโดยคำสั่งเทอร์มินัล
djdomi avatar
za flag
จากนั้นอัปเดตคำถามให้เจาะจงมากขึ้น คุณเดินไปรอบ ๆ ปัญหาของคุณที่คุณต้องการแก้ไข
CrazyTux avatar
in flag
ฉันจะเจาะจงมากขึ้นได้อย่างไร ฉันพยายามหาคำตอบสำหรับชื่อคำถามจริงๆ และฉันได้ระบุวิธีแก้ปัญหาทั้งหมดที่ฉันได้ลองไปแล้ว
Score:5
ธง cn

คุณกำลังใช้งานระบบปฏิบัติการที่ใช้ Wireguard เป็นโมดูลเคอร์เนล เคอร์เนลของคุณกำลังฟังพอร์ตนี้ และเนื่องจากไม่มีกระบวนการใดที่เป็นเจ้าของซ็อกเก็ตนั้น จึงไม่มีการรายงาน PID เน็ตสแตท.

Michael Hampton avatar
cz flag
คุณจะรู้ได้อย่างไรว่าบริการเคอร์เนลใดกำลังฟังพอร์ตนั้นอยู่
Peter Zhabin avatar
cn flag
ฉันเคยใช้เวลาค่อนข้างนานในการขุดรหัสเคอร์เนลเพื่อดูว่ามีวิธีการทำเช่นนั้นหรือไม่ และพบว่าเคอร์เนลบันทึกการอ้างอิงถึงโมดูลที่เป็นเจ้าของซ็อกเก็ตในฟิลด์ `proto_ops` ของซ็อกเก็ตเคอร์เนล แต่ฉันไม่ทราบ ของเครื่องมือ userland ที่สามารถดัมพ์ได้
CrazyTux avatar
in flag
คำตอบของคุณยอดเยี่ยมและช่วยได้มาก หากคุณพบวิธีการทิ้งซ็อกเก็ตเคอร์เนลนั้นและแก้ไขคำตอบนั้น ฉันจะเห็นด้วย ฉันโหวตให้กับคำตอบที่เป็นข้อมูล
Michael Hampton avatar
cz flag
@CrazyTux ฉันดูสิ่งนี้ด้วยและพบว่าเคอร์เนลไม่ส่งออกข้อมูลนี้ไปยัง userland ฉันไม่คิดว่ามันเป็นไปได้เว้นแต่ว่าการอัปเดตเคอร์เนลจะมีฟังก์ชันการทำงานอย่างใด
Score:2
ธง in

ทั่วไป:

หลังจากค้นหาสองวันฉันได้ค้นหาเกี่ยวกับปัญหา ฉันพบเช่น Michael Hampton และ Peter Zhabin ว่าไม่มีวิธีแก้ปัญหาใดที่แสดงรหัสกระบวนการเคอร์เนลผ่านพอร์ตการฟัง

นอกจากนี้ในช่วงสองวันนั้นฉันค้นหาบางอย่างด้วย คำสั่ง ชุดค่าผสมที่สามารถให้คำตอบที่ต้องการได้ และไม่พบวิธีที่ง่ายหรือสะดวกในการทำเช่นนี้

โซลูชันที่ฉันสร้างขึ้นเป็นโซลูชันเบื้องต้น และฉันมั่นใจว่าสมาชิกในชุมชนสามารถปรับปรุงได้

ส่วนลดสำหรับการค้นหากระบวนการ

  • กระบวนการทำงานในระดับเคอร์เนลหรือระดับอื่น ๆ ที่หลีกเลี่ยงไม่ให้กระบวนการมีรหัส (PID)
  • ไม่พบรหัสกระบวนการหรือโปรแกรมกระบวนการโดยเอาต์พุตของคำสั่งที่กำหนด: ลซ, เน็ตสแตท, เอสเอส, ฟิวเซอร์.
  • เราพบพอร์ตการฟังจากเอาต์พุตของคำสั่งด้านบน - แต่เราไม่สามารถกำหนดค่าโปรแกรมหรือ pid ที่ทำให้เกิดการฟังได้

เกี่ยวกับ เกรป:

เราจะใช้ เกรป เพื่อค้นหาข้อมูลเพิ่มเติมเกี่ยวกับพอร์ตที่เปิดอยู่

เกรป - เส้นพิมพ์ที่ตรงกับรูปแบบ

จาก เกรป เพจคนผ่านทาง ผู้ชายเกรป สั่งการ.

คำอธิบาย
grep ค้นหารูปแบบในแต่ละไฟล์ รูปแบบเป็นหนึ่งหรือมากกว่า
       รูปแบบที่คั่นด้วยอักขระขึ้นบรรทัดใหม่ และ grep จะพิมพ์แต่ละบรรทัด
       ที่ตรงกับรูปแบบ โดยทั่วไปควรอ้างอิงรูปแบบเมื่อ grep
       ใช้ในคำสั่งเชลล์
  • ที่นี่ เป็นหัวข้อที่ดีในการใช้คำสั่งอย่างถูกต้องและมีประสิทธิภาพ

วิธีค้นหา PID หรือโปรแกรมที่ใช้พอร์ตที่กำหนดผ่านทาง เกรป:

ในกรณีของฉันกำลังดำเนินการ sudo grep --exclude-dir={sys,proc} -rnw / -e 51820 | grep -i พอร์ต แก้ไขปัญหาและแสดงข้อมูลการจัดสรรเกี่ยวกับโปรแกรมที่ใช้พอร์ต

ผลลัพธ์ที่กำหนด:

iptables.service:6:ExecStart=/usr/sbin/iptables -I INPUT -p udp --dport 51820 -j ยอมรับ
/home/username/wireguard-install.sh:238: read -p "พอร์ต [51820]:" พอร์ต
/home/username/wireguard-install.sh:241: read -p "พอร์ต [51820]:"
/home/username/wireguard-install.sh:243: [[ -z "$port" ]] && port="51820"
/usr/share/doc/netplan/examples/wireguard.yaml:9: พอร์ต: 51820
/etc/wireguard/wg0.conf:8:ListenPort = 51820
/etc/systemd/system/wg-iptables.service:6:ExecStart=/usr/sbin/iptables -I INPUT -p udp --dport 51820 -j ACCEPT
/etc/systemd/system/wg-iptables.service:10:ExecStop=/usr/sbin/iptables -D INPUT -p udp --dport 51820 -j ACCEPT

เหตุผลของการแฟล็กจำนวนมากคือชุดค่าผสมอื่น ๆ ที่ฉันได้ลองมีผลลัพธ์ที่ไม่ต้องการจำนวนมาก

ข้อโต้แย้งของอะไร เกรป คำสั่งย่อมาจาก:

  • --exclude-ผบ - ข้ามไดเร็กทอรีบรรทัดคำสั่งใด ๆ ที่มีคำต่อท้ายชื่อที่ตรงกัน รูปแบบ.

และการเพิกเฉยอย่างเฉพาะเจาะจง ระบบ และ โพรซี ไดเรกทอรี ในกรณีเฉพาะของเรา คือการหลีกเลี่ยงเอาต์พุตที่ไม่ต้องการ

ตัวอย่าง: grep --exclude-dir={dir1,dir2} จะหลีกเลี่ยง dir1 และ dir2 ระหว่างการค้นหา

  • -ร หรือ -ร เป็นแบบเรียกซ้ำ
  • -น เป็นหมายเลขบรรทัด
  • -ว ย่อมาจาก ตรงกันทั้งคำ
  • / ย่อมาจากไดเร็กทอรี "สูงสุด" เพื่อเริ่มการค้นหาจากบนลงล่าง
  • -e - เป็นรูปแบบที่ใช้ในการค้นหา
  • 51820 ในกรณีเฉพาะของเราคือหมายเลขพอร์ตที่พบโดยหนึ่งในคำสั่งการตรวจสอบเครือข่ายด้านบน
  • | - เป็นไพพ์สำหรับเปลี่ยนเส้นทางเอาต์พุตของส่วนคำสั่งแรกไปยังส่วนที่สอง

ในกรณีของเรา: การเปลี่ยนเส้นทาง sudo grep --exclude-dir={sys,proc} -rnw / -e 51820 ส่งออกไปยังคำสั่งถัดไป grep -i พอร์ต

  • -ผม - ละเว้นความแตกต่างกรณีในรูปแบบและข้อมูลอินพุตเพื่อให้ ตัวอักษรที่แตกต่างกันเฉพาะในกรณีที่ตรงกัน
  • ท่า - พบเพื่อจำกัดผลลัพธ์ให้แคบลงตามวัตถุประสงค์ที่เราดำเนินการค้นหา ค้นหาข้อมูลเพิ่มเติมเกี่ยวกับพอร์ตเฉพาะที่กำหนดไว้หลัง -e ธง.

เคล็ดลับ:

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

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา