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 from=xxxxxx@163.com #发送者邮箱
set smtp=smtps://smtp.163.com:465
set smtp-auth-user=xxxxxx@163.com #发送者邮箱用户名
set smtp-auth-password=xxxxxx #发送者邮箱密码
set smtp-auth=login
set nss-config-dir=/etc/pki/nssdb#使用命令find / -name "cert*.db" 查找位置(根据自身系统而定)
测试命令:echo "数据库备份成功" | mailx -v -s "数据库备份情况" 328442105@qq.com 18673391507@163.com
注:-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登录成功" xxxxxx@qq.com xxxxxx@163.com
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)]