텔넷

텔넷(Telnet, TELNET)은 근거리 통신망 또는 인터넷 상의 원격 시스템의 가상 단말기에 대한 접근을 제공하는 클라이언트 서버 모델 응용 계층 프로토콜이다. 이는 양방향 8비트 통신을 위한 프로토콜이다. 주요 목표는 단말 장치와 단말 중심의 프로세스를 연결하는 것이었다.

"텔넷"이라는 이름은 두 가지를 의미한다. 두 당사자가 통신하는 방법을 규정한 프로토콜과, 해당 프로토콜을 서비스로 구현한 소프트웨어 애플리케이션이다. 사용자 데이터는 전송 제어 프로토콜(TCP)을 통한 8비트 바이트 지향 데이터 연결에서 텔넷 제어 정보와 함께 대역 내(in-band)로 섞여서 전달된다. 텔넷은 사용자 이름과 비밀번호를 포함한 모든 정보를 평문으로 전송하므로, 라우터의 원격 관리와 같이 보안에 민감한 애플리케이션에는 권장되지 않는다. 이러한 목적으로서의 텔넷 사용은 SSH의 등장으로 인해 크게 줄어들었다. 암호화를 제공하는 텔넷의 일부 확장 기능이 제안되기도 했다.

 설명 

텔넷 프로토콜은 연결 지향의 신뢰할 수 있는 전송 상에서 실행되는 클라이언트 서버 프로토콜이다. 대부분의 경우, 텔넷 클라이언트는 TCP를 통해 텔넷 서버 애플리케이션이 대기 중인 23번 또는 2323번 포트에 연결한다. 텔넷 프로토콜은 모든 단말기를 네트워크 가상 단말기(NVT)로 추상화한다. 클라이언트는 서버에 메시지를 보낼 때 NVT 코드를 사용하여 NVT를 시뮬레이션해야 한다.

텔넷은 UDP/IP보다 앞서 등장했으며 원래 네트워크 제어 프로토콜(NCP) 상에서 실행되었다. 텔넷 서비스는 로컬 텔넷 프로그램(클라이언트 프로그램)을 사용하는 사용자가 사용자의 통신 요구를 처리하는 텔넷 서버 프로그램이 있는 원격 컴퓨터에서 로그온 세션을 실행하는 단순한 단말기 환경의 맥락에서 가장 잘 이해될 수 있다.

 텔넷 서비스 
텔넷 서비스는 텔넷 프로토콜을 통해 서비스를 제공하는 애플리케이션이다. 대부분의 운영 체제는 클라이언트에 텔넷 서비스를 제공하기 위해 설치하거나 활성화할 수 있는 서비스를 제공한다.

 이름 
공식 사양에서는 이름을 TELNET으로 표기하며, 이는 두문자어나 약어가 아니다.

1972년 논문에서 프로토콜의 초기 형태 중 하나를 논의할 때, 스티븐 크로커 등은 "TELNET"을 "telecommunications network"의 약어로 명시적으로 사용했다.

인터넷 연구자 가스 O. 브루엔(Garth O. Bruen)은 그의 2015년 저서 WHOIS Running the Internet: Protocol, Policy, and Privacy에서 텔넷이 원래 "Teletype Over Network Protocol"의 줄임말이었다고 주장한다.

 역사 
텔넷은 원래 1969년 아파넷을 위해 개발되었다. 초기에는 공식 사양이 없는 임시 프로토콜이었으나, 수많은 RFC를 포함한 1970년대의 광범위한 작업 끝에  및 에서 공식적으로 표준화되었으며, 이 두 문서는 인터넷 표준 8을 구성한다.

그 이후로 많은 추가 RFC가 텔넷 사양을 업데이트하거나 확장하여 원래 표준의 문제를 해결하고 새로운 기능을 추가했다. 이러한 확장 기능 중 일부는 특히 표준 27에서 32까지 인터넷 표준으로 채택되었다(아래의 관련 RFC 참조).

 보안 취약점 
텔넷은 비밀번호를 포함한 민감한 정보를 가로채는 패킷 스니핑 및 지문 분석과 같은 네트워크 기반 사이버 공격에 취약하다.

 텔넷 서비스는 배너를 스니핑함으로써 서버에 대한 정보(호스트 이름, IP 주소 및 브랜드 등)를 유출하는 데 이용될 수 있다. 이 정보는 텔넷 서비스가 인증 없이 연결을 수락하는지 확인하기 위해 검색될 수 있다. 텔넷은 부적절한 설정으로 인해 악성 소프트웨어에 의해 자주 악용된다. 텔넷은 다른 일반적인 프로토콜, 특히 UPnP, CoAP, MQTT, AMQP 및 XMPP와 비교할 때 공격자의 표적이 되는 빈도가 더 높다. 주요 표적 장치는 사물인터넷 장치, 라우터 및 모뎀이다.

