shell日常实战练习——通过监视用户登陆找到入侵者
#!/usr/bin/bash
#用户检测入侵工具
AUTHLOG=/var/log/secure
if [[ -n $1 ]];then
AUTHLOG=$1
echo "Using Log File: $AUTHLOG"
fi
LOG=/tmp/valid.$$.log
grep -v "Invalid" $AUTHLOG > $LOG #将系统中有效的用户
users=$( grep "Failed password" $LOG |awk '{ print $(NF-5) }'|sort|uniq ) # 搜集非法用户的用户名
printf "%-5s|%-10s|%-10s|%-13s|%-33s|%s " "Sr#" "User" "Attempts" "IP address" "Host_Mapping" "Time range"
ucount=0
ip_list="$( egrep -o "[0-9]+.[0-9]+.[0-9]+.[0-9]+" $LOG |sort|uniq )" #获取登陆失败的IP地址
for ip in $ip_list
do
grep $ip $LOG > /tmp/temp.$$.log #这一步是将失败的那一行信息存到文件中
for user in $users
do
grep $user /tmp/temp.$$.log >/tmp/$$.log
cut -c-16 /tmp/$$.log >$$.time #这一行的前16个字符是时间戳
tstart=$(head -1 $$.time);
start=$(date -d "$tstart" "+%s");
tend=$(tail -1 $$.time)
end=$(date -d "$tend" "+%s")
limit=$(($end-$start))
if [ $limit -gt 120 ] ;then #检查这个时间戳是否大于两分钟
let ucount++;
IP=$(egrep -o "[0-9]+.[0-9]+.[0-9]+.[0-9]+" /tmp/$$.log|head -1 )
TIME_RANGE="$tstart-->$tend"
ATTEMPTS=$(cat /tmp/$$.log|wc -1)
HOST=$(host $IP|awk '{print $NF}') #根据ip 查找对应主机的名字 这个步骤如果显示host没有找到命令 请安装bind-utils
printf "%-5s|%-10s|%-10s|%-13s|%-33s|%s " "$ucount" "$user" "$ATTEMPTS" "$IP" "$HOST" "$TIME_RANGE"
fi
done
done
rm -f /tmp/valid.$$.log
rm -f /tmp/$$.log
rm -f /tmp/$$.time
rm -f /tmp/temp.$$.log
-------------------------------------------------------
这里是解决非法用户3次登陆失败的解决办法
vim /etc/pam.d/sshd
auth required pam_tally2.so deny=3 unlock_time=300 even_deny_root root_unlock_time=10
#参数解释
#even_deny_root 也限制root用户;
#deny 设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户
#unlock_time 设定普通用户锁定后,多少时间后解锁,单位是秒;
#root_unlock_time 设定root用户锁定后,多少时间后解锁,单位是秒
作者简介:
陈志珂(头条号:强扭的瓜不好吃)公众号“铅笔学园”运维内容合作作者之一,目前就职于中国最大的安卓应用软件公司,任高级工程师,现在公司任php开发工程师,python开发工程师,高级运维工程师。
铅笔学园:IT资源分享|知识分享,做初级程序员的指明灯
shell日常实战练习——通过监视用户登陆找到入侵者的更多相关文章
- shell日常实战防dos攻击
根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频率每隔3分钟.防火墙命令为:iptables -I INPUT -s 10.0 ...
- 转载:如何查看用户当前shell和修改用户登陆时的默认shell
转载网址:http://www.51testing.com/html/44/211244-197042.html 1.查看当前使用的shell类型 # echo $SHELL/usr/bin/bs ...
- FastAPI(六十七)实战开发《在线课程学习系统》接口开发--用户登陆接口开发
接上一篇文章FastAPI(六十六)实战开发<在线课程学习系统>接口开发--用户注册接口开发.这次我们分享实际开发--用户登陆接口开发. 我们先来梳理下逻辑 1.查询用户是否存在2.校验密 ...
- mxonline实战4,用户登陆页面2和用户注册1
一. 基于类来定义view.py diango中使用基于类来定义views的功能,其实更加方便,因为这样可继承一些定义好的基类,来减少我们的代码量 1. 使用基于类的方法,来重新定 ...
- Shell编程实战
Shell编程实战 为什么要学习Shell编程 Shell脚本语言是实现Linux/Unix系统管理及自动化运维所必须的重要工具,Linux系统的底层以及基础应用软件的核心大都涉及Shell脚本的 ...
- python实现用户登陆(sqlite数据库存储用户信息)
python实现用户登陆(sqlite数据库存储用户信息) 目录 创建数据库 数据库管理 简单登陆 有些地方还未完善. 创建数据库 import sqlite3 #建一个数据库 def create_ ...
- 关于deepin下安装ssh以后root用户登陆报错的解决
最近刚刚接触到deepin,觉得,wow,除了mac,还有这么好看的非win系统,而且第测出那个Linux,宽容度很高,非常适合我这种比较喜欢折腾的人,于是下载了deepin15版本并将其当作虚拟机成 ...
- centos 单用户登陆模式操作
在centos中因为安装java而配置 jdk环境变量的原因,对/etc/profile文件进行了编辑 错误的环境变量配置导致在第一次修改profile文件并保存后,执行source /etc/pro ...
- 五.数据库同步,创建django用户,用户登陆过程
(1)配置数据库 项目目录/settings.py是一个普通的python模块,每项配置都是一key/value 数据库的配置是以dict的形式存放在这个模块中,key名为:DATABASES DAT ...
随机推荐
- drf 需求案例1
案例: 实现过程: 1. 创建一个项目: django-adim startproject dfr3 2. 创建 一个app homwork python manage.py startapp ...
- Django 的 orm 查询
一.模型关系表 1. 一对一 Author-AuthorDetail 关联字段可以在任意表下,但必须唯一约束.(unique约束) ad_id(unique约束) ad = models.oneToO ...
- 前端数据交互之json&ajax
1.json json是 JavaScript Object Notation 的首字母缩写,单词的意思是javascript对象表示法,这里说的json指的是类似于javascript对象的一种数据 ...
- WCF开发实战系列一:创建第一个WCF服务 转
转 http://www.cnblogs.com/poissonnotes/archive/2010/08/28/1811064.html 在这个实战中我们将使用DataContract,Servic ...
- Json:前台对象数组传到后台解析
本文转自:http://blog.csdn.net/kymegg/article/details/50964581 方法:使用JsonArray进行解析 步骤: 一.引入一系列JAR包 要使程序便于解 ...
- 在ubuntu14中搭建邮箱服务器
1.前提准备 1.1在服务器上安装ubuntu14 1.2为ubuntu14配置静态ip 使用命令 sudo vim /etc/network/interfaces打开配置文件 修改内容如下: 使用命 ...
- IntelliJ IDEA下载及安装,破解
IntelliJ IDEA下载及安装,破解 百度百科:IDEA 全称IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助 ...
- vijos1448校门外的树
描述 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的……如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作:K=1,K=1,读入l.r表 ...
- kaggle信用卡欺诈看异常检测算法——无监督的方法包括: 基于统计的技术,如BACON *离群检测 多变量异常值检测 基于聚类的技术;监督方法: 神经网络 SVM 逻辑回归
使用google翻译自:https://software.seek.intel.com/dealing-with-outliers 数据分析中的一项具有挑战性但非常重要的任务是处理异常值.我们通常将异 ...
- weblogic启动比一般机器慢原因
weblogic启动慢一般先看setDomainEnv.sh中分配给JVM的内存大小,如果分配足够(没部应用一般也要1G以上)那么再用free -g看本机剩余内存是否充足.如果都没问题还是比一般机器启 ...
