Windows防火墙

2024-05-07

Windows防火墙(精选五篇)

Windows防火墙 篇1

利用SPI服务提供者接口进行数据包截获能够在应用层最丰富地得到当前访问网络应用程序的进程信息,它使用DLL监控使用Winsock调用进行网络通信的网络数据包。SPI工作在TDI客户之上,所有的用户进程之下,因此对于用户进程交给它的网络请求和意图非常清楚——在经过底层的分段(IP分段)之前,对用户进程的行为,目的可以更直观的了解,非常适合做内容过滤[1,2,3]。一个功能完备的个人防火墙系统不仅能够封包截获,还应能解析协议、支持自定义控管规则以及日志记录随时的网络通信状况并且其截获的所有Winsock调用广泛地被所有Windows平台支持。因此,选用SPI进行在最上层截获,是Windows平台上个人防火墙系统一般都要选用的技术方案[4]。

2 个人防火墙系统主体功能定义

归纳具有的功能如下:

(1)安装

SPI程序(DLL)要截获应用程序访问网络发出的Winsock调用,就必须抢先于协议驱动之前截获,就必须改变注册表中的Winsock编录的内容[1],这个工作由首次运行时的安装模块来完成。

(2)用户注册

首次运行时还应提供一个用户注册的输入界面,保存用户的注册信息到本地计算机的注册表中。

(3)封包监视

提供封包监视界面,遇到被拦截的网络数据封包,根据系统参数的设置进行报警。

(4)日志记录与查询

在启动用户进程和退出用户进程时分别读入和写出封包记录到日志文件中,并提供查询界面可按时间段进行封包日志查询。

(5)控管规则设置

手工添加、修改、删除控管规则,用户可对截获的询问自定义添加控管规则,并可定义允许访问的时间段和允许访问的目的主机的IP地址范围。

(6)系统配置参数设置

包括是否记录日志,日志文件最大值,是否自动启动用户进程,报警设置等。并将设置完毕的新的配置保存到控管规则文件中。

(7)关于界面

显示关于界面,版权信息,并显示作者联系方法方便该注册用户联系作者本人。

(8)封包截获检查过滤

该功能全部由工作于后台的SPI 2程序提供,包括提供设置工作模式和设置控管规则的接口函数,根据工作模式和控管规则对网络数据封包截获,以及发送消息通知前台用户进程取走封包。

3 个人防火墙系统体系结构

根据个人防火墙系统的功能定义,本人设计了如图1的体系结构。从图中看到有两个程序入口:前台用户界面监视进程监视进程和访问网络的应用程序。应用程序通过Winsock调用访问网络,SPI 2程序截获这些网络封包,根据工作模式、控管规则和系统参数设置决定是否放行,并与前台用户进程相互通信。Winsock 2 SPI与前台用户界面监视进程一起构成完整的个人防火墙系统。

4 系统模块定义

图2给出模块划分,以前台监视进程和后台的SPI两大模块进行细分:

5 控管规则文件结构设计

控管规则文件定义文件名为Acl.cfg,需要存储的内容有控管规则文件头以及控管规则记录等信息。包括系统设置,应用程序设置、控管规则、控管规则附加数据(授权访问的时间段记录)和控管规则附加数据2(授权访问的远端网络IP地址段范围),下面将以C语言分别描述Acl.cfg的文件头结构和Acl控管规则记录结构[5,6,7,8]。

5.1 Acl.cfg的文件头结构描述

5.2 Acl控管规则记录结构描述

6 日志文件结构设计

6.1 Log.dat日志文件头结构描述

6.2 Log.dat日志文件日志记录描述

日志文件名为Log.dat,需要存储日志文件头和日志记录。包括来源/目的IP、来源/目的端口、开始/结束时间、进/出流量、应用程序路径名称、服务(协议)类型、连接方向、管制动作及额外需要保存的信息。

7 结束语

个人防火墙开发技术挑战难度很大,得到了项目组成员的大力协同,在此一并致谢。本文给出了体系结构、主要部分的模块设计和文件结构定义,有关实现部分的技术要点分析限于篇幅不能给出,有兴趣者可与作者联系。

摘要:SPI服务提供者接口(Service Provider Interface)进行网络数据包截获能够最完备地得到进程访网信息,是Windows平台个人防火墙系统数据包截获的首选技术方案。本项目遵循SPI规范实现了一Windows下的个人防火墙系统,本文给出了其功能定义、体系结构图和模块设计。

关键词:个人防火墙,SPI

参考文献

[1]Jones Anthony,Ohlund Jim著.Windows网络编程[第二版][M].杨合庆译.北京:清华大学出版社,2002.

