利用脚本实现ISA的VPN策略中MAC地址的判断

时间:2022-06-13 07:47:57

【摘要】 安全问题是校园网络管理的一个重要部分,利用ISA的VPN功能可以进行有效控制,其中许多策略靠脚本完成。本文对VPN进行了介绍,提供了脚本,灵活、有效地解决了利用更改MAC地址进行盗用IP上网的问题,从而有效地维护网络的安全。

【关键字】 ISA VPN MAC

【Abstract】 The management of campus network security is an im-

portant part of using the ISA's VPN capabilities can effectively con-

trol, many of which rely on the script to complete service. This paper VPN were introduced, providing the script. Resolved to change MAC address using IP theft free of charge access of the problems in order to effectively maintain network security.

【Keywords】 ISA VPN MAC

随着信息化的不断发展,网络使用的不断扩大,校园网的安全和信息流量控制是摆在我们面前的挑战。ISA(Internet Securi-

ty Acceleration)是一款微软出品的路由级网络防火墙,提供了更快速、更安全、更直观易于管理的系统。

对于网络管理员来讲,一般在服务器端进行IP、Mac间的绑定,以防止客户端盗用IP。但简单地绑定IP和MAC地址是不能完全的解决IP盗用问题。一般MAC地址(也叫物理地址、硬件地址或链路地址,由网络设备制造商生产时写在硬件内部。)在网卡中是固定的,由于Windows启动之前会检测注册表中是否有Mac地址,如果没有就会读入真实Mac地址(网卡Rom中的MAC地址)以备后用,否则就使用注册表中保存的Mac地址。这样的话如果客户端利用一些工具修改注册表中的MAC,再配合盗用IP地址,那么就会对服务器进行欺骗。

如图所示,如果用户更改了注册表中的MAC地址,那么这台主机就全使用005345000000这个MAC地址进行通讯。

传统的方法就是利用交换机对IP、MAC、端口三者进行绑定,但是这种方法灵活性不强,不便于网络管理,笔者认为,如果利用ISA中的VPN策略,让内网用户通过VPN拨号上网,配合VPN策略检查内网客户端设置如注册表MAC地址是否与网卡Rom中的MAC地址一致,可以比较有效、灵活地解决这一问题。

ISA虚拟专用网(VPN)可以让远程用户与局域网(LAN)之间,或者是分别位于两地的局域网之间,通过因特网来建立一个安全的通道。当VPN客户机通过VPN服务器的身份验证后,VPN服务器并不立即允许其访问内网,而是将VPN客户机放到一个被隔离的网络中。然后通过策略对客户机进行安全检查,如果VPN客户机通过了安全策略的检查,VPN服务器将允许其访问内网资源;如果不能通过安全策略检查,VPN客户机将被限定在隔离网络中,无法访问内网资源,而且在隔离网络中停留一段时间后会被逐出。

首先在ISA上安装隔离服务,创建通告协议和访问规则,在服务期上启动该服务。利用连接管理器管理工具包创建拨号配置文件,拨号配置文件中包含安全策略检查脚本,系统提供一部分,大部分需要编写。客户端安装上该文件,就可以进行访问了。

下面是部分代码

'取真实物理网卡ID与数量

Dim AdaptName() As String

Dim AdaptNum(40) As String

Dim AdaptInstance() As String

Dim K, P As Integer

Dim RegNum As String

P = 0

Dim Wsh1 As Object

Set Wsh1 = CreateObject("WScript.Shell")

For K = 0 To 40

If Len(Trim(Str(K))) = 1 Then

RegNum = "000" & Trim(Str(K))

Else

RegNum = "00" & Trim(Str(K))

End If

If CheckRegistryKey(HKEY_LOCAL_MACHINE, "SYS-

TEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\" & RegNum) = True Then

On Error Resume Next

AdaptNum(K) =

Wsh1.RegRead("HKEY_LOCAL_MACHINE\SYSTEM\Current-

ControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\" & RegNum & "\Characteristics")

If AdaptNum(K) = "" Then GoTo NN

If AdaptNum(K) = 132 Then

P = P + 1

ReDim Preserve AdaptName(P)

On Error Resume Next

AdaptName(P) =

Wsh1.RegRead("HKEY_LOCAL_MACHINE\SYSTEM\Current-

ControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\" & RegNum & "\NetCfgInstanceId")

If AdaptName(P) = "" Then GoTo NN

End If

Else

Exit For

End If

NN:

Next

Set Wsh1 = Nothing

If (P = 0 Or P > 10) Then Exit Function

On Error GoTo ErrorMac

'取永久物理地址

Set ColNetAdapterP = ObjWMIServiceP.ExecQuery("SE-

LECT * FROM MSNdis_EthernetPermanentAddress where Instan-

ceName= '" & AdaptInstance(QQ) & "'")

For Each ObjNetAdapterP In ColNetAdapterP

ReDim Preserve TrueMac(QQ)

PMacBit = UBound(ObjNetAdapterP.NdisPermanent Ad-

dress.Address)

For I = 0 To PMacBit

TempTrueMac(I) =

CStr(Hex(ObjNetAdapterP.NdisPermanentAddress.Address(I)))

If Len(TempTrueMac(I)) = 1 Then TempTrueMac(I) = "0" & TempTrueMac(I)

If (I PMacBit) Then

TrueMac(QQ) = TrueMac(QQ) & TempTrueMac(I) & "-"

Else

TrueMac(QQ) = TrueMac(QQ) & TempTrueMac(I)

End If

Next

Next

'取工作Mac地址

Set ColNetAdapterC = ObjWMIServiceC.ExecQuery("SELECT * FROM MSNdis_EthernetCurrentAddress where InstanceName= '" & AdaptInstance(QQ) & "'")

For Each ObjNetAdapterC In ColNetAdapterC

ReDim Preserve WorkMac(QQ)

CMacBit = UBound(ObjNetAdapterC.NdisCurrent Ad-

dress.Address)

For J = 0 To CMacBit

TempWorkMac(J) = CStr(Hex(ObjNetAdapterC.NdisCur-

rentAddress.Address(J)))

If Len(TempWorkMac(J)) = 1 Then TempWorkMac(J) = "0" & TempWorkMac(J)

If (J CMacBit) Then

WorkMac(QQ) = WorkMac(QQ) & TempWork-

Mac(J) & "-"

Else

WorkMac(QQ) = WorkMac(QQ) & Temp-

WorkMac(J)

End If

Next

Next

If TrueMac(QQ) WorkMac(QQ) Then Exit Function

Next

用这个方案配合ARP绑定和ISA中的VPN拨号可以彻底解决客户端修改MAC地址的难题。有效维护网络安全。

参考文献:

[1] 两个小时成为ISA Server 2004专家(PDF)

[2] How to :允许外部的VPN客户访问内部网络 风间子

上一篇:“计算机应用基础”的教学思考与改革 下一篇:基于SVM的IDS中的参数选择问题