[리눅스] SSH

코코볼·2023년 5월 30일
0

네트워크 보안

목록 보기
20/35

들어가기 전..
흔히 NBP나 AWS같은 클라우드 서비스에서 서버를 생성해보면 '인증키'나 '키 페어'라는 것을 생성하는 과정을 거치게 된다. 생성하면 pem이라는 낯선 형식의 파일을 다운로드 받게 되는데, 이는 서버 접속에 반드시 필요한 파일이다.

이 파일은 우리가 생성한 서버에 원격으로 접속할 때, 외부의 보안 위협으로부터 보호해주는 'SSH'라는 보안 방식이 적용된 서버에서 반드시 필요한 파일이다.

SSH(Secure Shell)

원격 호스트에 접속하기 위해 사용되는 보안 프로토콜
(*Shell(쉘): 명령어와 프로그램을 사용할 때 쓰는 인터페이스.
커널과 사용자 간의 다리 역할. 사용자로부터 명령을 받아 그것을 해석하고 실행하는 역할)

기존 원격 접속은 '텔넷(Telnet)'이라는 방식을 사용했는데, 암호화를 제공하지 않기 때문에 보안이 취약하다는 단점이 있다. 실제로 WireShark같은 패킷 분석 프로그램을 이용하면 누구나 쉽게 원격 접속 과정에서 옮겨지는 비밀번호나 파일 내용 등의 데이터를 탈취할 수 있다. 때문에 이를 암호화하는 SSH 기술이 등장했고, 현재 원격 접속 보안을 위한 필수적인 요소로 자리잡고 있다. 그리고 클라우드 서비스에서 제공하는 서버는 기본적으로 원격 접속을 해서 접근하고 사용한다. 그래서 NBP나 AWS와 같은 CSP(Cloud Service Provider, 클라우드 서비스를 제공하는 곳)에서 서버 생성시 필수적으로 SSH 보안 과정을 거치는 것이다.

SSH의 작동원리

SSH를 구성하는 가장 핵심적인 키워드는 'KEY(키, 열쇠)'이다. 사용자(클라이언트)와 서버(호스트)는 각각의 키를 보유하고 있으며, 이 키를 이용해 연결 상대를 인증하고 안전하게 데이터를 주고 받을 수 있다. 키를 생성하는 방식은 '대칭키 방식'과 '비대칭키(또는 공개 키)'방식이 있다.

1. 비대칭키 방식

작동순서로 가장 먼저 사용자와 서버가 서로의 정체를 증명해야 한다. 이 시점에서 사용되는 것이 비대칭키 방식이다. 비대칭키 방식에는 서버 또는 사용자가 Key Pair(키 페어, 키 쌍)를 생성한다. 키 페어는 공개 키와 개인 키 두가지로 이루어진 한쌍이다. 보통 공개 키의 경우 .pub, 개인 키의 경우 .pem의 파일 형식을 띄고 있다. 공개 키에서 나온 파일은 개인키로만 풀 수 있고, 개인 키는 사용자만 가지고 있다. 따라서 , 개인키는 서버와 사용자 간의 사이를 증명하는 수단이 된다. CSP를 이용할 떄 서버 생성 시 제공받았던 pem파일이 이 파일이다. 키를 통해 파일을 풀면 풀어서 나온 값을 사용자는 다시 서버에 전송한다.

서버는 사용자로부터 전송받은 값을 자신이 처음에 낸 값과 비교한다. 두 값이 일치하면 서버는 접속을 허용해준다. 이렇게 최초 접속 시 사용자와 서버 간의 인증 절차가 비대칭키 방식을 통해 완료된다.

2. 대칭키 방식

이제 서로가 누군지를 알았으니 정보를 주고받을 차례이다. 주고받는 과정에서 정보가 새어나가지 않기 위해 정보를 암호화해서 주고 받는데, 여기서 사용되는 과정이 대칭키 방식이다. 대칭키 방식에서는 비대칭키 방식과 달리 한 개의 키만 사용하는데, 우리는 이것을 대칭 키라고 한다.

사용자 또는 서버는 하나의 대칭 키를 만들어 서로 공유한다. 공유된 대칭 키를 이용해 정보를 암호화하면, 받은 쪽에서 동일한 대칭 키로 암호를 풀어 정보를 습득하게 된다. 정보 교환이 완료되면 교환 당시 썻던 대칭 키는 폐기 되고, 나중에 다시 접속할 때마다 새로운 대칭 키를 생성하여 사용하게 된다.

[출처][링크텍스트](https://library.gabia.com/contents/infrahosting/9002/)

0개의 댓글