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 ý.