บางคนสามารถบอกฉันว่าอะไรคือความแตกต่างระหว่าง Active FTP และ Passive?
อันไหนดีกว่ากัน?
บางคนสามารถบอกฉันว่าอะไรคือความแตกต่างระหว่าง Active FTP และ Passive?
อันไหนดีกว่ากัน?
คำตอบ:
Active และ passive เป็นสองโหมดที่ FTP สามารถทำงานได้
สำหรับพื้นหลัง FTP จะใช้สองช่องสัญญาณระหว่างไคลเอนต์และเซิร์ฟเวอร์คำสั่งและช่องข้อมูลซึ่งเป็นการแยกการเชื่อมต่อ TCP จริงๆ
ช่องสัญญาณคำสั่งใช้สำหรับคำสั่งและการตอบสนองขณะที่ช่องสัญญาณใช้สำหรับถ่ายโอนไฟล์จริง
การแยกข้อมูลคำสั่งและข้อมูลออกเป็นช่องทางแยกเป็นวิธีที่ดีในการส่งคำสั่งไปยังเซิร์ฟเวอร์โดยไม่ต้องรอให้การถ่ายโอนข้อมูลปัจจุบันเสร็จสิ้น ตาม RFC สิ่งนี้ได้รับคำสั่งสำหรับชุดย่อยของคำสั่งเช่นการเลิกการยกเลิกการถ่ายโอนปัจจุบันและการรับสถานะ
ในโหมดที่ใช้งานลูกค้าสร้างช่องทางคำสั่ง แต่เซิร์ฟเวอร์มีหน้าที่รับผิดชอบในการสร้างช่องทางข้อมูล นี่อาจเป็นปัญหาหากเครื่องลูกข่ายได้รับการคุ้มครองโดยไฟร์วอลล์และจะไม่อนุญาตการร้องขอเซสชันจากบุคคลภายนอกโดยไม่ได้รับอนุญาต
ในโหมดแฝงลูกค้าสร้างช่องทางทั้งสอง เรารู้แล้วว่ามันสร้างช่องทางคำสั่งในโหมดใช้งานและมันก็ทำเช่นเดียวกันที่นี่
อย่างไรก็ตามจากนั้นจะร้องขอเซิร์ฟเวอร์ (ในช่องคำสั่ง) เพื่อเริ่มฟังพอร์ต (ขึ้นอยู่กับดุลยพินิจของเซิร์ฟเวอร์) แทนที่จะพยายามสร้างการเชื่อมต่อกลับไปยังไคลเอนต์
ในส่วนนี้เซิร์ฟเวอร์จะส่งคืนหมายเลขพอร์ตที่เลือกไว้เพื่อฟังเพื่อให้ไคลเอนต์ทราบวิธีเชื่อมต่อกับไคลเอ็นต์
เมื่อลูกค้ารู้ว่ามันสามารถสร้างช่องทางข้อมูลและดำเนินการต่อได้สำเร็จ
รายละเอียดเพิ่มเติมมีอยู่ใน RFC: https://www.ietf.org/rfc/rfc959.txt
ฉันเพิ่งพบคำถามนี้ในที่ทำงานของฉันดังนั้นฉันคิดว่าฉันควรพูดอะไรบางอย่างเพิ่มเติมที่นี่ ฉันจะใช้ภาพเพื่ออธิบายวิธีการทำงานของ FTP เป็นแหล่งข้อมูลเพิ่มเติมสำหรับคำตอบก่อนหน้า
โหมดใช้งาน:
โหมดเรื่อย ๆ :
ในการกำหนดค่าโหมดใช้งานเซิร์ฟเวอร์จะพยายามเชื่อมต่อกับพอร์ตฝั่งไคลเอ็นต์แบบสุ่ม โอกาสก็คือพอร์ตนั้นจะไม่เป็นหนึ่งในพอร์ตที่กำหนดไว้ล่วงหน้า ดังนั้นความพยายามในการเชื่อมต่อจะถูกบล็อกโดยไฟร์วอลล์และจะไม่มีการสร้างการเชื่อมต่อ
การกำหนดค่าแบบพาสซีฟจะไม่มีปัญหานี้เนื่องจากไคลเอ็นต์จะเป็นผู้เริ่มการเชื่อมต่อ แน่นอนว่าเป็นไปได้ที่ฝั่งเซิร์ฟเวอร์จะมีไฟร์วอลล์ด้วย อย่างไรก็ตามเนื่องจากเซิร์ฟเวอร์คาดว่าจะได้รับการร้องขอการเชื่อมต่อจำนวนมากเมื่อเทียบกับไคลเอนต์ดังนั้นมันจะเป็นเพียงตรรกะสำหรับผู้ดูแลระบบเซิร์ฟเวอร์เพื่อปรับให้เข้ากับสถานการณ์และเปิดการเลือกพอร์ตเพื่อตอบสนองการกำหนดค่าโหมดแฝง
ดังนั้นจึงเป็นการดีที่สุดสำหรับคุณที่จะกำหนดค่าเซิร์ฟเวอร์เพื่อสนับสนุน FTP โหมดพาสซีฟ อย่างไรก็ตามโหมดพาสซีฟจะทำให้ระบบของคุณเสี่ยงต่อการถูกโจมตีเนื่องจากไคลเอนต์ควรเชื่อมต่อกับพอร์ตเซิร์ฟเวอร์แบบสุ่ม ดังนั้นเพื่อสนับสนุนโหมดนี้ไม่เพียง แต่เซิร์ฟเวอร์ของคุณจะต้องมีหลายพอร์ตให้ใช้งานไฟร์วอลล์ของคุณควรอนุญาตให้มีการเชื่อมต่อกับพอร์ตเหล่านั้นทั้งหมดเพื่อผ่าน!
เพื่อลดความเสี่ยงวิธีแก้ปัญหาที่ดีคือการระบุช่วงของพอร์ตบนเซิร์ฟเวอร์ของคุณแล้วอนุญาตเฉพาะช่วงของพอร์ตบนไฟร์วอลล์ของคุณ
บทความ Redacted ของฉันในบทความโหมดการเชื่อมต่อ FTP (Active กับ Passive) :
โหมดการเชื่อมต่อ FTP (แอ็คทีฟหรือพาสซีฟ) กำหนดวิธีการเชื่อมต่อข้อมูล ในทั้งสองกรณีไคลเอนต์สร้างการเชื่อมต่อการควบคุม TCP ไปยังพอร์ตคำสั่งเซิร์ฟเวอร์ FTP 21 นี่คือการเชื่อมต่อขาออกมาตรฐานเช่นเดียวกับโปรโตคอลการถ่ายโอนไฟล์อื่น ๆ (SFTP, SCP, WebDAV) หรือแอปพลิเคชันไคลเอนต์ TCP อื่น ๆ (เช่นเว็บเบราว์เซอร์ ) ดังนั้นมักจะไม่มีปัญหาเมื่อเปิดการเชื่อมต่อการควบคุม
โดยที่โปรโตคอล FTP นั้นซับซ้อนกว่าเมื่อเปรียบเทียบกับโปรโตคอลการถ่ายโอนไฟล์อื่นคือการถ่ายโอนไฟล์ ในขณะที่โปรโตคอลอื่นใช้การเชื่อมต่อที่เหมือนกันสำหรับการควบคุมเซสชันและการถ่ายโอนไฟล์ (ข้อมูล) โปรโตคอล FTP ใช้การเชื่อมต่อแยกต่างหากสำหรับการถ่ายโอนไฟล์และรายการไดเรกทอรี
ในโหมดที่ใช้งานไคลเอนต์เริ่มฟังพอร์ตสุ่มสำหรับการเชื่อมต่อข้อมูลขาเข้าจากเซิร์ฟเวอร์ (ไคลเอนต์ส่งคำสั่ง FTP PORT
เพื่อแจ้งเซิร์ฟเวอร์ที่พอร์ตนั้นกำลังฟัง) ทุกวันนี้เป็นเรื่องปกติที่ไคลเอนต์อยู่หลังไฟร์วอลล์ (เช่นไฟร์วอลล์ Windows ในตัว) หรือเราเตอร์ NAT (เช่นโมเด็ม ADSL) ไม่สามารถยอมรับการเชื่อมต่อ TCP ขาเข้าได้
ด้วยเหตุนี้จึงมีการนำโหมดพาสซีฟมาใช้และส่วนใหญ่จะใช้ในปัจจุบัน การใช้โหมดพาสซีฟนั้นดีกว่าเนื่องจากการกำหนดค่าที่ซับซ้อนส่วนใหญ่จะทำเพียงครั้งเดียวที่ฝั่งเซิร์ฟเวอร์โดยผู้ดูแลระบบที่มีประสบการณ์มากกว่าทีละคนในฝั่งไคลเอ็นต์โดยผู้ใช้ที่ไม่มีประสบการณ์
ในโหมดพาสซีฟไคลเอนต์ใช้การเชื่อมต่อการควบคุมเพื่อส่งPASV
คำสั่งไปยังเซิร์ฟเวอร์แล้วรับที่อยู่ IP ของเซิร์ฟเวอร์และหมายเลขพอร์ตเซิร์ฟเวอร์จากเซิร์ฟเวอร์ซึ่งไคลเอนต์นั้นจะใช้เพื่อเปิดการเชื่อมต่อข้อมูลไปยังที่อยู่ IP ของเซิร์ฟเวอร์และเซิร์ฟเวอร์ ได้รับหมายเลขพอร์ตแล้ว
ด้วยโหมดพาสซีฟภาระการตั้งค่าส่วนใหญ่จะอยู่ที่ฝั่งเซิร์ฟเวอร์ ผู้ดูแลเซิร์ฟเวอร์ควรตั้งค่าเซิร์ฟเวอร์ตามที่อธิบายไว้ด้านล่าง
ไฟร์วอลล์และ NAT บนฝั่งเซิร์ฟเวอร์ FTP ต้องได้รับการกำหนดค่าไม่เพียงเพื่ออนุญาต / กำหนดเส้นทางการเชื่อมต่อขาเข้าบนพอร์ต FTP 21 แต่ยังเป็นช่วงของพอร์ตสำหรับการเชื่อมต่อข้อมูลขาเข้า โดยทั่วไปซอฟต์แวร์เซิร์ฟเวอร์ FTP มีตัวเลือกการกำหนดค่าเพื่อตั้งค่าช่วงของพอร์ตเซิร์ฟเวอร์จะใช้ และช่วงเดียวกันนั้นจะต้องเปิด / กำหนดเส้นทางบนไฟร์วอลล์ / NAT
เมื่อเซิร์ฟเวอร์ FTP อยู่หลัง NAT มันจำเป็นต้องรู้ว่ามันเป็นที่อยู่ IP ภายนอกดังนั้นจึงสามารถให้เซิร์ฟเวอร์กับลูกค้าในการตอบสนองต่อPASV
คำสั่ง
ด้วยโหมดแอคทีฟภาระการตั้งค่าส่วนใหญ่จะอยู่ที่ฝั่งไคลเอ็นต์
ไฟร์วอลล์ (เช่นไฟร์วอลล์ Windows) และ NAT (เช่นกฎการกำหนดเส้นทางโมเด็ม ADSL) ในฝั่งไคลเอ็นต์จะต้องได้รับการกำหนดค่าให้อนุญาต / เส้นทางช่วงของพอร์ตสำหรับการเชื่อมต่อข้อมูลขาเข้า เปิดพอร์ตใน Windows ให้ไปที่แผงควบคุม> ระบบและความปลอดภัย> Windows Firewall> การตั้งค่าขั้นสูง> กฎขาเข้า> กฎใหม่ สำหรับการกำหนดเส้นทางพอร์ตบน NAT (ถ้ามี) อ้างอิงเอกสารของมัน
เมื่อมี NAT ในเครือข่ายของคุณไคลเอนต์ FTP จำเป็นต้องรู้ที่อยู่ IP ภายนอกที่ WinSCP ต้องการให้กับเซิร์ฟเวอร์ FTP โดยใช้PORT
คำสั่ง เพื่อให้เซิร์ฟเวอร์สามารถเชื่อมต่อกลับไปยังไคลเอนต์ได้อย่างถูกต้องเพื่อเปิดการเชื่อมต่อข้อมูล ไคลเอนต์ FTP บางตัวมีความสามารถในการตรวจจับที่อยู่ IP ภายนอกโดยอัตโนมัติบางตัวต้องกำหนดค่าด้วยตนเอง
ไฟร์วอลล์ / NATs บางตัวพยายามเปิด / ปิดพอร์ตข้อมูลโดยอัตโนมัติโดยตรวจสอบการเชื่อมต่อการควบคุม FTP และ / หรือแปลที่อยู่ IP การเชื่อมต่อข้อมูลในการรับส่งข้อมูลการควบคุมการเชื่อมต่อ
ด้วยไฟร์วอลล์ / NAT เช่นนั้นการกำหนดค่าข้างต้นจึงไม่จำเป็นสำหรับ FTP ที่ไม่ได้เข้ารหัสแบบธรรมดา แต่สิ่งนี้ไม่สามารถทำงานกับ FTPS ได้เนื่องจากทราฟฟิกการเชื่อมต่อการควบคุมถูกเข้ารหัสและไฟร์วอลล์ / NAT ไม่สามารถตรวจสอบหรือแก้ไขได้
โหมดใช้งาน: - เซิร์ฟเวอร์เริ่มการเชื่อมต่อ
โหมดพาสซีฟ: - ไคลเอนต์เริ่มการเชื่อมต่อ
โหมดแอคทีฟ - ไคลเอนต์ใช้คำสั่ง PORT ไปยังเซิร์ฟเวอร์เพื่อส่งสัญญาณว่าจะ“ แข็งขัน” ระบุ IP และหมายเลขพอร์ตเพื่อเปิดการเชื่อมต่อข้อมูลกลับไปยังไคลเอนต์
โหมดพาสซีฟ - ไคลเอนต์ออกคำสั่ง PASV เพื่อระบุว่ามันจะรอ“ พาสซีฟ” เพื่อให้เซิร์ฟเวอร์ระบุหมายเลข IP และหมายเลขพอร์ตหลังจากนั้นไคลเอ็นต์จะสร้างการเชื่อมต่อข้อมูลไปยังเซิร์ฟเวอร์
มีคำตอบที่ดีมากมายด้านบน แต่โพสต์บล็อกนี้มีกราฟิกที่เป็นประโยชน์และให้คำอธิบายที่มั่นคง: https://titanftp.com/2018/08/23/what-is-the-difference-between-active-and -passive-ftp /