[2]陈向群,马洪兵,王雷等著.Windows内核试验教程[M].北京:机械工业出版社,2002.

[3]Marcus Goncalves著.Firewalls Complete[M].McGraw-Hill,1997.

[4]Jerry Lee Ford著.个人防火墙[M].北京:人民邮电出版社,2002

[5]王华,叶爱亮等著.Visua1C++6.0编程实例与技巧[M].北京:机械工业出版社,1999.

[6]Visual Studio6.0MSDN联机帮助.

[7]汪晓平,钟军著.Visual C++网络通信协议分析与应用实现[M].北京:人民邮电出版社,2003.

Windows防火墙 篇2

1我们要关闭防火强就必须进入到系统控制面板中,我们右击【开始】菜单

2. 在出现的选项中,选择【控制面板】具体如下图所示。

3. 然后在如下图界面我们点击红框处的【系统和安全】按钮进入,

4. 在此你会看到一个名为【Windows防火墙】按钮了,我们点击它。

5. 在此就会看到有【启用或关闭Windows防火墙】文字了,我们点击它。

6. 现在你会看到有一个【关闭Windows防火墙】选项,我们只要点击它,然后点击下方的【确定】即可。

Windows防火墙 篇3

控制漏洞程序安全

在重要的主机系统或服务器系统中,可能会安装一些自身存在漏洞的应用程序,这些漏洞很可能会被非法用户利用,为了保证系统安全,不少人会下意识地认为,及时为系统更新、安装补丁程序,将各式各样的漏洞全部“堵”起来,就能实现安全防护目的了。不过,更新、安装系统补丁程序,只能“堵”住Windows系统自身的安全漏洞,而不能将应用程序特有的漏洞“堵”住,所以更新、安装补丁程序根本就无法控制住漏洞程序带来的安全威胁。此时,我们可以尝试利用Win2008系统的防火墙功能。来禁止漏洞程序随意连接网络,以便控制程序漏洞带来安全威胁,下面就是具体的控制步骤:

首先打开Win2008系统的“开始”菜单,依次点选“设置”、“控制面板”选项,再从系统控制面板窗口中双击Windows防火墙图标,弹出对应系统的基本Windows防火墙设置界面;

其次点击该设置界面中的“例外”选项卡,弹出如图1所示的选项设置页面,检查对应页面中的网络程序列表中是否包含漏洞应用程序,如果发现目标漏洞程序已经被选中的话,那就意味着漏洞应用程序的网络连接不受防火墙的限制,此时我们必须将漏洞程序取消选中,再单击“确定”按钮保存好设置操作,这么一来目标漏洞程序日后尝试连接网络时,防火墙都会对它进行阻止,那么这些漏洞就不能被来自外网的非法用户利用了。

解除网络隐性故障

为了实现安全保护目的,我们常常会对Win2008系统的防火墙功能,进行一些组合式设置,以便希望它能给网络安全提供多层保护;然而,在进行了非常复杂的配置操作后,Win2008系统可能不能正常上网了。在对各种常见因素进行排查之后,我们可能仍然还不能解除网络访问故障,此时就需要考虑故障“祸首”是不是系统防火墙了,因为防火墙的多层设置可能在无意中对网络连接带来制约,影响系统的正常上网,所以当我们遇到无法解决的网络故障时,可以按照下面的步骤快速恢复系统防火墙的配置:

首先在Win2008系统桌面上依次单击“开始”|“运行”命令,弹出系统运行对话框,在其中执行“cmd”命令,打开对应系统的DOS命令行窗口。

其次在该窗口的命令行提示符下,输入“netsh Tirewall reset”命令,单击回车键后,快速将系统防火墙的配置恢复到默认状态,那样一来制约网络连接的隐性因素就被排除了,此时再进行网络访问测试时,就可能会发现网络故障已经被成功解除了。

当然,我们也可以按照前面的操作步骤,打开Win2008系统的基本防火墙配置界面,点选其中的“高级”选项卡,再在对应选项设置页面中单击“还原为默认值”按钮,也能将Windows防火墙的安全设置全部恢复到默认状态。

另外,还需要提醒各位注意的是,有的网络隐性故障是由于防火墙之间的冲突引起的,所以当我们将系统防火墙的配置恢复到默认状态后,发现网络故障仍然还无法解决时,不妨暂时关闭一下系统防火墙,再将对应系统重新启动一下,说不定这样一来网络故障就能立即解除了。

禁止调整安全配置