SANS 인스티튜트는 다음과 같은 이유로 일반적인 상황에서 원격 로그인을 위한 텔넷 사용을 중단해야 한다고 권고한다.

 텔넷은 기본적으로 연결을 통해 전송되는 어떠한 데이터(비밀번호 포함)도 암호화하지 않으므로, 통신을 도청하고 나중에 비밀번호를 악의적인 목적으로 사용하는 것이 용이하다. 텔넷이 사용되는 두 호스트 사이의 네트워크에 위치한 라우터, 네트워크 스위치, 허브 또는 게이트웨이에 접근할 수 있는 사람은 누구나 패킷 분석기를 통해 통과하는 패킷을 가로채서 로그인 정보, 비밀번호 및 입력된 모든 내용을 얻을 수 있다.
 많은 텔넷 구현체에 인증 기능이 부족하다.
 대부분의 텔넷 인증 메커니즘은 중간자 공격에 취약하다.
텔넷의 확장 기능은 위의 우려 사항을 해결하는 전송 계층 보안(TLS) 보안 및 SASL 인증을 제공한다. 그러나 대부분의 텔넷 구현체는 이러한 확장 기능을 지원하지 않으며, 배너 정보 파싱과 같은 다른 취약점을 해결하지 못한다. SSHv2가 지원되지 않거나, 텔넷 서버가 있는 원격 네트워크로 다른 애플리케이션 데이터를 안전하게 터널링하기 위해 이미 VPN이 사용 중인 경우 VPN 상의 텔넷은 실행 가능한 옵션이다. 그러나 주의가 필요하다. LAN에 추가적인 암호화 및 VLAN과 같은 도청 및 변조 방지 보안 조치가 없는 한, 이상적으로는 VPN이 텔넷 서버 자체에서 종료되어야 한다. 이는 텔넷 트래픽이 복호화된 후 안전하지 않은 평문 형태로 VPN 서버를 떠나기 때문이다. VPN 소프트웨어는 가급적 인증서 기반/공개 키 상호 인증을 사용하는 신뢰할 수 있고 철저히 검증된 것(예: 오픈VPN, 와이어가드, IPsec)이어야 한다.

IBM 5250 또는 3270 워크스테이션 에뮬레이션은 맞춤형 텔넷 클라이언트인 TN5250/TN3270 및 IBM i 시스템을 통해 지원된다. 텔넷을 통해 IBM 5250 데이터 스트림을 전달하도록 설계된 클라이언트와 서버는 일반적으로 SSH에 5250 에뮬레이션이 포함되어 있지 않기 때문에 SSL 암호화를 지원한다. IBM i(OS/400으로도 알려짐)에서 992번 포트는 TelnetS(SSL/TLS 기반 텔넷)의 기본 포트이다.

 사용 
 역사적 사용 
섬네일|upright=1.3|라우터에서 마이크로소프트 텔넷 클라이언트를 통해 실행 중인 비지박스.|alt=도움말 명령의 출력과 # 프롬프트가 있는 검은색 화면의 스크린샷.
역사적으로 텔넷은 원격 호스트의 명령줄 인터페이스에 대한 접근을 제공했다. 그러나 인터넷과 같은 개방형 네트워크에서 텔넷을 사용할 때 발생하는 심각한 보안 문제로 인해, 이러한 목적으로의 사용은 SSH의 등장으로 크게 줄어들었다. 원격 관리를 위한 텔넷의 사용은 특히 공개 인터넷 상에서 시큐어 셸(SSH) 프로토콜에 밀려 급격히 감소했다. SSH는 텔넷의 기능을 대부분 제공하면서, 비밀번호와 같은 민감한 정보가 가로채지는 것을 방지하는 강력한 암호화와 원격 컴퓨터가 실제 주장하는 주체인지 확인하는 공개 키 인증을 추가했다.

 현대적 사용 
텔넷 프로토콜은 주로 현대적인 통신 메커니즘을 지원하지 않는 레거시 장비에 사용된다. 예를 들어, 많은 산업용 및 과학용 장치는 텔넷만을 통신 옵션으로 제공한다. 일부는 표준 RS-232 포트만 장착되어 있으며 시리얼 서버 하드웨어 장치를 사용하여 TCP/텔넷 데이터와 RS-232 시리얼 데이터 간의 변환을 제공한다. 이러한 경우 인터페이스 장치가 SSH용으로 구성되거나 SSH를 지원하는 장치로 교체되지 않는 한 SSH를 사용할 수 없다.

텔넷은 아마추어 무선 운영자들이 공공 정보를 제공하는 데 흔히 사용된다.

