登錄保護是一個非常重要的環節,下面通過圖文并茂的方式給大家詳細講解下:
前兩天@cyy 給我發了一個圖

然后我就想到USHQ的ssh登錄app通知功能,然后就像如果把這個部署到自用的服務器就好了。至少多一層安全系數。
首先要感謝@Legion 幫忙搞定了幾個錯誤以及搞定了Geo2IP的JSON轉換。 (P.S.此人為自動化運維大神級人物,現任職于德國一數據統計企業。)
當然,我和他相比我就是戰五渣了...大家一定要多向 @Legion 學習啊~~
說下需要做的準備:
sendmail或者Postfix
php
bash
CentOS/Debian/Ubuntu
若你的生產環境中沒有php sendmail Postfix等組件,請移步:
@Legion: Linux之使用shell腳本實現ssh登錄報警
參考文件
首先是報警腳本文件
Shell
#!/bin/sh########################################################################## File Name: Login-alert.sh# Author: Jason# Email: master#deamwork.com# Created Time: Tue Jul 21 2015 21:23:16 PM CST ##########################################################################require jq#wget http://stedolan.github.io/jq/download/linux64/jq -O /usr/local/bin/jq#chmod +x /usr/local/bin/jq#if error, please # following one#PATH=/usr/local/nginx/sbin:/usr/local/php/bin:/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin#Geo2IP by Legion(http://www.dwhd.org/)eval `curl -s "http://ip.taobao.com/service/getIpInfo.php?ip=${SSH_CLIENT%% *}" | jq . | awk -F':|[ ]+|"' '{if($3~/^(country|area|region|city|isp)$/){print $3"="$7}}'`#html mail contentcat >> mail-no-base64.html <<EOF#請自行準備郵件模板,以下為可能用到的變量#輸出主機名 `hostname`#輸出登錄端口 ${SSH_CLIENT##* }#輸出登錄來源IP ${SSH_CLIENT%% *}#輸出IP地址歸屬地 {country}_${area}_${region}_${city}_${isp}#輸出登錄時間 `date`EOF#Base64 Encodingbase64 mail-no-base64.html > mail-base64.html#使用Sendmail#sendmail -t >/dev/null 2>&1 <<EOF#to:example@example.com#from:Example<example@example.com>#subject:[`hostname`]服務器登錄告警#`cat mail-no-base64.html`#EOF#使用postfix#cat >> mail.php <<EOF#<?php#/$to = "example@example.com";#/$subject = "[`hostname`]服務器登錄告警";#/$message = "`cat mail-base64.html`";#/$headers = "MIME-Version: 1.0" . "/r/n";#/$headers .= "Content-Type: text/html; charset=/"utf-8/"" . "/r/n";#/$headers .= "Content-Transfer-Encoding: base64" . "/r/n";#/$headers .= 'From: Example<example@example.com>' . "/r/n";#/$send = mail(/$to,/$subject,/$message,/$headers);#if(/$send){echo 'Mail Send Successful.';}else{echo 'Failed.';}#?>#EOF#使用 SMTP (require smtp-class.php)cat >> mail.php <<EOF<?phprequire("smtp-class.php"); /$smtpserver = "smtp.example.com";/$smtpserverport = 25;/$smtpusermail = "example@example.com";/$smtpemailto = "example@example.com";/$smtpuser = "example";/$smtppass = "password";/$mailsubject = "[`hostname`]服務器登錄告警";/$mailbody = "`cat mail-base64.html`";/$mailtype = "HTML";/$smtp = new smtp(/$smtpserver,/$smtpserverport,true,/$smtpuser,/$smtppass);/$smtp->debug = TRUE;/$smtp->sendmail(/$smtpemailto, /$smtpusermail, /$mailsubject, /$mailbody, /$mailtype); ?>EOFphp mail.phpyes y | rm mail-no-base64.html mail-base64.html mail.php            
新聞熱點
疑難解答