在公共场合下,可能每一用户都能打开Win2008系统的基本防火墙配置界面,来随意调整其中的安全配置参数,这么一来防火墙的作用可能就无法得到有效发挥,严重的话还能威胁本地系统的上网安全。有鉴于此,我们必须在公共场合下,将Win2008系统的基本防火墙配置界面“锁”起来,以便禁止他人随意调整安全配鬣、降低系统的安全防范能力,下面就是具体的控制步骤:

首先在Win2008系统桌面上依次单击“开始”|“运行”命令,弹出系统运行对话框,在其中执行“gpedit.msc”命令,弹出对应系统的组策略控制台窗口;

其次依次展开该控制台窗口左侧列表窗格中的“计算机配置”|“管理模板”|“网络”|I“网络连接”|“windows防火墙”|“标准配置文件”节点选项,找到目标节点下面的组策略“Windows防火墙:不允许例外”,打开如图2所示的选项设置对话框;

在该界面中看看“Windows防火墙:不允许例外”策略此刻有没有处于已启用设置状态,要是发现该策略还没有被启动运行的话,那我们应该及时选中“已启用”选项,再单击“确定”按钮保存好设置操作,这么一来普通用户就不能随意调整防火墙的安全配置了,那么任何网络连接都会受到系统防火墙的安全保护。

保护共享打印操作

现在共享打印机在局域网中应用很普遍,为此W in2008系统的防火墙在默认状态下,也不会对共享打印操作进行限制;可是,这么一来有一些用户在上班以外的时间,偷偷利用共享打印机来干私活,这无形之中加重了办公成本。为了有效控制办公成本。我们可以利用W in2008系统的防火墙来保护共享打印操作,以便在节假日期间禁止任何用户随意使用网络打印机进行共享打印,下面就是具体的保护方法:

首先依次单击wi n2008系统桌面上的“开始”|“设置”|“控制面板”命令,从弹出的系统控制面板窗口中双击Windows防火墙图标,弹出Win2008系统的基本Windows防火墙设置界面;

其次单击该设置界面中的“例外”选项卡,在对应选项设置页面中,我们发现“文件和打印机共享”选项已经自动处于选中状态,这说明防火墙没有对共享打印操作进行安全保护,此时我们只要将“文件和打印机共享”选项取消选中,再单击“确定”按钮,那么日后任何人在尝试进行网络打印操作时,都会受到Windows防火墙的限制了。

预防恶意Ping攻击

我们知道,如果频繁向重要主机系统发送大容量的Ping测试包时,重要主机系统可能存在瘫痪的危险。为了预防恶意Ping攻击,我们可以利用Win2008系统的高级防火墙功能,来限制本地系统对Ping测试包进行应答,那么本地系统就不会被攻击瘫痪了,下面就是具体的限制步骤:

首先依次点击Wi n200 8

系统桌面中的“开始”|“程序”|“管理工具”命令,再双击管理工具列表中的“高级安全Windows防火墙”选项;打开高级防火墙配置界面,选中该配置界面左侧显示区域中的“入站规则”选项,再右击“入站规则”选项,从右键菜单中执行“新规则”命令,弹出如图3所示的向导设置窗口,选中“自定义”选项;

其次依照向导提示,逐一选中“所有程序”、“ICMPv4”、“阻止连接”选项,再选择一个与实际工作环境相符的具体场合,最后设置一个安全规则名称,那样一来Win2008系统的高级防火墙功能就能预防Ping命令攻击了。日后所有尝试对Win2008系统进行的Ping命令测试请求,都会被防火墙拒绝,那么该系统的资源也不会被Ping测试消耗殆尽了,此时该系统自然也就不容易瘫痪了。

限制非法FTP下载

大家知道,一些Ftp软件会利用默认开放的21端口,对重要主机系统进行下载或上载操作,如果这项操作被非法利用的话,可能会影响重要主机系统的安全性。为此,我们可以利用W in2008系统的高级防火墙功能,来创建一个限制21端口通信的入站和出站规则,那么日后任何人都不能通过2l端口对Win2008系统进行恶意下载或上载操作了:

首先按照前面的操作步骤打开Win2008系统的高级防火墙配置界面,选中该界面左侧的“入站规则”选项,并用鼠标右击“入站规则”选项,再执行右键菜单中的“新规则”命令,弹出入站规则新建向导对话框;

其次选中“端口”选项,再单击“下一步”按钮。弹出如图4所示的向导设置窗口,之后依次选中“TCP”选项、“特定本地端口”选项,同时输入默认下载端口号码“21”,继续单击“下一步”按钮;

Windows防火墙 篇4

