검수요청.png검수요청.png

텔넷

위키원
이동: 둘러보기, 검색

텔넷(telnet)이란 사용자의 컴퓨터에서 네트워크를 이용하여 원격지에 떨어져 있는 서버에 접속하여 자료를 교환할 수 있는 프로토콜을 말한다. 텔넷은 통신(tel)과 네트워크(net)라는 두 단어의 축소이며 인터넷에서 사용되는 주요 네트워크 프로토콜 중 하나이다. 텔넷은 보안상 문제가 있기 때문에, 텔넷 대신 SSH를 많이 사용한다. 텔넷의 포트 번호는 23번이다.

개요[편집]

텔넷은 TCP/IP에서의 응용 계층 프로토콜 중 하나로 원격지의 컴퓨터를 이용하는 가상 단말 기능을 실현하기 위한 프로토콜이다. 초기 네트워크 프로토콜 중 하나이며 인터넷에서 여전히 보편적으로 사용되는 유일한 원본 프로토콜 중 하나이다. 일반적으로는 텔넷 서비스를 제공하는 서버에 접속하여 해당 서버를 이용하는 목적으로 개발된 것이지만 이 서비스에 특별한 프로그램을 얹어서 사용자가 복잡한 명령어를 입력하지 않고도 번호를 선택하고 단축키를 활용하여 서버의 다양한 정보를 활용할 수 있도록 하는 것도 포함된다. 예전에 대표적인 초기 네트워크 서비스로 이용되던 천리안, 하이텔 등이 텔넷 서비스로 분류된다. 이는 정보통신용 회선을 이용하여 네트워크로 접속한 후 하이텔이나 천리안 또는 대학교에서 제공하는 개방 텔넷 서비스에 접속하는 방식으로 네트워크 사용자 증가에 지대한 영향을 주었다. 현재는 월드와이드(WWW)에 밀려 그 위상이 많이 내려갔으나 아직도 서버에 접속하여 관리하기 위한 서비스로 많이 이용되고 있다.[1]

역사[편집]

텔넷은 네트워크 프로토콜로 1969년에 개발된 최초의 인터넷 표준들 가운데 하나이다. 대부분의 유닉스 계열의 운영체제를 지원하는 시스템에서 서비스를 지원하였다. 텔넷은 원격지에 있는 호스트 컴퓨터를 이용하기 위해 원격지에서 로그인 기능을 제공하는 프로토콜이다. 그리고 원래 NCP(Network Control Program) 프로토콜을 통해 실행되었다. 나중에 Teletype Over Network Protocol, 또는 TONP라고 불렸다. 텔넷은 TCP를 지원하는 네트워크의 23번 포트를 이용해서 텔넷 서버가 가동될 경우에 이용할 수 있었다. 한동안 비공식적으로 사용되다가 1973년 3월 5일 캘리포니아 대학교 로스앤젤레스 캠퍼스에서 상세 스펙을 정의하면서부터 정식으로 간행된 논문에서 제정되었다. 텔넷은 대부분 대학이나 공공기관들 사이의 네트워크에서 이용되었기 때문에, 그 효용성에 비해서 프로토콜이 가지고 있는 보안에 대한 약점이 크게 부각되지 않아서 1990년 초반까지 인기를 끌었다. 그러나, 1990년대에 들어서서 인터넷 사용자와 데이터의 양이 크게 늘어나면서 서버를 해킹하는 사람들에 대한 보안이 문제가 되면서 여러 차례 변형이 되었고, 최근에는 거의 이용되지 않는다.[2]

초기 형태에서 텔넷은 8비트 채널을 통해 전달된 아스키(American Standard Code for Information Interchange)를 사용하여 원격 컴퓨터가 기본 텍스트와 통신할 수 있도록 했다. 시간이 지남에 따라 여러 개의 텔넷 확장이 생성되었다. 텔넷은 프로그래머들의 도구로 수십 년 동안 존재해왔다. 텔넷의 첫 버전은 1960년대에 현대 인터넷의 선구자인 첨단 연구 프로젝트 에이전시 네트워크(ARPANET)를 위해 만들어졌다. 그것은 먼 거리에 있는 컴퓨터를 원격으로 연결하기 위해 만들어진 최초의 도구 중 하나였다. 텔넷 프로토콜은 1971년에 연구원들과 전문가들에 의해 개발되었고 1983년에 텔넷 시스템이 개발되었다.[3]

