public ip가 나타나게 설정하려면 secure로 설정해야한다. 2023-10-25일에 생각나서 수정하는데 필자는 이 글을 쓸 때 그걸 기억을 못해서 auth로 글을 작성했다.
https://stackoverflow.com/questions/1967452/ec2-and-login-logging
EC2 and login logging
I have set up several EC2 instances and intend to give multiple users access to them via SSH. Is there any file on the server that monitors who logs in and when? Any help greatly appreciated. Max.
stackoverflow.com
SSH 접근에 대한 로그는 /var/log/auth.log 에 저장된다. 이를 CloudWatch Agent를 이용하여 CloudWatch에 로그를 남길 수 있다. 이는 외부 사용자에 의해 서버에서 로그가 지워져도 해당 로그를 확인할 수 있는 좋은 방법이다.
IAM ROLE setup
AmazonAPIGatewayPushToCloudWatchLogs 권한을 가진 역할을 생성한 후 서버에 해당 역할을 할당한다.
CloudWatch agent Download && setup
wget <https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb>
sudo dpkg -i -E ./amazon-cloudwatch-agent.deb
위 두 명령어로 CloudWatch Agent를 설치한다.
이제 구성 마법사 파일을 실행하여 로깅 설정을 구성해야한다.
/opt/aws/amazon-cloudwatch-agent* On which OS are you planning to use the agent? linux
* Are you using EC2 or On-Premises hosts? EC2
* Which user are you planning to run the agent? cwagent
* Do you want to turn on StatsD daemon? no
* Do you want to monitor metrics from CollectD? yes
* Do you want to monitor any host metrics? yes
* Do you want to monitor cpu metrics per core? yes
* Do you want to add ec2 dimensions (ImageId, InstanceId, InstanceType, AutoScalingGroupName)
into all of your metrics if the info is available? yes
* Do you want to aggregate ec2 dimensions (InstanceId)? yes
* Would you like to collect your metrics at high resolution (sub-minute resolution)? 60s
#agent가 몇 초마다 metric을 수집할 것인지 지정하는 부분이다.
* Which default metrics config do you want? Basic
* Are you satisfied with the above config? yes
* Do you have any existing CloudWatch Log Agent configuration file to import for migration? no
* Do you want to monitor any log files? yes
- Log file path: `/var/log/auth.log` (SSH logs)
- Log group name: `ec2-bastion-log-group`
- Log stream name: `[{instance_id}]`
- Log Group Retention in days: -1
#저장된 로그가 몇일 이후 자동 삭제될지 지정 -1 == 영구 저장
* Do you want to specify any additional log files to monitor? no
* Do you want to store the config in the SSM parameter store? no
* The config file is located at `/opt/aws/amazon-cloudwatch-agent/bin/config.json`./bin/amazon-cloudwatch-agent-config-wizard
구성 후 명령어를 통해 agent의 상태를 확인하면 실행되지 않은 것을 확인할 수 있다.
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json
amazon-cloudwatch-agent-ctl -m ec2 -a status
최초 실행은 무조건 위 명령어를 이용하여야지 구성 마법사를 통해 구성한 설정이 반영된다. 구성 마법사를 통해 구성 파일을 변경했다면 항상 위 명령어를 통해 실행해야 설정이 반영된다.
amazon-cloudwatch-agent-ctl -m ec2 -a start
위 명령어로 실행한다.
정상적으로 실행되면 모든 지표 → CWagent 라는 항목이 나타나야한다.
cat /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log
위 파일에서 agent가 실행되면서 생성하는 로그를 볼 수 있다. 본인은 로그 그룹에 로그가 생성되지 않아서 해당 로그를 살펴봤고 /var/log/auth.log에 read 권한이 없어 로그가 cloudwatch로 이동되지 않았다는 사실을 알았다.
권한 변경 이후 다시 해당 파일을 확인했고 오류없이 실행된 것을 확인할 수 있디.
다시 cloudwatch → log group 으로 이동하여 확인해보겠다.
로그 스트림이 인스턴스 id로 생성되었고 /var/log/auth.log의 내용을 성공적으로 가져온 것을 확인할 수 있다.
'네트워크 > 클라우드 컴퓨팅' 카테고리의 다른 글
Kinesis,API gateway,Glue를 이용한 ETL 파이프라인 구성 (0) | 2023.04.09 |
---|---|
ALB path based routing(컨테이너 배포) (1) | 2023.04.09 |
ECS,ECR을 이용한 Flask web 배포 (0) | 2023.04.09 |
Lambda와 Event Bridge 이용해서 EC2 실행,종료 제어 (0) | 2023.03.16 |
AWS ECR 컨테이너 이미지 업로드, 다운로드 (1) | 2023.03.15 |