เซิร์ฟเวอร์ FTP หยุดทำงานเมื่อใช้คำสั่ง“ ls”:“ พิจารณาการใช้ PASV”


1

ฉันพยายามใช้คำสั่ง "ls" ในเซสชัน FTP ที่ไม่ระบุชื่อ แต่เมื่อฉันพิมพ์คำสั่ง "ls" ฉันจะได้รับ:

คำสั่ง 200 PORT สำเร็จแล้ว พิจารณาใช้ PASV

และแฮงค์เช่นนี้ (ไม่กลับไปที่พรอมต์ ftp)

ฉันเริ่มเซสชัน ftp ใหม่และเข้าสู่โหมดพาสซีฟ (อ้างอิง PASV) แต่ฉันพบปัญหาอื่น: "ไม่มีเส้นทางสู่โฮสต์"

คุณมีข้อเสนอแนะใด ๆ ?


@PIMP_JUICE_IT สวัสดีขอบคุณสำหรับความช่วยเหลือ ฉันกำลังเชื่อมต่อกับเซิร์ฟเวอร์ FTP ด้วยคำสั่ง "pftp 10.11.1.8 21" ดังนั้นฉันคิดว่าโหมดพาสซีฟจะยังคงอยู่ quote pasv ให้ "227: การเข้าสู่โหมดพาสซีฟ 10,11,1,8,78,2" ถ้าฉันพิมพ์ "passive" หลังจากนี้มันจะบอกว่า "passive mode off" แต่เมื่อฉันใช้เซสชัน ftp ปกติ (ftp 10.11.1.8 21) และพิมพ์ "passive" คราวนี้มันเปิดอยู่ ....
Addon

@PIMP_JUICE_IT ฉันใช้ Kali Linux และตรวจสอบกฎ iptables ดูเหมือนว่าพอร์ตจะไม่ถูกบล็อก (ยอมรับนโยบายทุกที่) ...
Addon

@PIMP_JUICE_IT พร้อมตัวเลือกการแก้ปัญหา: passive on => "---> PASV" + "227 กำลังเข้าสู่โหมดพาสซีฟ 10,11,1,8,78,2" + "ftp: เชื่อมต่อ: ไม่มีเส้นทางไปยังโฮสต์"
Addon

@PIMP_JUICE_IT พร้อมตัวเลือกการดีบัก: passive off => "---> PORT 10,11,0,159,225,78" + "คำสั่ง 200 PORT สำเร็จแล้วพิจารณาใช้ PASV" + "---> LIST" .
Addon

สำหรับสูตรพอร์ตเรื่อย ๆ คือ P1 x 256 + P2 ที่เช่น10,11,0,159ที่อยู่ IP ของเซิร์ฟเวอร์ FTP และหลังจากที่225เป็นP1และ78เป็นP2เพื่อให้คุณคำนวณ 225 X 256 = 57600 + 78 = 57678 ดังนั้นนี่คือพอร์ตของมันพยายามที่จะใช้ และมีปัญหากับฉันคิดว่า ฉันรักษา FW, เราเตอร์, การเชื่อมต่อ FTP และทั้งหมดในสภาพแวดล้อมของฉัน แต่ฉันไม่แน่ใจว่าข้อ จำกัด ของคุณคืออะไรในของคุณ แน่นอนว่าการใช้ SSH FTP บนพอร์ต TCP 22 จะทำงานได้ดีขึ้นเนื่องจากการสื่อสารทั้งหมดใช้พอร์ต TCP เดียวกัน แต่ฉันไม่แน่ใจว่าคุณมีตัวเลือกใด ฉันขอให้ผู้ดูแลระบบ FTP ช่วยให้คุณเข้าใจได้
Pimp Juice IT

คำตอบ:


2

quote PASV ไม่ได้เข้าสู่โหมดพาสซีฟอย่างที่คุณคิด - "PASV" เป็นคำสั่งทันที (ซึ่งนำหน้าการถ่ายโอนทุกครั้ง) แทนที่จะเป็นคำสั่งโหมดสลับถาวร

แต่ลูกค้าจะต้องบอกให้ใช้ PASV แทน PORT เมื่อใดก็ตามที่lsมีการร้องขอหรือถ่ายโอนไฟล์

ด้วยinetutils-FTPใช้passiveคำสั่งหรือเรียกใช้ลูกค้าเป็นหรือpftpftp --passive


ฉันกำลังใช้ Kali Rolling และฉันพยายาม "pftp" direclty บนเทอร์มินัล แต่ก็ยังคงเป็นปัญหาเดียวกัน คำถามหนึ่ง: inetutils-ftp มีอยู่แล้วใน Kali Rolling ใช่ไหม?
Addon

