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

  

收到微信通知

最新文章

  1. IDE有毒
  2. StrictMode模式介绍
  3. Delphi 调用批处理
  4. bzoj2631: tree lct
  5. 最近很火的携程Java 工程师的一道面向对象面试题
  6. 安装CocoaPods流程及常见问题(Xcode->homebrew->RVM->Ruby->CocoaPods)
  7. iOS 之 socket 与 http
  8. nanomsg 如何写数据到PipelineDB
  9. 20 Zabbix系统性能优化建议
  10. 如何让服务端同时支持WebSocket和SSL加密的WebSocket(即同时支持ws和wss)?
  11. Go学习笔记(只有链接)
  12. python之编码和解码
  13. Java -- 异常的捕获及处理 -- Java的异常处理机制
  14. php的session问题总结
  15. 解决:SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间提示问题
  16. tbytes 转 十六进制 string
  17. spring中的context:include-filter和context:exclude-filter的区别
  18. (LeetCode 203)Remove Linked List Elements
  19. 开源的PaaS方案:在OpenStack上部署CloudFoundry (一)简介
  20. MongoDB,还有一个角度看数据

热门文章

  1. 离线下载第三方Python包
  2. JPA与hibernate-------JPA01
  3. idea环境下SpringBoot Web应用引入JSP
  4. 【pwn】DASCTF Sept 九月赛
  5. 【记录一个问题】用毫无用处的方法解决了libtask的asm.S在ndk下编译的问题
  6. unity3d,java,c#,python,rospy的socket通信测试
  7. 科技爱好者周刊(第 175 期):知识广度 vs 知识深度
  8. 【webpack4.0】---webpack的基本使用(三)
  9. HTML 基础2
  10. 对线面试官,凭借nginx能一战封神吗?