최근 코로나 바이러스의 확산으로 인하여 원격 재택 근무 환경 구축에 대한 수요가 증가하고 있습니다. 하지만 전사적인 원격 근무 체계가 구축되어 있지 않은 상태라면 보안 요건을 충족하면서 단기간에 이를 마련하는 것은 어려운 일입니다. 특히 보안 담당자의 관점에서 재택 근무 환경이 문제가 되는 것은 보안을 사내 환경 수준으로 유지하기 어렵다는 점입니다.
사내에서 사용하던 컴퓨터를 그대로 반출하여 외부에서 사용할 경우 외부 인터넷에 대한 무분별한 접근을 막기 어렵고 컴퓨터 내의 사내 정보 유출을 방지하기 힘듭니다. 이 문제를 해결하기 위해서는 회사의 모든 정보 자산이 안전한 환경에 저장되어 있어야 하고, 사용자는 철저한 접근 제한 하에서 검증된 기기를 통해서만 허가된 자원에 접근할 수 있어야하며 해당 기기에서는 정보 유출 (외부망 접속, 복사/붙여넣기, 외부 저장 장치로의 백업, 외부 전송 등) 행위가 원천적으로 차단되어야 합니다. 단순히 VPN만을 이용하여 사내 정보 시스템에 접근하도록 허용할 경우 이러한 문제가 특히 우려된다고 볼 수 있습니다.
AWS WorkSpaces를 활용하면 사용자가 인증된 기기를 통해서 workspace에 접속해야만 회사의 정보망에 접근할 수 있도록 간편하게 VDI (virtual desktop infrastructure) 환경을 생성할 수 있습니다. 또한 고성능의 업무용 컴퓨터를 매번 구매하는 대신 원격 접속을 위한 저렴한 Windows 또는 Mac 노트북을 활용하여 IT 예산을 절감할 수 있습니다. 이번 글에서는 WorkSpaces를 사용하여 높은 보안 수준을 유지하면서 비용과 인력을 최소화하여 원격 근무 환경을 구축하는 방법에 대해서 소개하겠습니다. IT 운영 경험 및 기존에 AWS를 사용하셨던 분이라면 쉽게 이해하실 수 있을 것입니다.
인증된 기기만이 WorkSpaces에 접근하도록 설정하기 위해서는 사용자별로 인증서가 발급되어야 합니다. CA 인증서를 이용하여 사용자 인증서를 발급할 수 있습니다. CA 인증서는 OpenSSL을 사용하여 생성할 수 있습니다. 여기서는 Linux 또는 Mac 기기에서 CA 인증서를 생성하는 방법을 소개합니다.
1) HOME 및 KEY_DIR 디렉토리 생성
예: $ mkdir /path/to/home/ && mkdir /path/to/home/certs/
예시들의 /path/to/home을 실제 사용하실 경로로 전부 대체하십시오.
2) 비어있는 index.txt 파일을 KEY_DIR 내에 생성
예: $ touch /path/to/home/certs/index.txt
3) 사용자 인증서 시리얼 넘버를 저장할 파일을 KEY_DIR 내에 생성
예: $ echo “01” > /path/to/home/certs/serial
4) 첨부된 ssl.cnf 파일을 KEY_DIR로 이동
첨부된 ssl.cnf 파일은 간편한 인증서 생성을 위한 OpenSSL 환경 설정 파일입니다.
예: mv ~/Downloads/ssl.cnf /path/to/home/certs/
5) 이동한 ssl.cnf 의 설정을 업데이트
(4)에서 이동한 ssl.cnf을 열고 HOME, KEY_DIR, RANDFILE의 경로를 변경합니다.
HOME의 경로가 /home/gopax/CA라면, KEY_DIR은 /home/gopax/CA/certs, RANDFILE은 /home/gopax/CA/.rnd 가 됩니다.
6) KEY_DIR로 이동
예: $ cd /path/to/home/certs/
7) CA 인증서의 keypair 생성
예: $ openssl req -x509 -newkey rsa:2048 -sha256 -extensions v3_ca -days 730 -outform PEM -out RootCA.crt -keyout RootCA.key -config ssl.cnf
위 명령어 실행 후 PEM pass phrase 및 인증서에 등록될 정보들을 입력하고 나면 KEY_DIR에 RootCA.crt와 RootCA.key 파일이 생성된 것을 확인할 수 있습니다. 이 파일들은 7.에서 사용자 인증서를 발급하기 위해서 사용됩니다.
8) CA key의 파일 접근 권한 설정
key 파일의 변경 및 유출을 막기 위해 접근 권한을 안전하게 변경합니다.
예: $ chmod 600 RootCA.key
9) 생성된 인증서 확인
예: $ openssl x509 -in RootCA.crt -text -noout
위 명령어를 실행하여 X509v3 extensions -> X509v3 Basic Constraints의 값이 CA:TRUE로 출력되는 것을 확인합니다.
원격지에서 접근을 허용할 네트워크 환경을 미리 설정합니다.
이미 사용하시던 VPC에 접근하도록 하거나 새 VPC를 생성하시면 됩니다.
VPC 내에는 고가용성을 위해서 최소 2개의 subnet이 필요합니다. 1개의 subnet만을 사용하고 있었다면 새로운 subnet을 추가해줍니다.
마지막으로 새로운 security group을 생성하여 사용자들의 WorkSpaces 환경에 대한 inbound 및 outbound 트래픽 규칙을 적용합니다.
참고: VPC 설정 (https://docs.aws.amazon.com/workspaces/latest/adminguide/amazon-workspaces-vpc.html)
참고: security group 설정 (https://docs.aws.amazon.com/workspaces/latest/adminguide/amazon-workspaces-security-groups.html)
WorkSpaces를 사용하기 위해서는 AD(active directory) 설정이 필요합니다.
이미 사용하시고 있는 AD와 연동을 원하시면 AD Connector를 사용하시면 됩니다. 사용하시고 있는 AD가 없거나 연동을 원하지 않을 경우 AWS Managed Microsoft AD를 선택합니다.
2.의 VPC와 subnet을 사용하도록 설정합니다.
참고: directory 등록하기 (https://docs.aws.amazon.com/workspaces/latest/adminguide/register-deregister-directory.html)
WorkSpaces에 접근할 수 있는 IP를 제한할 수 있습니다. 개별 사용자의 원격지 IP를 등록하거나, VPN을 통해서만 접근하도록 제한할 경우 VPN 서버의 public IP를 등록합니다.
참고: IP access control group 설정하기 (https://docs.aws.amazon.com/workspaces/latest/adminguide/amazon-workspaces-ip-access-control-groups.html)
3.에서 생성한 directory의 설정을 변경하여 보안 정책을 적용합니다. 아래의 사항들을 적용하는 것이 권장됩니다.
1) Access to Internet
WorkSpaces의 subnet이 NAT gateway를 사용하는 경우 또는 외부 인터넷 접근을 차단하려는 경우 disable합니다.
2) Access Control Options
1.에서 생성한 CA 인증서를 import하고, 사용자들에게 지급할 기기에 따라 Only Allow Trusted Windows Devices to Access WorkSpaces 및 Only Allow Trusted MacOS Devices to Access WorkSpaces 옵션을 활성화합니다. 타 플랫폼들(Web Access, iOS, Android, ChromeOS, Zero Clients, Linux)에 대해서는 일괄적으로 block하는 것이 바람직합니다. 예외 적용이 필요할 경우 해당 플랫폼만 allow할 수 있습니다.
3) IP Access Control Groups
4.에서 생성한 IP access control group을 등록합니다.
참고: directory 세부 사항 변경하기 (https://docs.aws.amazon.com/workspaces/latest/adminguide/update-directory-details.html)
이제 1.의 CA 인증서를 이용하여 사용자 인증서를 생성합니다. 아래 예시에서 사용자에 따라 client.* 의 파일명을 변경하면 됩니다.
1) 1.의 KEY_DIR로 이동
예: $ cd /path/to/home/certs/
2) CSR 생성
예: $ openssl req -newkey rsa:2048 -keyout client.key -keyform PEM -out client.csr -outform PEM -nodes -config ssl.cnf
3) 사용자 인증서 생성
예: $ openssl ca -keyfile RootCA.key -cert RootCA.crt -in client.csr -out client.cert -config ssl.cnf
4) key와 certificate을 합쳐서 .pem 파일 생성
예: $ cat client.key client.cert > client.pem
5) Mac/Windows에서 사용할 수 있도록 .p12 형식의 인증서로 변환하기
예: $ openssl pkcs12 -export -in client.pem -out client.p12
사용자에게 지급할 원격 근무용 Windows 또는 Mac 노트북을 설정하는 방법입니다.
1) 인증서 준비
1. 7)의 RootCA.crt 파일과 6. 5)의 .p12 형식의 사용자 인증서 파일을 사용자 노트북으로 옮깁니다.
2) 인증서 등록
1)에서 옮긴 CA 인증서 및 사용자 인증서를 import합니다.
참고: Microsoft Certificate Stores (https://docs.microsoft.com/en-us/windows-hardware/drivers/install/certificate-stores)
참고: macOS Keychain Access (https://support.apple.com/guide/keychain-access/welcome/mac)
3) 사용자 환경 및 계정 권한 설정
WorkSpaces 클라이언트를 설치하고, VPN을 이용할 경우 VPN 클라이언트도 설치합니다.
사용자 계정은 관리자 권한 및 외부 연결 (USB, Bluetooth 등)을 비활성화하고, 실행 가능한 소프트웨어 및 접근 가능한 URL(AWS WorkSpaces 또는 VPN 서버)을 최소한으로 제한하는 것이 권장됩니다. 기본적으로 WorkSpaces 접근을 제외한 모든 행동을 차단하는 것이 바람직합니다.
참고: Windows용 WorkSpaces 클라이언트 설치 (https://docs.aws.amazon.com/workspaces/latest/userguide/amazon-workspaces-windows-client.html)
참고: macOS용 WorkSpaces 클라이언트 설치 (https://docs.aws.amazon.com/workspaces/latest/userguide/amazon-workspaces-osx-client.html)
사용자가 원격지에서 접근할 workspace를 생성합니다. 사용자의 업무 특성과 원격 근무 환경 운영 예산에 따라 적절한 bundle을 선택합니다. 1 vCPU & 2 GiB Memory의 value bundle부터 16 vCPU & 122 GiB Memory의 그래픽 작업용 bundle까지 존재합니다.
참고: AWS Managed Microsoft AD를 사용할 때 workspace 추가하기 (https://docs.aws.amazon.com/workspaces/latest/adminguide/launch-workspace-microsoft-ad.html)
참고: AD Connector를 사용할 때 workspace 추가하기(https://docs.aws.amazon.com/workspaces/latest/adminguide/launch-workspace-ad-connector.html)
참고: AWS WorkSpaces bundle (https://aws.amazon.com/workspaces/features/#Amazon_WorkSpaces_Bundles)
참고: 서울 리젼 AWS WorkSpaces 비용 (https://aws.amazon.com/workspaces/pricing/?nc=sn&loc=3)
원격 근무를 위한 모든 준비가 끝났습니다. WorkSpaces에 정상적으로 작동하는지 확인하고, 문제가 발생할 경우 AWS Support Center에 문의합니다.
참고: AWS Support Center (https://console.aws.amazon.com/support/home)
외부 접근이 차단된 private VPC에 사내 업무용 리소스(Jenkins, GitLab, 메일 서버 등)을 호스팅 하셨거나, IP 기반으로 사내에서만 접근할 수 있는 외부 클라우드 솔루션을 사용하셨던 경우에 WorkSpaces를 매우 유용하게 사용하실 수 있을 것입니다.
코로나 바이러스 사태가 조속히 마무리되길 기원하며, 이 글이 사태 극복에 도움이 되길 바랍니다.
감사합니다.
* 세계가 인정한 한국 최고의 거래소, 고팍스! 아래 링크를 클릭하여 지금 가입하시면 10,000원을 드립니다.
https://www.gopax.co.kr/signup?refCode=ABCXYZ
블록체인의 확장성(Scaling Blockchains) — 1 (0) | 2020.08.19 |
---|---|
리퀴드 사이드체인과 비트코인의 확장성 (0) | 2020.05.08 |
코로나 바이러스로 생각해보는 시스템 아키텍처, 원격 근무 환경, 오픈소스 (0) | 2020.05.04 |
코로나19 위기상황의 정보보호 위험관리 (0) | 2020.04.14 |
댓글 영역