특징[편집]

인터넷 사용자는 텔넷을 이용하여 전 세계의 다양한 온라인 서비스를 제공받을 수 있다. 텔넷을 이용하면 한 컴퓨터 시스템에 있으면서 수천 마일 떨어진 또 다른 컴퓨터 시스템에 접속하여 작업할 수 있다. 물론 다른 컴퓨터에 접속하려면 그 컴퓨터를 사용할 수 있는 사용자 번호와 비밀번호를 알고 있어야 한다. 이 텔넷 응용서비스가 매우 효과적인 이유는 거리와 관계없이 쉽게 원격시스템에 접속할 수 있기 때문이다. 텔넷도 다른 TCP/IP 프로토콜의 인터넷 응용서비스들과 마찬가지로 모두 고유의 포트 번호를 가지고 있는데 텔넷은 23번이라는 고유 포트 번호를 가진다. 일반적으로는 이 번호를 사용하지만 특별한 게임이나 채팅 등의 서비스 제공이나 문제 해결을 위한 디버깅을 위해서 별도의 포트 번호를 사용할 수도 있다.[4] 그리고 호스트에 접속하기 위해서는 도메인 이름 형식의 주소나 IP 주소 정보가 필요하다. 호스트 컴퓨터에 자신이 이용할 수 있는 계정이 있어야 한다. 텔넷의 운영 모드로는 반이중 모드, 문자 모드, 라인 모드가 있다.[5]

텔넷은 클라이언트-서버 프로토콜로, 신뢰할 수 있는 연결 지향적 전송에 기초한다. 일반적으로 이 프로토콜은 텔넷 서버 애플리케이션(telnetd)이 수신 중인 TCP(transmission Control Protocol) 포트 번호 23에 대한 연결을 설정하기 위해 사용된다. 그러나 텔넷은 TCP/IP보다 앞서 있으며 원래 네트워크 제어 프로그램(NCP) 프로토콜을 통해 실행되었다. 월드 와이드 웹을 제공한 HTTP 프로토콜의 그래픽 인터페이스와 달리 텔넷은 텍스트 기반 프로토콜이다. 텔넷의 원래 목적은 비교적 간단한 명령 구조와 액세스 가능한 인터페이스를 사용하여 터미널이 상호 작용하기 쉬운 인터페이스를 갖는 것이었다. 여전히 사용 중이지만 대부분의 인터넷 브라우징 사용자는 텔넷을 거의 사용하지 않으며 대부분의 연결에 HTTP 브라우저이메일 클라이언트를 사용한다.[6]

텔넷은 파일 편집, 다양한 프로그램 실행, 이메일 확인 등 서버에서 다양한 활동을 사용할 수 있다. 일부 서버는 텔넷을 사용한 원격 연결을 통해 공용 데이터에 액세스하여 간단한 게임을 하거나 날씨 보고서를 조회할 수 있도록 한다. 이러한 기능 중 많은 것들이 향수를 불러일으키는 재미를 위해 존재하거나 특정 데이터에 대한 액세스가 필요한 구형 시스템과의 호환성을 여전히 갖추고 있기 때문이다. 사용자들은 또한 웹 서버에서 포트까지 텔넷을 통해 텍스트 기반의 암호화되지 않은 프로토콜을 이용하는 모든 소프트웨어에 접속할 수 있다. 사용자는 원격 시스템에서 명령 프롬프트를 열고 텔넷이라는 단어와 원격 시스템의 이름 또는 아이피 주소를 입력할 수 있으며, 텔넷 연결은 포트를 ping하여 열려 있는지를 확인할 수 있다. 열린 포트는 빈 화면이 표시되며, 포트가 연결 중이라는 오류 메시지는 닫혔다는 것을 의미한다.[3]

보안[편집]

문제점[편집]

