前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux 命令 安全 (compgen -c)

Linux 命令 安全 (compgen -c)

原创
作者头像
大大刺猬
修改2020-03-11 18:08:23
2.4K0
修改2020-03-11 18:08:23
举报
文章被收录于专栏:大大刺猬

使用场景:

操作系统安装完成后,执行下面脚本,记录命令的md5值,当命令被修改之后,再次使用脚本即可检查出来。

记录位置为该用户家目录下面的 .UserCheckCom.txt 文件(有个 点 ,是隐藏文件,需注意)

优点(用途):

主句被入侵后,有可能入侵者通过修改操作系统命令,来达到不被使用者发现(比如:中了挖矿病毒,服务器很多资源会被占用,但是操作系统命令top,netstat之类的被修改之后,我们就很难发现拖跨服务器的进程),这个脚本提前把命令的md5值记录下来,被修改之后,我们就知道哪些命令被修改了,然后重新传一个一样的命令到服务器上替换就是了。就问我棒不棒^_^

使用方法:

1.记录当前命令:

代码语言:javascript
复制
sh  CheckCommDDCW.sh

2.记录新增命令或被修改命令(关键词add可以替换为任意非空字符串):

代码语言:javascript
复制
sh CheckCommDDCW.sh add

脚本代码如下:

代码语言:javascript
复制
#!/bin/env bash
#write by ddcw
#https://cloud.tencent.com/developer/column/6121
#scriptname:CheckCommDDCW.sh
begintime=`date +%s`
file_name=~/.UserCheckCom.txt
new_comm_n=0
change_comm_n=0
new_comm=""
change_comm=""
[ -f ${file_name} ] || touch ${file_name}
for i in $(compgen -c)
do
    if which $i >/dev/null  2>&1 
    then
        md5_n=$(md5sum $(which $i) | awk '{print $1}')
        if  cat ${file_name} | grep "\#$i\#" >/dev/null  2>&1 
        then
        #    echo $(cat ${file_name} | grep "\#$i\#")
            md5_o=$(cat ${file_name} | grep "\#$i\#" | tail -1 | awk '{print $NF}')
            if [ "${md5_n}" != "${md5_o}" ]
            then
                #echo -e "COMMD \033[1;41;33m $i \033[0m may be Changed: old_MD5: ${md5_o}    new_MD5: ${md5_n}"
                [ -z $1 ] || echo -e "#${i}# \t $(date +%Y%m%d-%H:%M:%S) \t ${md5_n}" >> ${file_name}
                change_comm_n=$[ ${change_comm_n} + 1]
                change_comm="${change_comm}  ${i}"
            fi
        else
            if [ "${i}" != '[' ]
            then
                new_comm_n=$[ ${new_comm_n} + 1]
                new_comm="${new_comm}  ${i}"
                #echo -e "\033[32;40m$i \033[0m"
                echo -e "#${i}# \t $(date +%Y%m%d-%H:%M:%S) \t ${md5_n}" >> ${file_name}
            fi
        fi
    fi    
done
echo ""
if [ ${new_comm_n} -gt 0 ]
then
    echo -e "\033[31;40m Total Add  ${new_comm_n} commd \033[0m"
    echo "${new_comm}"
else
    echo -e "\033[32;40m No Command  Added ,It's Seccurity!\033[0m\n"
fi
if [ ${change_comm_n} -gt 0 ]
then
    echo -e "\033[31;40m Total Changed  ${change_comm_n} commd \033[0m"
    echo "${change_comm}"
else
    echo -e "\033[32;40m No Command Changed  ,It's Seccurity!\033[0m"
fi
endtime=`date +%s`
costm=`echo ${begintime} ${endtime} | awk '{print ($2-$1)/60}'`
echo -e "\n\033[32;40m `date +%Y%m%d-%H:%M:%S` cost ${costm} minutes\033[0m"

使用演示

(第一次执行脚本,会有很多命令被记录进去,满屏幕都是,截图不方便,就省略了...):

修改命令后,能识别出来,添加后,不提示了
修改命令后,能识别出来,添加后,不提示了
添加命令测试
添加命令测试

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用场景:
  • 优点(用途):
  • 使用方法:
    • 1.记录当前命令:
      • 2.记录新增命令或被修改命令(关键词add可以替换为任意非空字符串):
      • 脚本代码如下:
      • 使用演示
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档