ขออภัยฉันอัปเดตคำถามของฉันเพราะฉันได้พยายามที่จะอยู่ในโหมดติดตัวเรื่อย ๆ แล้ว แต่ฉันได้รับปัญหาอื่น
Addon

0

ฉันจำได้ว่าเห็นปัญหานี้เมื่อฉันลืมเปิดพอร์ต 20 ในไฟร์วอลล์ ในขณะที่พอร์ตมักจะเชื่อมโยงกับ FTP คือ 21 แต่ข้อมูลจะถูกส่งผ่านพอร์ต 20

ตรวจสอบให้แน่ใจว่าทั้ง 20 และ 21 เปิดอยู่บนไคลเอนต์และเซิร์ฟเวอร์เพื่อให้ใครก็ตามที่เริ่มการเชื่อมต่อที่พอร์ต 20 สามารถผ่านได้


ฉันลืมที่จะพูดว่า "ls" ทำงานบนเซิร์ฟเวอร์ FTP อื่นดังนั้นมันต้องมาจากเซิร์ฟเวอร์ แต่น่าเสียดายที่ฉันไม่สามารถเปลี่ยนการกำหนดค่าของมันได้
Addon

Jarmund: สำหรับการเชื่อมต่อแบบไม่โต้ตอบข้อมูลมักจะถูกส่งโดยใช้การเชื่อมต่อที่มีพอร์ตของเซิร์ฟเวอร์เป็น 20 แต่หมายเลขพอร์ตของไคลเอ็นต์จะสุ่ม FTP ใช้ TCP TCP มีหมายเลขพอร์ตสองหมายเลขที่เชื่อมโยงกับการเชื่อมต่อแต่ละรายการ การเชื่อมต่อ FTP TCP แรกโดยทั่วไปจะไปจาก "พอร์ตต้นทาง" แบบสุ่ม (จากไคลเอนต์ FTP) ไปยังพอร์ตปลายทาง 21 (บนเซิร์ฟเวอร์ FTP) การเชื่อมต่อ FTP TCP ที่สองมักจะมี "พอร์ตต้นทาง" ที่ 20 (บนเซิร์ฟเวอร์ FTP) และพอร์ตปลายทางแบบสุ่ม (สูง) บนเครื่องที่มีไคลเอนต์ FTP การยอมรับการรับส่งข้อมูลทั้งหมดจากพอร์ต 20 แบบ
สุ่ม

-3

คุณมีข้อเสนอแนะใด ๆ ?

ใช่คลอง FTP

ฉันรู้ว่าอาจไม่ใช่คำตอบที่คุณต้องการได้ยิน แต่ให้ฉันอธิบายว่าทำไมมันถึงจำเป็นจริงๆแล้วคุณอาจมีแนวโน้มที่จะทำสิ่งนี้มากกว่า ฉันจะให้ทางเลือกอื่นแก่คุณ

FTP ถูกเขียนเมื่ออินเทอร์เน็ตถูกพิจารณาว่าเป็นโครงการทดลอง มหาวิทยาลัยขนาดใหญ่และองค์กรขนาดใหญ่มีกฎเกณฑ์ในการบังคับใช้โดยสถาบันที่มีชื่อเสียงและผู้คนบนอินเทอร์เน็ต (ที่จริงแล้วเรียกว่า ARPAnet ในตอนนั้น) ได้รับความเชื่อถือ

FTP ได้รับการออกแบบมาเพื่อให้ไคลเอนต์ใช้การเชื่อมต่อ TCP เพื่อส่งคำขอไฟล์ จากนั้นเซิร์ฟเวอร์ได้รับการร้องขอและเริ่มการเชื่อมต่อ TCP แยกไปยังไคลเอนต์

สิ่งนี้แตกเมื่อลูกค้าเริ่มใช้ไฟร์วอลล์เพื่อปกป้องข้อมูลของพวกเขา ดังนั้นไคลเอนต์ FTP สามารถทำการเชื่อมต่อขาออก แต่การเชื่อมต่อขาเข้าถูกบล็อค

วิธีแก้ไข: โหมดพาสซีฟ: ไคลเอนต์ส่งการร้องขอโดยใช้พอร์ต TCP 21 จากนั้นเซิร์ฟเวอร์แจ้งว่าต้องการการเชื่อมต่ออื่นโดยใช้พอร์ต TCP แบบสุ่ม (เช่น 43728) จากนั้นไคลเอนต์ทำการเชื่อมต่อครั้งที่สองโดยใช้ TCP แบบสุ่มที่ระบุ พอร์ต (เช่น 43728)