防火墙在网络安全防护中具有重要作用, 从应用的角度来看, 防火墙可以分为企业级防火墙和个人防火墙[1]。前者主要是部署在内、外部网络的边界, 对内、外部网络实施隔离, 从而保护内部网络的安全:而后者则通过纯软件的方式来实现, 安装在个人电脑中, 通过对网络数据包拦截、规则的设置和匹配及对网络行为的处理 (允许或禁止) 来达到保护网络安全的目的。

目前, Windows操作系统已广泛应用在个人电脑中, 基于 Windwos的个人防火墙技术已经相对成熟, 市场上各类产品也很多, 国外较署名的产品有:Kaspersky anti-Hacker, McAfree, Norton Personal Firewall, ZoneAlarm Pro和Outpost Firewall PRO等, 国内产品中常见的有天网、金山和瑞星等。这些个人防火墙的核心区别在于Windows环境下网络数据包拦截方法, 通常数据包的拦截可以在windows用户态和核心态进行, 在用户态采用Winsock2 spi 拦截http, ftp, telnet和pop3等应用层协议网络数据包, 这种方法效率较高, 容易进行数据包内容过滤, 但它只能在Winsock层次上拦截网络数据包, 拦截能力较弱;与用户态相比, 在内核态的数据包拦截能力更强, 主要的方法有[2]:基于TDI传输驱动程序 (Transport Drivers Interface) 、基于NDIS钩子驱动 (NDIS Hook Driver) 和基于NDIS中间层驱动[3]等。由于TDI只实现了IP, TCP, UDP等协议, 对底层协议的数据包也无能为力;NDIS钩子通过向NDIS.sys注册一个假协议, 然后利用接收数据的派遣函数的地址进行挂接后实现数据包拦截, 但这种技术对平台的依赖性比较大, 需要针对不同的系统平台采用不同的结构。而NDIS中间层驱动位于协议驱动层和小端口驱动之间, 它能够截获所有的网络数据包。虽然该方法在技术实现上较为复杂, 目前的个人防火墙产品仍然较少采用。但是, 由于其功能强大, 过滤效率高, 它依然是未来个人防火墙发展趋势。

本文深入研究基于NDIS中间层驱动的数据包拦截方法以及Windows内核态驱动程序与用户态应用程序间的通信机制, 设计并实现了一种基于Windows内核态的个人防火墙系统, 它由应用程序和驱动程序2部分构成, 其中, 驱动程序负责对非法数据包进行拦截过滤;应用程序负责对数据包进行实时监控, 并向用户报告检测结果。

1 Windows个人防火墙系统结构

1.1 系统结构

该防火墙由运行于用户态的应用程序和运行于核心态的驱动过滤2部分构成, 两者之间采用共享内存的方式进行通信, 具有ARP欺骗攻击检测与防御、检测与防御DNS欺骗和检测网页木马等功能。其系统结构如图1所示, 用户态的应用程序通过监控并分析进出网卡接口的数据包, 以决定是否将该数据包的发送者列入黑名单并向用户报告。此外, 应用程序还是防火墙的GUI部分, 负责向用户实时报告结果, 提供过滤规则参数设置界面。

1.2 功能描述

本防火墙实现以下基本功能:

(1) 能对ARP攻击、DNS欺骗和常见的网页木马进行检测和抵御, 发现非授权的请求后应能立即拒绝, 随时保护上网主机的安全。

(2) 提供一系列安全规则设置, 允许或禁止特定主机的相关服务, 用户可根据实际情况修改安全规则或建立黑名单。驱动程序根据安全规则及黑名单进行数据包过滤。

(3) 将所有被拦截的访问记录的详细信息写入日志, 供用户查询或追踪攻击源。

2 Windows个人防火墙的关键技术实现

2.1 驱动程序设计

NDIS中间层过滤驱动 (Ndis Intermediate Driver) 位于网卡驱动和协议驱动之间[4], 其2个接口:Miniport接口和Protocol接口, 所有网络数据包均流经NDIS中间层。Passthru[5]是Microsoft公司在Windows DDK[6]中提供的一个NIDS中间层驱动的开发框架, 本防火墙的驱动部分就是在该框架的基础上实现的, 其主要的作用是根据已定的规则和黑名单对非法数据进行过滤。

2.1.1 数据包的获取

非法数据包的过滤是在驱动程序中实现的。在Passthru中负责接收数据的派遣例程有2个, 分别是PtReceive和PtReceivePacket。在PtReceive和PtReceivePacket两个例程中调用获取数据包例程PtGetPacketContent, PtGetPacketContent例程如下:

NDIS_STATUS

PtGetPacketContent ( IN PNDIS_PACKET Packet, OUT PUCHAR PackContent )

