0. 개요
이전의 포스팅에서 인스턴스를 생성할 때, 키페어라는 것을 생성했습니다. 그리고 키페어를 통해서 MobaXterm으로 임대 컴퓨터에 접속할 수 있었습니다. "어떤 과정이 존재하는 것일까?" 대해서 설명을 하려면 AWS의 EC2 서버의 방화벽에 대해서 알아볼 필요가 있습니다.
1. AWS EC2 서버의 방화벽
이전 포스팅의 과정을 정리하자면, 인스턴스를 생성해서 22번 포트로 MobaXterm으로 접속했습니다. 22번 포트는 ssh로 접속합니다. 접속해서 shell명령으로 통해 우분투라는 OS가 받아서 번역해서 하드웨어를 컨트롤 할수 있게 됩니다. 우리는 AWS에서 인스턴스라는 하나의 컴퓨터를 받았으므로 여기에 shell명령으로 Java, 톰캣 등등을 설치해서 사용할겁니다.
하지만 AWS의 방화벽은 기본적으로 모든 포트를 차단합니다. 그러므로 인바운드 규칙 설정을 통해 원하는 포트를 개방해서 접속을 허용해야합니다.
ssh는 secure shell의 약자로,
- shell : 사람이 하드웨어를 컨트롤 하기위해 OS에게 명령을 하는데 shell언어를 쓴다.
- secure : 민감한 정보를 보낼 때 노출 시를 대비해 데이터를 암호화한다,
정리하자면, SSH는 네트워크 상에서 안전하게 인터넷을 통해 다른 컴퓨터에 로그인하거나 원격시스템 명령을 실행하기위한 프로토콜 및 해당 프로토콜을 구현한 프로그램입니다. SSH로 원격 컴퓨터에 접속해서 원격으로 Shell명령이 가능해집니다.(CLI환경)
2. RSA인증 방식
이전 포스팅에서 인스턴스를 생성할 때, RSA라는 유형으로 키 페어를 생성했습니다. RSA가 뭔지 알아보겠습니다.
동식이와 춘배가 데이터를 주고받습니다. 하지만 여기서 중간에 해커가 데이터를 탈취할 수 있습니다. 그러므로 비밀번호 같은 예민한 정보를 주고받게 되면 치명적일 수 있습니다. 그래서 비밀번호 데이터를 암호화하고, 동식이와 춘배는 k라는 공통된 키를 공유해서 암호를 풀게됩니다. 이렇게 공통된 키를 사용하는 방식을 대칭 키라고 합니다. 단점은 k라는 키를 주고 받는 과정이 번거롭습니다.
RSA방식은 키를 두개를 사용합니다. A키로 잠긴 데이터를 B키를 통해 열 수 있고, B키로 잠긴 데이터는 A키로 열 수 있습니다. 이러한 방식을 공개 키 방식이라고 합니다.
공개 키 방식을 이용해 RSA에서는 상대방의 공개키로 데이터를 잠금니다. 동식이는 "춘배의 공개 키"로 암호화해서 춘배에게 비밀번호를 보내줍니다. 그럼 춘배는 자기가 가지고 있는 "춘배 비밀 키"로 데이터를 해석해서 사용하고, 춘배가 동식이에게 보내줄 때는 데이터를 "동식이 공개 키"로 암호화를 해서 보내주고, 동식이는 자신의 비밀키로 데이터를 확인합니다. 해커는 공개 키밖에 모르니 데이터를 탈취해도 사용할 수 없습니다.
추가적으로, 중간에 해커가 데이터를 탈취해서 자신만의 방식으로 다시 암호화해서 상대방에게 계속 보내준다면, 상대방은 잘못된 방식으로 암호화된 데이터가 계속 들어오는 경우가 발생할 수있습니다 .
이를 위해서 송신자의 비밀키로 한번더 잠금니다. 이러면 춘배 입장에서는 데이터가 잠겨있는걸 확인하고 공개키로 열어보는데, 만약 동식이의 공개키로 열리는 것을 확인하면, 송신자가 동식이라는 것을 알 수 있습니다. 이렇게 송신자를 알 수있도록 한번더 잠그면, 해커가 중간에 탈취한후 자신만의 암호화 방식으로 춘배에게 보내도 춘배 입장에서는 동식이의 공개키로 안열리는 것을 확인하고 송신자가 동식이가 아닌 것을 판단해서 막히게 됩니다. 이렇게 송신자가 누군지를 알기 위해 잠가서 전자서명으로 사용합니다.
RSA방식을 정리하자면,
- 공개키, 비밀키 두 개의 키를 이용해서 데이터를 교환한다.
- 송신자는 수신자의 공개키로 암호화를 하고, 자신의 비밀키로 전자서명을 통해 보안적으로 사용한다.
- 수신자는 송신자의 비밀키로 잠긴 전자 서명을 송신자의 공개키로 열고, 수신자의 비밀키로 연다.
이러한 RSA방식을 AWS에서는 키 페어로 생성합니다. 위의 그림에서는 춘배가 받은 키페어를 춘배의 비밀 키라고 하겠습니다. 춘배가 AWS의 22번 포트로 비밀 키를 통해서 연결을 시도합니다. AWS 컴퓨터 내부에는 .ssh 폴더안에 Authorized-key라는 키가 존재하는데, 이 키는 접속하려는 클라이언트, 즉 춘배의 공개 키입니다. 해당 키로 접속으로 들어온 비밀 키에 대입해서 해제에 성공하면, 전자서명 인증완료로 세션이 생성됩니다. 이제 마음대로 원격 컴퓨터에 데이터든, 명령이든 할 수 있는 상태가 되었습니다.
참고 - 메타코딩 유튜브
'Project > AWS 및 배포' 카테고리의 다른 글
AWS - 3-1. 베이직 하게 배포해보기 - 백그라운드 실행, 로그파일 분리 (0) | 2024.01.31 |
---|---|
AWS - 3. 베이직 하게 배포해보기 - EC2 서버에 프로젝트 배포하기 (1) | 2024.01.31 |
AWS - 1. AWS에 대해서 (0) | 2024.01.30 |
DevOps 그리고 CI/CD에 대해서 (2) | 2024.01.30 |
배포란 무엇인가? (0) | 2024.01.30 |