Monitor Amazon Cloudwatch Log kiểm soát truy cập qua SSH

Lời mở đầu

Rõ ràng bảo mật là một vấn đề lớn trong ngành kỹ thuật, public cloud cũng không phải ngoại lệ . Nếu bạn search Google "top cloud security concerns", một trong những bài viết ở trên đầu có tiêu đề là "9 worst cloud security threats". Trong phần Account Or Service Traffic Hijacking :

An intruder with control over a user account can eavesdrop on transactions, manipulate data, provide false and business-damaging responses to customers, and redirect customers to a competitor's site or inappropriate sites

Tạm dịch là :

Một kẻ xâm nhập có quyền kiểm soát một tài khoản người dùng có thể nghe trộm các giao dịch, thao tác dữ liệu, cung cấp các phản hồi giả tạo và gây thiệt hại cho khách hàng và chuyển hướng khách hàng đến trang web của đối thủ cạnh tranh hoặc các trang web không phù hợp.

https://www.informationweek.com/cloud/infrastructure-as-a-service/9-worst-cloud-security-threats/d/d-id/1114085?

Trong bài viết này mình sẽ hướng dẫn cấu hình EC2 instance sử dụng CloudWatch agent để gửi security log đến CloudWatch. Nhóm CloudWatch log và Log Stream sẽ được tạo tự động cho bạn. Monitor security log bằng cách sử dụng pattern, CloudWatch sẽ chủ động gửi email thông báo tới email của bạn. Bạn cũng phải cấu hình dịch vụ Amazon Simple Notification Service (SNS) để gửi email thông báo.

Bài viết mặc dù tập trung vào việc ssh fail đến server theo mô hình phía dưới nhưng qua đó các bạn có thể sử dụng theo rất nhiều cách khác và monitor nhiều loại log cũng như metric khác nhau.

Setup CloudWatch, CloudWatch Log Group và Log Stream

CloudWatch agent bắt buộc phải cài trên EC2 instance . Sau khi cài đặt thành công, bạn sẽ tiến hành chỉnh sửa file config. Việc đầu tiên là chúng ta sẽ tạo 1 instance, vào EC2 Service chọn Launch instance

Sau khi tạo xong instance, bạn sẽ có file private key download về máy. Cần set permission cho key pem này

framgias-MacBook-Air-2:~ ltminh88$ chmod 400 Downloads/letuanminhinfra.pem

SSH vào server, tuỳ vào loại ami bạn chọn, ở đây mình chọn Amazon AMI .

framgias-MacBook-Air-2:~ ltminh88$ ssh -i Downloads/letuanminhinfra.pem [email protected]

Cài đặt và khởi động dịch vụ awslogs

[[email protected] ~]# yum install awslogs.noarch
[[email protected] ~]# service awslogs start

Xác nhận service đã chạy hay chưa

[[email protected] ~]# service awslogs start

Kiểm tra file awslogs đang được lưu ở đâu

[[email protected] ~]# ps -ef | grep -v grep | grep awslogs
root      8381     1  0 09:01 pts/0    00:00:00 /usr/bin/python2.7 /usr/bin/aws logs push --config-file /etc/awslogs/awslogs.conf --additional-configs-dir /etc/awslogs/config

Chỉnh sửa file awslogs config

[general]

state_file = /var/lib/awslogs/agent-state

[SSHLogstream]
datetime_format = %b %d %H:%M:%S
file = /var/log/secure
log_stream_name = {instance_id}
log_group_name = SSHfail

Restart lại dịch vụ Awslogs

[[email protected] ~]# service awslogs restart

Trên màn hình AWS Management Console, chọn Services > Management Tools > CloudWatch > Logs. Bạn sẽ thấy group log đã được tạo 1 cách tự động, trong group này có log stream là tên của instance.

Tạo SNS Topic cho SSH failures

Trong màn hình AWS management console, Service > Messaging > SImple Notification Service.

Click Create topic

Copy Amazon Resource Name (ARN) trong Topic details

Tạo 1 subcription cho topic SSH failure. Từ SNS dashboard, click Create subscription

Topic ARN : Paste ARN mà bạn vừa copy 
Protocol : Email
Endpoint : Địa chỉ email mà bạn muốn gửi đến

Sau khi tạo xong bạn sẽ nhận được 1 email thông báo confirm từ Amazon .

Click Confirm subscription. Giống như hình dưới là thành công

Tạo cảnh báo cho SSH failure

Từ AWS Management Console, Service > Management Tools > CloudWatch, tiếp tục chọn Alarms Click Create Alarm. Trong mục Select Metric, chọn Logs, lựa chọn IncomingLogEvents cho Metric Name. Điền các mục sau như hình bên dưới

Name :
is :
for :
Period : 
Action :

Tạo partern cho SSH secure log Click Logs, chọn Create Metric Filter

Điền filter partern như sau :

[Mon, day, timestamp, ip, id, status = Invalid, ...]

Monitor Metric từ Log Từ AWS Management Console > Metric

Kết quả

Trong bài hướng dẫn này mình đã có thao tác sai trong việc SSH ngay lập tức sẽ nhận được email cảnh báo như dưới đây.

Chúc các bạn thành công .