1969년 텔넷이 처음 개발되었을 때 네트워크로 연결된 컴퓨터의 사용자들은 대부분 학술기관의 컴퓨터 부서나 대규모 민간 및 정부 연구 시설에 있었다. 이런 환경에서는 1990년대의 대역폭 폭발 이후 보안이 크게 우려되는 수준은 아니었다. 인터넷에 접속할 수 있는 사람들의 증가, 그리고 더 나아가 다른 사람들의 서버를 해킹하려는 사람들의 수가 증가함에 따라 암호화된 대안이 필요하게 되었다. 텔넷은 기본적으로 연결을 통해 전송되는 비밀번호를 포함한 데이터를 암호화하지 않으므로, 통신을 도청하고 나중에 악의적인 목적으로 비밀번호를 사용하는 것이 가능한 경우가 많다. 텔넷이 사용되고 있는 두 호스트 사이의 네트워크에 위치한 라우터, 스위치, 허브 또는 게이트웨이에 대한 액세스 권한을 가진 사람은 누구나 지나가는 패킷을 가로채서 패킷 분석기로 입력된 로그인, 암호 등을 얻을 수 있다. 텔넷의 대부분 구현에는 두 개의 원하는 호스트 간에 통신이 수행되고 중간에 가로채지 않는다는 것을 보장하는 인증이 없다. 몇 년 동안 일반적으로 사용되는 텔넷 데몬에서 몇 가지 취약성이 발견되었다. 시큐어셸는 사실상 텔넷을 대체했고, 최근에는 더 현대적인 프로토콜을 지원하지 않는 수십 년 된 구형 장비에 접근하기 위해 구식 프로토콜이 사용되는 경우가 드물다. 통신 옵션으로 텔넷만 이용할 수 있는 산업용과 과학용 기기가 다수 존재한다는 점은 주목할 만하다. 일부는 표준 RS-232 포트만으로 구축되며 직렬 서버 하드웨어 어플라이언스를 사용하여 TCP/텔넷 데이터와 RS-232 직렬 데이터 간의 변환을 제공한다. 텔넷은 취미 활동가들, 특히 아마추어 무선 통신사들 사이에서 여전히 사용되고 있다. 윈링크 프로토콜은 텔넷 연결을 통해 패킷 라디오를 지원한다.[2]

클라이언트와 서버 사이의 텔넷 세션은 암호화되지 않는다. 그래서 통신 호스트 사이의 TCP/IP 패킷 흐름에 대한 액세스 권한이 있는 사람은 누구나 엔드포인트 사이에 흐르는 데이터를 재구성하고 원격 컴퓨터에 로그인하는 데 사용되는 사용자 이름과 암호를 포함한 메시징을 읽을 수 있다. 이 네트워크 공격은 거의 전문지식을 필요하지 않으며 쉽게 이용할 수 있는 네트워크 디버깅 도구로 수행할 수 있다. 위와 같은 패킷 스니핑 공격은 시큐어셸를 개발한 근본적인 이유였고, 1990년대 중반 이미 인터넷에서 가장 흔한 보안 문제였다.[7] 텔넷은 모든 정보를 평문으로 전송함으로써 와이어샤크(Wireshark)의 프러미스큐어스 모드(promiscuous Mode)로 쉽게 내용을 볼 수 있다. 그래서 아이디, 비밀번호 등 명령어까지 사용자의 정보에 대한 중요한 데이터가 쉽게 노출된다. 그리고 스니핑(Sniffing), 스푸핑(Spoofing) 등을 통해 아이피 위조와 변조의 위험이 있어 2차 공격 대상이 되기 쉽다.[8]

공격 방법[편집]

  • 무차별 대입 공격
무차별 대입 공격은 브루터 포스 공격(Brute Force Attack)이라고도 하며 공격 방법에는 두 가지가 있다. 첫 번째는 조합 가능한 모든 문자열을 순차적으로 하나씩 모두 대입해 보는 것으로 무작위적으로 순차 대입한다. 말 그대로 무식하게 암호가 일치할 때까지 모든 경우의 수를 조합해 대입을 시도하는 것이다. 다만 현실적으로는 암호의 길이와 복잡도의 증가에 따라 공격에 걸리는 시간이 기하급수적으로 늘어나므로 무조건 성공한다고 보기 어렵다. 두 번째는 상당한 시간이 소요되는 무작위 순차 대입 방식 단점을 극복하고 보완하는 방법으로, 미리 정의된 문자열 목록을 대입하는 방법이다. 미리 정의된 비밀번호 사전을 준비하여 하나씩 대입해 보는 방식이다. 여기서 사전 파일은 그동안 통계적으로 많이 사용되어 오거나, 사람들이 흔히 사용할법한 비밀번호 조합을 미리 목록 형태로 정의해 둔 파일이다. 텔넷에서는 사용자의 아이피나 비밀번호를 무작위나 사전에 준비하여 시도해 볼 수 있다.[9]
  • 스니핑 & 스푸핑
