LINUX 服务器下流量监控报警系统SHELL 脚本实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

关键词:云计算;网络信息安全;服务器集群;负载均衡 ddos

中图分类号:tp393 文献标识码:a 文章编号:1009-3044(2015)09-0061-02

分布式拒绝服务攻击采取的攻击手段就是分布式的,在攻击的模式改变了传统的点对点的攻击模式,使攻击方式出现了没有规律的情况,而且在进行攻击的时候,通常使用的也是常见的协议和服务,这样只是从协议和服务的类型上是很难对攻击进行区分的。在进行攻击的时候,攻击数据包都是经过伪装的,在源ip 地址上也是进行伪造的,这样就很难对攻击进行地址的确定,在查找方面也是很难的。这样就导致了分布式拒绝服务攻击在检验方法上是很难做到的。

此流量监控报警系统是在centos 7 版本下使用shell脚本撰写的,通过邮件报警。现在智能手机的普及,邮件也能像短信即使告警,通知服务器运维人员。此脚本包包含主程序、子程序、配置文件、邮件引擎、输出日志等。

主程序:作为整个脚本的入口,是整个系统的命脉。

配置文件:是一个控制中心,用它来开关各个子程序,指定各个相关联的日志文件。

子程序:这个才是真正的监控脚本,用来监控各个指标。

邮件引擎:是原本是由一个php程序来实现,它可以定义发邮件的服务器、发邮件人以及收邮件人。但是如果发表在本论文里,会导致篇幅过长,所以调用了系统自带的mailx邮件引擎。

输出日志:整个监控系统要有日志输出。

我们的机器角色多种多样,但是所有机器上都要部署同样的监控系统,也就说所有机器不管什么角色,整个程序框架都是一致的,不同的地方在于根据不同的角色,定制不同的配置文件。

程序架构:

monitor/bin/main.sh

monitor/conf/mon.conf

monitor/mail/mail.sh

其中bin下是主程序,conf下是配置文件,mail下是邮件引擎,log下是日志及需要发送的邮件内容。此脚本包中的程序是使用的相对路径,如果使用该脚本包请按照以上程序架构对应的路径。

1)main.sh

#! /bin/bash

export send=1 # #报警控制开关##

if [ $last_dir == "bin" ]; then

conf_file="../conf/mon.conf"

else

echo "you shoud cd bin dir"

exit

fi

exec 1>>../log/main.log 2>>../log/main_err.log

sleep 60 ##一分钟控制时间,一分钟检测一次##

if grep -q 'to_mon_traffic=1' $conf_file; then

##当前10秒瞬时流量及10秒平均流量,以防单一秒内瞬时流量骤增,导致误判## fi

if [ $traffic_value > 1 ] && [ $send == 1 ]; then

fi

done

2)mail.sh

邮件控制脚本,原本是由php实现的,但是由于篇幅过长,改为调用系统自带的mailx 来实现,如果系统内未内置,请使用yum install mailx-12.5-12.el7_0.x86_64 安装。使用maix之前需要先配置/etc/mail.rc 文件,在该文件最下面加入以下内容:set smtp-auth=login

如果测试不能发送邮件,请在邮箱设置里打开pop3/smtp服务。

由于服务器是集群式分布,一个运维人员要管理上百台服务器。如果服务器集群受到ddos攻击,不会只是单一的一台服务器会报警,而是上百台服务器同时报警。ddos攻击一般会持续很长时间,

如果每分钟有上百台机器发邮件到自己的邮箱会是怎样一个折磨人的事情。如果这里使用短信作为报警手段,那么也会给企业带来不必要的损失,所以这里实现了邮件的收敛。如果遭受到攻击且距离上次受到攻击的时间有一个小时以上,那么会立即发送邮件。如果受到攻击且距离上次被攻击的时间在一个小时以内,就通过计数累计10分钟发一次邮件。初次使用本脚本包时,需要预先在number.log 和timestamp.log 置0.

#! /bin/bash

exec 1>>../log/mail.log 2>>../log/mail_err.log

t_s1=`date +%s`

t_s2=`tail -1 ../log/timestamp.log`

v=$[$t_s1-$t_s2]

if [ $v -gt 3600 ];then

else

nu=`cat ../log/number.log`

nu=$[$nu+1]

echo $nu>../log/number.log

if [ $nu -ge 10 ];then

fi

fi

3)mon.conf

为了此脚本的可扩展性,在此配置文件独立出来,是为了更好的控制各种监控程序。

## to config the options if to monitor

to_mon_php_socket=0

to_mon_traffic=1

最后,log里的文件需要按照要求提前创建。把mian.sh 加入开机启动项,也可以直接手动运行,sh main.sh & 以后台这种方式运行。

通过shell脚本进行实时进行网卡流量监控,并通过shell脚本控制邮件的发送及发送频率,能够及时报告服务器的负载情况,这对网络运维至关重要。

相关文档
最新文档