전송 계층 - TCP (TELNET, SSH)
목차 (TELNET, SSH)
1. TELNET (관리 툴) - 스위치나 서버에 접속하는 내부적인 툴
RFC 854, TCP 23 사용, Terminal 에뮬레이터
-역할
: 원격지 호스트 컴퓨터에 접속하기 위해 사용되는 프로토콜
: 장비 관리 또는 서버 접속 시 사용 shell (사용자가 OS와 대화할 수 있는 창) : Command Line Interface
: 클라이언트 소프트웨어인 경우, 포트 테스트 용도로 많이 사용
: telnet 명령어를 통해 해당 도메인 또는 IP 주소에 서비스 포트가 열려있는지 닫혀있는지 확인 가능
- 기능
: NVT (Network Virtual Terminals) 지원 (데이터 변환 가상 장치)
: 협상 가능한 옵션들이 있다
: 프로세스와 터미널의 1:1 symmetric 관계
- Negotiation Commands(협상 옵션들 4가지 WILL, WON'T DO DON'T)
WILL -> 옵션 활성화를 원한다
DO -> 옵션 활성화를 요청한다
2. SSH - 외부에서 접속이 가능한 관리 툴
- 역할
: Secure Shell (보안강화)
: TELNET을 대체하기 위해 1995년 개발
: 원격지에 있는 컴퓨터를 명령어를 통해서 제어
: 강력한 인증 방법 및 암호화 통신을 제공, TCP 22
: OpenSSH - 1999년 OpenBSD 팀에서 개발 (GNU Public License)
: SSHv1, SSHv2
- 특징 (인증, 암호화, 무결성, 압축)
1. Authentication(인증) : 사용자가 서버 접속 시 패스워드 또는 공개키 기반의 인증 방식 지원
2. Encryption(암호화) : 대칭키 방식 사용 (AES, Blowfish, 3DES)
3. Integrity(무결성) : 데이터 위변조 방지 MAC(Message Authentication Code)
4. Compression(압축) : 다중화 통신
대칭키 : 동일한 키로 암복호화를 동시에 할 수 있는 방식 (유출되면 문제)
공개키 : (공개키+개인키)방식,
공개키 암호화 -> 데이터보안, 서버의 공개키로 데이터를 암호화 -> 서버의 개인키로 복호화
개인키 암호화 -> 인증 보안, 개인키 소유자가 개인키로 암호화 하고 공개키를 함께 전달 -> 암호화 데이터+공개키로 신원확인 -> 전자서명 방법
-통신 과정 SSH handshaking
![]() ![]() |
1. TCP 커넥션 2. SSH version 체크 매칭하여 서로 호환되는 버전 찾기 3. 암호화 키 알고리즘을 서로 협상을 하고 key exchange, DH key Change 4. 모든 키가 교환이 완료가 되면, 안전한 키를 가지고 data를 암호화하여 데이터를 교환 |
Algorithm negotiation 서로 가지고 있고 가장 효율적인 알고리즘 선택 |
![]() |
Key exchange key 교환을 위한 암호화 : 빠른 것보다 보안이 더 강해야한다. data 암호화 : 빨라야한다. |
![]() |
![]() |
![]() |