새로운 프로젝트를 진행하며 AWS EC2 CI/CD 파이프라인 구축을 위해 진행하면서 발생하는 문제들을 분석하고 정리해보려고 한다.
발생한 문제 UNPROTECTED PRIVATE KEY FILE!

환경
1. Window 10
2. AWS EC2 Ubuntu 24.04 LTS
일단 한번 읽어보자
(경고: 보호되지 않은 개인키 파일!)
"Permissions for 'testkeypair.pem' are too open."
(testkeypair.pem 파일의 권한이 너무 많이 열려 있습니다.)
"It is required that your private key files are NOT accessible by others."
(개인키 파일은 반드시 다른 사람들이 접근할 수 없어야 합니다.)
"이 열쇠 주인놈은 관리 안하니까 위험해서 안쓸거임 ㅅㄱ"
SSH 클라이언트가 testkeypair.pem 파일을 확인해보니 주인이 아닌 다른 사람도 볼 수 있게 방치되어 있다고 한다
"엥 컴퓨터 주인은 나고 나밖에 안쓰는데?"
주인은 나 하나 아닌가? 하며 이해가 안될 수 있다. 그러나 우리는 개발자이고 운영체제(OS)에 대해 자세히 이해 하고 있어야 한다.
윈도우는 혼자 쓰는 컴퓨터라도 내부적으로 여러 가상 계정들이 시스템을 돌리고 있다.
Window는 너무 친절한 나머지 파일을 만들면 "나중에 다른 계정을 만들거나 시스템이 이 파일을 관리해야 할 수도 있으니, 일단 모두 읽을 수 있게 만들게?"라며 권한을 그냥 뿌려버린다!!
컴퓨터를 사용하는 입장에서 '나'는 하나지만 시스템은 두 가지의 모습으로 나를 바라본다.
SSH는 말한다. "야 니가 관리자 그룹 멤버인 건 알겠는데, '관리자 그룹 전체'에 이 파일 권한이 있으면 나중에 다른 관리자가 추가 되었을 때 그 관리자도 이 키를 볼 수 있잖아"
SSH(Secure Shell)는 이름에 부터 보안이 붙어있다.
이놈은 확고하게 보안을 중시하다보니
"열쇠관리 똑바로 못하는 놈이랑은 일 안할거다"라고 말하고 있다
SSH가 바라는건 단 한명의 주인이다
"이 .pem 파일은 오직 개인 사용자 한 명만 읽을 수 있도록 설정해" 라는 것이다
그럼 권한을 한번 정리해보자
:: 1. 파일의 소유권을 현재 사용자에게 가져온다
icacls "파일명.pem" /grant:r %username%:F /inheritance:r
:: 2. 다른 모든 계정(Authenticated Users 등)의 권한을 제거합니다.
:: (위 명령어의 /inheritance:r 옵션이 이미 상속을 끊어주지만, 확실히 하기 위해 한 번 더 수행)
icacls "파일명.pem" /remove "NT AUTHORITY\Authenticated Users"
icacls "파일명.pem" /remove "BUILTIN\Users"
보안

고급

상속 차단

나빼고 전부 삭제
System도 남겨두면 안된다!

정상적으로 접속된다

끝!
내긴 아쉬우니
리눅스나 Mac 같은 Unix 계열 OS에서는 윈도우 처럼 "동아리냐 개인이냐 상속이냐 아니냐"를 복잡하게 따지지 않고 아주 단순한 9비트 체계로 표현한다.
Unix 시스템은 터미널에서
chmod 400 testkeypair.pem
한줄이면 끝난다. 물론 끝난다 로 끝내면 안된다.
Unix에서 파일 상세 정보를 보기 위해 ls -l을 치면 --rwxr-xr-같은 복잡한 문자열이 나온다.
이걸 끊어서 보면
-면 파일, d면 디렉토리(폴더)이다.각 권한은 고유한 값을 가진다(규약)
왜 4 2 1임?
2진법을 써서 그렇다. 비트가 켜져있으면 1 꺼져 있으면 0
| 권한 (rwx) | 2진수 | 합계 | 의미 |
|---|---|---|---|
| r-- | 100 | 4 | 읽기만 가능 |
| -w- | 010 | 2 | 쓰기만 가능 |
| --x | 001 | 1 | 실행만 가능 |
| rw- | 110 | 6 | 읽기 + 쓰기 |
| rwx | 111 | 7 | 모든 권한 (읽기+쓰기+실행) |
정처기 공부할 때 나오는 그것이다
몇개만 좀 보고 가자
chmod 777: 누구나 쓰고 읽고 가능(당연히 위험) chmod 755: 주인은 다 할 수 있고 외에는 읽고 실행만가능(실행파일이나, 디렉토리의 기본 설정)chmod 644: 주인은 읽고 쓰기 가능하지만 외에는 읽기만 가능(설정 파일 배포시에 많이 사용)진짜 끝!