Khi có user log in vào máy qua SSH, các file trong thư mục /etc/profile.d/ sẽ được thực thi. Lợi dụng việc này, ta sẽ viết script để tự động gửi mail thông báo khi có ai đó log in thành công
Thiết kế:
/opt/batch/backup_web/mail.py File gửi mail, được viết bằng python /etc/profile.d/notify_login.sh File sh, sẽ được chạy mỗi khi login, file này sẽ gọi tới file python ở trên để gửi mail
Nội dung cả 2 file:
File mail.py
#!/usr/bin/python # -*- coding: utf-8 -*- # coding=utf-8 import sys import smtplib import os from email.MIMEMultipart import MIMEMultipart from email.MIMEBase import MIMEBase from email.MIMEText import MIMEText from email import Encoders import datetime def mail(to='abcd@gmail.com', subject='Email backup du lieu', text='day la body', attach='/var/log/secure'): gmail_user='abcd@gmail.com' gmail_pwd='ebzrmwozqckeqcoa' msg = MIMEMultipart() msg['From'] = 'abcd@gmail.com' msg['To'] = to msg['Subject'] = subject msg.attach(MIMEText(text+"\r\n"+datetime.datetime.today().strftime('%Y-%m-%d'))) part = MIMEBase('application', 'octet-stream') part.set_payload(open(attach, 'rb').read()) Encoders.encode_base64(part) part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(attach)) msg.attach(part) mailServer = smtplib.SMTP("smtp.gmail.com", 587) mailServer.ehlo() mailServer.starttls() mailServer.ehlo() mailServer.login(gmail_user, gmail_pwd) mailServer.sendmail(gmail_user, to, msg.as_string()) # Should be mailServer.quit(), but that crashes... mailServer.close() mail(subject=sys.argv[1], text=sys.argv[2], attach=sys.argv[3])
File sh
#!/bin/bash sendmailpy=/opt/batch/backup_web/mail.py ACCESS_IP=`/bin/echo $SSH_CLIENT | awk '{ print $1 }'` SUBJECT="$ACCESS_IP Đã truy cập" BODY="$(date) => $SSH_CLIENT đã truy cập bằng user $USER" attach_local=/var/log/secure /bin/nohup /usr/bin/python $sendmailpy $SUBJECT "$BODY" $attach_local >> /var/log/ssh_login_$(date +%F) &
Thông tin về email sử dụng để gửi cảnh báo được định nghĩa trong file mail.py
Lưu ý: Sử dụng trên gmail thấy google chặn đăng nhập đối với các user sử dụng password chính, còn đối với các user bật xác minh 2 bước, sử dụng pass ứng dụng thì google cho đăng nhập thoải mái. các bạn lưu ý.