Linux之shell脚本实现ssh登录报警

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/m0_37814112/article/details/102687410

Linux之使用shell脚本实现ssh登录报警

 https://blog.saintic.com/blog/234.html 

1.背景

如果你的服务器被攻击了,该如何做能在第一时间知晓?本文将介绍两种方法来实现ssh登录报警!
思路1:secure日志和ssh的socket
思路2:/etc/profile

环境准备

yum install screen -y
wget http://stedolan.github.io/jq/download/linux64/jq -O /usr/local/bin/jq
chmod +x /usr/local/bin/jq

2.实现ssh登录邮件告警

2.1 邮件配置

背景:需要对每次备份的信息进行邮件,由于服务器为阿里云ECS,25号端口被封,所以选在mailx邮件服务器进行邮件推送服务,当前linux系统为centos7.2.1511。
yum  install  mailx -y
vim /etc/mail.rc
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb
set [email protected]              #发送者邮箱
set smtp=smtps://smtp.163.com:465
set [email protected]    #发送者邮箱用户名
set smtp-auth-password=xxxxxx        #发送者邮箱密码
set smtp-auth=login

set nss-config-dir=/etc/pki/nssdb#使用命令find / -name "cert*.db" 查找位置(根据自身系统而定)
测试命令:echo "数据库备份成功" | mailx -v -s "数据库备份情况" [email protected] [email protected]
注:-s 主题,可以为多个邮箱进行信息推送。

2.2 微信脚本

[root@docker scripts]# vim /etc/weixin.sh 
#!/bin/bash
#set -x
CorpID="wwd1f9d09c9671436b"  #企业ID
Secret="m9ekz8yaQYBtXG2ke_wk9yBh6Ve9B2SNedQNYbu9_eg"   #管理组凭证密钥
GETURL=https://qyapi.weixin.qq.com/cgi-bin/gettoken\?corpid=$CorpID\&corpsecret=$Secret
Token=$(/usr/bin/curl -s -G $GETURL |awk -F\": '{print $4}'|awk -F\" '{print $2}')
#echo $Token
POSTURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Token"
UserID=$1
#PartyID=1
agentid=1000008  #企业号中的应用id
Msg=`echo "$@" | cut -f 3`
message(){
    printf '{\n'
    printf '\t"touser": "'"$UserID"\"",\n"
    printf '\t"toparty": "'"$PartyID"\"",\n"
    printf '\t"msgtype": "text",\n'
    printf '\t"agentid": "'"$agentid"\"",\n"
    printf '\t"text": {\n'
    printf '\t\t"content": "'"$Msg"\""\n"
    printf '\t},\n'
    printf '\t"safe":"0"\n'
    printf '}\n'
}
/usr/bin/curl --data-ascii "$(message $1 $2 $3)" $POSTURL

[root@docker scripts]# sh weixin.sh ZhangJunChao test 123456
{"errcode":0,"errmsg":"ok","invaliduser":""}

2.3 邮件微信告警

vim /etc/login-alert.sh
#!/bin/bash

eval `curl -s "http://ip.taobao.com/service/getIpInfo.php?ip=${SSH_CLIENT%% *}" | jq . | awk -F':|[ ]+|"' '$3~/^(country|area|region|city|isp)$/{print $3"="$7}'`

loginip=`curl https://api.myip.com | awk -F':' '{print $2}' | awk -F',' '{print $1}' | awk -F'"' '{print $2 }'`

if [ "$USER" != "root" ] ||  [ "${SSH_CLIENT%% *}" != "61.141.65.201" ];then
   echo -e "ssh登录成功\n登入者IP地址:${SSH_CLIENT%% *}\nIP归属地:${country}_${area}_${region}_${city}_${isp}\n被登录服务器IP:$loginip" |  mailx -v -s "ssh登录成功" [email protected] [email protected]
   sh /etc/weixin.sh ZhangJunChao "ssh登录成功\n登入者IP地址:${SSH_CLIENT%% *}\nIP归属地:${country}_${area}_${region}_${city}_${isp}\n被登录服务器IP:$loginip"

fi

2.3 告警配置

#第一种方法,新开终端和复制终端都会报警
echo "screen -fa -d -m -S WL sh /etc/login-alert.sh" >> /etc/profile 
source /etc/profile

#第二种方法,只有ssh登录才会报警
vim /etc/ssh/sshrc 
echo -e '#!/bin/bash\nbash /etc/login-alert.sh' >> /etc/ssh/sshrc 

注意:上面两种方法任选一个都可以,以上两种方法均已验证过,可以放心复制!!!

2.4 测试

h\nbash /etc/login-alert.sh’ >> /etc/ssh/sshrc

注意:上面两种方法任选一个都可以,以上两种方法均已验证过,可以放心复制!!!


**2.4 测试**

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uW3rDCm4-1571737769096)(C:\Users\lenovo\AppData\Roaming\Typora\typora-user-images\1571737072897.png)]

猜你喜欢

转载自blog.csdn.net/m0_37814112/article/details/102687410