Linux论文基于shell脚本

CSDN下载:https://download.csdn.net/download/eseszb/10503223

Linux下基于shell脚本的流量监控报警系统设计与实现

摘要随着云计算的到来,相应的大数据和物联网也随之兴起。然而网络信息安全的形势非常严峻。现在网络服务器都是集群式分布,很多服务器集中起来一起进行同一种服务,实现负载均衡,在客户端看来就像是只有一个服务器。集群可以利用多个计算机进行并行计算从而获得很高的计算速度,但是如果服务器被攻击,将会导致整个服务器集群受到影响,甚至有可能导致宕机,导致用户无法使用提供的服务,造成严重的损失。往往造成这种问题的是我们众所周知的DDoS。当受到DDoS攻击时,服务器流量会骤增为平时的几十倍,通过流量监控及时报警运维工程师处理,以免造成服务器大规模宕机。我们通过实时监测网卡流量变化,通过邮件引擎实现第一时间报警,及时处理,减少攻击带来的危害。

关键词网络管理;数据采集;云计算;网络信息安全;服务器集群;DDoS

1 引言

对于一个有效的网络安全管理系统来说,功能的实现都或多或少的依赖于流量信息的获取。因此网络流量信息的采集可以说是网络安全管理系统得以实现的核心基石。它的应用可以在一定程度上检测到入侵攻击,可以有效地帮助管理人员进行网络性能管理,并利用报警机制协助网管人员采取对应的安全策略与防护措施,从而减少入侵攻击所造成的损失。

2 系统设计

2.1 设计原则

首先对系统的功能需求进行分析,然后通过用例分析的方式,获取和分析系统的需求,从而清晰、全面地了解了系统的整体需求。之后对系统进行可行性分析,证明经济、技术上都是可行的,且具有一定的现实意义。

为了方便用户使用,系统的呈现方式基于浏览器来实现。通过使用PHP脚本语言来实现网页和Web服务器更有效的互动,达到更高的服务效率。同时除了要保证实用性、可用性外,安全性更是重要的部分,本系统在安全性方面也有所考虑,有权限管理、用户管理、权限匹配等,确保有权限的用户才可以使用。

2.2功能模块划分

Linux服务器中集成了各种应用服务器及程序,包括MySQL服务器、Apache服务器、Netfilter框架、CGI程序以及系统的功能模块。

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

3 系统实现

3.1 实现技术

本系统是在Linux操作系统centos7下使用shell脚本实现的,邮件引擎是由一个php程序,使用Apache和MySQL服务器,用到了VI编辑器,Netfilter原理是实现系统功能的重要基础,同时iptablesNetfilte下的一种配置工具,tc主要是流量控制的工具。

(1) Linux:操作系统Linux处在最低层,是免费开源软件,提供操作系统。供其他组件运行。(2)Apache:服务器Apache处于次低层,是一个软件开发中最受欢迎的、开放源码的Web 服务器。据统计,近2/3的网站都会使用Apache作为自己的Web服务器。(3) MySQL:数据库软件MySQL是多线程、多用户的SQL数据库管理系统,提供数据存储功能。PHP:脚本语言PHP是一种相对简单的编程语言,主要功能是用来设计动态网站,多用于服务器端的应用程序开发。也可以把他形象地比喻成“粘合剂”,将其他组件粘合在一起。

3.2 具体实现

DoS 是 Denial of Service 的简写就是拒绝服务,而 DDoS 就是 Distributed Denial of Service 的简写就是分布式拒绝服务。

DDoS 是利用TCP 三次握手的漏洞进行攻击的,所以对它们的防御办法都是差不多的。DDoS 也是黑客门惯用的手段,让网络服务商防不胜防,虽然现在也有很多物理防火墙等安全手段,一个大的网站可能有很多台主机利用负载均衡技术提供同一个网站的www 服务,但是在大规模的DDoS 攻击面前依然不堪一击。分布式拒绝服务攻击采取的攻击手段就是分布式的,在攻击的模式改变了传统的点对点的攻击模式,使攻击方式出现了没有规律的情况,而且在进行攻击的时候,通常使用的也是常见的协议和服务,这样只是从协议和服务的类型上是很难对攻击进行区分的。在进行攻击的时候,攻击数据包都是经过伪装的,在源IP 地址上也是进行伪造的,这样就很难对攻击进行地址的确定,在查找方面也是很难的。这样就导致了分布式拒绝服务攻击在检验方法上是很难做到的。

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

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

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

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

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

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

