밍비
프로그램의 편린
밍비
전체 방문자
오늘
어제
  • 분류 전체보기 (64)
    • Spring (2)
    • TIL (23)
    • 프로그래머스 (12)
    • Udemy (16)
    • Typescript (2)
    • MERN (1)
    • AWS (7)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • state 끌어올리기
  • 데이터 수정
  • useState
  • 리액트 프로젝트 만들기
  • 함수형 update
  • 네이버커넥트
  • AWS Regions
  • 수평 스케일링
  • DOM
  • react
  • useParams
  • useRef
  • 리액트 reducer
  • 한입크기로잘라먹는리액트
  • state 관리
  • API 호출
  • 리액트
  • 리스트 조회
  • 한입 크기로 잘라먹는 리액트
  • State 합치기
  • Edge Locations
  • Page Moving
  • 리액트 생애주기
  • useNavigate
  • Points of Presence
  • 컴포넌트트리
  • overflow-wrap
  • Availability Zones
  • 분산저장소
  • 서비스아키텍처

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
밍비

프로그램의 편린

AWS

[AWS] EC2 Security Group, 클래식 포트, SSH, EC2 시작

2024. 1. 25. 18:40
728x90

EC2 인스턴스 주변 방화벽
- Security Groups는 AWS의 네트워크 보안의 핵심
- EC2 인스턴스에 들어오고 나오는 트래픽 통제
- Allow rules만 포함: 출입이 허용된 것 알려줌
- IP주소나 security group 참조해 규칙 생성 (즉 내컴퓨터 위치나 다른 security group 참조. 그룹끼리 서로 참조도 가능)
ex) 컴퓨터에서 공공인터넷 이용해 EC2 인스턴스에 액세스 -> EC2 주변에 security group 생성해야됨 (이게 방화벽임) -> 그 security group은 *규칙을 가지게 됨

* 규칙: 인바운드 트래픽 여부를 결정. 외부에서 EC2 인스턴스로 들어오는게 (inbound 트래픽) 허용되면 EC2 인스턴스에서 인터넷으로 다시 가는것(outbound 트래픽)도 수행할 수 있음


Security Groups
: EC2 인스턴스의 방화벽
- Security Groups가 규제하는 것: 

1 포트접근, 

2 인증된 IP주소의 범위 (IPv4인지 IPv6인지 확인) 

3 inbound 네트워크 (외부에서 인스턴스로 들어오는 네트워크) 통제 

4 outbound 네트워크 (인스턴스에서 나가는 네트워크) 통제

- 또 알면 좋은 것들
  1. 여러 인스턴스에 붙을 수 있음. 인스턴스도 여러 security group에 붙을 수 있음
  2. region과 VPC의 조합으로 통제됨. region 바꾸면 security group 새로 만들거나 다른 VPC 생성해야됨
  3. Security Group은 EC2 밖에 있음. 트래픽 차단되어도 EC2 인스턴스는 그걸 확인 불가
  ✒️SSH 액세스를 위해 별도의 security group을 해놓는 게 좋음 (보통 SSH 액세스는 가장 복잡해서, 별도 보안 그룹이 잘 완료됐는지 확인해야함)
  4. http든 ssh든 EC2 인스턴스 접근 필요한데 타임아웃때문에 애플리케이션에 접속이 안된다면, 그건 100% security group 문제임

  5. 하지만 "Connection Refused" 에러가 뜬다면 security group은 통과했고 애플리케이션 문제거나 launch (실행)이 안됐거나 와 같은 이유임
  6. 모든 inbound 트래픽은 blocked (차단)되어있는게 기본값
  7. 모든 outbound 트래픽은 authorised (허용)되어있는게 기본값

다른 security groups로부터 security group 참조하는 방법
: 특정 security group으로부터의 inbound등을 authorise(허용)해서 그 그룹이 붙은 EC2 인스턴스가 내 EC2 인스턴스에 접근가능하게 함. load balancer에서 다룰 것

 

