Thông báo khi có user SSH thành công qua email

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='[email protected]', subject='Email backup du lieu', text='day la body', attach='/var/log/secure'):

  gmail_user='[email protected]'

  gmail_pwd='ebzrmwozqckeqcoa'

  msg = MIMEMultipart()

  msg['From'] = '[email protected]'

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