상세 컨텐츠

본문 제목

SSH (Secure SHell) 원리, 구조, 설정

네트워크/NAT, SSH

by 초띠 2023. 6. 18. 23:43

본문

<SSH (secure shell) 란>

원격 호스트에 접속하기 위해 사용되는 보안 프로토콜 입니다.

기존의 원격 접속 방식에는 '텔넷(Telnet)'이라는 것이 대표적이었는데, 암호화를 제공하지 않아 보안상 취약하다는 단점이 있습니다.

WireShark와 같은 패킷 분석 프로그램을 이용하면 비밀번호처럼 개인정보가 유출되기 쉽습니다.

 

이러한 텔넷의 단점을 보완하고자 암호화를 제공하는 원격 접속 방법이 ssh 입니다.

현재는 원격 접속 보안을 위한 필수적인 요소가 되었습니다.

따라서 서버(NBP, AWS, CSP 등) 생성 시 필수적으로 ssh 보안 과정을 거칩니다.

 

 

<SSH 작동원리>

ssh를 구성하는 핵심 키워드 = ‘key’ !!

클라이언트와 호스트는 각각의 키를 보유하고 있으며, 키를 이용해 연결 상대를 인증하고 데이터를 송수신합니다.

‘대칭키’ or ‘비대칭키’ 두가지의 키 생성 방식이 있습니다.

 

- 비대칭키 방식

사용자와 서버가 서로의 정체를 증명해야 할 때 사용됩니다.

서버 또는 사용자가 key pair(키 쌍)을 생성합니다.

key pair → 공개 키와 개인 키의 두가지로 이루어진 한 쌍

공개 키는 .pub, 개인 키는 .pem 의 파일 형식을 띕니다.

 

사용자가 키 쌍을 생성 → 공개 키를 서버에 전송 → 서버는 공개 키를 받아서 공개키로 만들어진 랜덤 값 생성 → 사용자가 올바른 키 페어를 가지고 있는지 확인 → 사용자는 가지고 있는 개인 키를 이용해 공개키로 만들어진 값을 해석  → 오직 키 페어 생성 시 함께 생성된 개인키와 공개키만 서로 해석이 가능 → 해석한 값을 다시 서버에 전송  → 서버는 전송받은 값을 자신이 낸 값과 비교 → 같다면 접속을 허용

 

- 대칭키 방식

서로의 정체를 증명한 후, 정보를 주고받을 때 사용됩니다.

주고받는 과정에서 정보가 유출되지 않도록 암호화합니다.

비대칭키 방식과 달리 한 개의 키만을 사용합니다.(대칭키)

 

사용자 또는 서버가 대칭 키를 생성해 공유 → 대칭 키를 이용해 정보를 암호화 → 동일한 대칭 키로 암호를 해독해 정보를 습득 → 사용된 대칭키 폐기, 재접속 시 새로운 대칭키 생성

 

 

<주요 기능>

- 인증 : 클라이언트 및 서버 인증

- 기밀성 유지, 암호화 : 데이터 전송 전 암호화

- 무결성 : 데이터 전송 중 공격에 의한 변경 방지를 위해 MAC 코드를 통해 구현

- 압축 : 데이터를 압축하고 이를 암호화하여 전송

- 포트 포워딩 : 보안 TCP 연결

- 다중화 : 클라이언트와 서버 간 보안 채널 형성 후 클라이언트 측에서 복수 논리 채널 설정 가능

 

<계층 구조와 패킷 구성>

ssh는 보안 프로토콜이므로 프로토콜 계층 구조가 있습니다.

 

 

- SSH-Trans 계층

  서버 인증, 기밀성, 무결성, 압축 기능 제공

 

- SSH-Auth 계층

  해당 서버에 대한 클라이언트 인증 제공

 

- SSH-Conn 계층

  암호화된 터널들 각각에 여러 논리 채널등 다중화 제공

 

- SSH 응용 계층

  telet, smtp 등

 

 

 

ssh 의 패킷 구성입니다. 조금 어렵지만 알아보겠습니다.

 

- length : (패킷에서 length, padding을 제외한) type ~ CRC 까지의 길이

- padding : 보안 공격이 어렵도록 1~8 바이트를 추가

- type : ssh 프로토콜 패킷 유형

- data : 운반되는 실제 데이터

- CRC : 오류 검출

 

 

<패킷 트레이서로 ssh 구현하기>

 

ssh 접속 확인을 위해 간단하게 구성해 보았습니다.

각각 ip 주소 할당 및 설정을 완료해 준 다음, Router0에 설정을 합니다.

 

호스트이름 설정

도메인 이름 설정

ras key 크기 설정

사용자 이름과 비밀번호(해시화)설정

접속 허용 사용자 수 설정

로컬 계정 로그인 설정

ssh를 사용하여 접속하겠다고 알려줌

관리자 모드로 접속할 때 입력할 비밀번호(해시화) 설정

 

이렇게 명령어를 입력해주고 pc0에서 접속해 보겠습니다.

 

ssh -l [username] [router ip address]

 

잘 접속되는 것을 확인할 수 있습니다.

관련글 더보기