보안 연구원들은 2021년 기준으로 인터넷에 노출된 7,096,465개의 시스템이 여전히 텔넷을 사용하고 있는 것으로 추정했다. 그러나 이 숫자에 대한 추정치는 기본 TCP 23번 포트 외에 스캔된 포트 수에 따라 크게 달라질 수 있다.

텔넷 클라이언트는 SMTP, IRC 또는 HTTP 서버와 같은 네트워크 서비스를 디버깅하여 서버에 명령을 내리고 응답을 확인하는 데 사용될 수 있다. 이 경우 텔넷 클라이언트가 표준 텔넷 서버 포트 이외의 포트로 TCP 연결을 설정하면 텔넷 프로토콜을 사용하지 않으며, 대신 TCP 연결을 통해 직접 데이터를 주고받는 데 사용될 수 있다.

 기술적 세부 사항 
텔넷의 기술적 세부 사항은 를 포함한 다양한 사양에 의해 정의된다.

 명령 
텔넷 명령은 최소 두 바이트로 구성된다. 첫 번째 바이트는 IAC 이스케이프 문자(바이트 255)이고 그 다음에 특정 명령에 대한 바이트 코드가 온다.
+이름바이트 값 (십진수)바이트 값 (십육진수)설명SE (Subnegotiation end)2400xf0프로토콜 메커니즘의 하위 서비스 협상(또는 데이터 블록) 종료NOP (No operation)2410xf1아무 작업도 수행하지 않는 데이터 패킷Data Mark2420xf2Break2430xf3Interrupt Process2440xf4상대방에게 현재 프로세스를 종료하도록 요청Abort output2450xf5상대방에게 출력 전송을 중단하도록 요청Are you there?2460xf6Erase character2470xf7Erase Line2480xf8Go ahead2490xf9SB (Subnegotiation begin)2500xfa프로토콜 메커니즘의 하위 서비스 협상 시작WILL2510xfb이쪽에서 프로토콜 메커니즘을 사용할 것임을 상대방에게 알림WON'T2520xfc이쪽에서 프로토콜 메커니즘을 사용하지 않을 것임을 상대방에게 알림DO2530xfd상대방에게 프로토콜 메커니즘을 사용하도록 지시DON'T2540xfe상대방에게 프로토콜 메커니즘을 사용하지 않도록 지시IAC2550xff시퀀스 시작자/이스케이프 문자출처: J. Postel 및 Reynolds (1983)

 명령으로 해석 (Interpret As Command) 
0xff를 제외한 모든 데이터 옥텟은 텔넷을 통해 있는 그대로 전송된다.
(0xff 또는 십진수 255는 다음 바이트가 텔넷 명령임을 알리는 IAC 바이트(명령으로 해석)이다. 스트림에 0xff를 삽입하는 명령은 0xff이므로, 텔넷 프로토콜을 통해 데이터를 보낼 때 0xff는 두 번 반복하여 이스케이프해야 한다.)

 옵션 