⭐️알아야 하는 포트들!!!⭐️
- 22번 => SSH (Secure Shell): 리눅스 인스턴스에 로그인하게 함
- 21번 => FTP (File Transfer Protocol): 파일을 file share (파일공유시스템)에 업로드
- 22번 => SFTP (Secure File Transfer Protocol): SSH를 사용해!! 파일 업로드. SSH 쓰기때문에 SSH와 같은 포트 사용
- 80번 => HTTP: unsecured websites 액세스
- 443번 => HTTPS: secured websites 액세스
- 3389번 => RDP (Remote Desktop Protocol): 윈도우 인스턴스에 로그인

 

클라우드 실행 시 유지보수 등을 위해 서버 내부와 연결하는법
-> 리눅스, 맥, 윈도우 10 이상 서버의 경우 "SSH"를 서버에 사용 가능
(PuTTY는 윈도우면 다돌아가서 윈도우 10 미만 서버의 경우 "PuTTY" 쓰면 됨)
-> SSH나 PuTTY 써서, SSH 프로토콜을 사용해 EC2 인스턴스에 연결하자
"EC2 Instance Connect" : 웹브라우저 이용해 EC2 인스턴스 액세스. 모든 운영체제에서 다돌아감

 

SSH란~??
: 터미널이나 커맨드로 원격 머신(서버) 제어하게 해줌

 

맥에서 SSH로 EC2 인스턴스 쓰는법
0. 인스턴스 pem파일에 있는 공백제거 명심하기.
1. pem파일을 원하는 위치로 옮기고
2. 터미널에서 해당 파일이 있는 디렉토리로 감
3. chmod 0400 EC2Tutorial.pem 해서 읽기권한 줌
4. ssh -i EC2Tutorial.pem ec2-user@[내 EC2 public IP주소]
=> The authenticity of host 'ip주소' can't be established. 이런 에러 뜨면 터미널에 ssh 초기화를 안해놔서 그런거임 yes 누르면 됨
=> 인스턴스 멈췄다 다시 run하면 public ip 바뀌는거도 명심하기!!

 

EC2 Instance Connect로 SSH 쓰기!!
1. 인스턴스 고르고 위에 있는 connect 누름
사용자이름은 디폴트로 ec2-user임. 왜냐면 우리가 Amazon Linux 2023으로 AWS에서 추측한 거임. ec2-user로 써야 작동함
SSH 키 옵션이 없음!!: 우리가 접속할 경우 임시 SSH 키를 업로드하는 식으로 접속할거라서


EC2 Instance Connect가 좋은 이유!!
- 내 세션이 CLI 없이 브라우저 안에 있기 때문에. 그래서 SSH 기능을 미리 쓰지 않고도 ping google.com 같은 명령어 실행 가능.
-> 당연하지만,, Security Rules에서 SSH 지우면 안들어가질거임

 

처음 SSH에서 aws iam list-users 명령 안됨 -> 그렇다고 aws configure 하면 절대안됨!!!!!!!!!
aws configure로 EC2 인스턴스에 개인정보를 그렇게 써두면 이 계정 상의 누구라도 다시 EC2 Instance Connect 등 이용해서 인스턴스에 접속, 인스턴스에 입력된 credentials를 회수할 수 있게됨...정말 위험하다
=> 대신 IAM Roles를 이용하자. aws iam list-users 명령의경우 IAMReadOnlyAccess니까 그거만 부여한 roles를 정의해 그걸 EC2 인스턴스에 연결. credentials를 제공하게 하자!
- 인스턴스로 가서, Action-Security-Modify IAM Role-role선택.저장
-> 이렇게하면 바로 됨!

 

