우리가 서버를 원격으로 접속해서 사용하기 위해서 SSH 명령어를 많이 쓴다. 하지만 이에 대해서 제대로 된 이해 없이 명령어만 썼기 때문에 이번 기회에 SSH에 대해 좀 더 알아보고자 글을 쓰게 되었다.
SSH란?
SSH는 Secure Shell의 줄임말로 안전하지 않는 네트워크 환경에서 보안 인증이나 파일 전송등에 쓰이는 Software Package이다. 이러한 SSH는 SSH 프로토콜을 기반으로 통신을 하게 된다.
SSH protocol이란?
먼저 SSH 프로토콜 스택 구조를 살펴보자
전송계층을 보면 SSH 또한 전송계층으로 TCP를 사용하는 것을 알 수 있다.(어떻게 보면 당연한 말이다)
응용계층에 대한 설명은 아래와 같다.
- SSH 전송 프로토콜
- 서버의 인증, 기밀성, 무결성, 압축을 제공하는 계층
- 클라이언트, 서버 간에 협상(키 교환방식, 공개키 방식, 대칭 키 방식, 메세지 인증 방식, 해시 알고리즘)을 하는 곳
- SSH 인증 프로토콜
- 서버에 대한 사용자 인증을 제공하는 곳
- SSH 연결 프로토콜
- 암호화된 터널들 각각에 다수 논래채널들을 다중화 가능
- SSH 응용 프로토콜
- TELNET : 네트워크 연결에 쓰이는 프로토콜
- RLOGIN : 통신 사용자가 네트워크를 통해 다른 호스트에 로그인할 수 있도록 하는 소프트웨어 유틸리티
- SMTP : 이메일을 전송하는 기술 표준
SSH 통신 과정
이번 통신과정에서는 대칭키 기반 통신 과정에 대해서 설명하겠다.
공개키 추가
통신을 하기에 앞써 사전에 SSH Server에는 SSH Client의 공개키가 저장되어있어야한다. SSH Server와 Client가 Linux OS 기반으로 작동한다면 다음과 같은 과정을 통해 SSH Client의 공개키를 SSH Server에 저장할 수 있다.
1. 클라이언트 SSH 키 생성
만약 Client PC에 open-ssh가 깔려있지 않다면 다음과 같은 과정을 따르면 된다.
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install openssh-client
이후 다음과 같은 명령어를 치게되면
ssh-keygen
개인키는 ./ssh/id_rsa 에 저장되고
공개키는 ./ssh/id_rsa.pub에 저장된다.
2. 서버에 공개키 추가
Client의 id_rsa.pub파일을 복사한후 서버의 .ssh/authorized_keys에 파일을 붙여넣는다.
3. 접속 테스트
이후 ssh username@server_ip를 통해 Client PC에서 Server로 원격접속을 성공하면 정상적으로 Client의 공개키가 저장된 것이다.
SSH Setup 통신 구조도
1. Client가 접속 요청을 보낸다.
우리가 SSH 명령어를 치게 되면 처음 발생하는 상황이다. 클라이언트에는 서버에게 연결 요청을 보내게 된다.
클라이언트는 자신의 비밀키를 사용하여 서버에 요청을 보내고 서버는 저장된 공개키 파일을 확인하여 Client의 신원이 확인된다면 서버의 공개키를 보내게 된다.
2. SSH 세션 설정
SSH 인증 요청이 수락되면 클라이언트와 서버간의 암호화된 터널이 만들어 집니다. 이때 SSH 세션의 동작을 제어하는 다양한 옵션을 설정할 수 있다. 암호화 알고리즘, 전송 속도 제한, 전송 압축등이 존재한다. 클라이언트는 이러한 설정 정보를 ‘~/.ssh/config’파일에 저장해두고 SSH요청을 보낼때 같이 보내어 일관성 있는 연결을 만들 수 있다.
이러한 과정을 통해 암호화된 터널이 만들어지면 SSH Client가 SSH Server를 원격으로 사용할 수 있게 된다
긴 글 읽어주셔서 감사합니다.
틀린 부분이 있으면 댓글을 달아주시면 감사하겠습니다.
📧 : realhwan1202@gmail.com
🔗 : https://github.com/RicardoKim
참고
https://www.ssh.com/academy/ssh/protocol
http://www.ktword.co.kr/test/view/view.php?m_temp1=2524
'Computer Science > Security' 카테고리의 다른 글
[보안] 암호(2) RC4 (0) | 2022.11.01 |
---|---|
[보안] 암호(1) Perfect Secret과 OTP (0) | 2022.11.01 |
[보안] 디피-헬먼 키 교환 1편 (0) | 2022.10.29 |