DingGuodong / zabbix_monitor_login

giam sat login ssh voi zabbix

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

#I.Đặt vấn đề

Một server public ra ngoài mạng internet đứng trước nguy cơ mất dữ liệu khi có nhiều cuộc tấn công cố gắng truy cập vào hệ thống với tài khoản quản trị nhằm chiếm quyền sử dụng, thao tác với hệ thống. Vì vậy cần có biện pháp phòng ngừa, cảnh báo khi có sự kiện đăng nhập trực tiếp hoặc SSH.

#II. Giải pháp

Khi có sự kiện đăng nhập trực tiếp hay từ xa hệ thống sẽ ghi lại nhật ký trong file log

tail /var/log/auth.log

Giải pháp được đưa ra là viết chương trình lấy thông tin trong file log này, thông tin cần lấy gồm có

  • Số lần đăng nhập ssh thành công bao gồm user đăng nhập và ip máy đăng nhập từ xa

  • Số lần đăng nhập bằng ssh thất bại, bao gồm cả thông tin user, user không tồn tại, IP của máy đăng nhập từ xa, port

  • Số lần đăng nhập trực tiếp thành công, bao gồm user đăng nhập, và đăng nhập trên tty của user nào

  • Số lần đăng nhập trực tiếp thất bại, gồm có cả user đăng nhập

Tất cả thông tin này chương trình sẽ chuyển sang định sang json và đẩy lên server, server sẽ dựa vào số biến động những số liệu này để gửi cảnh báo về cho người quản trị

Tuy nhiên hệ thống sẽ xóa file log định kỳ nên để số lần đăng nhập đúng chương trình sẽ ghi dữ liệu sang file text

III. Triển khai

3.1 Trên máy Zabbix Agent

Tải script và tạo thư mục chứa file script:

wget https://raw.githubusercontent.com/thanhha123/zabbix_monitor_login/master/monitor_login.py

mkdir -p /var/tools/zabbix/monitor/

cp login_monitor.py /var/tools/zabbix/monitor/login_monitor.py
chmod +x /var/tools/zabbix/monitor/login_monitor.py

Chạy script dữ liệu sẽ dưới dạng file JSON

Sau khi chạy script xong tại thư mục /var/zabbix/monitor/ sẽ sinh ra file login_monitor.txt chứa các dòng dữ liệu trong file log để lưu dữ liệu khi file log bị xóa

Thêm các UserParameter vào file cấu hình /etc/zabbix/zabbix_agentd.conf

echo " UserParameter=direct.log.fail[*],cat /var/tools/zabbix/monitor/login_monitor.txt |grep \": FAILED LOGIN\"|wc -l" >> /etc/zabbix/zabbix_agentd.conf

echo "UserParameter=ssh.log.success[*],cat /var/tools/zabbix/monitor/login_monitor.txt |grep \": Accepted password\"|wc -l">>/etc/zabbix/zabbix_agentd.conf

echo "UserParameter=direct.log.success[*],cat /var/tools/zabbix/monitor/login_monitor.txt |grep \"pam_unix(login:session): session opened\"|wc -l" >> /etc/zabbix/zabbix_agentd.conf


echo "UserParameter=direct.log.fail[*],cat /var/tools/zabbix/monitor/login_monitor.txt |grep \": Failed password\"|wc -l" >> /etc/zabbix/zabbix_agentd.conf

echo "UserParameter=login.monitor,/usr/bin/python /var/tools/zabbix/monitor/login_monitor.py" >> /etc/zabbix/zabbix_agentd.conf

Khởi động lại Zabbix Agent:

service zabbix_agent restart

3.2 Trên Zabbix Server

Bước 1: Tạo host với IP máy cần giám sát

Bước 2: Tạo Discovery rules trong host vừa khởi tạo với MACRO LOGIN

Bước 3: Khởi tạo các item

Kết quả:

About

giam sat login ssh voi zabbix


Languages

Language:Python 100.0%