FTP ซึ่งหมายถึง โปรโตคอลการถ่ายโอนไฟล์เป็นโปรโตคอลเครือข่ายมาตรฐานที่ใช้ในการถ่ายโอนไฟล์คอมพิวเตอร์ระหว่างไคลเอนต์และเซิร์ฟเวอร์บนเครือข่ายที่ใช้ TCP/IP เช่น อินเทอร์เน็ต
ในตอนท้ายของบทความคุณจะพบกับสิ่งเล็ก ๆ น้อย ๆ ทดสอบ ที่จะช่วยให้คุณ ประเมิน ความรู้ที่ได้รับจากการอ่านครั้งนี้
FTP เป็นวิธีการเปิดใช้งานการถ่ายโอนไฟล์อย่างปลอดภัยจากที่หนึ่งไปยังอีกที่หนึ่ง และยังสามารถเปิดใช้งานการจัดการไฟล์บนเซิร์ฟเวอร์ได้อีกด้วย
ใน FTP มีโหมดการเชื่อมต่อสองโหมด: Active FTP และ Passive FTP
FTP ที่ใช้งานอยู่
ใน FTP ที่ใช้งานอยู่ การเชื่อมต่อจะเริ่มต้นจากไคลเอนต์ไปยังพอร์ตคำสั่งบนเซิร์ฟเวอร์ เมื่อไคลเอนต์ร้องขอการถ่ายโอนไฟล์ เซิร์ฟเวอร์จะเริ่มต้นการเชื่อมต่อข้อมูลกลับไปยังไคลเอนต์
การไหลของข้อมูลใน Active FTP เกิดขึ้นดังนี้:
- ไคลเอนต์เชื่อมต่อจากพอร์ตสุ่ม (N) ไปยังพอร์ต 21 บนเซิร์ฟเวอร์ (พอร์ตสำหรับ FTP) และส่งคำสั่ง PORT ไปยังเซิร์ฟเวอร์ คำสั่งนี้จะบอกเซิร์ฟเวอร์ว่าจะเชื่อมต่อพอร์ตใด (พอร์ต N+1)
- เมื่อเซิร์ฟเวอร์ได้รับคำสั่งนี้ เซิร์ฟเวอร์จะเชื่อมต่อจากพอร์ตข้อมูล (โดยปกติคือพอร์ต 20) ไปยังพอร์ตที่ระบุโดยไคลเอ็นต์ (N+1) และเริ่มการถ่ายโอนข้อมูล
ข้อดีของ Active FTP
- ทำให้การกำหนดค่าเซิร์ฟเวอร์ง่ายขึ้น: Active FTP นั้นง่ายต่อการกำหนดค่าบนฝั่งเซิร์ฟเวอร์ เนื่องจากคุณจำเป็นต้องเปิดและฟังพอร์ตเดียวเท่านั้น (พอร์ต 21)
ข้อเสียของ Active FTP
- ปัญหาไฟร์วอลล์: ไคลเอนต์ที่อยู่หลังไฟร์วอลล์มักจะประสบปัญหากับ Active FTP เนื่องจากไฟร์วอลล์มองเห็นการเชื่อมต่อข้อมูลที่เริ่มต้นโดยเซิร์ฟเวอร์ว่าไม่พึงประสงค์และบล็อกการเชื่อมต่อนั้น
- ข้อกำหนดด้านความปลอดภัย: อาจมีความเสี่ยงด้านความปลอดภัยเนื่องจากเซิร์ฟเวอร์เริ่มต้นการเชื่อมต่อข้อมูลไปยังไคลเอนต์ ซึ่งผู้โจมตีอาจถูกโจมตีได้
กล่าวโดยย่อ Active FTP มีประโยชน์และกำหนดค่าได้ง่ายจากฝั่งเซิร์ฟเวอร์ อย่างไรก็ตาม อาจมีปัญหากับไฟร์วอลล์ไคลเอ็นต์และมีความเสี่ยงด้านความปลอดภัยบางประการ
ด้วยเหตุผลเหล่านี้ องค์กรหลายแห่งจึงเลือกใช้ Passive FTP ซึ่งถึงแม้จะกำหนดค่าบนเซิร์ฟเวอร์ได้ยากกว่า แต่ก็มีปัญหากับไฟร์วอลล์น้อยกว่าและให้การควบคุมการเชื่อมต่อข้อมูลได้ดีขึ้น
โดยทั่วไปจะใช้ FTP ที่ใช้งานอยู่ในสถานการณ์ต่อไปนี้
เซิร์ฟเวอร์ที่มีข้อจำกัดไฟร์วอลล์ที่เข้มงวด: หากเซิร์ฟเวอร์ FTP อยู่หลังไฟร์วอลล์ที่มีนโยบายความปลอดภัยที่เข้มงวดซึ่งจำกัดพอร์ตที่สามารถใช้สำหรับการเชื่อมต่อขาเข้า Active FTP อาจเป็นตัวเลือกที่ใช้งานได้เนื่องจากจำเป็นต้องเปิดและฟังบนพอร์ต 21 เท่านั้น
ข้อจำกัดทรัพยากรเซิร์ฟเวอร์: ใน Active FTP เซิร์ฟเวอร์จะต้องเปิดและฟังพอร์ตเดียวสำหรับการเชื่อมต่อข้อมูลทั้งหมด ซึ่งจะเป็นประโยชน์หากเซิร์ฟเวอร์มีทรัพยากรที่จำกัด และไม่สามารถรองรับการเปิดหลายพอร์ตตามที่ต้องการใน Passive FTP
การควบคุมเครือข่าย: ผู้ดูแลระบบเครือข่ายบางรายอาจชอบ Active FTP เนื่องจากช่วยให้สามารถควบคุมการเชื่อมต่อข้อมูลได้ดียิ่งขึ้น ใน Active FTP เซิร์ฟเวอร์จะเริ่มต้นการเชื่อมต่อข้อมูล ซึ่งหมายความว่าผู้ดูแลระบบสามารถควบคุมการถ่ายโอนข้อมูลได้ดียิ่งขึ้น
FTP แบบพาสซีฟ
Passive FTP ได้รับการออกแบบมาเพื่อเอาชนะปัญหาของไฟร์วอลล์และเราเตอร์ในการเชื่อมต่อข้อมูล Active FTP ต่างจาก Active FTP ตรงใน Passive FTP เป็นไคลเอนต์ที่เริ่มต้นการเชื่อมต่อทั้งสอง (การเชื่อมต่อคำสั่งและการเชื่อมต่อข้อมูล) กับเซิร์ฟเวอร์
การไหลของข้อมูลใน Passive FTP เป็นดังนี้:
- ไคลเอนต์เชื่อมต่อจากพอร์ตสุ่ม (N) ไปยังพอร์ต 21 บนเซิร์ฟเวอร์ (พอร์ตสำหรับ FTP) และส่ง คำสั่ง PASV ไปยังเซิร์ฟเวอร์ คำสั่งนี้จะบอกเซิร์ฟเวอร์ว่าอยู่ในโหมดพาสซีฟและกำลังรอการตอบกลับจากเซิร์ฟเวอร์พร้อมพอร์ตสำหรับการเชื่อมต่อข้อมูล
- เซิร์ฟเวอร์ตอบสนองจากพอร์ต 21 ไปยังพอร์ต N ของไคลเอ็นต์ โดยจัดเตรียมพอร์ตที่ไม่มีสิทธิพิเศษ (มากกว่า 1023) เพื่อรับการเชื่อมต่อข้อมูล
- จากนั้นไคลเอ็นต์จะเริ่มต้นการเชื่อมต่อครั้งที่สองจากพอร์ตสุ่มอื่น (N+1) ไปยังพอร์ตที่ไม่มีสิทธิพิเศษที่เซิร์ฟเวอร์ระบุ เมื่อสร้างการเชื่อมต่อนี้แล้ว การถ่ายโอนข้อมูลจะเริ่มต้นขึ้น
ข้อดีของ FTP แบบพาสซีฟ
- การแก้ปัญหาเกี่ยวกับไฟร์วอลล์และเราเตอร์: โดยทั่วไปไฟร์วอลล์และเราเตอร์จะอนุญาตการเชื่อมต่อที่เริ่มต้นโดยไคลเอนต์ ดังนั้น Passive FTP โดยทั่วไปจะไม่มีปัญหาไฟร์วอลล์ที่เกิดขึ้นกับ Active FTP
- ความปลอดภัยขั้นสูง: เนื่องจากไคลเอนต์เริ่มต้นการเชื่อมต่อทั้งหมด จึงมีความเสี่ยงน้อยที่จะถูกโจมตีจากเซิร์ฟเวอร์
ข้อเสียของ Passive FTP
- การกำหนดค่าเซิร์ฟเวอร์ที่ซับซ้อนมากขึ้น: ใน Passive FTP เซิร์ฟเวอร์จะต้องสามารถจัดเตรียมและเปิดพอร์ตที่ไม่มีสิทธิพิเศษหลายพอร์ตสำหรับการเชื่อมต่อข้อมูล ซึ่งอาจกำหนดค่าและจัดการได้ยากกว่าใน Active FTP
- เพิ่มภาระบนเซิร์ฟเวอร์: เนื่องจากเซิร์ฟเวอร์ต้องจัดการการเชื่อมต่อหลายรายการที่เริ่มต้นโดยไคลเอ็นต์ จึงอาจต้องใช้ทรัพยากรเซิร์ฟเวอร์มากขึ้น
โดยสรุป Passive FTP มอบวิธีแก้ปัญหาไฟร์วอลล์ที่มักเกิดขึ้นกับ Active FTP และยังสามารถให้การรักษาความปลอดภัยที่ดีขึ้นอีกด้วย อย่างไรก็ตาม การกำหนดค่าบนเซิร์ฟเวอร์อาจทำได้ยากขึ้น และอาจต้องใช้ทรัพยากรเซิร์ฟเวอร์มากขึ้น
โดยทั่วไปแล้ว Passive FTP จะใช้ในสถานการณ์ต่อไปนี้
ลูกค้าที่อยู่หลังไฟร์วอลล์: Passive FTP มีประโยชน์เมื่อไคลเอนต์อยู่หลังไฟร์วอลล์ที่ไม่อนุญาตให้มีการเชื่อมต่อขาเข้า ใน Passive FTP ไคลเอนต์จะเป็นผู้เริ่มการเชื่อมต่อทั้งหมด ดังนั้นไฟร์วอลล์มักจะอนุญาตการเชื่อมต่อเหล่านี้
NAT (การแปลที่อยู่เครือข่าย): หากไคลเอ็นต์อยู่หลัง NAT ก็อาจมีปัญหากับ Active FTP เนื่องจาก NAT อาจไม่ทราบวิธีจัดการการเชื่อมต่อข้อมูลที่เริ่มต้นโดยเซิร์ฟเวอร์ FTP แบบพาสซีฟสามารถหลีกเลี่ยงปัญหานี้ได้เนื่องจากการเชื่อมต่อทั้งหมดเริ่มต้นโดยไคลเอ็นต์
การรักษาความปลอดภัย: บางองค์กรอาจชอบ Passive FTP เนื่องจากข้อพิจารณาด้านความปลอดภัย เนื่องจากการเชื่อมต่อทั้งหมดเริ่มต้นโดยไคลเอ็นต์ จึงมีความเสี่ยงน้อยที่จะถูกโจมตีจากเซิร์ฟเวอร์
การส่งข้อมูลขนาดใหญ่: Passive FTP สามารถรองรับการถ่ายโอนข้อมูลจำนวนมากพร้อมกันได้ เนื่องจากการถ่ายโอนแต่ละครั้งมีการเชื่อมต่อข้อมูลของตัวเอง ซึ่งจะเป็นประโยชน์ในสถานการณ์ที่จำเป็นต้องมีการถ่ายโอนข้อมูลพร้อมกันจำนวนมาก
ตัวอย่างการกำหนดค่าบนอุปกรณ์ Cisco
การกำหนดค่าสำหรับ Active FTP
ในกรณีนี้ คุณได้กำหนดอินเทอร์เฟซที่เราเตอร์เริ่มการเชื่อมต่อ FTP และคุณได้ระบุชื่อผู้ใช้และรหัสผ่านเพื่อใช้สำหรับการเชื่อมต่อ FTP
Router(config)# ip ftp source-interface FastEthernet 0/0
Router(config)# ip ftp username myusername
Router(config)# ip ftp password 0 mypassword
การกำหนดค่า FTP แบบพาสซีฟ
คำสั่ง 'ip ftp passive' กำหนดค่าเราเตอร์ให้ใช้ Passive FTP แทน Active FTP ชื่อผู้ใช้และรหัสผ่านสำหรับการเชื่อมต่อ FTP สามารถกำหนดค่าได้ในลักษณะเดียวกับ Active FTP
Router(config)# ip ftp passive
ตัวอย่างการกำหนดค่าบนอุปกรณ์ MikroTik
การกำหนดค่าสำหรับ Active FTP
คำสั่ง 'ดึงข้อมูล' นี้เริ่มต้นการถ่ายโอนไฟล์จากเราเตอร์ MikroTik (ไคลเอนต์) ไปยังเซิร์ฟเวอร์ FTP โหมดเริ่มต้นคือ Active FTP
[admin@MikroTik] /tool fetch> print
mode: ftp
address: 192.168.88.1
src-path: myfile.txt
user: myusername
password: mypassword
port: 21
การกำหนดค่า FTP แบบพาสซีฟ
ด้วยการเพิ่มตัวเลือก 'passive: yes' คำสั่ง 'fetch' จะใช้ Passive FTP แทน Active FTP
[admin@MikroTik] /tool fetch> print
mode: ftp
address: 192.168.88.1
src-path: myfile.txt
user: myusername
password: mypassword
port: 21
passive: yes
ตารางเปรียบเทียบโหมดการเชื่อมต่อ Active FTP และ Passive FTP
FTP ที่ใช้งานอยู่ | FTP แบบพาสซีฟ | |
---|---|---|
ความได้เปรียบ | 1. การกำหนดค่าบนเซิร์ฟเวอร์ที่ง่ายขึ้น: ต้องเปิดและฟังพอร์ตเดียวเท่านั้น | 1. ปัญหาน้อยลงเกี่ยวกับไฟร์วอลล์และ NAT เนื่องจากไคลเอนต์เริ่มต้นการเชื่อมต่อทั้งหมด |
2. ความต้องการทรัพยากรเซิร์ฟเวอร์ลดลง: เซิร์ฟเวอร์จำเป็นต้องเปิดและฟังพอร์ตเดียวเท่านั้น | 2. ปรับปรุงความปลอดภัยเนื่องจากการเชื่อมต่อทั้งหมดเริ่มต้นโดยไคลเอนต์ | |
3. การควบคุมเครือข่ายที่มากขึ้น: เซิร์ฟเวอร์เริ่มการเชื่อมต่อข้อมูล | 3. สามารถรองรับการถ่ายโอนข้อมูลจำนวนมากพร้อมกันได้ เนื่องจากการถ่ายโอนแต่ละครั้งมีการเชื่อมต่อข้อมูลของตัวเอง | |
ข้อเสีย | 1. ปัญหาเกี่ยวกับไฟร์วอลล์และ NAT ฝั่งไคลเอ็นต์: สามารถบล็อกการเชื่อมต่อข้อมูลที่เริ่มต้นโดยเซิร์ฟเวอร์ได้ | 1. การกำหนดค่าที่ซับซ้อนมากขึ้นบนเซิร์ฟเวอร์: ต้องจัดเตรียมและเปิดพอร์ตหลายพอร์ต |
2. ความเสี่ยงด้านความปลอดภัยที่อาจเกิดขึ้น: เซิร์ฟเวอร์เริ่มต้นการเชื่อมต่อข้อมูลไปยังไคลเอนต์ | 2. ความต้องการทรัพยากรเซิร์ฟเวอร์ที่เพิ่มขึ้น: เซิร์ฟเวอร์ต้องจัดการการเชื่อมต่อหลายรายการที่เริ่มต้นโดยไคลเอนต์ |