Linux下检测程序的md5值异常自动报警的脚本

简介:

有一次办公室的测试服务器由于开启了对外访问权限,开启了tomcat管理页面,且设置了个弱口令。这3个因素同时成立了,没几天被不速之客放了个木马。事后随未造成严重影响,但是也给我敲了警钟。于是有了下面的小小的安全措施。

1、关闭用不到的用户

直接在命令行执行:

# cp /etc/passwd /etc/passwd-$(date +%F).bak

# for i in xfs news nscd dbus vcsa games nobody avahi haldaemon gopher ftp mailnull pcap mail shutdown halt uucp operator sync adm lp;

do

sed -i "s/^${i}/#${i}/" /etc/passwd;

done

 

2、这是一个我自己写的小脚本,用于检测重要目录的MD5SUM值是否发生变动

step1、首先在确认无问题的电脑上执行下面几条命令,将MD5SUM保存下来,作为原始模板:

#!/bin/bash

# 记录原始的执行文件的md5sum

 

if [[ ! -d /var/md5sum/ ]];then

    mkdir /var/md5sum -p

fi

 

for i in /bin /sbin /usr/local/bin /usr/local/sbin /usr/bin;do

    find $i  -maxdepth 1 -type f | xargs -n1 md5sum >> /var/md5sum/md5sum.log.ori

done

 

step2、下面是我的/home/scripts/chkmd5sum.sh脚本,作用是检查相关目录的md5sum是否发生变化。

#!/bin/bash

# 需要配置计划任务定期执行这个脚本,比对md5sum是否发生变化,变化则自动告警。

 

if [[ ! -d /var/md5sum/ ]];then

    mkdir /var/md5sum -p

fi


rm -f /tmp/md5sum*

 

for i in /bin /sbin /usr/local/bin /usr/local/sbin /usr/bin;do

    find $i  -maxdepth 1 -type f | xargs -n1 md5sum >> /tmp/md5sum.log_`date +%F`

done

 

if ! diff /tmp/md5sum.log_`date +%F`  /var/md5sum/md5sum.log.ori > /tmp/md5sum_status ;then

    cat /tmp/md5sum_status |mail -s "Warning,Md5sum has changed." lirulei90@126.com

fi

rm -f /tmp/md5sum_status 

 

step3、添加定时任务,每天检查一遍,有变化就发送邮件告警

echo '30 7 * * * /bin/bash /home/scripts/chkmd5sum.sh > /dev/null 2>&1' >> /var/spool/cron/root


我们也可以将其他需要关注的文件加入上述的for循环中,监控其md5sum的变化情况,出现异常及时报警。


当然,我们还要配置/etc/mail.rc这个文件,不然是无法发送出去邮件的。这个步骤不是本文重点,就省略了吧。










本文转自 lirulei90 51CTO博客,原文链接:http://blog.51cto.com/lee90/1826888,如需转载请自行联系原作者
目录
相关文章
|
3月前
|
安全 Linux Shell
Linux上执行内存中的脚本和程序
【9月更文挑战第3天】在 Linux 系统中,可以通过多种方式执行内存中的脚本和程序:一是使用 `eval` 命令直接执行内存中的脚本内容;二是利用管道将脚本内容传递给 `bash` 解释器执行;三是将编译好的程序复制到 `/dev/shm` 并执行。这些方法虽便捷,但也需谨慎操作以避免安全风险。
220 6
|
1月前
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。
|
2月前
|
Linux 开发工具 数据安全/隐私保护
linux异常一:feng 不在 sudoers 文件中,此事将被报告。yum提示Another app is currently holding the yum lock; waiting for
这篇文章介绍了在CentOS 7系统中安装Docker时遇到的两个常见问题及其解决方法:用户不在sudoers文件中导致权限不足,以及yum被锁定的问题。
47 2
linux异常一:feng 不在 sudoers 文件中,此事将被报告。yum提示Another app is currently holding the yum lock; waiting for
|
1月前
|
Ubuntu Linux Shell
Linux 系统中的代码类型或脚本类型内容
在 Linux 系统中,代码类型多样,包括 Shell 脚本、配置文件、网络配置、命令行工具和 Cron 定时任务。这些代码类型广泛应用于系统管理、自动化操作、网络配置和定期任务,掌握它们能显著提高系统管理和开发的效率。
|
1月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
2月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
70 1
|
3月前
|
消息中间件 分布式计算 Java
Linux环境下 java程序提交spark任务到Yarn报错
Linux环境下 java程序提交spark任务到Yarn报错
50 5
|
3月前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
765 2
|
2月前
|
存储 Shell Linux
【Linux】shell基础,shell脚本
Shell脚本是Linux系统管理和自动化任务的重要工具,掌握其基础及进阶用法能显著提升工作效率。从简单的命令序列到复杂的逻辑控制和功能封装,Shell脚本展现了强大的灵活性和实用性。不断实践和探索,将使您更加熟练地运用Shell脚本解决各种实际问题
36 0
|
3月前
|
Shell Linux 开发工具
linux shell 脚本调试技巧
【9月更文挑战第3天】在Linux中调试shell脚本可采用多种技巧:使用`-x`选项显示每行命令及变量扩展情况;通过`read`或`trap`设置断点;利用`echo`检查变量值,`set`显示所有变量;检查退出状态码 `$?` 进行错误处理;使用`bashdb`等调试工具实现更复杂调试功能。