程序架构:monitor/bin/main.sh monitor/conf/mon.conf monitor/mail/mail.sh

monitor/log/ main.log、main_err.log、mail.log、mail_err.log、

number.log、timestamp.log、network_traffic.txt

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

应的路径。

  1. main.sh #! /bin/bash

#Written by Liuzhiyuan.

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

export ip=`/sbin/ifconfig |grep - A1 'enp134s0' |grep 'inet'|awk '{print $2}'

dir=`pwd`

last_dir=`echo $dir|awk -F'/' '{print $NF}'` if [ $last_dir == "bin" ]; then

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

echo "you shoud cd bin dir" exit

fiexec 1>>../log/main.log 2>>../log/main_err.log while [ 0 ]; do

sleep 60 ##一分钟控制时间,一分钟检测一次## if grep -q 'to_mon_traffic=1' $conf_file; then

echo $ip > ../log/network_traffic.txt

/usr/bin/sar -n DEV 1 10 >> ../log/network_traffic.txt

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

traffic_value=`tail - n3 ../log/network_traffic.txt |grep enp134s0 |awk '{print $5}'` ##截取流量平均值##

traffic_value=` echo $traffic_value |awk - F'.' '{print $1}

'`

echo $traffic_value

tcpdump - nn - i enp134s0 - c 10 >> ../log/network_traf⁃ fic.txt ##抓取攻击ip#

fi

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

/bin/bash ../mail/mail.sh $ip $traffic_value ../log/net⁃ work_traffic.txt

fi done

  1. mail.sh

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

set from=*******@qq.com smtp=smtp.qq.com

set smtp- auth-user=##qq ## smtp- auth-password=##qq

密码##

set smtp-auth=login

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

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

#! /bin/bash

#Written by Liuzhiyuan.

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

/usr/bin/mailx - s " $1 traffic_rate $2" 351843010@qq.

com < $3

echo `date +%s` > ../log/timestamp.log else

nu=`cat ../log/number.log` nu=$[$nu+1]

echo $nu>../log/number.log if [ $nu -ge 10 ];then

/usr/bin/mailx - s " $1 traffic_rate $2 trouble con⁃ tinue 10 min" 351843010@qq.com < $3

echo "0" > ../log/number.log fi

fi 3)mon.conf

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

## to config the options if to monitor to_mon_php_socket=0

## network traffic to_mon_traffic=1

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

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

 

4 结束语

随着互联网技术的飞速发展和网络应用的普及,人们在工作和生活对互联网的需求越来越多,由网络引发的问题也随之而来。为改善公司的网络环境,帮助管理人员能有效、合理地对局域网内用户访问Intermnet进行管控,并随时监控用户的网络流量,已成为非常重要的问题。因此,基于Linux操作系统,结合相关技术,开发了此系统,具有重要的意义。

  在我的Linux论文完成之际,我要对关心、支持、帮助过我的每一个人致以诚挚的谢意。首先感谢老师,本文的研究工作是在老师的悉心指导和支持下完成的,从前期的选题、中期的设计及实现、后期的论文审核,老师都给了我很多的指导和帮助,在此表示衷心的感谢!我还要感谢我的室友对我在学习课程、课题研究和论文撰写过程中给予的帮助和支持。感谢和我一起的同学们,在论文完成期间,大家共同研究、深入讨论,共同解决了整个过程中的一些问题。同时,感谢老师在百忙之中抽出时间对我的论文提出的建议,这些都是我的宝贵经验,帮助我顺利的完成毕业设计和论文写作。
最后,特别要感谢我的家人,是他们给了我无私的爱和鼓励,让我可以没有后顾之忧,专心投入到论文设计中,没有你们就没有我的今天。

  • 4
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值