AWS

IAM, EC2 관련 짧은 팁과 Security Group(EC2 방화벽)에 대해 알아보기

S_N_Y 2024. 3. 16. 12:39

 

추가적으로 알아두면 좋은 짧은 팁과

Security Group에 대해 조금 더 다뤄보려고 한다.

 

#0 그룹의 암호 정책 설정하기

IAM - 액세스 관리 - 계정 설정 - 암호정책 편집을 누르면 IAM에서 제공하는 기본값 옵션이 있고 사용자 지정 옵션이 있는데 좀 더 강한/약한 정책을 만들고 싶다면 사용자 지정 탭을 눌러 원하는 암호 강도와 요구사항을 선택할 수 있다.

 

#1 AWS 초기 예산 설정할 때 팁

가장 처음으로 접근했을 때의 주의사항인데 오른쪽 상단 계정을 누르고 결제 및 비용 관리를 누르면 'IAM사용자'로 로그인하면 접근이 거부된다. 

처음일 때에는 'IAM 사용자'에게 설령 관리자 권한을 맡기더라도 결제 및 비용 관리 탭을 확인하려면 꼭 루트 계정에 로그인해야한다.

(나중에 접근 허용을 하면 IAM 사용자도 결제 탭에 접속할 수 있다)

 

#2 EC2 인스턴스 타입 컨벤션

m5.2xlarge라는 인스턴스 유형을 예로 설명해보겠다.

 

m : 인스턴스 클래스 - 범용의 인스턴스

5 : 인스턴스의 세대 (AWS가 하드웨어를 계속 개선해서 새로운 세대의 하드웨어를 출시)

2xlarge : 인스턴스 클래스 내의 사이즈 (크기가 크면 클수록 더 많은 메모리와 CPU를 가진다고 생각하면 된다)

 

#3 EC2 인스턴스 주변의 방화벽 - Security Group🛡️

Security Group은 AWS 클라우드에서 네트워크 보안을 실행하는데 핵심이 된다.

EC2 인스턴스에 들어오고 나가는 트래픽을 제어하고 그 안에 규칙을 만들 수 있다. 출입이 허용된 것이 무엇인지 확인하거나 IP주소를 참조해서 규칙을 만들 수 있다. (security group끼리 서로 참조할 수도 있다)

그림을 빌려 더 설명해보자면 컴퓨터에서 public internet(www)을 사용해 EC2 인스턴스에 액세스하려고 할 경우, EC2 인스턴스 주변에 security group을 생성해야 하는데 그게 바로 방화벽을 생성하는 것이다.

방화벽을 생성하면 Security group은 규칙을 갖게 된다. 그 규칙은 inbound traffic 여부인데 외부에서 EC2 인스턴스로 들어오는 것이 허용되면 outbound traffic도 수행할 수 있는 것이다.

 

더 자세히 알아보면 다음과 같다.

security group은 EC2 인스턴스의 방화벽이고 ports로의 액세를 통제하고 인증된 IP주소의 범위를 확인해서 이게 IPv4인지 IPv6인지 확인한다.

 

1) <방화벽의 기본 원리> ☑️

EC2 인스턴스가 있고 인바운드/아웃바운드 규칙이 있는 Security group 1이 있는데

인바운드 규칙에서 우리의 컴퓨터가 port 22에서 허용되면 트래픽은 컴퓨터에서 EC2 인스턴스로 이동할 수 있지만 내가 있는 IP주소를 사용하지 않는 다른 컴퓨터가 해당 EC2 인스턴스에 액세스하려고 하면 방화벽이 차단되기 때문에 액세스할 수 없고 타임아웃이 발생한다고 한다. 

default값인 아웃바운드 규칙은 모든 Security group의 EC2 인스턴스는 기본적으로 모든 트래픽을 허용해서 EC2 인스턴스가 웹사이트에 액세스하고 연결을 시도하면 Security group에서 허용하는 것이다..!

 

Security group에 관해서 더 알아야 할 것은 무엇일까?😶‍🌫️

여러 인스턴스에 연결할 수 있고 Security group과 인스턴스 간의 일대일 관계는 없다는 것이다. 인스턴스에도 여러 Security group을 연결할 수 있다. 그리고 Security group은 region과 VPC 결합으로 통제되어 있는데 그래서 region을 다른 곳으로 설정하면 새로운 Security group을 생성하거나 다른 VPC를 생성해야 한다.

그리고 알다시피 EC2 외부에 Security group가 있으니 트래픽이 차단되면 당연히 EC2 인스턴스는 확인할 수 없다.

 

+)

SSH 액세스를 위해 하나의 별도 Security group을 만드는게 좋다.

보통 SSH 액세스는 되게 복잡해서 별도의 Security group이 잘 완료됐는지 확인해야 한다.

 

2) < Security group이 다른 Security group을 참조하는 방법 > 🔰🔄🔰

EC2 인스턴스가 있고 Security group 1이라는게 설정되어 있는데 기본적으로 인바운드 규칙은 Security group1의 인바운드를 Security group2에 허용하는것이다.

 

왜 이렇게 사용할까?🤷‍♂️

다른 EC2 인스턴스를 생성하고 Security group2를 연결할 경우에 아까 설정한 보안 그룹 규칙으로 첫 번째 EC2 인스턴스로 정한 ports를 통해서 EC2 인스턴스가 바로 연결되도록 허용한다.

마찬가지로 Security group1에 연결된 다른 EC2 인스턴스가 있으면 이 인스턴스도 우리가 가진 인스턴스와 바로 통신하도록 허용한다. (EC2 인스턴스의 IP와 상관이 없다는 것 => IP를 신경 쓰지 않아도 되는 점이 굉장히 좋다)

 

3) < 자주 쓰이는 포트(ports) 🛜 알아보기 >

 

22 = 시큐어 쉘(Secure Shell - SSH) 포트 - 리눅스 인스턴스로 로그인 하도록 하는 포트

21 = 파일 전송 프로토콜(File Transfer Protocol - FTP) - 파일 공유 시스템에 파일을 업로드하는데 사용

22 = 보안 파일 전송 프로토콜(Secure File Transfer Protocol - SFTP) - SSH를 이용해 파일 업로드하는데 사용

80 = HTTP 포트 - 보안이 되지 않는 사이트에 액세스하기 위함

443 = HTTPS 포트 - 보안이 있는 사이트에 액세스하기 위함

3389 = 원격 데스크톱 프로토콜(Remote Desktop Protocol - RDP) - 윈도우 인스턴스에 로그인할 때 사용/윈도우 인스턴스용 RDP