โปรโตคอล SFTP และ FTPS

คำปรารภ

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

FTP คืออะไร

FTP (File Transfer Protocol) เป็นโปรโตคอลสำหรับถ่ายโอนไฟล์ผ่านเครือข่าย เป็นหนึ่งในโปรโตคอลอีเธอร์เน็ตพื้นฐาน ปรากฏตัวในปี 1971 และเริ่มทำงานครั้งแรกในเครือข่าย DARPA ในปัจจุบัน เช่นเดียวกับ HTTP การถ่ายโอนไฟล์จะขึ้นอยู่กับแบบจำลองที่ประกอบด้วยชุดโปรโตคอล TCP/IP (Transmission Control Protocol/Internet Protocol) กำหนดไว้ใน RFC 959

โปรโตคอลกำหนดสิ่งต่อไปนี้:

  • การตรวจสอบข้อผิดพลาดจะดำเนินการอย่างไร?
  • วิธีการบรรจุข้อมูล (หากใช้บรรจุภัณฑ์)
  • อุปกรณ์ส่งระบุว่าข้อความเสร็จสิ้นแล้วอย่างไร
  • อุปกรณ์รับแจ้งว่าได้รับข้อความอย่างไร?

การสื่อสารระหว่างไคลเอนต์และเซิร์ฟเวอร์

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

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

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

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

เมื่อส่งข้อมูลผ่านเครือข่าย สามารถใช้การแสดงข้อมูลได้สี่แบบ:

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

การถ่ายโอนข้อมูลสามารถทำได้ในสามโหมดต่อไปนี้:

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

เซิร์ฟเวอร์ FTP เป็นเซิร์ฟเวอร์ที่ให้ความสามารถในการใช้ File Transfer Protocol มีคุณสมบัติบางอย่างที่แตกต่างจากเว็บเซิร์ฟเวอร์ทั่วไป:

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

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

ftp://user:pass@address:port/directory/file

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

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

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

แผนภาพโปรโตคอล

การโต้ตอบระหว่างไคลเอนต์และเซิร์ฟเวอร์ระหว่างการเชื่อมต่อ FTP สามารถมองเห็นได้ดังต่อไปนี้:

โปรโตคอล SFTP และ FTPS

FTP ที่ปลอดภัย

เดิมที FTP ไม่ได้ตั้งใจให้มีความปลอดภัย เนื่องจากมีจุดประสงค์เพื่อการสื่อสารระหว่างหน่วยงานและหน่วยงานทางทหารหลายแห่ง แต่ด้วยการพัฒนาและการแพร่กระจายของอินเทอร์เน็ต อันตรายจากการเข้าถึงโดยไม่ได้รับอนุญาตก็เพิ่มขึ้นหลายเท่า จำเป็นต้องปกป้องเซิร์ฟเวอร์จากการโจมตีประเภทต่างๆ ในเดือนพฤษภาคม พ.ศ. 1999 ผู้เขียน RFC 2577 ได้สรุปช่องโหว่ไว้ในรายการปัญหาต่อไปนี้:

  • การโจมตีที่ซ่อนอยู่ (การโจมตีแบบเด้ง)
  • การโจมตีแบบหลอกลวง
  • การโจมตีด้วยกำลังอันดุร้าย
  • การจับแพ็คเก็ตดม
  • ขโมยท่าเรือ

FTP ปกติไม่มีความสามารถในการถ่ายโอนข้อมูลในรูปแบบที่เข้ารหัส ส่งผลให้ชื่อผู้ใช้ รหัสผ่าน คำสั่ง และข้อมูลอื่น ๆ สามารถถูกดักจับโดยผู้โจมตีได้อย่างง่ายดายและง่ายดาย วิธีแก้ปัญหาตามปกติสำหรับปัญหานี้คือการใช้โปรโตคอลที่มีช่องโหว่ (FTPS) เวอร์ชัน "ปลอดภัย" ที่มีการป้องกัน TLS หรือโปรโตคอลอื่นที่ปลอดภัยกว่า เช่น SFTP/SCP ซึ่งมาพร้อมกับการใช้งานโปรโตคอล Secure Shell ส่วนใหญ่

