zoukankan      html  css  js  c++  java
  • 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资源分享|知识分享,做初级程序员的指明灯

  • 相关阅读:
    HDU 2089 不要62
    NOIP 2012 疫情控制
    提高工作效率的shell工具
    log loss与ctr预估
    推荐系统
    浮点数的间隙
    graphviz初学入门指南
    sparse_hash_map、dense_hash_map和sparsetable的实现细节
    每天离不开的工具vim
    安利开发利器 -- tmux
  • 原文地址:https://www.cnblogs.com/qianbixueyuan/p/9518816.html
Copyright © 2011-2022 走看看