{ …

UINT nBufLength, nBufferConut, nTotalPacketLength;

PUCHAR pBuf;

PNDIS_BUFFER pFirstBuf;

NdisQueryPacket (Packet, NULL, &nBufferCount, &pFirstBuf, &nTotalPacketLength) ;

NdisQueryBufferSafe (pFirstBuf, &pBuf, &nBufLength, NormalPageProroity) ;

NdisMoveMemory (PackContent, pBuf, nBufLength) ;

return NDIS_STATUS_SUCCESS;

}

PtGetPacketContent通过调用NdisQueryPacket例程从包描述符中获取数据包的相关信息, 然后调用NdisQueryBufferSafe例程逐个缓冲区返回数据包内容并追加到另一个缓冲区中。

2.1.2 数据包的过滤

前面PtGetPacketContent例程获得数据包的内容, 接下来就可以对数据包进行过滤。数据包过滤例程PtFilterPacket如下:

NDIS_STATUS

PtFilterPacket (IN PUCHAR PacketContent)

{ PARPHDR pArp = (PARPHDR) PackContent;

//对于etherhdr头和arp头的MAC地址不匹配的数据一律丢弃//

if (PtMacCompare (pArp->etherhdr.SrcMac, pArp->SenderMac) !=0)

{ return NDIS_STATUS_NOT_ACCEPTED;}

if (!IsListEmpty (&BlackList) )

{ PLIST_ENTRY pEntry = BlackList.Flink;

PBLACKLIST pList;

while (pEntry!=&BlackList)

{ pList = CONTAINING_RECORD (pEntry, BLACKLIST, ListEntry) ;

if (pList->Type == 1)

{ if (源MAC地址==黑名单MAC)

{return NDIS_STATUS_NOT_ACCEPTED;}}

else if (pList->Type == 2)

{ if (源MAC和IP地址==黑名单的MAC和IP地址)

{ return NDIS_STATUS_NOT_ACCEPTED;}

}

}

}

return NDIS_STATUS_SUCCESS;

}

PtFilterPacket例程对传入的数据包进行分析, 判断其是否在黑名单。对于不合法的数据包, 返回NDIS_STATUS_NOT_ACCEPTED指示丢弃该数据包。

2.2 应用程序设计

应用程序是防火墙的GUI部分, 负责向用户报告结果和提示操作的界面。应用程序对数据包监控分析及过滤规则的设置, 用户通过防火墙安全规则的设定, 向数据包拦截模块传递规则。实时显示数据包的过滤和黑名单的拦截情况。

应用程序部分的核心类共包含:ArpPtUIDlg, Capture, Detect, CheckDefendDNStoof和CheckHetspy等5个类, 如图2所示。其中:

(1) ArpPtUIDlg:防火墙系统总调度显示类, 负责其他所有类的创建和相互调度;

(2) Capture:捕获数据包类, 负责捕获数据包;

(3) Detect:检测防御ARP攻击[7]类, 该类接受Capture类捕获的ARP数据包, 并对数据包进行检测分析;

(4) CheckDefendDNStoof:检测防御DNS欺骗类, 该类接受Capture类捕获的DNS数据包, 并对数据包进行检测分析;

(5) CheckHetspy:检测网页木马类, 该类接受Capture类捕获的HTTP数据包, 并对数据包进行检测分析。

2.3 驱动程序和应用程序的通信

个人防火墙不仅要实现对网络数据包的拦截, 还要分析数据包后, 根据设定的规则对数据包进行处理, 并将保存日志。因此, 驱动程序和应用程序就要进行通信以达到信息的交互。驱动程序和应用程序之间通过共享内存的方式实现通信, 两者间的内存共享有2种实现方法[8,9]是通过共享内存对象方法来实现, 另一种是通过设备输入和输出控制 (IOCTL) 方法来实现。本文的防火墙采用驱动定义的IOCTL方法。IOCTL值是个32位的无符号整数。DDK (Driver Development Kits) 提供一个CTL_CODE, 其定义如下:

CTL_CODE (DeviceType, Function, Method, Access)

其中DeviceType指定设备对象的类型, 这个类型应和创建设备时的类型相匹配。一般是形如FILE_DEVICE_XXX的宏;Function指的是驱动程序定义的IOCTL码, 而0X000~0X7FF为微软保留, 0X800~0XFFF由程序员自己定义;Method是指操作模式, 由METHOD_BUFFERED、METHOD_IN_DIRECT, METHOD_OUT_DIRECT和METHOD_NEITHER其中之一组成;Access为访问权限[10]。如IOCTL的定义如下:

#define IOCTL_PTUSERIO_PASS_EVENT

_PTUSERIO_CTL_CODE (0x1005, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)