FTPS

FTPS (FTP + SSL) เป็นส่วนขยายของโปรโตคอลการถ่ายโอนไฟล์มาตรฐานที่เพิ่มฟังก์ชันพื้นฐานในการสร้างเซสชันที่เข้ารหัสโดยใช้โปรโตคอล SSL (Secure Sockets Layer) ปัจจุบัน การป้องกันมีให้โดย TLS แบบอะนาล็อกขั้นสูง (Transport Layer Security)

SSL

โปรโตคอล SSL ได้รับการเสนอโดย Netscape Communications ในปี 1996 เพื่อให้มั่นใจในความปลอดภัยและความเป็นส่วนตัวของการเชื่อมต่ออินเทอร์เน็ต โปรโตคอลรองรับการตรวจสอบสิทธิ์ไคลเอ็นต์และเซิร์ฟเวอร์ เป็นแอปพลิเคชันที่ไม่ขึ้นกับใคร และโปร่งใสสำหรับโปรโตคอล HTTP, FTP และ Telnet

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

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

SSL รองรับอัลกอริธึมการเข้ารหัสที่หลากหลาย ในระหว่างการสร้างการสื่อสาร ระบบจะใช้การเข้ารหัสคีย์สาธารณะ RSA หลังจากการแลกเปลี่ยนคีย์ จะมีการใช้รหัสที่แตกต่างกันจำนวนมาก: RC2, RC4, IDEA, DES และ TripleDES นอกจากนี้ยังใช้ MD5 - อัลกอริทึมสำหรับสร้างการแยกข้อความ ไวยากรณ์สำหรับใบรับรองคีย์สาธารณะอธิบายไว้ใน X.509

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

การเชื่อมต่อแบบ SSL

โปรโตคอล SFTP และ FTPS

ช่องทางที่ปลอดภัยที่จัดทำโดย SSL มีคุณสมบัติหลักสามประการ:

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

คุณสมบัติของ FTPS

มีการใช้งาน FTPS สองแบบ โดยใช้วิธีการรักษาความปลอดภัยที่แตกต่างกัน:

  • วิธีการโดยนัยเกี่ยวข้องกับการใช้โปรโตคอล SSL มาตรฐานเพื่อสร้างเซสชันก่อนที่จะส่งข้อมูล ซึ่งจะทำให้ความเข้ากันได้กับไคลเอนต์และเซิร์ฟเวอร์ FTP ทั่วไปลดลง สำหรับความเข้ากันได้แบบย้อนหลังกับไคลเอนต์ที่ไม่รองรับ FTPS พอร์ต TCP 990 จะใช้สำหรับการเชื่อมต่อการควบคุม และใช้ 989 สำหรับการถ่ายโอนข้อมูล ซึ่งยังคงพอร์ตมาตรฐาน 21 สำหรับโปรโตคอล FTP วิธีนี้ถือว่าล้าสมัย
  • ชัดเจนนั้นสะดวกกว่ามาก เนื่องจากใช้คำสั่ง FTP มาตรฐาน แต่จะเข้ารหัสข้อมูลเมื่อตอบสนอง ซึ่งช่วยให้คุณใช้การเชื่อมต่อควบคุมเดียวกันสำหรับทั้ง FTP และ FTPS ไคลเอนต์ต้องร้องขอการถ่ายโอนข้อมูลที่ปลอดภัยจากเซิร์ฟเวอร์อย่างชัดเจน จากนั้นอนุมัติวิธีการเข้ารหัส หากไคลเอนต์ไม่ร้องขอการถ่ายโอนที่ปลอดภัย เซิร์ฟเวอร์ FTPS มีสิทธิ์ที่จะรักษาหรือปิดการเชื่อมต่อที่ไม่ปลอดภัย มีการเพิ่มกลไกการเจรจาการรับรองความถูกต้องและความปลอดภัยของข้อมูลภายใต้ RFC 2228 ซึ่งรวมถึงคำสั่ง FTP AUTH ใหม่ แม้ว่ามาตรฐานนี้ไม่ได้กำหนดกลไกความปลอดภัยไว้อย่างชัดเจน แต่ก็ระบุว่าไคลเอ็นต์จะต้องเริ่มต้นการเชื่อมต่อที่ปลอดภัยโดยใช้อัลกอริทึมที่อธิบายไว้ข้างต้น หากเซิร์ฟเวอร์ไม่รองรับการเชื่อมต่อที่ปลอดภัยควรส่งคืนรหัสข้อผิดพลาด 504 ไคลเอนต์ FTPS สามารถรับข้อมูลเกี่ยวกับโปรโตคอลความปลอดภัยที่เซิร์ฟเวอร์รองรับโดยใช้คำสั่ง FEAT อย่างไรก็ตามเซิร์ฟเวอร์ไม่จำเป็นต้องเปิดเผยระดับความปลอดภัย รองรับ คำสั่ง FTPS ที่พบบ่อยที่สุดคือ AUTH TLS และ AUTH SSL ซึ่งให้ความปลอดภัย TLS และ SSL ตามลำดับ

