Private Sub Form_Load()
txtLOG.Text = "日志:" & vbCrLf
NOW_OUT = 1
End Sub ’在窗体载入时初始化日志文件和连接变量
Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Load Winsock2(NOW_OUT) '加载建立连接的Winsock2数组控件
Winsock2(NOW_OUT).Accept requestID '建立连接
Winsock1(Index).Close
Winsock1(Index).Listen 'Winsock1继续监听
NOW_OUT = NOW_OUT + 1 '连接的控件累加
myAddLog "来自" & Winsock1(Index).RemoteHostIP & "连接到本地端口:" & Winsock1(Index).LocalPort '显示捕获的连接
End Sub ’在WINSOCK2建立连接的同时,WINSOCK1进行监听远程扫描本地端口
Private Sub Winsock2_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Winsock2(Index).GetData tmpstr '通过Getdata函数捕获数据
myAddLog "来自" & Winsock2(Index).RemoteHostIP & "的数据:" & tmpstr '显示捕获的数据
End Sub ’用WINSOCK2获取数据并加入到日志
Sub myAddLog(tmptext As String) '加入日志
tmptext = tmptext & vbCrLf
txtLOG.SelStart = Len(txtLOG.Text)
txtLOG.SelText = tmptext
End Sub ’自动增加日志内容,并高亮显示当前所捕捉到的数据
程序说明:这是一个简单的监听程序,并不具有分析的功能,因此,它不是一个入侵检测系统,而是入侵检测系统的前半部分——数据收集。它是通过winsock(系统本身提供的组件)本身的功能,简单的实现对本地断口的监听和对到达本地的数据进行捕获。
总结
入侵检测作为一种积极主动地安全防护技术,提供了对内部攻击、外部攻击和误操作的实时保护,在网络系统受到危害之前拦截和响应入侵。入侵检测系统面临的最主要挑战有两个:一个是虚警率太高,一个是检测速度太慢。现有的入侵检测系统还有其他技术上的致命弱点。因此,可以这样说,入侵检测产品仍具有较大的发展空间,从技术途径来讲,除了完善常规的、传统的技术(模式识别和完整性检测)外,应重点加强统计分析的相关技术研究。
但无论如何,入侵检测不是对所有的入侵都能够及时发现的,即使拥有当前最强大的入侵检测系统,如果不及时修补网络中的安全漏洞的话,安全也无从谈起。