스니핑은 네트워크의 중간에서 남의 패킷 정보를 도청하는 해킹 유형의 하나로 네트워크 주변을 지나다니는 패킷을 엿보면서 계정 아이디와 패스워드를 알아내기 위한 행위다. TCP/IP 프로토콜은 학술적인 용도로 인터넷이 시작되기 이전부터 설계된 프로토콜이기 때문에 보안을 크게 고려하지 않았다. 패킷에 대한 암호화와 인증 등을 고려하지 않았기 때문에 데이터 통신의 보안의 기본 요소 중 기밀성무결성 등을 보장할 수 없었다. 특히 스니핑은 보안의 기본 요소 중 기밀성을 해치는 공격 방법이다. 패킷이 송수신될 때, 패킷은 여러 개의 라우터를 거쳐 지나가게 되며 중간 아이에스피(ISP) 라우터에 접근 권한을 가지는 사람이라면 해당 패킷을 쉽게 잡아낼 수 있다.[10] 스푸핑은 승인받은 사용자인 것처럼 시스템에 접근하거나 네트워크상에서 허가된 주소로 가장하여 접근 제어를 우회하는 공격 행위로 의도적인 행위를 위해 타인의 신분으로 위장하여 매체 접근 제어(MAC) 주소, 인터넷 프로토콜 주소, 포트, 전자우편 주소 등을 이용한다.
예를 들어, 임의로 웹 사이트를 구성해 일반 사용자들의 방문을 유도하고, 인터넷 프로토콜인 TCP/IP의 구조적 결함을 이용해 사용자의 시스템 권한을 획득한 뒤 정보를 빼 가거나 허가받은 아이피를 도용해 로그인한다. 또한, 소비자들이 믿을 수 있는 전자우편으로 착각하게 하여 가짜 웹 사이트로 유도하여 사용자가 암호와 기타 정보를 입력하도록 속이기도 한다.[11] 텔넷은 기본적으로 연결을 통해 전송되는 비밀번호를 포함한 데이터를 암호화하지 않아 평문으로 전송되어 이러한 방법으로 접근하여 패킷 정보를 획득해 악용하기 쉽다.[8]
  • 텔넷 세션 하이재킹
세션 하이재킹은 공격자가 클라이언트와 서버 간의 세션을 인증된 상태로 가로채기하여 서버를 장악한 후 정보를 해킹할 수 있는 기술이다. Telnet 세션 하이재킹은 공격대상인 클라이언트가 텔넷 서버와 연결설정을 한 후 아이디와 비밀번호를 입력하여 정상적인 로그인이 이루어진 상태를 공격자가 가로채기하여 공격자는 추가적인 인증 과정 없이 Telnet 서버를 장악하고 서버 내의 정보를 해킹하는 것을 말한다. 세션 하이재킹 공격에 의해 공격자는 클라이언트와 서버 간의 패킷을 중개하는 과정에서 모든 패킷을 스니핑할 수 있었고, 로그인된 상태로 세션을 하이재킹하여 텔넷 서버를 장악하여 마치 공격자 자신이 직접 로그인한 것처럼 서버 내 정보를 해킹할 수 있다.[12] 이를 통해 TCP는 시퀀스 번호만 보기 때문에 이를 이용하여 해킹이 가능하다.[8]
  • 리버스 텔넷
