การทำความเข้าใจ SFTP กับ FTPS กับ FTP

เผยแพร่แล้ว: 2022-08-18

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

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

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

FTP

FTP คือ File Transfer Protocol ที่มีอายุหลายสิบปี แต่เดิมเสนอไว้ภายใต้ RFC 114 ซึ่งต่อมาได้พัฒนาเป็น RFC 959 ซึ่งเป็นมาตรฐานที่ใช้อยู่ในปัจจุบัน

FTP ทำงานบนสองช่องทางเพื่อแลกเปลี่ยนข้อมูล: ช่องทางหนึ่งสำหรับคำสั่งและอีกช่องทางหนึ่งสำหรับข้อมูล สิ่งนี้ต้องการสองพอร์ตเพื่อให้ FTP ทำงานได้ – ช่องคำสั่งและช่องสัญญาณข้อมูล

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

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

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

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

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

การตรวจสอบสิทธิ์ใน FTP

ข้อมูลการตรวจสอบ FTP จะถูกส่งผ่านช่องคำสั่งระหว่างการสร้างการเชื่อมต่อเริ่มต้น FTP สามารถใช้ชื่อผู้ใช้และรหัสผ่านสำหรับการตรวจสอบสิทธิ์ หรืออาจไม่ระบุชื่อเพื่อให้ทุกคนเข้าสู่ระบบและเข้าถึงเซิร์ฟเวอร์ได้

โหมด FTP แบบแอ็คทีฟและพาสซีฟ

FTP ใช้โหมด Active หรือ Passive ในการตั้งค่าการเชื่อมต่อ

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

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

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

ดังนั้น ในโหมดแอ็คทีฟ ไคลเอ็นต์จะเริ่มต้นคำขอเชื่อมต่อเริ่มต้นในขณะที่เซิร์ฟเวอร์เริ่มต้นคำขอเชื่อมต่อช่องข้อมูล

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

FTPS

แม้ว่าคุณจะเต็มใจรับความเสี่ยงที่เกี่ยวข้องกับ FTP ที่มีการรับส่งข้อมูลที่ไม่ได้เข้ารหัสและการโจมตีหลักจากกลางก็ตาม ข้อกำหนดของอุตสาหกรรมบังคับให้คุณใช้ทางเลือกที่ปลอดภัยกว่า เช่น FTPS และ SFTP ซึ่งมีความปลอดภัยมากกว่ามาก

ในปี 1990 ด้วยแนวความปลอดภัยที่เปลี่ยนแปลงไป Netscape ได้สร้างโปรโตคอล SSL หรือ Secure Sockets Layer (SSL ซึ่งปัจจุบันรู้จักกันในชื่อ TLS) เพื่อปกป้องการสื่อสารผ่านเครือข่าย SSL ถูกนำไปใช้กับ FTP ซึ่งกลายเป็น FTPS หรือ File Transfer Protocol Secure โดยทั่วไป FTPS หรือ FTP/S จะทำงานบนพอร์ต 990/tcp แต่ก็สามารถเห็นได้ในพอร์ต 21/tcp ในทำนองเดียวกัน สำหรับพอร์ตช่องข้อมูล 989/tcp เป็นพอร์ตทั่วไปที่ใช้สำหรับ FTPS หากพอร์ตคำสั่งเป็น 21/tcp พอร์ตข้อมูลควรเป็น 20/tcp

เช่นเดียวกับ FTP FTPS ใช้สองช่องทางในการสื่อสาร: คำสั่งและช่องข้อมูล ทั้งช่องสัญญาณข้อมูลสามารถเข้ารหัสด้วย FTPS หรือทั้งช่องคำสั่งและข้อมูลสามารถเข้ารหัสได้เพื่อความปลอดภัยยิ่งขึ้น

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

การตรวจสอบสิทธิ์ใน FTPS

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

SFTP

ไม่เหมือนกับ FTP และ FTPS เพราะ SFTP (SSH File Transfer Protocol) เป็นโปรโตคอลที่แตกต่างกันโดยสิ้นเชิงซึ่งสร้างขึ้นบน SSH (หรือ Secure Shell) โดยค่าเริ่มต้น SFTP ทำงานบนพอร์ต 22/tcp เหมือนกับ SSH แม้ว่าจะสามารถกำหนดค่าให้ใช้พอร์ตฟรีที่กำหนดเองบนเซิร์ฟเวอร์ได้

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

SFTP ซึ่งแตกต่างจาก FTP และ FTPS ตรงที่ใช้ช่องทางการสื่อสารเดียวในการถ่ายโอนคำสั่งและการรับส่งข้อมูล ซึ่งทั้งหมดจะถูกส่งผ่านในรูปแบบที่เข้ารหัสพร้อมกับการรับรองความถูกต้องเบื้องต้น

การตรวจสอบสิทธิ์ใน SFTP

การตรวจสอบสิทธิ์ใน SFTP สามารถทำได้โดยใช้ชื่อผู้ใช้และรหัสผ่านอย่างง่าย แต่ต่างจาก FTP ตรงที่ข้อมูลทั้งหมด รวมถึงรายละเอียดการตรวจสอบสิทธิ์ จะถูกส่งผ่านโดยเข้ารหัสผ่านเครือข่าย

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

สรุป

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

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

คุณอาจสนใจที่จะรู้จักซอฟต์แวร์เซิร์ฟเวอร์ FTP และไคลเอนต์ FTP/SFTP ที่ดีที่สุด