หากลูกค้ามีไฟร์วอลล์ หลายคนเริ่มเรียนรู้ว่า "โหมดแฝง" แก้ไขปัญหา FTP อย่างไรก็ตามสิ่งที่ "โหมดแฝง" แก้ไขจริงแล้วเป็นเพียงปัญหาเดียวเท่านั้น หากเซิร์ฟเวอร์มีไฟร์วอลล์ที่อนุญาตเฉพาะทราฟฟิกขาเข้าบนหมายเลขพอร์ตเฉพาะเช่นพอร์ต 21 สำหรับ FTP ดังนั้นแม้แต่ "โหมดแฝง" ก็ไม่สามารถแก้ไขทุกสิ่งที่จำเป็นในการทำงาน

ในทางทฤษฎีสิ่งนี้อาจได้รับการแก้ไขหากไฟร์วอลล์ของเซิร์ฟเวอร์ FTP รองรับพร็อกซี FTP ซึ่งตรวจสอบปริมาณการใช้งานและเปิดพอร์ตอื่นหากจำเป็น หลายคนคิดว่าเป็นเรื่องยากที่จะตั้งค่า

เมื่อองค์กรต่างๆให้ความสำคัญกับความปลอดภัยมากขึ้นและดูแล FTP ให้น้อยลงผู้คนก็เริ่มเรียนรู้ว่า FTP มักจะถูกทำลาย (หมายถึงเซิร์ฟเวอร์ FTP จำนวนมากขึ้นกำลังท้าทายการใช้งานจากสถานที่มากขึ้นเรื่อย ๆ ซึ่งผู้คนอาจพยายามใช้ FTP ลูกค้าที่) ปัญหา FTP เริ่มแพร่หลายมากขึ้น

