본문 바로가기

AWS/EC2

EC2(Linux) 사용자 별 .pem 파일 생성하기 및 ec2-user 비활성화

안녕하세요.

오늘은 EC2(Linux)를 생성할 때, 기본적으로 생성되는 ec2-user와 ec2-user에 맵핑되어 있는

Default .pem 파일을 비활성화 하고, 사용자별로 .pem 파일을 만들어주도록 하겠습니다.

 

이렇게 하는 이유는, 보안상 FM은 서버 한대당, 서버의 관리자 한명마다 고유한 .pem 파일을

갖도록 하는 것입니다.

또한, Default User인 ec2-user의 경우에 활성화가 되어있다면, 악의적인 사용자 입장에서는

너무나 좋은 먹잇감이겠죠. ID, Password 다 뚫어야 하는데 그 중 ID 부분은 이미 알아낸거나 마찬가지니깐요.

 

이러한 이유로 사용자 별로 .pem 파일을 만들어 사용해보도록 하겠습니다.


* 테스트환경은 Amazon Linux2를 사용했으며, Instance 생성 과정은 생략하도록 하겠습니다.

 

먼저 Default user name인 ec2-user와 생성한 키페어를 가지고 Instance 내부로 접속합니다.

이후, /etc/group 을 확인하시면 알 수 있듯이, ec2-user는 wheel 그룹에 속해있어, Super user의 권한을

사용할 수 있도록 되어있습니다.

 

[ec2-user@localhost ~]$ sudo cat /etc/group | grep ec2-user

 

 

Default 설정 값.

 

우선 Default user인 ec2-user를 사용하여 새로운 사용자와 사용자에게 새로운 .pem 키를 할당 해주고,

wheel 그룹에 넣은 후에 ec2-user를 비활성화 하겠습니다.


먼저 새로운 사용자를 만들고 패스워드를 생성한 후, 이 사용자로 로그인 하여 홈 디렉터리로 이동합니다.

 

[ec2-user@localhost ~]$ sudo useradd junhyeong
[ec2-user@localhost ~]$ sudo passwd junhyeong

New password:
Retype new password:
passwd: all authentication tokens updated successfully.

[ec2-user@localhost ~]$ sudo su junhyeong
[junhyeong@localhost ec2-user]$ cd ~

 

다음은 ssh-keygen 명령어를 사용하여 키를 생성합니다.
Enter passphrase 부분은 키 인증을 할 때, 패스워드를 입력하게 하려면 작성해주시면 됩니다.

그냥 Enter 치시면 패스워드는 생성되지 않습니다.

저는 모두 Enter쳐서 Default로 생성 했습니다.

 

[junhyeong@localhost ~]$ ssh-keygen -t rsa -b 2048

Generating public/private rsa key pair.
Enter file in which to save the key (/home/junhyeong/.ssh/id_rsa):
Created directory '/home/junhyeong/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/junhyeong/.ssh/id_rsa.
Your public key has been saved in /home/junhyeong/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:cxNhrVAI1AzX1x8v7aJ67FCbNlcABpBKTP2EuaGbjZo junhyeong@ip-100-100-1-114.ap-northeast-2.compute.internal
The key's randomart image is:
+---[RSA 2048]----+
|     +=*oO=oo.   |
|      o.@.ooo... |
|     . o *.o  .oo|
|      o . o.  ..+|
|       =S o .  o.|
|      + .o o o...|
|     o    ..=... |
|    E      o+o   |
|          .+.    |
+----[SHA256]-----+

 

여기서 주의 할 점은 Amazon Linux2 sshd_config의 AuthorizedKeysFile 경로는
Default가 .ssh/authorized_keys 이기 때문에, 해당 파일 이름으로 Public 키 파일을 만들어야 합니다.
또한 허가권도 600로 변경합니다.

 

우리는 위에서 id_rsa 이름으로 생성했습니다.

 

[junhyeong@localhost ~]$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys
[junhyeong@localhost ~]$ chmod 600 .ssh/authorized_keys

 

다음은 Private key file의 내용을 Local PC로 복사하여 옮기거나, SFTP 툴을 사용하여 .ssh/id_rsa 파일을 옮깁니다.

저는 전자를 사용하겠습니다.

 

[junhyeong@localhost ~]$ cat .ssh/id_rsa

