cloud bee

EC2 로그인 실패시 SQS 알림 전송 본문

AWS/infra

EC2 로그인 실패시 SQS 알림 전송

who you 2023. 2. 1. 07:55

ssh를 통해 ec2 login에 실패를 할 때마다 sqs에 메시지가 전송되도록 구성할 것이다.

Amazon console을 사용하여 이번실습을 구현해 보았다.

 

실습에 사용하였던 서비스는 다음과 같다.

 

서비스 목록

- Amazon sqs

- Amazon ec2

- Amazon IAM

- Amazon VPC


VPC 생성

이번 실습은 기본 VPC를 통해 진행하였다.

https://console.aws.amazon.com/vpc에 들어가서 기본 VPC를 생성하도록 한다.

기본 VPC 생성 과정이다.

이후 기본 VPC의 라우팅 테이블을 설정해 주도록 한다. [서브넷 연결 편집]을 눌러주도록 한다.

라우팅 테이블 설정

 

라우팅 테이블 서브넷을 모두 연결해주도록 한다.

라우팅 테이블 서브넷 연결

이제 인스턴스에서 사용할 보안그룹을 하나 생성해 주도록 한다.

보안그룹 생성

 

보안그룹을 설정해주도록 한다. ssh 접근만을 허용해 주어야 하기 때문에 22번을 사용한다.

보안그룹 설정


SQS 생성

이제 sqs 대기열을 생성해 준다.

https://console.aws.amazon.com/sqs에서 생성을 진행하면 된다.

 

우선 sqs 콘솔에 들어가서 [대기열 생성] 버튼을 눌러준다.

 

세부 정보에서 유형을 표준으로 설정한다.

대기열 이름을 지정한다. -> my-sqs-quere

대기열 생성

 

이제 생성된 대기열의 URL을 확인한다.

대기열 URL 확인


ec2 인스턴스 생성

이제 ec2 instance를 생성해 준다.

https://console.aws.amazon.com/ec2에서 생성을 진행한다.

ec2 instance의 이름을 다음과 같이 지정한다. -> my-demo-ec2

ami는 amazon 최신 이미지로 설정한다.

my-demo-ec2 설정

이제 인스턴스 타입을 지정해 준다.  -> t3.nano

보안그룹도 처음에 생성하였던 demo-sg를 지정한다.

인스턴스 설정

 

이후 sqs와 관련 있는 아무 역할을 하나 선택해 주도록 한다.

없을 경우 https://console.aws.amazon.com/iam에서 생성하도록 한다.

역할 선택

 

이제 사용자 데이터를 작성하도록 한다. 아래 코드에 <Your account id> 부분만 본인의 어카운트 아이디로 바꾸고,

복사해서 붙여 넣으면 된다.

#!/bin/bash
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
echo 'password' | passwd --stdin ec2-user
sed -i -e '7iauth        [default=ignore]    pam_exec.so seteuid /var/myscript.sh' /etc/pam.d/password-auth
cat << EOF > myscript.sh
#!/bin/bash
body=$(date +%Y:%H:%M:%S)
aws sqs send-message --region ap-northeast-2 --endpoint-url https://sqs.ap-northeast-2.amazonaws.com/<Your account id>/my-sqs-queue --queue-url  https://sqs.ap-northeast-2.amazonaws.com/<Your account id>/my-sqs-queue --message-body "ec2 login Failed $body"
EOF
chmod +x myscript.sh
mv myscript.sh /var/myscript.sh
systemctl restart sshd

-> password 인증 실패 시 /var/myscript.sh 파일을 실행시킨다.

 

코드를 기반으로 ec2 instance 생성을 진행해 준다.

 

이제 my-demo-ec2의 퍼블릭 IP를 복사한다.

퍼블릭 IP확인

 

이후 터미널에서 ssh 접속을 시도한다. -> 이때 password를 일부러 틀려준다.

터미널에서 password 틀려주기


SQS 결과 확인하기

https://console.aws.amazon.com/sqs에 접근해 준다.

대기열에 들어가서 sqs를 선택한다.

대기열 sqs

 

이제 [메시지 전송 및 수신] 버튼을 눌러 수신을 확인해 주도록 한다.

메시지 전송 및 수신

[메시지 전송 및 수신]에 들어가서 [메시지 풀링 버튼]을 눌러준다.

메시지 풀링

 

이제 최종적으로 메시지의 내용을 확인해 준다.

메시지 본문

 

결론: 메시지 본문이 내가 원하는 결과로 잘 출력되었다.

'AWS > infra' 카테고리의 다른 글

AWS WAF 개념 정리  (0) 2023.02.04
Amazon RDS 정리  (0) 2023.01.28
web server와 was  (0) 2023.01.25
Django 이론 & AWS 환경 실습 구현  (0) 2023.01.18
스팟 인스턴스 vs 예약 인스턴스 vs 온디맨드 인스턴스  (4) 2023.01.15
Comments