เทลเน็ต (ย่อมาจาก "เครือข่ายโทรคมนาคม") [1]เป็นโปรโตคอลแอปพลิเคชันไคลเอนต์/เซิร์ฟเวอร์ ที่ให้การเข้าถึงเทอร์มินัล เสมือน ของระบบระยะไกลบนเครือข่ายพื้นที่ท้องถิ่นหรืออินเทอร์เน็ต[ 2]เป็นโปรโตคอลสำหรับการสื่อสารแบบ 8 บิตแบบสองทิศทาง เป้าหมายหลักคือการเชื่อมต่ออุปกรณ์เทอร์มินัลและกระบวนการที่เน้นเทอร์มินัล[3]
Telnet ประกอบด้วยสององค์ประกอบ: (1) โปรโตคอลซึ่งกำหนดวิธีการสื่อสารระหว่างสองฝ่าย และ (2) แอปพลิเคชันซอฟต์แวร์ที่ให้บริการ ข้อมูลผู้ใช้จะแทรกอยู่ในแบนด์ ด้วยข้อมูลควบคุม Telnet ในการเชื่อมต่อข้อมูลแบบ ไบต์ 8 บิตผ่านโปรโตคอลควบคุมการส่ง (TCP) Telnet ได้รับการพัฒนาเป็นเทคโนโลยีลับในปี 1969 โดยเริ่มจากRFC 15 ขยายเพิ่มเติมในRFC 855 และกำหนดมาตรฐานเป็น Internet Standard STD 8 ของ Internet Engineering Task Force (IETF) ซึ่งเป็นหนึ่งในมาตรฐานอินเทอร์เน็ตแรกๆ[4] [5] Telnet ส่งข้อมูลทั้งหมดรวมทั้งชื่อผู้ใช้และรหัสผ่านในรูปแบบข้อความธรรมดา ดังนั้นจึงไม่แนะนำสำหรับแอปพลิเคชันที่เน้นความปลอดภัย เช่นการจัดการเราเตอร์ จากระยะไกล [2] [6]การใช้ Telnet เพื่อจุดประสงค์นี้ลดลงอย่างมากโดยหันไปใช้SSH [7]มีการเสนอส่วนขยายของ Telnet บางส่วนที่จะให้การเข้ารหัส[8]
ชุดโปรโตคอลอินเทอร์เน็ต |
---|
ชั้นแอปพลิเคชัน |
ชั้นการขนส่ง |
ชั้นอินเตอร์เน็ต |
ชั้นลิงค์ |
Telnet ประกอบด้วยสององค์ประกอบ: (1) โปรโตคอลนั้นเองและ (2) ส่วนประกอบของบริการ โปรโตคอล Telnet เป็น โปรโตคอลไคลเอนต์-เซิร์ฟเวอร์ซึ่งใช้การขนส่งแบบเชื่อมต่อที่เชื่อถือได้ [2] โปรโตคอลนี้ใช้เพื่อสร้างการเชื่อมต่อกับ พอร์ต TCP ( Transmission Control Protocol ) หมายเลข 23 หรือ 2323 ซึ่งแอปพลิเคชันเซิร์ฟเวอร์ Telnet กำลังรับฟังอยู่[3] [9] [10]โปรโตคอล Telnet จะสรุปเทอร์มินัลใดๆ ให้เป็นเทอร์มินัลเสมือนเครือข่าย (NVT) ไคลเอนต์ต้องจำลอง NVT โดยใช้รหัส NVT เมื่อส่งข้อความไปยังเซิร์ฟเวอร์
Telnet นั้นมีมาก่อน UDP/IP และเดิมทำงานบนNetwork Control Protocol (NCP) [11]บริการ Telnet เข้าใจได้ดีที่สุดในบริบทของผู้ใช้ที่มีเทอร์มินัลธรรมดาที่ใช้โปรแกรม Telnet ในเครื่อง (เรียกว่าโปรแกรมไคลเอนต์) เพื่อรันเซสชันการเข้าสู่ระบบบนคอมพิวเตอร์ระยะไกล โดยที่ความต้องการด้านการสื่อสารของผู้ใช้จะได้รับการจัดการโดยโปรแกรมเซิร์ฟเวอร์ Telnet
แม้ว่า Telnet จะเป็นโปรโตคอลเฉพาะกิจที่ไม่มีคำจำกัดความอย่างเป็นทางการจนกระทั่งวันที่ 5 มีนาคม พ.ศ. 2516 [12]แต่ชื่อนั้นอ้างถึงTeletype Over Network ProtocolในRFC 206 (NIC 7176) บน Telnet ทำให้การเชื่อมต่อชัดเจน: [13]
โปรโตคอล TELNET มีพื้นฐานมาจากแนวคิดของโทรพิมพ์ เสมือน โดยใช้ชุดอักขระ ASCII 7 บิตฟังก์ชันหลักของ User TELNET คือการให้วิธีการที่ผู้ใช้สามารถ "กด" ปุ่มทั้งหมดบนโทรพิมพ์เสมือนนั้นได้[14]
โดยพื้นฐานแล้ว จะใช้ช่องสัญญาณ 8 บิตในการแลกเปลี่ยนข้อมูล ASCII 7 บิต ไบต์ใดๆ ที่มีชุดบิตสูงจะเป็นอักขระ Telnet พิเศษ เมื่อวันที่ 5 มีนาคม 1973 มาตรฐานโปรโตคอล Telnet ถูกกำหนดขึ้นที่UCLA [15]โดยมีการเผยแพร่เอกสาร NIC สองฉบับ ได้แก่ ข้อกำหนดโปรโตคอล Telnet, NIC 15372 และข้อกำหนดตัวเลือก Telnet, NIC 15373
มีการสร้างส่วนขยายจำนวนมากสำหรับ Telnet เนื่องจากมีสถาปัตยกรรมโปรโตคอลตัวเลือกที่ต่อรองได้ ส่วนขยายบางส่วนได้รับการนำมาใช้เป็นมาตรฐานอินเทอร์เน็ตเอกสาร IETF ตั้งแต่ STD 27 ถึง STD 32 ส่วนขยายบางส่วนได้รับการนำไปใช้กันอย่างแพร่หลาย และบางส่วนได้รับการเสนอเป็นมาตรฐานในเส้นทางมาตรฐานของ IETF (ดูด้านล่าง)
บริการ Telnet คือแอปพลิเคชันที่ให้บริการผ่านโปรโตคอล Telnet ระบบปฏิบัติการส่วนใหญ่ให้บริการที่สามารถติดตั้งหรือเปิดใช้งานเพื่อให้บริการ Telnet แก่ลูกค้าได้[16]
Telnet มีความเสี่ยงต่อการโจมตีทางไซเบอร์บนเครือข่ายเช่นการดักจับข้อมูลที่ละเอียดอ่อน เช่น รหัสผ่านและลายนิ้วมือ[6] [17]บริการ Telnet ยังสามารถถูกใช้ประโยชน์เพื่อรั่วไหลข้อมูลเกี่ยวกับเซิร์ฟเวอร์ (เช่น ชื่อโฮสต์ ที่อยู่ IP และแบรนด์) โดยการดักจับแบนเนอร์ข้อมูลนี้ จากนั้นสามารถค้นหาข้อมูลนี้เพื่อตรวจสอบว่าบริการ Telnet ยอมรับการเชื่อมต่อที่ไม่มีการรับรองความถูกต้องหรือ ไม่ นอกจากนี้ Telnet ยังถูกมัลแวร์ ใช้ประโยชน์บ่อยครั้ง เนื่องจากมีการกำหนดค่าไม่ถูกต้อง[10]ในความเป็นจริง Telnet ถูกโจมตีโดยผู้โจมตีบ่อยกว่าโปรโตคอลทั่วไปอื่นๆ โดยเฉพาะเมื่อเปรียบเทียบกับUPnP , CoAP , MQTT , AMQPและXMPP [ จำเป็นต้องอ้างอิง ]อุปกรณ์ทั่วไปที่ถูกโจมตีคืออุปกรณ์อินเทอร์เน็ตของสรรพสิ่งเราเตอร์ และโมเด็ม
สถาบันSANSขอแนะนำให้หยุดใช้ Telnet สำหรับการเข้าสู่ระบบระยะไกลภายใต้สถานการณ์ปกติด้วยเหตุผลดังต่อไปนี้: [18]
ส่วนขยายของ Telnet มอบ การรักษาความปลอดภัย Transport Layer Security (TLS) และ การพิสูจน์ตัวตน Simple Authentication and Security Layer (SASL) ที่แก้ไขข้อกังวลดังกล่าวข้างต้น[8] อย่างไรก็ตาม การใช้งาน Telnet ส่วนใหญ่ไม่รองรับส่วนขยายเหล่านี้ และไม่ได้แก้ไขช่องโหว่อื่นๆ เช่น การแยกวิเคราะห์ข้อมูลแบนเนอร์[17]
รองรับการจำลองเวิร์กสเตชัน IBM 5250 หรือ 3270 ผ่านไคลเอนต์เทลเน็ตที่กำหนดเองTN5250 / TN3270และระบบIBM i ไคลเอนต์และเซิร์ฟเวอร์ที่ออกแบบมาเพื่อส่งสตรีมข้อมูล IBM 5250ผ่านเทลเน็ตโดยทั่วไปจะรองรับ การเข้ารหัส SSLเนื่องจาก SSH ไม่รวมการจำลอง 5250 ภายใต้IBM i (เรียกอีกอย่างว่า OS/400) พอร์ต 992 เป็นพอร์ตเริ่มต้นสำหรับเทลเน็ตที่ปลอดภัย[19]
ในอดีต Telnet ให้การเข้าถึงอินเทอร์เฟซบรรทัดคำสั่งบนโฮสต์ระยะไกล อย่างไรก็ตาม เนื่องจากมีข้อกังวลด้านความปลอดภัยที่ร้ายแรงเมื่อใช้ Telnet บนเครือข่ายเปิด เช่น อินเทอร์เน็ต การใช้เพื่อจุดประสงค์นี้จึงลดลงอย่างมาก โดยหันไปใช้ SSH แทน[ 20 ]การใช้ Telnet สำหรับการจัดการระยะไกลลดลงอย่างรวดเร็ว โดยเฉพาะอย่างยิ่งบนอินเทอร์เน็ต สาธารณะ โดยหันไปใช้โปรโตคอล Secure Shell (SSH) แทน[2] [21] SSH ให้ฟังก์ชันการใช้งานมากมายของ Telnet ด้วยการเพิ่มการเข้ารหัสที่แข็งแกร่งเพื่อป้องกันไม่ให้ข้อมูลสำคัญ เช่น รหัสผ่าน ถูกดักจับ และ การรับรองความถูกต้อง ด้วยคีย์สาธารณะเพื่อให้แน่ใจว่าคอมพิวเตอร์ระยะไกลเป็นเครื่องที่อ้างจริง
ไคลเอ็นต์ Telnet อาจใช้ในการดีบักบริการเครือข่าย เช่นSMTP , IRC , HTTP , FTPหรือPOP3เพื่อออกคำสั่งไปยังเซิร์ฟเวอร์และตรวจสอบการตอบสนอง[16]ตัวอย่างเช่น แอปพลิเคชันไคลเอ็นต์ Telnet สามารถสร้างเซสชัน TCP แบบโต้ตอบกับพอร์ตอื่นที่ไม่ใช่พอร์ตเซิร์ฟเวอร์ Telnet อย่างไรก็ตาม การสื่อสารกับพอร์ตดังกล่าวไม่เกี่ยวข้องกับโปรโตคอล Telnet เนื่องจากบริการเหล่านี้ใช้การเชื่อมต่อ TCP แบบ 8 บิตที่โปร่งใสเท่านั้น เนื่องจากองค์ประกอบส่วนใหญ่ของโปรโตคอล Telnet ได้รับการออกแบบโดยคำนึงถึงแนวคิดในการเข้าถึงอินเทอร์เฟซบรรทัดคำสั่งและไม่มีการใช้ตัวเลือกหรือกลไกเหล่านี้ในการเชื่อมต่อบริการอินเทอร์เน็ตอื่นๆ ส่วนใหญ่
ตัวอย่างเช่น ไคลเอนต์เทลเน็ต บรรทัดคำสั่งสามารถสร้างคำขอ HTTP ไปยังเว็บเซิร์ฟเวอร์บนพอร์ต TCP 80 ได้ดังนี้: [22]
$ telnet www.example.com 80 GET /path/to/file.html HTTP/1.1 โฮสต์: www.example.com การเชื่อมต่อ: ปิด
ปัจจุบันโปรโตคอลเก่านี้ใช้เฉพาะในกรณีพิเศษเพื่อเข้าถึงอุปกรณ์เก่าแก่หลายสิบปีที่ไม่รองรับโปรโตคอลที่ทันสมัยกว่า[23]ตัวอย่างเช่น อุปกรณ์อุตสาหกรรมและวิทยาศาสตร์จำนวนมากมีเฉพาะ Telnet เป็นตัวเลือกการสื่อสารเท่านั้น บางเครื่องสร้างขึ้นโดยใช้ พอร์ต RS-232 มาตรฐานเท่านั้น และใช้อุปกรณ์ฮาร์ดแวร์เซิร์ฟเวอร์แบบอนุกรมเพื่อแปลข้อมูล TCP/Telnet และข้อมูลอนุกรม RS-232 ในกรณีดังกล่าว SSH ไม่ใช่ตัวเลือก เว้นแต่ว่าอุปกรณ์อินเทอร์เฟซสามารถกำหนดค่าให้รองรับ SSH ได้ (หรือถูกแทนที่ด้วยอุปกรณ์ที่รองรับ SSH)
ผู้ปฏิบัติ งานวิทยุสมัครเล่นมักใช้ Telnet เพื่อให้ข้อมูลสาธารณะ[24]
นักวิจัยด้านความปลอดภัยคาดว่าระบบที่เปิดเผยจำนวน 7,096,465 ระบบบนอินเทอร์เน็ตยังคงใช้ Telnet ต่อไปในปี 2021 ถึงแม้จะมีคำแนะนำไม่ให้ทำเช่นนั้น อย่างไรก็ตาม การประมาณจำนวนนี้แตกต่างกันอย่างมีนัยสำคัญ ขึ้นอยู่กับจำนวนพอร์ตที่สแกนเกินพอร์ต TCP 23 เริ่มต้น[10]
รายละเอียดทางเทคนิคของ Telnet ถูกกำหนดโดยข้อกำหนดต่างๆ มากมาย รวมถึงRFC 854 [3]
ชื่อ | ไบต์โค้ด | คำอธิบาย | หมายเหตุ |
---|---|---|---|
โมฆะ | 0 | ||
การป้อนเส้น | 10 | ||
การคืนรถ | 13 | ||
กระดิ่ง | 7 | ||
แบ็คสเปซ | 8 | ||
แท็บแนวนอน | 9 | ||
แท็บแนวตั้ง | 11 | ||
แบบฟอร์มการป้อน | 12 | ||
ที่มา: J. Postel และ Reynolds (1983) [3] |
คำสั่ง Telnet ประกอบด้วยไบต์อย่างน้อย 2 ไบต์[3]ไบต์แรกเป็นอักขระ escape IAC (โดยทั่วไปคือไบต์ 255) ตามด้วยรหัสไบต์สำหรับคำสั่งที่กำหนด:
ชื่อ | ไบต์โค้ด | คำอธิบาย | หมายเหตุ |
---|---|---|---|
SE (สิ้นสุดการเจรจาช่วงต่อ) | 240 | การสิ้นสุดการเจรจา (หรือการบล็อคข้อมูล) ของบริการย่อยของกลไกโปรโตคอล | |
NOP (ไม่มีการดำเนินการ) | 241 | แพ็กเก็ตข้อมูลที่ไม่ทำอะไรเลย | |
เครื่องหมายข้อมูล | 242 | ||
หยุดพัก | 243 | ||
การขัดจังหวะกระบวนการ | 244 | ขอให้อีกฝ่ายยุติกระบวนการปัจจุบัน | |
ยกเลิกเอาท์พุต | 245 | ขอให้อีกฝ่ายหยุดส่งข้อมูลออกไป | |
คุณอยู่ที่นั่นไหม | 246 | ||
ลบตัวละคร | 247 | ||
ลบเส้น | 248 | ||
ไปข้างหน้าเลย | 249 | ||
SB (เริ่มการเจรจาช่วงต่อ) | 250 | เริ่มต้นการเจรจาบริการย่อยของกลไกโปรโตคอล | |
จะ | 251 | แจ้งให้อีกฝ่ายทราบว่าฝ่ายนี้จะใช้กลไกโปรโตคอล | |
จะไม่ | 252 | แจ้งให้อีกฝ่ายทราบว่าฝ่ายนี้จะไม่ใช้กลไกโปรโตคอล | |
ทำ | 253 | สั่งให้อีกฝ่ายใช้กลไกโปรโตคอล | |
อย่า | 254 | สั่งการให้อีกฝ่ายไม่ใช้กลไกโปรโตคอล | |
ไอเอซี | 255 | อักขระตัวเริ่มต้นลำดับ/ตัวหลบหนี | |
ที่มา: J. Postel และ Reynolds (1983) [3] |
อ็อกเท็ตข้อมูลทั้งหมดยกเว้น 0xff จะถูกส่งผ่าน Telnet ตามที่เป็นอยู่ (0xff หรือ 255 ในรูปทศนิยม คือ ไบต์ IAC (Interpret As Command) ซึ่งส่งสัญญาณว่าไบต์ถัดไปเป็นคำสั่ง telnet คำสั่งในการแทรก 0xff ลงในสตรีมคือ 0xff ดังนั้น 0xff จะต้องถูกหลีกเลี่ยงโดยคูณสองเท่าเมื่อส่งข้อมูลผ่านโปรโตคอล telnet) [3]
Telnet ยังมีตัวเลือกต่างๆ มากมายที่เทอร์มินัลที่ใช้ Telnet ควรรองรับ
รหัส | ชื่อ | สเปก | หมายเหตุ |
---|---|---|---|
0 | การส่งข้อมูลแบบไบนารี | ราชกิจจานุเบกษา 856 | โหมด 8 บิต (เรียกว่าตัวเลือกไบนารี ) มีไว้เพื่อส่งข้อมูลไบนารี ไม่ใช่ตัวอักษร ASCII มาตรฐานแนะนำการตีความรหัส 0000–0176 เป็น ASCII แต่ไม่ได้ให้ความหมายใดๆ สำหรับ อ็อกเท็ต ข้อมูล ชุดบิตสูง มีความพยายามที่จะแนะนำการรองรับการเข้ารหัสอักขระที่สลับได้เช่นเดียวกับที่ HTTP มี[25]แต่ไม่มีใครทราบเกี่ยวกับการรองรับซอฟต์แวร์จริง |
1 | เอคโค่ | ราชกิจจานุเบกษา 857 | |
2 | การเชื่อมต่อใหม่ | NIC 15391 ของ 1973 | |
3 | ระงับไปข้างหน้า | ราชกิจจานุเบกษา 858 | รหัสคำสั่ง "Go Ahead" (249) ในโปรโตคอล Telnet ดั้งเดิมใช้เพื่อแจ้งไปยังปลายทางว่าปลายทางสามารถเริ่มส่งข้อความกลับมาได้ ซึ่งใช้ในการสื่อสารแบบ " ฮาล์ฟดูเพล็กซ์ " เนื่องจากเทอร์มินัลบางเครื่องสามารถส่งและรับข้อความได้ แต่ไม่สามารถพร้อมกันได้ |
4 | การเจรจาขนาดข้อความโดยประมาณ | NIC 15393 ของ 1973 | |
5 | สถานะ | กฎข้อบังคับ RFC859 | |
6 | เครื่องหมายกำหนดเวลา | ราชกิจจานุเบกษา 860 | |
7 | ทรานส์และเอคโคควบคุมระยะไกล | กฎข้อบังคับ RFC726 | |
8 | ความกว้างของเส้นเอาท์พุต | NIC 20196 เดือนสิงหาคม 2521 | |
9 | ขนาดหน้ากระดาษเอาท์พุต | NIC 20197 เดือนสิงหาคม 2521 | |
10 | การจัดวางรถขาออก-ขากลับ | กฎข้อบังคับ RFC 652 | |
11 | แท็บหยุดแนวนอนเอาต์พุต | กฎข้อบังคับ RFC 653 | |
12 | การจัดวางแท็บแนวนอนเอาต์พุต | กฎข้อบังคับ 654 | |
13 | การจัดวางแบบฟอร์มขาออก | กฎข้อบังคับ RFC655 | |
14 | แท็บสต็อปแนวตั้งเอาต์พุต | กฎข้อบังคับ RFC 656 | |
15 | การจัดวางแท็บแนวตั้งเอาต์พุต | กฎข้อบังคับ 657 | |
16 | การจัดวางฟีดไลน์เอาท์พุต | กฎข้อบังคับ RFC 658 | |
17 | ASCII แบบขยาย | ราชกิจจานุเบกษา 698 | |
18 | ออกจากระบบ | กฎข้อบังคับ RFC727 | |
19 | ไบต์มาโคร | กฎข้อบังคับ RFC735 | |
20 | เครื่องป้อนข้อมูล |
| |
21 | ซัพดูป |
| |
22 | เอาท์พุต SUPDUP | กฎข้อบังคับ RFC749 | |
23 | ส่งตำแหน่งที่ตั้ง | กฎข้อบังคับ RFC779 | |
24 | ประเภทเทอร์มินัล | กฎข้อบังคับ 1091 | |
25 | สิ้นสุดการบันทึก | กฎข้อบังคับ RFC885 | |
26 | การระบุตัวตนผู้ใช้ TACACS | กฎข้อบังคับ RFC 927 | |
27 | การทำเครื่องหมายเอาท์พุต | กฎข้อบังคับ RFC933 | |
28 | หมายเลขที่ตั้งสถานีปลายทาง | ราชกิจจานุเบกษา 946 | |
29 | ระบบ Telnet 3270 | กฎข้อบังคับ 1041 | |
30 | แผ่นรอง X.3 | กฎข้อบังคับ 1053 | |
31 | เจรจาเรื่องขนาดหน้าต่าง | กฎข้อบังคับ 1073 | |
32 | ความเร็วปลายทาง | ราชกิจจานุเบกษา 1079 | |
33 | การควบคุมการไหลจากระยะไกล | กฎข้อบังคับ 1372 | |
34 | โหมดไลน์ | ราชกิจจานุเบกษา 1184 | |
35 | X แสดงตำแหน่ง | กฎข้อบังคับ 1096 | |
36 | ตัวเลือกด้านสิ่งแวดล้อม | กฎข้อบังคับ RFC1408 | |
37 | ตัวเลือกการตรวจสอบสิทธิ์ | กฎข้อบังคับ RFC2941 | |
38 | ตัวเลือกการเข้ารหัส | กฎข้อบังคับ RFC2946 | |
39 | ตัวเลือกสภาพแวดล้อมใหม่ | ราชกิจจานุเบกษา 1572 | |
40 | TN3270E | กฎข้อบังคับ RFC2355 | ดูIBM 3270 |
41 | ซ็อท | ||
42 | อักขระชุด | ราชกิจจานุเบกษา 2066 | |
43 | พอร์ตซีเรียลระยะไกล Telnet (RSP) | ||
44 | ตัวเลือกการควบคุมพอร์ต COM | กฎข้อบังคับ RFC2217 | |
45 | Telnet ระงับ Echo ในพื้นที่ | ||
46 | การเริ่ม TLS ของ Telnet | ||
47 | เคอร์มิต | กฎข้อบังคับ RFC2840 | ดูเคอร์มิต (โปรโตคอล) |
48 | ส่ง URL | ||
49 | ไปข้างหน้า_X | ||
50-137 | ไม่ได้รับมอบหมาย | ||
138 | การเข้าสู่ระบบ TELOPT PRAGMA | ||
139 | การเข้าสู่ระบบ TELOPT SSPI | ||
140 | เทโลปต์ พรากมา ฮาร์ทบีท | ||
141-254 | ไม่ได้รับมอบหมาย | ||
255 | รายการตัวเลือกเพิ่มเติม | ราชกิจจานุเบกษา 861 | |
ที่มา: Internet Assigned Numbers Authority (nd) [26] |
Star Wars: Episode IV – A New Hopeจากปี 1977 ได้รับการสร้างขึ้นใหม่ในรูปแบบ ภาพยนตร์ ศิลปะข้อความผ่าน Telnet [27]