linux服務器登錄微信報警通知


linux服務器ssh登錄安全規則中,理論上要做到:防火牆限制,hosts.allow限制,root禁止登錄,用戶權限分配,ssh端口修改,登錄時間限制,堡壘機登錄。

這里只講登錄時間限制和登錄報警通知

 

登錄超過10分鍾無操作自動斷開鏈接:

在/etc/profile.d/中新建腳本autologout.sh,內容如下:

TMOUT=600
readonly TMOUT
export TMOUT

這樣,用戶超過600秒無操作就會斷開鏈接。

 

登錄報警:

在/etc/profile最后一行追加

/bin/bash /tmp/login.sh

這樣,每個用戶登錄時候就會加載系統配置,發送微信通知我

weixin.sh腳本內容如下

#!/bin/bash
# -*- coding: utf-8 -*-
###SCRIPT_NAME:weixin.sh###
###send message from weixin for monitoring###
###V1-2017-09-05
sender(){
ip=`curl ip.sb`
message="用戶`whoami`成功從`who am i |awk -F '[()]' '{print $2}'`登錄${ip}_`hostname`服務器,時間`date '+%Y-%m-%d-%H:%M:%S'`"

CropID='企業微信應用id'
Secret='企業微信應用id密碼'
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"
Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F \" '{print $10}')
PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"
function body() {
	local int AppID=1          # 企業號中的應用id
	local UserID=$1            # 部門成員id,zabbix中定義的微信接收者
	#local PartyID=$2          # 部門id,定義了范圍,組內成員都可接收到消息
	#local Msg="hello" # 過濾出zabbix中傳遞的第三個參數
	printf '{\n'
	printf '\t"touser": "'$UserID'",\n'
	#printf '\t"toparty": "$PartyID",\n'
	printf '\t"msgtype": "text",\n'
	printf '\t"agentid": "'$AppID'",\n'
	printf '\t"text": {\n'
	printf '\t\t"content": "'$message'"\n'
	printf '\t"safe":"0"\n'
}
curl --data-ascii "$(body $1)" $PURL 1 > /dev/null 2>&1
printf '\n'
}

在編寫一個login.sh腳本調用weixin.sh腳本

下面這個方法不是很好,應該判斷是否從A,B,C這些ip訪問的服務器。如果不是從這些ip訪問的服務器代表這被入侵了。

但是公司網絡沒有固定ip,服務器太少跳板機成本大一點。所以用下面方法。

#!/bin/bash
hour=`date '+%H'`
week=`date '+%w'`
#如果是19點到10點之間則發送通知
if [ $hour -ge 18 ] || [ $hour -lt 9 ];then
    /bin/bash /tmp/weixin.sh guoyabin 1 > /dev/null 2>&1
fi
#如果是周67 則發送通知
if [[ $week > 5 ]];then
    /bin/bash /tmp/weixin.sh guoyabin 1 > /dev/null 2>&1
fi

  

收到微信通知

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM