APP下载

基于日志分析和netsh命令的非法IP屏蔽策略

2018-01-13安敬鑫

网络安全技术与应用 2018年1期
关键词:日志命令屏蔽

◆张 勇 安敬鑫

(山东轻工职业学院信息中心 山东 255300 )

0 引言

几乎所有企事业单位都建设了对公众开放的服务器,例如ftp服务器、web服务器等,这些服务器大多数使用Windows Server或Linux操作系统,随着互联网的发展,服务器安全问题越来越突出,被攻击事件层出不穷,因此服务器的安全防御越发重要。

为保障服务器安全,管理员采取了诸多措施,例如购买安全狗、安装杀毒软件、关闭无用端口、查找漏洞等等,无论采取何种措施,最好的办法莫过于找到企图入侵的黑客的IP并屏蔽它,为达到这个目的,本文提出了使用正则表达式分析日志、利用netsh命令自动屏蔽非法IP的策略。

由于不同类型服务器的日志格式和防火墙命令不同,所以本策略需要具体到某类服务器才能编程实现,本文将针对常用的Windows Server + IIS7.5服务器进行阐述,其设计思路同样适合于其他类型服务器。

1 IIS日志和netsh命令介绍

1.1 IIS日志

任何服务都会提供日志文件记录来访用户的详细信息,多数日志可以以文本格式读出。以IIS日志为例,日志文件所在目录默认位置是%systemroot%system32logfiles,日志格式有三种:Microsoft IIS格式、NCSA格式和W3C格式,每种格式的记录方式略有差别,但都记录了来访者 IP地址、访问的服务器端口、访问方法(get或 post等)、访问的 URL、访问时间等信息。以NCSA格式为例,日志文件名称为u_nc171101.log,表示这是2017年11月1日的日志,其中一条信息如下:

10.6.84.9 - - [01/Nov/2017∶10∶22∶43 +0800] "GET /zs/web/HTTP/1.1" 200 16208

此信息表示:来访者的IP地址为10.6.84.9,在2017年11月1日10点22分43秒以GET方式访问了本网站的/zs/web目录下的首页,返回了状态代码200,说明访问成功。

1.2 netsh命令

netsh允许以命令行脚本方式配置当前运行的计算机的网络参数,包括修改Window防火墙配置。

多数管理员在发现企图入侵的 IP后,在防火墙上以手动方式创建规则,禁止非法 IP访问本服务器,这种操作比较繁琐,更好的办法是使用netsh命令创建规则,例如:禁止 24.105.9.201访问本服务器所有端口的netsh命令如下:

netsh advfirewall firewall add rule name="ip1" dir=in action=block remoteip=24.105.9.201

删除 name="ip1" 规则的命令如下:

netsh advfirewall firewall delete rule name="ip1"

2 策略的设计思路

本策略包含以下几个功能:

(1)定时读取IIS日志:

(2)SQL注入检查;

(3)恶意扫描检查;

(4)IP屏蔽。

2.1 定时读取IIS日志

默认情况下IIS日志记录按天记录网站访问信息,如果网站访问量较大,则当天的IIS日志文件可能达到几十甚至上百兆,IIS每分钟内向日志写入大量的数据行,依靠管理员手动分析是不可能的,即使有日志分析工具,也无法做到24小时监控,本策略实现了一个定时读取日志的功能模块,模块中含有Timer定时器,根据服务器负担情况,每隔若干分钟,读取日志文件新写入的数据行到数据库。由于本策略实现的程序使用资源少,即使每隔1分钟读取一次也不会明显增加服务器负担。

2.2 SQL检查注入

入侵者提交的用户请求,主要通过URL的get和post两种方式进行SQL注入攻击,目前微软的IIS日志并没有记录post提交的内容信息,而是记录了 get提交的 URL信息,鉴于多数 SQL攻击是通过这一方式发起的,所以分析URL可以有效的发现SQL攻击行为。

以get提交方式发起的攻击行为,具体表现是在URL参数中使用各类非法字符或字符串,构造出 SQL或 CMD命令传递给Web服务器,从而获取服务器敏感信息甚至控制整个Web服务器,URL参数中可能包含的非法内容如下:

(1)非法符号:单引号、圆括号、方括号、尖括号、花括号、星号、分号等;

(2)非法关键词:select、union、where、javascript、group、administrator、cmdshell、alert等;

(3)非法正则表达式:为了灵活检查URL的合法性,需要设计出能匹配复杂非法字符串的正则表达式,例如:.*(select).*(from|where|union),如果URL匹配了此正则表达式,说明含有(select和from)或(select和where)或(select和union)三者其一,此URL就是SQL攻击。

本策略的SQL注入检查模块正是通过分析URL是否含有以上三类内容,来判断其合法性。

由于新的SQL注入字符串不断被入侵者构造出来,所以本策略的注入检查模块将以上三类内容放入一个XML文件中,这样方便日后更新。

2.3 恶意扫描检查

网站入侵者经常使用扫描工具对网站进行漏洞扫描,被扫描网站会在数秒内接收到来自某个IP的成百上千次get请求,因此发现扫描行为、屏蔽扫描来源也是保护网站的措施之一。

模块设计思路:

(1)设定一个单位时间访问上限,规定本网站每N秒最多允许接收某IP的M个get请求。

(2)记录每个IP的访问次数,每收到一个get请求,就将其IP来访次数加1。

(3)模块中定义一个Timer计数器,每隔N秒检查所有被记录的IP的访问次数,若发现某个IP发送的请求数量高于限定值M,就认定此IP在扫描网站,需要屏蔽此IP。

2.4 屏蔽非法IP

发现了非法IP后,就要彻底屏蔽它们,管理员通常在window防火墙手动添加规则来屏蔽 IP,这种做法无法实现程序自动添加,经验表明很多攻击行为是在夜间发生的,所以本策略程序必须24小时无人值守运行,发现入侵IP后能够自动添加屏蔽规则。

通过执行netsh.exe命令脚本,可以在windows防火墙上添加规则,例如:netsh advfirewall firewall add rule name="IP_BLOCK1" dir=in action=block remoteIP=24.105.9.201,此命令的意思是:建立一条名称为IP_BLOCK1的规则,禁止24.105.9.201的任何协议数据进入本服务器的任何端口。

本策略的屏蔽IP模块在接收到非法IP后,将此IP字符串拼接成一条netsh.exe命令脚本,使用C#语言的ProcessStartInfo和Process类执行此命令,从而实现自动添加规则,基本代码如下:

ProcessStartInfo start = new ProcessStartInfo("netsh.exe");

start.Arguments = " advfirewall firewall delete rule name="ip_001" "; //设置命令参数

start.CreateNoWindow = true; //不显示dos命令行窗口

start.RedirectStandardOutput = true;

start.RedirectStandardInput = true;

start.UseShellExecute = false; //是否指定操作系统外壳进程启动程序

start.WindowStyle = ProcessWindowStyle.Hidden;

Process p = Process.Start(start);

StreamReader reader = p.StandardOutput; //截取输出流

string line = reader.ReadLine(); //每次读取一行

while (!reader.EndOfStream)

{

Console.Out.WriteLine(line);

line = reader.ReadLine();

}

p.WaitForExit();

p.Close(); //关闭进程

reader.Close(); //关闭流

3 程序实现

本策略以window服务在后台运行,执行过程大体如下:

(1)启动时加载自定义参数,包括预定义的非法字符、非法字符串、非法正则表达式、单位时间访问次数上限、扫描时间间隔等;

(2)定时扫描IIS日志,将新的用户请求读取到Mysql数据库;

(3)检查这些请求的URL是否含有非法内容,若有则将IP传给屏蔽模块;

(4)检查IP的来访次数是否超过了规定的上限,若超过则将IP传给屏蔽模块。

程序流程图如下:

图1 屏蔽非法IP程序流程

4 结束语

本文提出的使用日志分析和netsh命令屏蔽非法IP的方法,易于编程实现、灵活实用,起到了主动防御SQL注入的作用,适用于基于ASP.NET架构的Web服务器。

[1]张慧琳,邹维.网页木马机理与防御技术[J].软件学报,2013.

[2]安晓瑞.Asp网站中一句话木马的安全性问题及防范措施的研究[J].首都师范大学学报,2014.

[3]王继刚.揭秘 WEB应用程序攻击技术[M].中国水利水电出版社,2009.

[4]王海峰,段友祥,刘仁宁.基于行为分析的病毒检测引擎的改良研究[J].计算机应用,2004.

[5]张勇,李力,薛倩.Web环境下SQL注入攻击的检测与防御[J].现代电子技术,2004.

猜你喜欢

日志命令屏蔽
把生活调成“屏蔽模式”
只听主人的命令
一名老党员的工作日志
扶贫日志
朋友圈被屏蔽,十二星座怎么看
雅皮的心情日志
移防命令下达后
如何屏蔽
游学日志
几乎最佳屏蔽二进序列偶构造方法