SFTP

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

การรักษาความปลอดภัยของเชลล์

โปรโตคอลได้รับการพัฒนาโดยหนึ่งในกลุ่ม IETF ที่เรียกว่า Secsh เอกสารการทำงานสำหรับโปรโตคอล SFTP ใหม่ไม่ได้เป็นมาตรฐานอย่างเป็นทางการ แต่เริ่มถูกนำมาใช้อย่างแข็งขันเพื่อการพัฒนาแอปพลิเคชัน ต่อมามีการเปิดตัวโปรโตคอลหกเวอร์ชัน อย่างไรก็ตามการเพิ่มขึ้นอย่างค่อยเป็นค่อยไปของฟังก์ชันการทำงานนำไปสู่ความจริงที่ว่าในวันที่ 14 สิงหาคม พ.ศ. 2006 มีการตัดสินใจที่จะหยุดทำงานในการพัฒนาโปรโตคอลเนื่องจากงานหลักของโครงการเสร็จสิ้น (การพัฒนา SSH) และการขาด ที่มีระดับผู้เชี่ยวชาญเพียงพอที่จะก้าวไปสู่การพัฒนาโปรโตคอลระบบไฟล์ระยะไกลแบบเต็มรูปแบบ

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

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

เวอร์ชันแรกของโปรโตคอล SSH-1 ได้รับการพัฒนาในปี 1995 โดยนักวิจัย Tatu Ulönen จากมหาวิทยาลัยเทคโนโลยีเฮลซิงกิ (ฟินแลนด์) SSH-1 ถูกเขียนขึ้นเพื่อให้ความเป็นส่วนตัวมากกว่าโปรโตคอล rlogin, telnet และ rsh ในปี 1996 ได้มีการพัฒนาเวอร์ชันที่ปลอดภัยยิ่งขึ้นของโปรโตคอล SSH-2 ซึ่งเข้ากันไม่ได้กับ SSH-1 โปรโตคอลนี้ได้รับความนิยมเพิ่มมากขึ้น และในปี 2000 มีผู้ใช้ประมาณสองล้านคน ปัจจุบันคำว่า “SSH” มักจะหมายถึง SSH-2 เพราะ ขณะนี้โปรโตคอลเวอร์ชันแรกไม่ได้ใช้งานจริงเนื่องจากมีข้อบกพร่องที่สำคัญ ในปี พ.ศ. 2006 โปรโตคอลดังกล่าวได้รับการอนุมัติจากคณะทำงาน IETF ให้เป็นมาตรฐานอินเทอร์เน็ต

การใช้งาน SSH ทั่วไปมีอยู่สองแบบ: เชิงพาณิชย์ส่วนตัวและโอเพ่นซอร์สฟรี การใช้งานฟรีเรียกว่า OpenSSH ภายในปี 2006 คอมพิวเตอร์ 80% บนอินเทอร์เน็ตใช้ OpenSSH การใช้งานที่เป็นกรรมสิทธิ์ได้รับการพัฒนาโดย SSH Communications Security ซึ่งเป็นบริษัทในเครือของ Tectia Corporation และเปิดให้ใช้งานฟรีที่ไม่ใช่เชิงพาณิชย์ การใช้งานเหล่านี้มีชุดคำสั่งที่เกือบจะเหมือนกัน

