SSH: การรักษาความปลอดภัยการเข้าถึงระยะไกล
ติดตามขั้นตอนจับมือของ SSH การพิสูจน์ตัวตนด้วยกุญแจโฮสต์ และวิธีที่ SSH ปกป้องเซสชันระยะไกล
SSH: การรักษาความปลอดภัยการเข้าถึงระยะไกล เป็นบทเรียน Cryptology Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cryptology Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน
SSH-1 เทียบกับ SSH-2: เรื่องราวการเลิกใช้งาน
SSH-1 ซึ่งเป็นโพรโทคอล Secure Shell รุ่นดั้งเดิม มีข้อบกพร่องพื้นฐานด้านการออกแบบที่เปิดทางให้ผู้โจมตีที่ควบคุมการสื่อสารแทรกข้อมูลใด ๆ ลงในเซสชันที่เข้ารหัสโดยไม่ถูกตรวจพบ SSH-2 ซึ่งเป็นการออกแบบโพรโทคอลใหม่ทั้งหมดและเผยแพร่ในปี 2006 ใน RFC 4251-4254 แก้ไขจุดอ่อนเหล่านี้ด้วยโพรโทคอลแยกสำหรับชั้นขนส่ง การยืนยันตัวตน และการเชื่อมต่อ รวมทั้งใช้การตรวจสอบความถูกต้องครบถ้วนของข้อมูลที่รัดกุมยิ่งขึ้นด้วย HMAC ปัจจุบัน SSH-1 ถูกเลิกใช้แล้ว และไม่ควรมีเซิร์ฟเวอร์สมัยใหม่ใดเปิดใช้งาน
ชั้นขนส่ง SSH: การเข้ารหัสและความถูกต้องครบถ้วนของข้อมูล
โพรโทคอลชั้นขนส่ง SSH จัดการการแลกเปลี่ยนกุญแจเริ่มต้นและสร้างช่องทางที่เข้ารหัสพร้อมการป้องกันความถูกต้องครบถ้วนของข้อมูล โพรโทคอลจะเจรจาอัลกอริทึมสำหรับการแลกเปลี่ยนกุญแจ (โดยทั่วไปคือ ECDH) การยืนยันตัวตนโฮสต์ (โดยทั่วไปคือ Ed25519 หรือ RSA) การเข้ารหัสแบบสมมาตร (โดยทั่วไปคือ AES-256-CTR หรือ ChaCha20-Poly1305) และ MAC (โดยทั่วไปคือ HMAC-SHA2-256) แพ็กเก็ตทุกแพ็กเก็ตหลังจากนั้นจะถูกเข้ารหัสและตรวจสอบความถูกต้องครบถ้วนของข้อมูลด้วยอัลกอริทึมที่เจรจาไว้
ชั้นการยืนยันตัวตนผู้ใช้ SSH
เมื่อชั้นขนส่งได้รับการรักษาความปลอดภัยแล้ว ชั้นการยืนยันตัวตนผู้ใช้จะเจรจาวิธีที่ผู้ใช้ใช้พิสูจน์ตัวตนต่อเซิร์ฟเวอร์ วิธีที่ใช้กันทั่วไปมีสามแบบ ได้แก่ รหัสผ่าน (ผู้ใช้พิมพ์รหัสผ่าน ซึ่งจะถูกส่งโดยเข้ารหัสผ่านชั้นขนส่ง) กุญแจสาธารณะ (ผู้ใช้พิสูจน์ว่าครอบครองกุญแจส่วนตัวที่ตรงกับกุญแจสาธารณะที่ได้รับอนุญาตบนเซิร์ฟเวอร์) และ GSSAPI (การผสานรวมการลงชื่อเข้าใช้ครั้งเดียวด้วย Kerberos สำหรับสภาพแวดล้อมระดับองค์กร)
ชั้นการเชื่อมต่อ SSH: ช่องสัญญาณแบบหลายทาง
ชั้นการเชื่อมต่อ SSH รวมช่องสัญญาณเชิงตรรกะหลายช่องไว้บนการเชื่อมต่อชั้นขนส่งที่เข้ารหัสเพียงหนึ่งเดียว เซสชัน SSH โดยทั่วไปมีหนึ่งช่องสัญญาณสำหรับเชลล์แบบโต้ตอบ ช่องสัญญาณเพิ่มเติมรองรับการส่งต่อพอร์ต การส่งต่อ X11 และการถ่ายโอนไฟล์ด้วย SFTP โดยทั้งหมดใช้การเชื่อมต่อเดียวกันที่ผ่านการยืนยันตัวตนและเข้ารหัสแล้ว คำขอช่องสัญญาณช่วยให้ไคลเอ็นต์ขอเทอร์มินัลเสมือน กำหนดตัวแปรสภาพแวดล้อม หรือเรียกใช้คำสั่งเฉพาะได้
การตรวจสอบกุญแจโฮสต์และ TOFU
เมื่อเชื่อมต่อกับเซิร์ฟเวอร์ SSH เป็นครั้งแรก ไคลเอ็นต์จะได้รับกุญแจโฮสต์ของเซิร์ฟเวอร์และต้องตัดสินใจว่าจะเชื่อถือกุญแจนั้นหรือไม่ นโยบายเริ่มต้นคือความเชื่อถือเมื่อใช้งานครั้งแรก (TOFU) โดยระบบจะแจ้งให้ผู้ใช้ตรวจสอบลายนิ้วมือของกุญแจ ซึ่งโดยทั่วไปจะแสดงเป็นแฮช เช่น SHA256:... และหากยอมรับ ระบบจะจัดเก็บกุญแจนั้นไว้ในไฟล์ known_hosts ในการเชื่อมต่อครั้งถัดไป ระบบจะเปรียบเทียบกุญแจที่จัดเก็บไว้กับกุญแจที่เซิร์ฟเวอร์แสดง หากไม่ตรงกัน ระบบจะแสดงคำเตือนอย่างรุนแรงเกี่ยวกับความเป็นไปได้ของการโจมตีแบบคนกลาง
known_hosts และลายนิ้วมือกุญแจ
ไฟล์ known_hosts ซึ่งจัดเก็บอยู่ที่ ~/.ssh/known_hosts จะเก็บฐานข้อมูลกุญแจโฮสต์ของเซิร์ฟเวอร์ โดยจัดทำดัชนีตามชื่อโฮสต์และที่อยู่ IP แต่ละรายการจะเชื่อมโยงที่อยู่ของเซิร์ฟเวอร์กับกุญแจสาธารณะของเซิร์ฟเวอร์ หากกุญแจของเซิร์ฟเวอร์เปลี่ยนแปลง อาจเป็นเพราะติดตั้งเซิร์ฟเวอร์ใหม่หรือมีผู้โจมตีปลอมตัวเป็นเซิร์ฟเวอร์นั้น SSH จะปฏิเสธการเชื่อมต่อและแสดงคำเตือน ผู้ดูแลระบบใช้การยืนยันตัวตนโฮสต์ด้วยใบรับรองเพื่อหลีกเลี่ยงการตัดสินใจเรื่องความเชื่อถือแบบ TOFU เมื่อใช้งานในวงกว้าง
authorized_keys สำหรับการเข้าสู่ระบบโดยไม่ใช้รหัสผ่าน
การยืนยันตัวตนด้วยกุญแจสาธารณะจะจัดเก็บกุญแจสาธารณะของผู้ใช้ไว้ใน ~/.ssh/authorized_keys บนเซิร์ฟเวอร์ เมื่อผู้ใช้เชื่อมต่อ เซิร์ฟเวอร์จะส่งคำท้าทายที่เข้ารหัสด้วยกุญแจสาธารณะ มีเพียงผู้ครอบครองกุญแจส่วนตัวที่ตรงกันเท่านั้นที่สามารถตอบกลับได้อย่างถูกต้อง ซึ่งเป็นการพิสูจน์ตัวตนโดยไม่ต้องส่งกุญแจส่วนตัวหรือรหัสผ่าน วิธีนี้ปลอดภัยกว่ารหัสผ่าน เพราะกุญแจส่วนตัวจะไม่ถูกส่งผ่านเครือข่ายและไม่สามารถถูกขโมยด้วยการหลอกลวงแบบฟิชชิงได้
อัลกอริทึมกุญแจ SSH
อัลกอริทึมกุญแจ SSH ที่ใช้กันทั่วไปมีสามกลุ่ม กุญแจ RSA ขนาด 3072 หรือ 4096 บิตเข้ากันได้กับเซิร์ฟเวอร์ทั้งหมด ECDSA ที่ใช้เส้นโค้ง NIST P-256 ทำงานได้เร็วกว่า RSA เมื่อมีระดับความปลอดภัยเท่ากัน แต่พารามิเตอร์ด้านความปลอดภัยของ P-256 ถูกตั้งข้อสังเกต Ed25519 ซึ่งอ้างอิงอัลกอริทึมลายเซ็นดิจิทัลบนเส้นโค้ง Edwards เป็นคำแนะนำสมัยใหม่ โดยมีกุญแจขนาด 256 บิตที่รวดเร็วและมีขนาดเล็ก คุณสมบัติด้านความปลอดภัยที่แข็งแกร่ง และไม่มีข้อกังวลเกี่ยวกับพารามิเตอร์เฉพาะกรณี
ประวัติ SSH: พอร์ต 22 และ Tatu Ylönen
Tatu Ylönen นักวิจัยชาวฟินแลนด์จากมหาวิทยาลัยเทคโนโลยีเฮลซิงกิ พัฒนา SSH ในปี 1995 หลังการโจมตีดักจับรหัสผ่านบนเครือข่ายมหาวิทยาลัยของเขาเปิดเผยข้อมูลรับรองหลายร้อยรายการ เขาเลือกพอร์ต 22 เพราะอยู่ระหว่าง telnet (23) และ ftp (21) SSH เข้ามาแทนที่โพรโทคอลทั้งสองที่ไม่ปลอดภัย Ylönen ก่อตั้ง SSH Communications Security และต่อมาเผยแพร่ SSH-2 เป็นมาตรฐานเปิดผ่าน IETF ส่วน OpenSSH ซึ่งเป็นการพัฒนาที่เปิดให้ใช้งานฟรีและมีผู้ใช้มากที่สุด ถูกสร้างโดยโครงการ OpenBSD ในปี 1999
ความปลอดภัยของเอเจนต์ SSH และการส่งต่อกุญแจ
เอเจนต์ SSH เป็นกระบวนการเบื้องหลังที่เก็บกุญแจส่วนตัวที่ถอดรหัสแล้วไว้ในหน่วยความจำ ช่วยให้ลงชื่อเข้าใช้เซิร์ฟเวอร์หลายเครื่องครั้งเดียวได้โดยไม่ต้องป้อนวลีรหัสผ่านซ้ำ การส่งต่อเอเจนต์ (แฟล็ก -A) ขยายความสามารถนี้ด้วยการส่งต่อการเชื่อมต่อของเอเจนต์ไปยังเซิร์ฟเวอร์ระยะไกล ทำให้เข้าถึงเซิร์ฟเวอร์ภายในได้ผ่านหนึ่งทอด อย่างไรก็ตาม การส่งต่อเอเจนต์มีความเสี่ยงด้านความปลอดภัย เพราะเซิร์ฟเวอร์ระยะไกลที่ถูกเจาะสามารถใช้เอเจนต์ที่ส่งต่อมาเพื่อยืนยันตัวตนในนามของคุณกับเซิร์ฟเวอร์อื่นได้ ควรใช้ ProxyJump แทนการส่งต่อเอเจนต์
แนวทางปฏิบัติที่ดีที่สุดในการเสริมความปลอดภัย SSH
การกำหนดค่า SSH ที่ปลอดภัยประกอบด้วยการปิดการเข้าสู่ระบบด้วย root (PermitRootLogin no) ปิดการยืนยันตัวตนด้วยรหัสผ่าน (PasswordAuthentication no) และใช้เฉพาะกุญแจสาธารณะแทน การใช้กุญแจโฮสต์ Ed25519 การเปิดใช้งานเฉพาะโพรโทคอล SSH-2 การกำหนดเวลาหมดอายุของเซสชันที่ไม่มีการใช้งาน การจำกัดผู้ใช้ที่อนุญาตด้วย AllowUsers หรือ AllowGroups และการเปลี่ยนพอร์ตเริ่มต้นเพื่ออำพรางและลดสัญญาณรบกวนจากการสแกนอัตโนมัติ Fail2ban หรือเครื่องมือที่คล้ายกันจะบล็อก IP ที่มีความพยายามล้มเหลวซ้ำ ๆ
วิธีการยืนยันตัวตน SSH
เหตุใดการยืนยันตัวตนด้วยกุญแจสาธารณะของ SSH จึงถือว่าปลอดภัยกว่าการยืนยันตัวตนด้วยรหัสผ่าน
SSH: ประเด็นสำคัญ
SSH-2 เข้ามาแทนที่ SSH-1 ที่มีข้อบกพร่อง โดยแยกชั้นขนส่ง ชั้นการยืนยันตัวตน และชั้นการเชื่อมต่อออกจากกัน ชั้นขนส่งจะเจรจาการเข้ารหัสและความถูกต้องครบถ้วนของข้อมูล การยืนยันตัวตนผู้ใช้รองรับรหัสผ่าน กุญแจสาธารณะ และ GSSAPI การตรวจสอบกุญแจโฮสต์ใช้ TOFU และ known_hosts Ed25519 เป็นอัลกอริทึมกุญแจที่แนะนำ การส่งต่อเอเจนต์มีความเสี่ยงด้านความปลอดภัย จึงควรใช้ ProxyJump แทน การเสริมความปลอดภัยประกอบด้วยการปิดการเข้าสู่ระบบด้วย root และการยืนยันตัวตนด้วยรหัสผ่าน
คำถามที่พบบ่อย
บทเรียน “SSH: การรักษาความปลอดภัยการเข้าถึงระยะไกล” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “SSH: การรักษาความปลอดภัยการเข้าถึงระยะไกล” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cryptology Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cryptology Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “SSH: การรักษาความปลอดภัยการเข้าถึงระยะไกล”
ติดตามขั้นตอนจับมือของ SSH การพิสูจน์ตัวตนด้วยกุญแจโฮสต์ และวิธีที่ SSH ปกป้องเซสชันระยะไกล คุณปฏิบัติ Cryptology Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cryptology Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cryptology Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “SSH: การรักษาความปลอดภัยการเข้าถึงระยะไกล” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Cryptology Academy นี้ได้ไหม
ได้ บทเรียน Cryptology Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- อะไรทำให้โพรโทคอลปลอดภัย
- SSH: การรักษาความปลอดภัยการเข้าถึงระยะไกล
- SFTP และ SCP: การถ่ายโอนไฟล์อย่างปลอดภัย
- DNSSEC: การพิสูจน์ความถูกต้องของคำตอบ DNS