리버스 텔넷(Reverse Telnet)은 웹 해킹을 통해 시스템의 권한을 획득한 후 해당 시스템에 텔넷과 같이 직접 명령을 입력하고 확인할 수 있는 셸을 획득하기 위한 방법이다. 방화벽이 존재하는 시스템을 공격할 때 자주 사용되어진다. 일반적으로 웹 서버는 방화벽 내부에 존재하고 웹 서버는 80번 포트를 이용할 웹 서비스를 제공하면 되기 때문에, 방화벽은 외부 인터넷을 사용하는 사용자에 대해 80 포트만을 허용한다. 이런 경우 서버의 텔넷이 열려있어도 방화벽으로 인해 공격자가 외부에서 접근할 수 없다. 방화벽에서 외부에서 방화벽 내부로 들어오는 패킷에 대한 정책인 바운드 정책은 80번 포트 외에 필요한 포트만 빼고 다 막아 놓지만, 내부에서 외부로 나갈 때에 대한 정책인 아웃바운드 정책은 별다른 필터링을 수행하지 않는 경우가 있다. 리버스 텔넷은 이런 허점을 이용하여 역으로 텔넷 서비스를 통해 공격자에게 접속하도록 유도하는 공격이다.[13]

대안[편집]

케르베로스

매사추세츠 공과대학교(MIT)에서 개발한 기술로 컴퓨터 노드가 안전한 방법으로 서로에게 신분을 증명하기 위해 티켓을 기반으로 작동하는 네트워크 인증 프로토콜이다. 이 프로토콜은 개발된 인증 서비스 시스템으로 신뢰하는 제3의 컴퓨터가 서비스를 이용하려는 클라이언트의 사용자를 인증함으로써 가능해진다. 인증함으로써 서버는 클라이언트의 사용자가 올바른 사용자인지를 확인하게 되고 서로간에는 비밀통신이 가능해진다. 이것으로 스니핑이나 스푸핑을 막을 수 있다. 케르베로스의 전체 구조는 니덤(Needham)과 스크루더(Schroeder)가 제안한 프로토콜을 신뢰할 수 있는 제3의 인증 서비스로서 현재 버전 4와 5까지 나왔으며, 해당 관련 문서는 RFC 1510이다. 케르베로스는 불법적인 사용자가 특정한 서버에 접속한 후 정당한 다른 사용자가 그 서버를 사용하고 있는 것처럼 하고 있거나 불법적인 사용자가 자신의 워크스테이션의 네트워크 주소를 정당한 주소로 변경해서 서버에 요구를 보낼 수 있다. 즉, 서버에 보내지는 요구가 다른 정당한 워크스테이션으로부터 온 것처럼 가장하거나 불법적인 사용자가 정당한 사용자와 서버 간의 통신정보를 엿듣고, 재전송에 사용할 때와 같은 상황들에서 보안 위협에 대한 대처 방안을 제공한다.[14]

SSH

SSH는 시큐어셸(Secure Shell)의 약어로 PGP와 마찬가지로 공개 키 방식의 암호 방식을 사용하여 원격지 시스템에 접근하여 암호화된 메시지를 전송할 수 있는 시스템이자 보안을 중점으로 한 프로토콜이다. 기존에는 텔넷을 사용하였지만 와이어샤크라는 패킷 분석 프로그램을 사용하면 데이터가 보이는 등의 보안성에 문제가 있어 시큐어셸이 탄생하게 되었다. 따라서 랜(LAN) 상에서 다른 시스템에 로그인할 때 스니퍼에 의해서 도청당하는 것을 막을 수 있다. 그리고 시큐어셸는 22번 포트를 사용한다. 유닉스(Unix) 및 리눅스(Linux) 운영 체제를 사용하는 사용자의 경우 오픈 시큐어셸은 운영체제와 함께 무료이며 텔넷의 안전한 대안으로 사용되어 네트워크 스누핑 공격으로부터 사용자 아이디, 암호 및 데이터를 보호하고 안전한 로그인 및 파일 전송을 허용할 수 있다. 즉, 암호화된 패킷을 전송하여 시큐어셸에서는 기본적으로 패킷을 포함한 전송하는 모든 트래픽을 암호화해서 전송한다. 이는 도청이나 세션 하이재킹, 패킷 스니핑 등 보안 공격을 방지하는 데 효과적이라서 보안성이 뛰어나다는 평을 받는다.[15]

사용법[편집]

윈도우10