上述IOCTL定义是将事件信号传递给驱动, 使用缓冲区方式操作, 可读写。

定义IOCTL之后, 应用程序通过调用Win32API DeviceIoControl例程与驱动程序相互通信。DeviceIoControl的声明如下:

BOOL DeviceIoControl (

HANDLE hDevive,

DWORD dwIoControlCode,

LPVOID lpInBuffer,

DWORD nInBufferSize,

LPVOID lpOutBuffer,

DWORD nOutBufferSize,

LPDWORD lpBytesReturned,

LPOVERLAPPED lpOverlapped

) ;

DeviceIoControl的应用实现如下:

void PassEvent ()

{

m_hEvent = ::CreateEvenet (NULL, FALSE, FALSE, NULL) ;

::DeviceIoControl (m_hDriver,

IOCTL_PTUSERIO_PASS_EVENT, &m_hEvent,

sizeof (m_hEvent) , NULL, 0,

&dwOutLength, NULL) ;

}

驱动中的派遣例程按照以下步骤完成用户的请求:

(1) 从IRP结构中获取IoControlCode, 判断用户当前发出的是哪一个请求;

(2) 从IRP结构中获取用户传递过来的参数 (可选) ;

(3) 按用户的要求完成相关操作;

(4) 调用IoCompleteRequest向I/O管理器指示已完成用户的请求。

3 系统测试

首先在Windows XP环境下安装该防火墙, 为了完成测试工作, 自行编写了Attacker (ARP攻击程序) 和dnsCheat (DNS攻击程序) 并在网页中嵌入木马程序。该防火墙启动界面如图3所示。

因篇幅有限, 下面仅以ARP攻击为例说明测试过程, 用于测试的主机IP地址为192.168.9.45, MAC地址为01-23-45-67-89-AB;网关IP地址为192.168.9.254, MAC地址为00-26-9E-AB-86-CC。启动Attacker程序, 依次进行以下攻击行为冒充网关;攻击者散布虚假ARP广播报文;非法扫描主机;防火墙的响应分别如图4~图6所示。

从图中可以看出, 该防火墙在Windows平台下运行稳定, 能够对各种ARP攻击、DNS攻击和常见木马病毒等攻击行为进行检测和处理, 将可疑的主机地址加入黑名单并将结果报告给用户, 能有效保护Windows主机的上网安全。

4 结 语

防火墙是解决用户上网安全问题的一种重要技术手段。本文基于Windows内核态讨论并给出了个人防火墙关键技术的设计及实现过程, 在局域网 (以太网) 中通过自行编写的攻击程序进行了ARP攻击、DNS攻击和网页木马病毒等进行了测试, 结果表明, 该防火墙运行稳定, 能够有效拦截非法数据包, 达到了预期的设计目标。下一步研究工作还需要在此基础上集成更多的防御网络攻击的功能, 提高中间层驱动过滤程序的工作效率, 进一步降低防火墙对网络接口数据传输性能的影响。

参考文献

[1]NOONAN W, DUBRAWSKY I.防火墙基础[M].陈麒帆, 译.北京:人民邮电出版社, 2007.

[2]程克勤, 邓林, 王继波, 等.基于应用层的Windows个人防火墙的设计与实现[J].合肥工业大学学报:自然科学版, 2010, 34 (5) :695-699.

[3]谭文, 杨潇, 邵坚磊, 等.Windows内核安全编程[M].北京:电子工业出版社, 2009.

[4]HOU Gong-hua, ZHAO Yuan-dong.Research and designof packet filtering based on NDIS intermediate driver[J].Control&Automation, 2006, 22 (12) :141-143.

[5]ZHENG Wen-bing, LI Chen-zhong.An algorithm againstattacks based on ARP spoofing[J].Journal of SouthernYangtze University, 2003, 2 (6) :574-577.

[6]Microsoft Corporation.Microsoft developer network MSDNlibrary for Windows DDK[R].USA:Microsoft Copora-tion, 2000.

[7]曲春强.基于Winpcap的ARP欺骗攻击的防御的研究[D].大连:大连海事大学, 2008.

[8]佚名.如何在用户模式与内核模式之间共享内存[EB/OL].[2005-11-23].http://support.microsoft.com/kb/191840/zh-cn.

[9]佚名.在驱动和应用程序间共享内存[EB/OL].[2009-7-20].http://www.cnblogs.com/xuneng/archive/2009/11/30/1613553.html.

Windows防火墙 篇5

随着Inte.net的普及,人们的日常工作与之的关系也越来紧密,因而越来越多的单位为员工开设了Internet的代理上网服务。但当一个企业的内部网络接上Internet之后,企业的内部资源就象待卖的羔羊一样,面临任人宰割的危险,因而系统的安全除了考虑计算机病毒、系统的健壮性等内部原因之外,更主要的是防止非法用户通过Internet的入侵。而目前防止的措施主要是靠防火墙的技术完成。

一、什么是防火墙

防火墙(firewall)是指一个由软件或和硬件设备组合而成,处于企业或网络群体计算机与外界通道(Internet)之间,限制外界用户对内部网络访问及管理内部用户访问外界网络的权限。主要是控制对受保护的网络(即网点)的往返访问,逼使各连接点的通过能得到检查和评估。

从诞生到现在,防火墙已经历了四个发展阶段:基于路由器的防火墙、用户化的防火墙工具套、建立在通用操作系统上的防火墙、具有安全操作系统的防火墙。目前防火墙供应商提供的大部分都是具有安全操作系统的软硬件结合的防火墙,象NETEYE、NETSCREEN、TALENTIT等。在LINUX操作系统上的防火墙软件也很多,除了下面要专门介绍的IPCHAINS外,还有很多,如:Sinus Firewall、Jfwadmin等。

目前的防火墙从结构上讲,可分为两种:

1) 代理主机结构

内部网络<----->代理网关(Proxy Gateway)<----->Internet

2) 路由器加过滤器结构

内部网络<----->过滤器(Filter)<---->路由器(Router)<---->Internet

二、用IPCHAINS构建局域网防火墙的原理

其实从本质上讲,用IPCHAINS构建局域网防火墙也是一种C/S模式的交互式的应用。一般服务器提供某特定功能的服务总是由特定的后台程序提供的。在TCP/IP网络中,常常把这个特定的服务绑定到特定的TCP或UDP端口。之后,该后台程序就不断地监听(listen)该端口,一旦接收到符合条件的客户端请求,该服务进行TCP握手后就同客户端建立一个连接,响应客户请求。与此同时,再产生一个该绑定的拷贝,继续监听客户端的请求。

IPCHAINS就是这样的一个SERVER。对内部网通往Intenet的请求,或从外部通往内部网的请求,都进行监听、检查、评估、转发、拒绝等动作。

常用的服务、协议与默认端口。

服务类型 协议 端口

WWW TCP/UDP 80

TELNET

ICMP

SMTP

POP3

FTP

DNS

三、用IPCHAINS作防火墙的步骤

1.安装

IPCHAINS现在的版本已经发展到1.3.9。一般在安装LINUX时都会安装上,如果没有的话可以到www.linux.org下载。下面笔者一TLC4.0为例安装IPCHAINS。由于它需IP-MASQ的支持,所以确定已安装了IP-MASQ模块。

在TLC4.0中,把该光盘放入光驱中,

#turbopkg

并选择ipchains,然后按OK就自动自动安装了。

如果你是下载ipchains安装包的话:

1)如果是rpm包:

#rpm Civh *.rpm

2)如果是.tar.gz包

#tar xvfz *.tar.gz(先把包解开)

再到解开目录

#./configure

#make

#make install

这样就安装成功了。

2.启用ipchains

手工修改 /proc/sys/net/ipv4/ipforward文件,将其内容置为1。

在/etc/rc.d/目录下用touch命令建立rc.ipfwadm文件

在/etc/rc.d/目录下的rc.local文件中加上下面这段代码:

if [ -f /etc/rc.d/rc.ipfwadm ]; then /etc/rc.d/rc.ipfwadm; fi;

以后所有的ipchains的配置命令都将在rc.ipfwadm文件里修改。

3.配置ipchains(基本应用)

ipchains对机器的管理是通过对机器的ip地址作为标志的,因而首先得确保你的局域网的机器的ip地址已经配分配好,并且你对之相当熟悉。

Ipchains的配置规则一般是围绕着input、output、ipforward这三个规则进行的,其中input是指对内连接请求的过滤规则,output是指对外连接请求的过滤规则,ipforward是指对内部与外部通讯包的转发。Ipchains的命令格式一般是:

ipchains [ADC] ipchains规则 [ipchains 选项]。

有关命令的详细用法请参考有关HOWTO文档。

现在我们假设企业的内部网网段为192.168.1.0~192.168.1.255.其中防火墙的主机的IP地址为:192.168.1.1,假设目前防火墙是进行代理上网,拒绝所有的外部telnet。对内部用户访问外部站点进行限制、并授予一些机器特权可任意访问外部机器、拒绝内部某些机器访问Internet等。网段示意图为:

+--------------+

| 内部网段 | 192.168.1.1 ISDN、PSDN

| +------------|firewall|<===============>Internet

| 192.168.1.0 | +--------+

+-------------- +

配置ipchains防火墙规则一般有两种方式:

1) 首先允许所有的包,然后在禁止有危险的包通过防火墙;

2) 首先禁止所有的包,然后再根据所需要的服务允许特定的包通过防火墙。

相比较而言,第二种方式的做法更为安全。

下面是我的rc.ipfwadm的文件内容:

/sbin/depmod Ca

/*自动加载所需模块,如果觉得这样有危险,需手动指定安装模块,可以如下面这一小段就是手动指定加载模块*/

#/sbin/modprobe /lib/modules/2.2.10/ipv4/ip_masq_ftp

/*加载ip伪装的ftp模块*/

#/sbin/modprobe /lib/modules/2.2.10/ipv4/ip_masq_irc

/*加载ip伪装的irc模块*/

#/sbin/modprobe /lib/modules/2.2.10/ipv4/ip_masq_raudio

#/sbin/modprobe /lib/modules/2.2.10/ipv4/ip_masq_user

#/sbin/modprobe /lib/modules/2.2.10/ipv4/ip_masq_autofw

/sbin/modprobe -a -t /lib/modules/2.2.10/ipv4/ip_masq*

/*自动加载ip伪装的相关模块*/

ipchains CF

/*刷新所有的ipchains规则*/

ipchains -P forward DENY

/*拒绝转发所有的ip包*/

/*下面允许特定的包通过*/

/*开设权限比较高的主机*/

ipchains -A forward -s 192.168.1.10/32 -j MASQ

/*允许内部的192.168.1.10主机不受限制访问,

比如总经理*/

ipchains -A forward -s 192.168.1.12/32 -j MASQ

/*允许内部的192.168.1.12主机不受限制访问。比如系统管理员,在依次添加*/

ipchains -A forward -s 192.168.1.41/32 -j MASQ

/*for example linuxbird的主机地址:192.168.1.41*/

/*某些机器,因需要不能对外连接*/

ipchains -A forward -s 192.168.1.3/32 -j DENY

/*此机器为内部文档专用机,不能访问外部*/

/*设置内部普通用户能访问的站点*/

ipchains -A forward -d 202.101.98.55/32 -j MASQ # FJ-DNS

ipchains -A forward -d 202.101.0.133/32 -j MASQ # FJ-DNS

/*这是上网的DNS服务器,本人用的是福州电信局的DNS*/

/*以下是普通用户能访问的站点,根据需要可以对其增删改*/

ipchains -A forward -d 202.101.98.50/32 -j MASQ

/* public.fz.fj.cn*/

ipchains -A forward -d 202.101.98.60/32 -j MASQ

/* pub5.fz.fj.cn*/

ipchains -A forward -d 202.96.44.14/24 -j MASQ

/*freemail.263.net*/

ipchains -A forward -d 202.99.11.120/32 -j MASQ

/*www.linuxaid.com.cn*/

ipchains -A forward -d 205.227.44.44/24 -j MASQ

/* www.oracle.com*/

ipchains -A forward -d 205.227.44.46/32 -j MASQ

/* lliance.oracle.com*/

#ipchains -A forward -d 205.227.44.237/32 -j MASQ

/* support.oracle.com*/

ipchains -A forward -d 209.246.5.38/24 -j MASQ

/* technet.oracle.com*/

ipchains -A forward -d 137.69.200.8/32 -j MASQ

/* www.legato.com*/

ipchains -A forward -d 202.96.125.102/32 -j MASQ

/*www.188.net*/

ipchains -A forward -d 207.105.83.51/32 -j MASQ

/* www.borland.com*/

ipchains -A forward -d 207.46.131.30/24 -j MASQ

/* www.microsoft.com*/

ipchains -A forward -d 207.46.130.30/24 -j MASQ

/* www.microsoft.com*/

ipchains -A forward -d 204.146.81.99/32 -j MASQ

/* www.ibm.com*/

ipchains -A forward -d 202.102.24.74/24 -j MASQ

/* www.lodesoft.com*/

ipchains -A forward -d 210.77.34.109/32 -j MASQ

/* www.csdn.net*/

ipchains -A forward -d 192.138.151.66/32 -j MASQ

/* www.sybase.com*/

ipchains -A forward -d 202.102.26.1/32 -j MASQ

/* www.nari-china.com*/

ipchains -A forward -d 202.102.26.51/32 -j MASQ

/*www.aeps-info.com*/

ipchains -A forward -d 202.106.185.2/32 -j MASQ

/* www.sohu.com */

……

上一篇:水利工程维护与管理下一篇:引脚设计