-----BEGIN RSA PRIVATE KEY-----
EXAMPLEtestAQEA6ET1Xlqp6MCZxJ6IjpBxD+ihbZgr6myQ3xlAwLo2Bj9Es45r
g95+SuKNM9SwIk0UXsadfcvasdji9r7qtwMHMS5t/0zN2y1nJ4ncxPU4dQi/M
9Q3VvQvUepaHEy1CU+hvho8A8vi+iWz3YI2MEjUhufxI3SqaO9PJoTxgr2UiK585
gh86b/ZoL1BwZoA72DxBSX/v7J8UljVgKGUCxs7wmpImS0eRxHoFBxqBSVZM35LD
AzQVTSe7213sfdahdgMQqKiUbZnsUXdjAso2WRXr+6gMGG0Dm9Xlu194KmO+RKIO
DWrQHuXiBmAVSnRfjK9tk8WHVab8mXVGHe/MtwIDAQABAoIBAHAf4edDkyQl3dUZ
xsgzmDDa1xrFy+VltWXNlgGzoqLPZgXb6bEF9ieGSC3OLZzRYtV5vyte2Lm5vyzq
dT9gucIEi++vyDwXavBtjtTBP0bd76fk1Wcy34xcKp1nDxvFzHAfE798RzQDuk8z
CBRXIFglx/s1e6MwjrX03i/0qqPgHeAz9VLiC2lZLg3yDd8moNrVuwGjagV2FyYA
40Z8nBLDY2HrZtbMG5Bgm9OUx4zWeqj+GHMDDLTeyU9cLsifn2AryQ68HV2BcPvA
b2cS3pwpfXkXc7W9MZthSRXRcTFaRujQo8ImlOszSV5nEryMHuUPTrsrhRt/4t2S
M3MJWakCgYEA+wuw5fl0pETn2hfffRnLZrOP4hmaXmyKjGfMeE/XwCBE5LULiR0y
bRIlSyXVUNdSOo9lIUZvs+UpWGOGpitr8LnylflSo63edFkYEtXgllODtKZzRVIa
iIfritORx9OJ4uyTa2fsadgewerqwedsgsdaraseCiZUp3xTwzj6VZUCgYEA7Npo
WrZqE5JT3ba6LKs01Bh9jdNAHDPlJDj+WcZ5xVJlpf6BxuyICzpR+SXsmWg3bRVF
oOMJiQQlJWSaLkuiWVLQLZDgdoaIciii716Faz0e2KmKFv7DYfsCgV1r5kGrxZ3k
mh+HNleGe78T2NqxYEPeeS0W7UnSgOUP9cWILhsCgYEArMN96LYEVGvrFsapEaGn
vbTCxvmRp3uQ2VExgHaJ5nkOkEobdy+1nSQIsC+IHosf1pcKJJ0hkC6bhm1vo3ls
XgzJafZbrbKgzXbmv0eauDkfATovR7xZ8C2Bplc1Esx8LsNaLGI3f4K89HVEDb5h
UiNlODmf4aJBTcWcq1PRywUCgYEA2ufliOmNUrdsMb9/hGdb9ScJa7oyR56jCn5u
flTVGM1VyzxVf5//ALmPJ8GoUgSjLXt6lf8gQfWFy3CWm3EmBH5oj6SWAJXIqBHs
vWVT1FByIPdY/HXL6NPQdfX9EpvhgUy0CspW8p+kWNy6IDPHulwf00kcJoWTO7P5
s0I04b8CgYAy7LFJA7zViHcUDF8myzalEBn6hScDCT8KMET9nXUSZZH4nohlCm8h
MAtmxNts8f3TrUaBLegSsKiyB+e3HQXcLdLYbCayzFNIDBTqlzgqVPxUUCcKsM/5
CluTBg26wEbnNV9OhWsO/yjLPG/cYXl0GU/Rz2ttgCxPTvqBlPlxiw==
-----END RSA PRIVATE KEY-----

 

위와 같은 내용을 복사하여 Local PC의 example.pem 과 같은 이름으로 저장합니다.

 

example.pem

Linux에 접속하기 위해서는 .pem 파일을 .ppk 파일로 변환해주어야 하기에 저는 PuTTYGen을 사용하여 변환 했습니다.

 

example.ppk

위의 .ppk 파일을 이용해서 Instance에 접속하시면 정상적으로 로그인 가능하십니다.


다음은 생성한 junhyeong 사용자를 wheel그룹에 넣어주겠습니다.

 

[ec2-user@localhost ~]$ sudo gpasswd -a junhyeong wheel

 

이후, junhyeong 사용자로 sudo 명령어가 정상적으로 사용 가능한지 테스트 하겠습니다.

 

[junhyeong@localhost ~]$ sudo passwd root

[sudo] password for junhyeong:
Changing password for user root.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

정상적으로 테스트가 되었다면, 마지막으로 기존 ec2-user의 Public Key 파일의 이름을 바꾸어
아예 접속을 못하게 하겠습니다.

혹은 사용자의 Shell을 nologin으로 바꾸는 방법 등 여러 방법이 있습니다 ^^

 

[ec2-user@localhost ~]$ mv .ssh/authorized_keys .ssh/NOT-USED_authorized_keys

[ec2-user@localhost ~]$ usermod -s /sbin/nologin ec2-user

 

 

비활성화

 

 

이상으로 default 계정인 ec2-user의 사용을 제한하고, 새로운 OS 계정과 해당 OS 계정의 Key까지 생성해봤습니다.

 

궁금하신 사항은 댓글 남겨주세요 ^^

 

감사합니다.