โปรโตคอล SSH-2 แตกต่างจากโปรโตคอล telnet ตรงที่ทนทานต่อการโจมตีด้วยการดักฟังข้อมูล (“การดมกลิ่น”) แต่ไม่สามารถต้านทานการโจมตีจากคนกลางได้ โปรโตคอล SSH-2 ยังทนทานต่อการโจมตีด้วยการแย่งชิงเซสชัน เนื่องจากเป็นไปไม่ได้ที่จะเข้าร่วมหรือแย่งชิงเซสชันที่สร้างไว้แล้ว

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

การสนับสนุน SSH มีอยู่ในระบบที่คล้ายกับ UNIX ทั้งหมด และส่วนใหญ่มีไคลเอนต์และเซิร์ฟเวอร์ ssh เป็นยูทิลิตี้มาตรฐาน มีการใช้งานไคลเอนต์ SSH มากมายสำหรับระบบปฏิบัติการที่ไม่ใช่ UNIX โปรโตคอลนี้ได้รับความนิยมอย่างมากหลังจากการพัฒนาเครื่องวิเคราะห์การรับส่งข้อมูลและวิธีการขัดขวางการทำงานของเครือข่ายท้องถิ่นอย่างกว้างขวาง ซึ่งเป็นทางเลือกแทนโปรโตคอล Telnet ที่ไม่ปลอดภัยสำหรับการจัดการโหนดที่สำคัญ

การสื่อสารโดยใช้ SSH

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

โปรโตคอล SFTP และ FTPS

เปรียบเทียบกับ FTPS

สิ่งสำคัญที่ทำให้ SFTP แตกต่างจาก FTP และ FTPS มาตรฐานก็คือ SFTP เข้ารหัสคำสั่ง ชื่อผู้ใช้ รหัสผ่าน และข้อมูลที่เป็นความลับอื่นๆ ทั้งหมดอย่างสมบูรณ์

ทั้งโปรโตคอล FTPS และ SFTP ใช้การผสมผสานระหว่างอัลกอริธึมแบบอสมมาตร (RSA, DSA), อัลกอริธึมแบบสมมาตร (DES/3DES, AES, Twhofish ฯลฯ) รวมถึงอัลกอริธึมการแลกเปลี่ยนคีย์ สำหรับการตรวจสอบสิทธิ์ FTPS (หรือเพื่อให้แม่นยำยิ่งขึ้น SSL/TLS บน FTP) จะใช้ใบรับรอง X.509 ในขณะที่ SFTP (โปรโตคอล SSH) ใช้คีย์ SSH

ใบรับรอง X.509 มีคีย์สาธารณะและข้อมูลบางอย่างเกี่ยวกับใบรับรองของเจ้าของ ในทางกลับกัน ข้อมูลนี้ช่วยให้สามารถตรวจสอบความสมบูรณ์ของใบรับรอง ความถูกต้อง และเจ้าของใบรับรองได้ ใบรับรอง X.509 มีคีย์ส่วนตัวที่เกี่ยวข้อง ซึ่งโดยปกติจะจัดเก็บแยกต่างหากจากใบรับรองด้วยเหตุผลด้านความปลอดภัย

คีย์ SSH มีเพียงคีย์สาธารณะเท่านั้น (คีย์ส่วนตัวที่เกี่ยวข้องจะถูกจัดเก็บแยกต่างหาก) ไม่มีข้อมูลใดๆ เกี่ยวกับเจ้าของกุญแจ การใช้งาน SSH บางอย่างใช้ใบรับรอง X.509 สำหรับการตรวจสอบสิทธิ์ แต่จริงๆ แล้วไม่ได้ตรวจสอบห่วงโซ่ใบรับรองทั้งหมด มีเพียงคีย์สาธารณะเท่านั้นที่ใช้ (ซึ่งทำให้การตรวจสอบสิทธิ์ดังกล่าวไม่สมบูรณ์)

ข้อสรุป

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

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

รายการแหล่งที่มา

ที่มา: will.com

เพิ่มความคิดเห็น