본문 바로가기

Cloud

AWS - Security group

Security Group = Firewalls

- AWS 네트워크 보안관리를 진행

- EC2 In-Bound, Out-Bound 컨트롤 규제

- 허용할 규칙 관리

- IP 주소를 참조하여 Security Group을 만듬

- 컴퓨터의 위치나 다른 보안 그룹끼리 서로 참조가 가능함

 

역할

- 포트규제

- IPv4인지 IPv6인지 체크(인증된 IP)

- In-Bound Network 통제(EC2 Instance로 들어오는 것을 규제함)

- Out-Bound Network 통제(EC2 Instance로부터 나가는 것을 규제함)

 

 

인스턴스와 보안그룹은 다대다 관계이기에 인스턴스에 여러 보안그룹을 붙일 수 있고 하나의 보안 그룹에도 여러 인스턴스가 붙을 수 있습니다.   VPC 결합으로 통제하고 있기 때문에, 새로운 지역, 새로운 보안그룹이면 VPC를 다시 만들어야 합니다.

 

보안 그룹에 보안그룹 참조하기

이렇게 한다면, 인증된 보안그룹이 참조 보안그룹으로 들어오기 때문에 어떠한 IP이든 상관없이 인증된 보안그룹(참조)의 인바운드로

정의된 IP라면 현재 보안그룹에 들어올 수 있습니다. (포트는 맞춰줘야 함!)

 

 

 

 

필히 알아야 하는 In-Bound 정의사항

SSH 22번포트 Linux에서 EC2 인스턴스로 로그인 하도록 함
FTP 21번포트 파일전송 프로토콜로, 파일 공유 시스템에 파일 업로드를 하는데 사용함
SFTP 22번포트 SSH를 이용해서 파일을 업로드 하기 때문에 22번 포트를 쓰고 보안 파일 전송 프로토콜임
HTTP 80번포트 보안이 되지 않는 사이트에 접속(Http://~~)
HTTPS 443번포트 보안이 된 안전한 사이트에 접속(Https:// ~~)
RDP 3389번포트 원격 데스크톱 프로토콜로, 윈도우 인스턴스에 로그인할 때 사용

 


SSH 접속 방법

- Linux에서 서버 접근할 때 사용하며 SSH 프로토콜을 활용해서 EC2 인스턴스와 연결합니다.

MacOS Terminal > SSH를 통해 접속 EC2 Instance는 접속 허용(In-Bound에서 
SSH 22번 포트가 열려있는 상태라면)
Linux Terminal > SSH를 통해 접속 EC2 Instance는 접속 허용(In-Bound에서 
SSH 22번 포트가 열려있는 상태라면)
Window (OS < 10) PuttyGen > .pem --> .ppk로 생성 > Putty로 auth에 ppk
파일두어 접속
EC2 Instance는 접속 허용(In-Bound에서 
SSH 22번 포트가 열려있는 상태라면)
Window (OS >= 10) PowerShell에서 SSH를 통해 접속 
> .pem파일 권한 부여하고 관련 시스템 사용자, 관리자 제거
EC2 Instance는 접속 허용(In-Bound에서 
SSH 22번 포트가 열려있는 상태라면)

우선 맥과 리눅스 버전에서 SSH를 통해 인스턴스에 접속하는 방법을 알려드리겠습니다.

1) 터미널을 열어서 ssh를 진행한다. 

2) 명령어 안내 문구 등이 나오면 잘 되어 있는 것이기 때문에 접속이 가능하며 해당 작업을 하기 전에

물론 보안 그룹에서 ssh 22번 포트를 인바운드에서 열어줘야한다.

3) 터미널에 다음 명령어를 진행한다.

ssh -i <키페어(.pem)경로> ec2-user@<Public IP>

ssh 접속

 

앞서 다운받은 키페어(.pem)파일 경로를 넣어주고 Linux2로 인스턴스를 만들었기 때문에 ec2-user로 접속해야합니다.

Ubuntu일 경우는 ubuntu로 사용자 이름을 해주시면 됩니다.  이렇게 접속하게 된다면 처음 접속할 땐 오류가 날 것입니다.

해당 오류는 권한 관련 이슈로, pem파일에 모든 권한이 부여되어 있기 때문에 노출될 위험도 있고

보안적으로 좋지 않기 때문에 발생하는 것입니다.

이를 해결하기 위해서는 pem파일에 권한을 0400으로 주면 됩니다.

chmod 0400 <키페어(.pem) 파일경로>

 

이 해결 방법을 반드시 기억해두고, 해결한 이후 다시 명령어를 입력한다면 접속이 잘 될 것입니다.


 

 

다음으로는, Window os 10 미만인 경우입니다. 

이 경우에는 pem 파일을 private key로 변경 작업을 해야합니다.  이 작업이 앞서 보안 위험과 노출 문제를 해결하는 작업입니다.

이는 puttyGen을 이용해서 하면 됩니다.

pem 파일을 올리고 private key로 저장하도록  하면 되고 비밀번호 설정을 같이 한 다음에 ppk파일을 잃어버리지 않게 잘 저장해둡니다.

 

이후에는 Putty를 열어서 퍼블릭IP를 넣고 Session 쪽 Auth에 ppk 파일을 넣어둡니다.

접속 이름을 설정하고 해당 환경을 저장한 뒤 접속하면 됩니다.

Putty로 접속할 때 아이디와 비밀번호를 입력하는데 아이디는 ec2-user(Linux), ubuntu(Ubuntu)로 하고