윈도우10에는 기본으로 텔넷 명령을 사용할 수 없다. 하지만 제어판에서 이 기능을 활성화하면 사용할 수 있게 된다. 제어판에서 프로그램을 선택한다. 그리고 프로그램 및 기능에서 윈도우 기능 켜기/끄기를 선택한다. 윈도우 기능 켜기/끄기 패널에서 텔넷 클라이언트를 체크해주고 확인 버튼을 누르면 설치가 진행되어 완료되면 텔넷을 사용할 수 있게 된다.[16] 그리고 나서 윈도우 명령 프롬프트를 실행한다. 명령 프롬프트에 명령어를 작성한다.

telnet [IP 또는 도메인] [포트]

연결에 성공할 경우, 작성한 telnet [IP 또는 도메인] [포트]가 실행된다. 연결에 실패하게 되면 해당 포트에 연결하지 못했다는 말이 뜬다. 그리고 텔넷이 사용이 안 되는 경우에는 '내부 또는 외부 명령, 실행할 수 없는 프로그램, 또는 배치파일이 아닙니다.'라고 표시되어 제어판에서 텔넷 클라이언트를 활성화해야 한다.[17]

명령어
  • open : 호스트로 연결하려면 호스트이름으로 텔넷을 연결한다.
  • close : 기존 텔넷을 닫을 때 사용한다.
  • display : 텔넷 클라이언트의 현재 설정을 확인한다.
  • send : 텔넷 서버로 명령을 전송할 때 사용한다. ao, ayt, esc, ip, synch, brk 등과 함께 사용한다.
  • quit : 텔넷 클라이언트를 닫는다.
  • set : bsasdel, codeset option, crif, delasbs 등과 같이 사용하여 텔넷 클라이언트를 구성한다.
  • unset : set에서 설정한 옵션을 해제한다.
  • status : 텔넷 클라이언트를 실행하는 컴퓨터가 연결되었는지 확인한다.
  • ?/help : 도움말 정보[18]

각주[편집]

  1. 텔넷 네이버 지식백과 - https://terms.naver.com/entry.nhn?docId=932594&cid=43667&categoryId=43667
  2. 2.0 2.1 텔넷 위키백과 - https://en.wikipedia.org/wiki/Telnet
  3. 3.0 3.1 Margaret Rouse, 〈Telnet〉, 《테크타겟》, 2020-04
  4. 텔넷 두산백과 - https://www.doopedia.co.kr/doopedia/master/master.do?_method=view&MAS_IDX=101013000864010
  5. H2O, 〈Telnet 의 개념과 특징〉, 《네이버 블로그》, 2014-07-17
  6. 텔넷이란 무엇입니까?〉, 《네틴백》
  7. Telnet - and SSH as a Secure Alternative ssh.com - https://www.ssh.com/ssh/telnet#telnet-security-problems
  8. 8.0 8.1 8.2 김보성 외 4명, 〈Telnet & SSH〉, 《티스토리》
  9. 박종명, 〈브루트 포스(BRUTE FORCE) 공격〉, 《개인 사이트》, 2019-01-23
  10. 스니핑 네이버 지식백과 - https://terms.naver.com/entry.nhn?docId=2067365&cid=42107&categoryId=42107
  11. 스푸핑 네이버 지식백과 - https://terms.naver.com/entry.nhn?docId=3435678&cid=42346&categoryId=42346
  12. 최재원, 〈세션 하이재킹을 이용한 Telnet 서버의 해킹 방법 및 구현기술〉, 《경성대학교》, 2017-02-04
  13. 양대일, 〈정보 보안 개론 개정판〉, 《한빛아카데미》, 2013-07-02
  14. 피터리, 〈커버로스(Kerberos)란?〉, 《네이버 블로그》, 2008-10-15
  15. SSH 네이버 지식백과 - https://terms.naver.com/entry.nhn?docId=837917&cid=50376&categoryId=50376
  16. 천렵, 〈윈도우10에서 telnet사용법〉, 《네이버 블로그》, 2017-03-02
  17. 네트워크, 〈텔넷(telnet) 명령어 - 포트(Port) 확인〉, 《티스토리》, 2018-11-28
  18. 마이크로소프트 공식 홈페이지 - https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc782300(v=ws.10)?redirectedfrom=MSDN

참고자료[편집]

같이 보기[편집]


  검수요청.png검수요청.png 이 텔넷 문서는 인터넷에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.