ในขณะที่คนเรียนรู้ว่า "โหมดแฝง" ดูเหมือนจะเป็นเทคนิค "แก้ทั้งหมด" ที่แก้ไขปัญหา FTP (หลายคนไม่เข้าใจว่าทำไม FTP หยุดทำงานพวกเขาเพิ่งเรียนรู้ว่าถ้า FTP เริ่มทำตัวประหลาด "โหมดแฝง" ดูเหมือนจะแก้ไขปัญหาแปลก ๆ ที่ FTP ประสบหลังจากนั้นเชื่อว่า "โหมดแฝง" เป็นวิธีรักษา ทั้งหมด "ได้รับการแทนที่ด้วยความเชื่อที่แตกต่างกันซึ่งก็คือ FTP มักจะดูเหมือนจะไม่ทำงานอีกต่อไป (ไม่เกือบเท่าที่เคยเป็นมา) แม้ว่าคนจำนวนมากไม่เข้าใจว่าทำไม FTP ถึงแตกสิ่งที่พวกเขาเข้าใจ ชีวิตนั้นดูเหมือนจะทำงานได้สำเร็จมากขึ้นเมื่อพวกเขาลองใช้เทคนิคอื่นซึ่งก็คือการเริ่มต้นใช้โปรโตคอลอื่น ๆ เมื่อการอัพโหลด HTTPS เริ่มได้รับความนิยมมากขึ้น

ดังนั้นทางออกที่ดีที่สุดของคุณคือการทิ้งโปรโตคอล FTP เก่าซึ่งไม่สามารถใช้งานได้กับมาตรการรักษาความปลอดภัยอินเทอร์เน็ตที่ทันสมัย FTP ไม่ได้ออกแบบมาสำหรับสิ่งนั้น NAT ใช้เพื่อช่วยให้อุปกรณ์หลายเครื่องใช้ที่อยู่ IP เดียว

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

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

HTTP มีปัญหาไม่มากเนื่องจากใช้การเชื่อมต่อ TCP เดียวแทนที่จะเชื่อมต่อหลายรายการ และไม่มีทางเลือกอื่นที่ปลอดภัยเช่น HTTPS, SFTP, FTPS, SCP

ฉันสัญญาทางเลือกอื่น มันคือ: ทำให้ FTP ทำงานได้ กลยุทธ์ประกอบด้วย: * ให้ไฟร์วอลล์ฝั่งไคลเอ็นต์ของคุณเรียกใช้พร็อกซี FTP * ให้ไฟร์วอลล์ของเซิร์ฟเวอร์ FTP เรียกใช้พร็อกซี FTP

ปัญหาคือคุณมักจะไม่สามารถควบคุมการเชื่อมต่อด้านใดด้านหนึ่ง ดังนั้นหนึ่งในนั้นอาจไม่ใช่ตัวเลือกสำหรับคุณ

คุณอาจต้องการลองลบไฟร์วอลล์โดยสิ้นเชิง อย่างไรก็ตามนี่มีแนวโน้มที่จะนำเสนอความเสี่ยงด้านความปลอดภัยที่คนส่วนใหญ่คิดว่าจะไม่ได้รับประโยชน์ เพียงแค่ทิ้งความคิดในการใช้โปรโตคอล FTP เก่าที่ใช้งานไม่ได้กับอินเทอร์เน็ตที่ทันสมัยและรับซอฟต์แวร์ที่ทันสมัยเพื่อใช้ถ่ายโอนไฟล์ผ่าน HTTPS หรือ FTPS (หรือ SCP) โดยปกติแล้วจะทำงานได้ดีกับไฟร์วอลล์ทำงานได้ดีขึ้นกับ NAT และให้ประโยชน์ด้านความเป็นส่วนตัวแก่คุณ (คุณไม่ต้องการกระจายเสียงรหัสผ่านของคุณไม่เข้ารหัสผ่านทางอินเทอร์เน็ตใช่ไหม?)

นอกจากว่าคุณกำลังพยายามคว้าไฟล์สาธารณะซึ่งในกรณีนี้ HTTPS หรือ HTTP อาจเป็นเส้นทางที่ง่ายกว่า


คำตอบที่น่าสนใจมากขอบคุณ แต่สิ่งหนึ่งคือฉันสามารถเข้าถึงพอร์ต 21 บนเครื่องระยะไกลเท่านั้น ดังนั้นฉันจะใช้ HTTPS กับพอร์ต 21 ได้อย่างไร และถ้าเป็นไปได้ฉันจะแสดงรายการไฟล์ในแบบเดียวกับที่ฉันต้องการจะทำกับคำสั่ง "ls" ใน ftp ได้อย่างไร?
Addon

เซิร์ฟเวอร์กำหนดว่าจะฟังพอร์ตใด (หรืออุปกรณ์ที่อยู่ระหว่างเช่นไฟร์วอลล์หรือพร็อกซีหากใช้ PAT (การแปลที่อยู่พอร์ต) แต่เพื่อให้เข้าใจได้ง่ายสมมติว่า: เซิร์ฟเวอร์) ไคลเอ็นต์ HTTPS ไม่สามารถสื่อสารกับเซิร์ฟเวอร์ FTP ได้อย่างมีประสิทธิภาพเนื่องจาก FTP และ HTTPS เป็นโปรโตคอลที่แตกต่างกัน วิธีใช้ HTTPS คือให้เซิร์ฟเวอร์ใช้งานซอฟต์แวร์ "HTTPS server" ไม่ใช่ (เพียง) ซอฟต์แวร์ "เซิร์ฟเวอร์ FTP" หากคุณไม่สามารถควบคุมเซิร์ฟเวอร์ได้คุณอาจไม่มีตัวเลือกอื่นนอกจากให้ไคลเอ็นต์ FTP ทำงานร่วมกัน วิธีการทั่วไปที่ดีที่สุด: ทำให้ไฟร์วอลล์ของคุณใช้พร็อกซี FTP (ไคลเอ็นต์)
TOOGAM

ฉันควรเพิ่มว่าเซิร์ฟเวอร์ FTP บางตัวอาจมีอยู่ที่อนุญาตการเชื่อมต่อขาเข้า แต่โดยทั่วไปแล้วจะถูกทอดทิ้งและไม่มีการจัดการ ในกรณีดังกล่าวมีหลายกรณีที่อาจไม่มีวิธีที่ถูกต้องตามกฎหมายที่คุณสามารถใช้เพื่อแสดงรายการไฟล์ ("ls") และ / หรือถ่ายโอนไฟล์ได้สำเร็จ
TOOGAM

จะเป็นอย่างไรถ้าคุณใช้ PuTTY หรือ vpn ไปยังช่องสัญญาณอุโมงค์ผ่านเน็ต จากนั้น FTP จะสมบูรณ์แบบ
Nick Sotiros

@NickSotiros: ข้อได้เปรียบหลักที่ฉันนึกถึง FTP คือความเข้ากันได้กับซอฟต์แวร์รุ่นเก่า (โดยเฉพาะซอฟต์แวร์ศตวรรษที่ 20) และไม่เข้ารหัส (อาจเป็นที่ต้องการสำหรับฮาร์ดแวร์ที่ช้ากว่า Pentium ชิปตัวแรก) เมื่อใช้ระบบปฏิบัติการที่ทันสมัยและฮาร์ดแวร์ที่ทันสมัย ​​FTP นั้นไม่มีข้อได้เปรียบที่แท้จริง ดังนั้นฉันไม่เห็นว่ามันสมบูรณ์แบบเมื่อสร้างการออกแบบ / การแก้ปัญหาที่ทันสมัย ฉันจะบอกว่ามันเป็นการดีที่สุดที่จะทำความคุ้นเคยกับเครื่องมือที่หลากหลายมากกว่าพยายามใช้ FTP ในบางสถานการณ์และอย่าลืมใช้ FTP ในสถานการณ์อื่น ๆ
TOOGAM
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.