EC2 인스턴스 구매 옵션...
- On-Demand 인스턴스: 단기 workload, 비용 예측 가능, 초단위 지불
- Reserved 인스턴스: 1년or3년 예약. 장기간 workload일때 합리적
- Convertible Reserved 인스턴스: 1년or3년. long workload지만 도중에 바꿀수있음
- Savings Plans: 1년or3년. long workload지만 달러 단위로 사용량 약정하는 것
- Spot Instances: 단기 workload, 싸지만 인스턴스 잃을 수 있음 (신뢰성 낮음)
- Dedicated Hosts: 물리적 서버 전체 예약. 인스턴스 배치 제어 가능
- Dedicated Instances: 다른 고객한테 우리 하드웨어를 공유하지 않음
- Capacity Reservations: 원하는 기간 동안 특정한 AZ(Availability Zone)에 용량 예약 가능

EC2 On Demand
- 사용한대로 지불 (리눅스,윈도우: 1분지나고 초단위로, 나머지: 시간단위로)
- 제일 비싸지만 upfront payment(초기비용) 없음, 장기 약정 없음
- short-term, un-interrupted workloads, 애플리케이션이 어떻게될지 예측못할때

EC2 Reserved Instance
- 온디맨드보다 훨씬 쌈 (72%할인)
- 특정 인스턴스 속성을 예약 (인스턴스 타입, region, tenancy (차용), OS)
- 1년or3년 지정. 선결제도 선택가능
- scope를 특정 region할지 zone할지(zone->AZ에있는 용량 예약)
- steady-state usage 애플리케이션에 적합 (ex: DB)
- 기간남은 Reserved Instance를 마켓플레이스에서 사고팔 수 있음


Convertible Reserved Instance
- 인스턴스 타입, 인스턴스 패밀리, OS, tenancy 변경 가능
- 유연해서 좀 더 비쌈 (66%할인)

 

EC2 Savings Plans
- 장기간 사용->할인많음(최대 72%-Reserved와 같음)
- 1년or3년동안 시간당10달러로 약정함
- 사용량이 한도 넘기면 On-Demand로 청구됨
- 특정 인스턴스, 패밀리, 리전으로 고정
- 인스턴스 크기, OS, Tenancy 전환 가능

EC2 Spot Instances (호텔 빈객실 싸게 경매하는거랑 비슷)
- 최대 90% 할인
- 최대 가격 지정, 그 가격 넘기면 인스턴스가 손실됨 -> 신뢰성 낮음
- 제일 cost-efficient
- failure 회복력 있는 Workload일 경우 유용 (ex: Batch jobs, Data analysis, Image Processing, 이외 분산 workload, 시작,종료기한 유연한 workload)
- DB처럼 중요한 데이터,작업에는 쓰면 안됨!!!⭐️

 

EC2 Dedicated Hosts
- 내 use case 전용으로 쓰이는 EC2 인스턴스 용량을 가진 물리적 서버를 받음, 즉 내가 물리적 서버 자체에 대한 접근권을 갖고, low-level HW까지도 보임
- allows to 1address compliance requirements, 2use existing server-bound SW licenses (법 준수하고 이미 소켓,코어단위로 돈내는 기존 서버에 연결된 SW 라이선스를 쓰게 할때 쓰임)
- 지불옵션
  1. On-demand: 초단위로
  2. Reserved: 1,3년, 선불/부분선불 선택
- 물리적 서버를 예약하는거라 젤 비쌈
- 라이선싱 모델이 같이나오는 SW인 경우 유용 (BYOL...Bring your own license)
- regulatory, compliance needs가 강한 회사들이 주로 사용

EC2 Dedicated Instances
- 내 전용 HW에서 실행됨, 즉 나만의 인스턴스를 나만의 HW에 갖는다고 이해하자
- 같은 계정에서 다른 인스턴스랑 HW 공유 가능!
- 인스턴스 배치는 통제 불가

 

 

728x90

'AWS' 카테고리의 다른 글

[AWS] EC2 Hibernate 모드, EBS  (2) 2024.01.25
[AWS] 스팟, IP, 배치그룹, ENI  (1) 2024.01.25
[AWS] EC2 기초  (1) 2024.01.25
[AWS] AWS IAM - 2  (0) 2023.12.18
[AWS] AWS IAM - 1  (1) 2023.12.18
    밍비
    밍비

    티스토리툴바