SSH 연구 보고서

김동주·2024년 1월 23일

🤷 SSH (Secure Shell Protocol)

Telent의 단점을 보완하고자 SSH 프로토콜이 등장

  • 기존에는 Telnet과 같은 방식을 사용하여 원격 제어
  • Telnet에서는 평문으로 데이터를 주고받는 방식이므로 중간에서 메시지 탈취
    시 위험이 존재

🤼‍ SSH란?

상호 통신을 보안적으로 안전하게 하기 위해 사용하는 네트워크 프로토콜

  • Public Network를 통해서 다른 컴퓨터에 로그인 또는 원격 시스템에서 명령
    실행 시 다른 시스템으로 파일을 복사하게 함
  • 암호화된 방식으로 데이터 전송과 원격 제어에 사용
  • 메시지가 탈취되어도 공격자가 해독하지 못하게 하여 보안성 제공
  • Telnet에서 발생한 메시지 탈취 문제를 암호화를 통해 보완

🌐 SSH 구성 요소

  • Shell 즉, 명령어 입력으로 제어하여 컴퓨터를 원격 제어하는 방식
  • Client의 명령으로 전송된 데이터를 Server에서 제어
  • 리눅스와 Mac 같은 OS에서는 별도의 SW 설치가 필요 X
  • Windows의 경우 SSH Client가 설치되어 있지 않기 때문에 Putty나 Xshell 과 같은 Client의 설치가 필요

🙇 SSH 프로토콜의 스택 구조

  • 주요 키 교환 방식, 공개 키 방식, 대칭 키 방식, 메세지 인증 방식, 해시 알고
    리즘 등이 클라이언트,서버 간에 협상
  • SSH 인증 프로토콜
    해당 서버에 대한 사용자 인증(User Authentication) 제공
  • SSH 연결 프로토콜
    암호화된 터널들 각각에 다수 논리채널들을 다중화 가능
  • SSH 응용 프로토콜
    TELNET, RLOGIN, SMTP

💆 SSH에서의 Key

  • 기본적으로 무언가에 접속할 때는 ID또는 Username과 Password를 입력함
  • SSH의 Key는 SSH protocol Credential이며, Key를 사용 싯 비밀번호 대신에
    서버에 접속 가능
  • Password보다 SSH Key를 사용할 때가 보안 수준이 더욱 높음
  • SSH Key는 공개키 방식으로, Private Key와 Public Key로 구성
  • Private Key는 단어에서 유추할 수 있듯이 자신만이 갖고 있는 개인키를 의미
  • Public Key는 누구에게나 공개 가능한 공개키

🤓 SSH에서의 비대칭 Encryption/Decryption 과정

  • SSH 에서는 private key로 암호화하는 방식을 택하고 있음
  • 비대칭 암호화 방식에서는 송신자, 수신자 각각 Public Key 와 Private Key 를
    가짐
  • 송신자의 Public Key 로 암호화 된 데이터는 송신자의 Private Key 를 사용해
    야만 복호화가 가능하며 이후 Public Key를 교환하여 암호화 하는데 사용

🚩 SSH에서의 대칭 Encryption/Decryption 과정

  • 1개의 공통된 Secret Key 를 가지고 양쪽에서 데이터를 암호화 및 복호화 할
    수 있게 하는 방법
  • 서로 같은 Secret Key 만 있으면 데이터를 암호화/복호화 할 수 있다는 장점
  • 혹시나 Secret Key 가 유출 되었을 경우 암호화된 모든 통신이 노출된다는 치
    명적인 단점이 존재
  • 이런 이유때문에 안전하게 Key 를 exchange 하는 방법으로 비대칭 암호화 (A
    symmetric Encryption) 알고리즘이 존재

🙇SSH에서의 원격 제어 순서

  • Client 의 SSH 공개키 생성
  • Server에 SSH Server 설치
  • Server에서 SSH 접속 허용 설정
  • Client에서 Server로 SSH 접속 테스트
  • Server에 암호 없이 접근하기 위해, Client의 SSH 공개키를 Server에 저장
  • SSH 를 사용해 암호 없이 Server에 접속
  • 클라이언트가 서버에 접속하기 위해 3way hand shake 수행
  • 세션 연결시 서버는 클라이언트에게 SSH어떤 버전을 사용할지 물어봄
  • 클라이언트는 sshv2로 통신하자고 전달
  • server는 public key를 클라이언트에 전송
  • 클라이언트는 server공개키 + client 비밀기 + 데이터 = 암호화된 데이터를
    전송
  • 클라이언트 공개키 전송
  • server는 클라이언트의 공개키 + server비밀키 +암호화된 데이터를 복호화
profile
더욱 더 발전된 엔지니어가 되기 위한 개인 공부 블로그(DevOps/Cloud)

0개의 댓글