Information Security

29-1 TELNET (+ NC) 본문

Linux

29-1 TELNET (+ NC)

leeeeye321 2017. 10. 26. 03:59

TELNET

-전통적으로 상용된 원격 접속 프로그램

-보안에 취약점이 많아 최근에 SSH로 대체

-평문(Plain text)으로 데이터를 전송하여 패킷을 분석하면 내용이 전부 노출된다.

-Xinetd 데몬(슈퍼데몬)이 관리하는 데몬으로 TCP/23 포트를 이용하여 서비스를 제공한다.

 

Telnet Server

Server-A

<->

Telnet Client

Client-Win

Client-Linux

 

Server-A (Telnet Server)

telnet 서버용 패키지 설치

 

xinetd 데몬과 의존 관계이기 때문에 함께 설치

 

telnet 주 설정 파일

-xinetd 데몬에 의해 동작하는 프로그램들은 해당 디렉터리 내에 설정파일이 있다.

 

disable = no로 수정

-xinetd 데몬이 활성화 되면 telnet을 사용할 수 있도록 설정 (disable을 사용하지 않음(no) = 사용)

 

/etc/xinetd.d 디렉터리의 파일을 읽어 disable = no 설정이 있는 서비스만 활성화

 

테스트용 계정 생성 후 패스워드 설정

 

telnet 클라이언트 프로그램 설치

 

모든 실습에서 iptables가 동작하면 원활하게 실습이 되지 않으므로 stop

 

#telnet [접속할 컴퓨터의 IP/도메인] [포트]

-[포트] 생략 시 기본적으로 telnet이 사용하는 23으로 접속

 

IP 주소 사용하여 telnet 접속

 

도메인 해석해 줄 DNS 서버가 존재한다면 당연히 도메인으로도 접속이 가능하다.

 

처음 접속 후 위치한 경로는 홈 디렉터리이고, 접속을 해제할 때는 exit를 입력한다.

 

Client-Win (Telnet Client)

시작 메뉴 -> 제어판

 

프로그램 -> Windows 기능 사용/사용 안 함

 

아래로 내려서 [텔넷 클라이언트] 선택 -> 확인 -> 설치

 

명령 프롬프트 창을 열고 telnet 접속 명령어 입력

 

접속 성공

 

※ 접속 실패할 경우

(1) 제어판 -> 시스템 및 보안 -> Windows 방화벽 설정 해제

(2) 네트워크(100.100.100.140) 확인

 


 

★ telnet으로 원격지에 위치한 컴퓨터의 열려있는(LISTEN) 포트를 확인할 수 있다.

 

원격지의 컴퓨터가 WEB 서버라고 가정

-> 해당 컴퓨터는 WEB 프로그램이 동작해야 한다. (HTTP TCP/80)

Windows에서 80 포트로 연결 시도 -> 실패

 

원격지 컴퓨터에 WEB 프로그램 설치 후 활성화

 

다시 Windows에서 연결을 시도한다.

 

-연결은 성공하지만 프로토콜이 일치하지 않기 때문에 실제 telnet이 실행되지 않는다.

-연결이 가능하다는 것은 해당 서버에 특정 프로그램이 80번 포트를 사용하고 있다는 뜻이다.

 

※ 이렇게 telnet은 프로그램의 동작 여부를 확인할 수 있다.

Client-Linux에서 sshd 데몬 정지

 

Server-A에서 연결 시도 -> 실패

-> Client-Linux에서 ssh 프로그램이 동작하지 않고 있다는 것을 알 수 있다.

 

다시 시작

 

연결 가능

-> Client-Linux에서 ssh 프로그램이 동작하고 있다.

 


 

패킷 확인

-tcpdump를 이용하여 telnet 서버의 패킷을 캡쳐하여 평문 전송을 확인할 수 있다.

 

telnet 서버에 tcpdump 패키지 설치

 

telnet이 사용하는 포트(23)를 기준으로 패킷을 캡쳐하여 결과를 매우 자세하게(-vvv) 16진수(-x) 형태로 출력하고

출력된 내용을 telnet-dump 파일에 저장하며 백그라운드로 동작(&)한다.

telnet-dump 파일 내용의 마지막 10줄을 실시간으로 확인(tail -f)

 

Client-Linux에서 telnet을 100.100.100.110으로 접속한다.

 

-Server-A에서는 이렇게 패킷의 내용이 출력된다.

 

-Client-Linux에서 3을 입력했는데, Server-A에서 확인할 수 있다.

-> 보안에 취약

 


 

NC(NetCat)

-네트워크 입출력 데이터를 사용하는 툴

#cat    표준 입력으로 받은 값을 표준 출력으로 사용하는 명령어

옵션 -l    LISTEN 모드로 동작

 

Server-A, Client-Linux에 nc 패키지 설치

 

#nc -l [포트번호]

8888 포트 활성화

 

 

 

한 쪽에서 메시지 입력 -> 양 쪽 모두 출력

-간단한 채팅 서버를 구축할 수 있다.

-연결 끊을 때는 [Ctrl + c]

 

Client-Linux의 파일을 Server-A에서 받기

Server-A LISTEN 상태

 

Client-Linux에서 test_in 생성

#cat > test_in

-> 내용 입력 후 [enter]

-> [Ctrl + d]  

 

test_in 보냄 -> Server-A 프롬프트 떨어짐

 

받은 파일 확인

 

Server-A 파일을 Client-Linux에서 받기

Server-A에서 FILE1 생성

 

Server-A LISTEN 상태

 

FILE2로 받기

 

받은 파일 확인

 

#nc -z [IP주소] [포트]

-해당 IP의 LISTEN 포트 스캔

22번, 23번 포트 활성화 여부 테스트

범위 지정하여 확인

 

※ 포트 스캔(Port scan)

http://terms.naver.com/entry.nhn?docId=3436055&cid=42346&categoryId=42346 IT용어사전

-입력한 IP에 어떤 포트가 열려있는지 알아내는 것

-해킹의 준비과정

-nc -z는 실습할 때만 사용해야 하는 명령어

'Linux' 카테고리의 다른 글

30-1 VNC(Virtual Network Computing)  (0) 2017.10.27
29-2 SSH  (0) 2017.10.27
28 DNS Master & Slave 서버 구축  (0) 2017.10.25
27 DNS 서버 구축  (0) 2017.10.23
26-2 DNS(Domain Name Server / System)  (0) 2017.10.20