BLOG
본 글은 2019년 7월 8일 게재한 ‘리프트 앤 시프트’ 방식으로 SFTP 서버를 AWS로 마이그레이션 하기’ 블로그 글의 업데이트 버전입니다.
다양한 산업군 및 지리적 위치에 있는 조직은 중요한 비즈니스 워크플로우의 일부로서 데이터를 교환합니다. 파일 전송 인프라와 높은 자본 비용을 관리해야 하는 운영 부담으로 인해 IT 예산이 낭비되는 경우가 종종 있습니다. 더 큰 문제는 이 예산 낭비로 인해 비즈니스 비즈니스 차별화를 위한 프로젝트 재원을 확보하지 못한다는 점입니다. AWS는 기업이 이러한 과제를 해결하고 주요 인사이트에 직결되는 데이터를 도출할 수 있도록 AWS SFTP (AWS Transfer for SFTP)를 출시했습니다. 고객은 AWS SFTP를 통해 기존 파일 전송 인프라를 클라우드의 스토리지가 지원하는 완전 관리형 서비스로 교체할 수 있습니다. 이 서비스의 주요 목표 중 하나는 워크플로우 마이그레이션이 최종 사용자(SFTP 클라이언트 사용자)에게 방해가 되지 않도록 하는 것입니다. 따라서 AWS는고객이 애플리케이션 또는 계정 구성을 변경하지 않고도 서비스로 마이그레이션할 수 있도록 “리프트 앤 시프트”를 지원하는 기능을 설계했습니다.
SFTP 클라이언트의 관점에서 서버의 “ID”는 DNS 이름, IP 주소 및 SSH 호스트 키의 세 가지 요소로 구성됩니다. 오늘 블로그 포스팅으론 이러한 마이그레이션 진행 중, 기존 서버 ID를 어떻게 필요한 만큼 가져올 수 있는지, 그 방법에 대해 다뤄보겠습니다.
DNS 이식성
가장 간단한 리프트 앤 시프트 시나리오는 단순히 AWS SFTP 서버와 새 서버의 엔드 포인트를 가리키는 DNS CNAME 별칭을 생성하는 경우입니다. AWS SFTP 콘솔에서 현재 ISP 또는 Amazon Route 53을 통해 CNAME 레코드를 생성할 수 있습니다.
새 DNS 레코드를 게시하기 전에 새 서버에서 각 사용자의 계정을 만들어야 합니다. 이 작업을 수행하는 방법은 서비스를 사용한 최종 사용자 ID 관리 여부 또는 인증 및 액세스를 위한 고유 (사용자 지정) ID 공급자 관리 여부에 따라 다릅니다 .
온-프레미스 서버에서 자격 증명을 가져온 후 기존 홈 디렉토리를 미러링 하도록 폴더를 설정할 수 있습니다. Amazon S3 버킷 자체에서 이 작업을 수행하거나 AWS SFTP의 “HomeDirectoryMappings”기능을 사용하여 각 SFTP 사용자에 대한 논리적 디렉토리 구조를 생성할 수 있습니다. 어느 쪽이든 사용자가 SFTP 클라이언트와 연결하면 동일한 환경을 볼 수 있습니다.
IP 주소 이식성
SFTP 사용자가 엄격한 화이트리스트 기능을 가진 방화벽 뒤에 있으면 DNS 이식성이 충분하지 않을 수 있습니다. 서버와 연관된 실제 IP 주소는 유지되어야 합니다. 이는 AWS SFTP에서 Amazon EC2 Networking의 BYOIP (Bring Your Own IP Address) 기능으로 가능합니다. 이를 통해 온 프레미스 네트워크에서 AWS 계정으로 퍼블릭 IPv4 주소를 가져올 수 있습니다. 주소는 계속 소유한 상태이지만 AWS는 인터넷을 통해 전송합니다.
.
기존 IP 주소를 새 서버에 바인딩하는 몇 가지 단계가 있습니다.
- BYOIP 설명서에설명된 대로 IP 주소를 VPC로 가져옵니다. 고가용성을 위한 AWS 모범 사례는 일반적으로 각 가용 영역에 하나씩 여러 개의 IP 주소를 사용하는 것입니다. 기존 사용자 기반의 제약 조건에 따라 적절하거나 적합하지 않을 수 있습니다.
- 필요한 경우 필요한 서브넷 수로 새 VPC를 생성하세요. 또한, 인터넷을 통해 서버에 액세스할 수 있으므로 (“인터넷 연결”) VPC에인터넷 게이트웨이가연결되어 있어야 합니다. 또한 서브넷의 라우팅 테이블은 해당 인터넷 게이트웨이를 통해 전달해야 합니다.
- 엔드 포인트가 VPC에서 호스팅되는 인터넷 연결 서버를만듭니다. 이미 서버를 만든 경우 먼저 서버를 중지한 다음 엔드 포인트 유형을 변경할 수 있습니다.
- 서버 생성 시 VPC의 기본 보안 그룹이 엔드 포인트에 자동으로 할당됩니다. 엔드 포인트와 연관된 보안 그룹을 수정하여 액세스할 수 있는 클라이언트의 소스 IP 주소를 추가할 수 있습니다. 서버에 연결할 수 없는 경우 보안 그룹 또는 엔드 포인트 서브넷 주변의 NACL에 지정된 규칙이 클라이언트 액세스를 허용하는지 확인하세요.
참고: AWS SFTP는 표준 SSH 포트 (TCP / 22)에서 SFTP 연결을 수신합니다. 기존 온-프레미스 서버가 다른 포트에서 수신 대기하고 해당 동작을 유지해야 하는 경우 여기의 지시 사항에 따라 수행할 수 있습니다. 궁극적으로 퍼블릭 인터넷과 서버의 VPC 엔드 포인트 간의 브리지로 Network Load Balancer를 사용하여 리스너 포트를 변경해야 합니다.
호스트 키 이식성
이를 통해 기존 SFTP 서버의“ID”( SSH 호스트 키) 의 세 번째이자 마지막 부분이 나타납니다 .
SFTP 클라이언트는 일반적으로 서버에 공개할 때 서버의 공개 키를 기억합니다. 키가 변경되면 연결이 안전하지 않을 수 있으며 클라이언트는 다음과 같은 결과에 대해 경고를 보냅니다.
$ sftp -i wayne-transfer-key1 wayne@my-sftp-server.example.com
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:uRrhorK4Le+WPBS1ihytaHDHerBB+ZQi2Uq4kkuOrlU.
Please contact your system administrator.
Add correct host key in ~/.ssh/known_hosts to get rid of this message.
Offending RSA key in ~/.ssh/known_hosts:145
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
Permission denied (publickey,password,keyboard-interactive).
Couldn't read packet: Connection reset by peer
$
고객은 AWS SFTP를 통해 원하는 호스트 키로 서버 를 생성하거나 업데이트할 수 있습니다. (호스트 키를 제공하지 않으면 AWS SFTP는 서버를 생성할 때 생성합니다) AWS SFTP 콘솔에서는 호스트 키 업데이트 작업을 사용할 수 없지만, API 또는 CLI를 통해 수행할 수 있습니다.
$ aws transfer update-server --server-id s-9b87ba0ffcee4d158 \
--host-key file://old-server-host-key
{
"ServerId": "s-9b87ba0ffcee4d158"
}
참고: RSA 키 세트의 개인 정보 부분은 신중히 보호해야 합니다. 특히 호스트 키에 중요합니다. 호스트 키가 손상된 경우 모든 사용자에게 로테이션이 중단됩니다. 이에 따라, 키 파일을 업로드하고 확인하자마자 키 파일의 임시 사본을 삭제하는 것이 좋습니다.
$ aws transfer describe-server --server-id s-9b87ba0ffcee4d158 \
--query Server.HostKeyFingerprint
"SHA256:FU8AqSf/Cu/wxT810IZq5DA74uYV4CGBKuGpsSiz4NY="
$ ssh-keygen -l -f old-server-host-key
2048 SHA256:FU8AqSf/Cu/wxT810IZq5DA74uYV4CGBKuGpsSiz4NY
$ rm old-server-host-key
안전한 곳에 개인 키 사본을 보관하세요. 업로드된 개인 키 자체는 AWS SFTP 서비스에서 검색할 수 없습니다.
이전 개인 키가 설치되면 리프트 및 시프트가 완료됩니다. 기존 사용자는 서버가 클라우드로 마이그레이션되었다는 사실을 인식하지 않고 항상 있는 것처럼 서버에 계속 연결합니다.
$ sftp -i wayne-transfer-key1 wayne@my-sftp-server.example.com
Connected to my-sftp-server.example.com.
sftp>
글을 마치며…
오늘은 SFTP 서버를 AWS로 마이그레이션하는 동안 기존 서버의 많은 정보를 전달하는 방법에 대해 설명해 드렸습니다. 여기에는 고유한 호스트 이름, 서버 엔드 포인트 IP 주소 및 호스트 키가 포함됩니다. 이 모든 것을 가지고 있으면 SFTP 사용자에게 지장을 주지 않으면서 SFTP 서버를 원활하게 마이그레이션할 수 있습니다. SFTP 서버를 AWS로 성공적으로 옮겼다는 것을 인식하지 못하고 항상 파일을 계속 연결하고 액세스합니다.
이렇게 되면제 Amazon S3에서 데이터를 사용할 수 있으므로 AWS에는 처리, 분석, AI / ML 등을 위해 이 데이터를 언락할 수 있는 다양한 옵션이 있습니다!
현재 Amazon S3에서 데이터를 사용할 수 있게 되면 AWS에서 처리, 분석, AI/ML 등을 위해 이 데이터를 활용할 수 있는 여러 가지 옵션을 이용할 수 있습니다.
지금 바로 SFTP 콘솔용 AWS Transfer를 방문하여 시작해 보십시오!
원문 URL: https://aws.amazon.com/ko/blogs/storage/lift-and-shift-migration-of-sftp-servers-to-aws/
** 메가존클라우드 TechBlog는 AWS BLOG 영문 게재 글 중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 개제하고 있습니다. 추가로 번역 및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS 페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달 드리도록 하겠습니다.