텔넷에는 텔넷을 구현하는 단말기가 지원해야 하는 다양한 옵션이 있다.
+텔넷 옵션 코드 이름 사양 비고0이진 전송 (Binary Transmission)1에코 (Echo)2재연결 (Reconnection)1973년 NIC 153913Go Ahead 억제 (Suppress Go Ahead)원래 텔넷 프로토콜의 "Go Ahead" 명령 코드(249)는 상대방이 메시지 전송을 시작할 수 있음을 알리는 데 사용된다. 이는 일부 단말기가 메시지를 보내고 받을 수는 있지만 동시에 할 수는 없었던 "반이중" 통신에서 사용되었다.4대략적인 메시지 크기 협상 (Approx Message Size Negotiation)1973년 NIC 153935상태 (Status)6타이밍 마크 (Timing Mark)7원격 제어 전송 및 에코 (Remote Controlled Trans and Echo)8출력 라인 너비 (Output Line Width)1978년 8월 NIC 201969출력 페이지 크기 (Output Page Size)1978년 8월 NIC 2019710출력 캐리지 리턴 배치 (Output Carriage-Return Disposition)11출력 수평 탭 정지 (Output Horizontal Tab Stops)12출력 수평 탭 배치 (Output Horizontal Tab Disposition)13출력 폼피드 배치 (Output Formfeed Disposition)14출력 수직 탭 정지 (Output Vertical Tabstops)15출력 수직 탭 배치 (Output Vertical Tab Disposition)16출력 라인피드 배치 (Output Linefeed Disposition)17확장 ASCII (Extended ASCII)18로그아웃 (Logout)19바이트 매크로 (Byte Macro)20데이터 입력 단말기 (Data Entry Terminal)21SUPDUP22SUPDUP 출력 (SUPDUP Output)23위치 전송 (Send Location)24단말기 유형 (Terminal Type)25레코드 끝 (End of Record)26TACACS 사용자 식별 (TACACS User Identification)27출력 마킹 (Output Marking)28단말기 위치 번호 (Terminal Location Number)29텔넷 3270 체제 (Telnet 3270 Regime)30X.3 PAD31창 크기 협상 (Negotiate About Window Size)32단말기 속도 (Terminal Speed)33원격 흐름 제어 (Remote Flow Control)34라인 모드 (Linemode)35X 디스플레이 위치 (X Display Location)36환경 옵션 (Environment Option)37인증 옵션 (Authentication Option)38암호화 옵션 (Encryption Option)39새 환경 옵션 (New Environment Option)40TN3270EIBM 3270 참조41XAUTH42CHARSET43텔넷 원격 시리얼 포트 (RSP)44통신 포트 제어 옵션 (Com Port Control Option)45텔넷 로컬 에코 억제 (Telnet Suppress Local Echo)46텔넷 START TLS (Telnet Start TLS)47KERMITKermit 참조48SEND-URL49FORWARD_X50-137할당되지 않음 (Unassigned)138TELOPT PRAGMA LOGON139TELOPT SSPI LOGON140TELOPT PRAGMA HEARTBEAT141-254할당되지 않음 (Unassigned)255확장 옵션 목록 (Extended-Options-List)

 클라이언트 애플리케이션 
 AbsoluteTelnet은 윈도우용 텔넷 클라이언트이다. SSH 및 SFTP도 지원한다.
 Inetutils는 텔넷 클라이언트와 서버를 포함하며 많은 리눅스 배포판에 기본적으로 설치된다.
 라인 모드 브라우저, 명령줄 웹 브라우저
 NCSA 텔넷
 PuTTY 및 plink 명령줄은 윈도우, 리눅스 및 유닉스를 위한 무료 오픈 소스 SSH, 텔넷, rlogin 및 raw TCP 클라이언트이다.
 Rtelnet은 방화벽 및 NAT 뒤에 있는 호스트에 텔넷과 유사한 기능을 제공하는 텔넷의 SOCKS 클라이언트 버전이다.
 RUMBA (단말 에뮬레이터)
 Van Dyke Software의 SecureCRT
 SyncTERM은 텔넷, SSHv2, RLogin, 시리얼을 지원하는 BBS 단말기 프로그램으로, 윈도우, *nix 및 맥 OS X 플랫폼을 지원하며 X/Y/ZMODEM 및 다양한 BBS 단말 에뮬레이션을 지원한다.
 telnet.exe는 많은 버전의 마이크로소프트 윈도우 기본 설치에 포함된 명령줄 유틸리티이다.
 TeraTerm
 ZOC 터미널

 대중문화에서 
1977년 영화 스타 워즈 에피소드 4: 새로운 희망이 텔넷을 통해 제공되는 텍스트 아트 영화로 재현되었다.

 같이 보기 
 배너 그래빙
 HyTelnet
 Kermit
 단말 에뮬레이터 목록
 역 텔넷
 SSH
 가상 터미널

 각주 

 더 읽어보기 

 인터넷 표준 
 , Telnet Protocol Specification
 , Telnet Option Specifications
 , Telnet Binary Transmission
 , Telnet Echo Option
 , Telnet Suppress Go Ahead Option
 , Telnet Status Option
 , Telnet Timing Mark Option
 , Telnet Extended Options: List Option

 제안된 표준 
 , Telnet End of Record Option
 , Telnet Window Size Option
 , Telnet Terminal Speed Option
 , Telnet Terminal-Type Option
 , Telnet X Display Location Option
 , Requirements for Internet Hosts - Application and Support
 , Telnet Linemode Option
 , Telnet Remote Flow Control Option
 , Telnet Environment Option
 , Telnet Authentication Option
 , Telnet Authentication: Kerberos Version 5
 , TELNET Authentication Using DSA
 , Telnet Authentication: SRP
 , Telnet Data Encryption Option
 , The telnet URI Scheme

 정보/실험적 
 , The Q Method of Implementing TELNET Option Negotiation
 , Telnet Environment Option Interoperability Issues
 , TELNET CHARSET Option

 기타 RFC 
 , TELNET RANDOMLY-LOSE Option (만우절 RFC)
 , Telnet 3270 Regime Option
 , TELNET SUBLIMINAL-MESSAGE Option (만우절 RFC)
 , 5250 Telnet Interface
 , TN3270 Enhancements
 , Telnet Com Port Control Option
 , IBM's iSeries Telnet Enhancements

 외부 링크 
 텔넷 옵션
 telnet.org places
 BBS 코너 - 텔넷 BBS 길잡이


분류:유닉스 네트워크 관련 소프트웨어
분류:인터넷 표준
분류:인터넷 기반 프로토콜
분류:인터넷의 역사
분류:인터넷 프로토콜 기반 네트워크 소프트웨어
분류:URI 스킴
분류:원격 관리 소프트웨어