비밀번호는 ppk설정할 때 정한 비밀번호를 입력하면 됩니다.

 

 

Window os 버전이 10 이상인 경우는 PowerShell을 열어서 작업합니다.

ssh를 입력했을때 명령어 소개 글이 나오게 된다면 ssh가 설치된 것이고 그대로 진행하면 됩니다.

macOS나 Linux에서 하듯 접속 명령어를 입력합니다.

ssh -i <키페어(.pem)경로> ec2-user@<Public IP>

이렇게 하게 된다면 마찬가지로 pem 키페어 파일이 모든 권한이 부여되어 있어서 오류가 발생할 수 있습니다.

이를 해결하기 위해서는 해당 pem파일의 속성을 들어가서 보안 탭으로 이동합니다.

보안 탭에 들어가서 고급으로 이동하면 키 소유자를 체크하는 부분이 있는데, 키페어에 정한 이름대로

현재 내 이름이 키 소유자로 되어 있는지 체크합니다.   되어 있지 않다면 내 이름(Principal)으로 변경합니다.

 

그리고 나를 제외한 다른 사용자가 접속하지 못하게 하기 위해서 권한이 부여된 시스템 관리자나 관리자 및 타 사용자는

제거해야하는데, 시스템 권한이 관리자 계정에 부여되어 있어서 삭제가 되지 않을 것입니다.

그럴 경우 시스템 권한을 상속한다는 체크박스를 해제하여 상속 비활성화를 만들고 나를 제외한 관리자 

시스템 관리자 및 타 사용자는 모두 삭제해주셔야 합니다.

삭제 이후에는 나에게 모든 통제 권한이 있는지 한 번 더 체크하고 안되어 있다면 부여해주시면 됩니다.

이후에 다시 파워쉘에서 ssh 명령어를 통해 접근한다면 인스턴스에 잘 붙어서 접속할 수 있을 것입니다.


 

EC2 Instance로 접근하기

인스턴스 > 연결
사용자이름 설정 > 연결

 

EC2 Instance 연결 방법은 웹 콘솔에서 그냥 진행하면 됩니다.

인스턴스 선택 후 연결 버튼을 클릭한 다음 사용자 이름을 리눅스는 ec2-user, 우분투는 ubuntu를 입력해서 연결만 하면 자동으로 접속합니다.  웹 콘솔을 통해서 접속했기 때문에 별다른 보안 이슈는 발생하지 않습니다.


SSH Trouble Shooting

1) 연결 타임아웃 이슈 : 보안그룹 문제(방화벽 이슈)

> EC2 인스턴스에 보안그룹이 잘 붙어져 있는지 확인해야 합니다.

> SSH 인바운드가 잘 열려져 있는지 확인(22번포트)

 

2) 연결 타임아웃 이슈(2) : 1을 했음에도 불구하고 문제 발생

> 회사 방화벽이나 다른 외부적인 통제이기 때문에 EC2 인스턴스를 이용해서 접근

 

3) SSH 윈도우 작동실패

> Putty를 사용하거나 EC2 Instance를 통해 연결합니다.

 

4) 연결이 거부되었습니다.

= 인스턴스 연결은 가능하지만 실행중인 SSH유틸리티가 없단 것으로, 인스턴스를 재시작하면 됩니다.

그래도 되지 않는다면, 인스턴스를 종료하고 아마존 Linux2로 새 인스턴스를 시작하면 됩니다.

 

5) Permission Denied

> 잘못된 보안키를 사용하거나 보안키를 가지고 있지 않은 경우

> 잘못된 사용자 이름을 입력한 경우

> pem 보안키가 권한이 too much 하게 부여된 경우

 


EC2 인스턴스에 붙어서 클라우드에 접속하게 되면 aws 서비스 또한 사용할 수 있습니다.

예를 들어, IAM 서비스를 이용한다 했을때 그냥 인스턴스 붙어서 접속해서 aws 관련 명령어를 입력하면 권한 문제가 발생해서

원하는대로 업무 수행이 되지 않을 것입니다. 

이를 위해서 인스턴스에 보안 탭에 IAM 역할 부여가 되어 있는지 확인해야 합니다.

앞서 IAM할 때 역할 쪽에서 권한 부여를 해서 역할 하나 만든 것이 있습니다. (이전 포스팅 참조)

https://dev-haams.tistory.com/19 

 

Access Key & IAM Role & IAM Service

Access Key AWS Cli를 이용해서 접속할 때 Cli포스팅에서 제시한 AWS Cli를 OS에 맞게 설치하고 명령어를 입력합니다. 저는 Mac OS여서 AWS Cli를 설치한 다음 Terminal를 통해서 접속하였습니다. [haams@haamsui-Mac

dev-haams.tistory.com

이 Role을 붙여 EC2 인스턴스가 IAM Service를 사용할 수 있도록 하면 됩니다.

EC2 Instance > IAM 역할 붙이기

 

이렇게 한다면 ssh을 이용해서 인스턴스에 붙을 경우 아래 그림처럼 aws IAM 서비스를 이용할 수 있을 것입니다. 

EC2 - IAM 서비스이용

 

반응형

'Cloud' 카테고리의 다른 글

AWS - EBS  (0) 2023.01.17
AWS - EC2 Instance 구매 옵션  (0) 2023.01.17
AWS - EC2  (0) 2023.01.17
Access Key & IAM Role & IAM Service  (0) 2023.01.17
AWS - CLI & 사용자 정보 보호  (0) 2023.01.17