计算机网络技术的日益发展和普及,为信息共享提供了一条全球性的高速通道,但目前采用的tcp/ip协议族潜在着安全漏洞,其安全机制并不健全,如何保护企业内部网络中的资源及信息不受外部攻击者肆意破坏或盗窃,是企业网络安全需要解决的重要问题。 当我们担心被黑客攻击或怀疑电脑被植入木马时,我们往往求助于防火墙,本系统即通过实时监控全部tcp连接的方法来实现防黑客攻击。同时网络管理人员在整个网络运行期间,能否实时监控联网计算机的运行状态和操作对网络安全具有极其重要的作用.下面就以visual basic 6.0作为开发工具讲述两个主要模块的设计和实现。
系统概述
该系统由两个子系统组成:服务器端系统和客户端(工作站)系统。服务器端系统安装在网络管理人员的计算机上,用于实施各种对联网计算机的监控操作;客户端系统安装在每台联网的计算机上,它运行后以图标的方式出现在系统任务栏的提示区中,不影响工作站的其他操作,只用于响应服务器端的监控命令,并根据服务的需要,及时采样工作站的相应数据返回给服务器端。该系统的运行环境可以运行于win98、win95或winnt、win2000下。在系统的开发中,引入了winsock通讯控件,除此之外,为较好地实现各项监控操作,还用到了几个api函数。
系统功能
1、监控全部tcp连接:实时监控所有服务器端口的连接情况、及时对异常连接发出警告并提示用户删除异常连接;
2、屏幕监控:该功能允许服务器随时把被监控工作站的屏幕画面抓取到服务器中,网络管理人员对相应工作站所进行的操作一目了然,若发现有非法操作即可采取发送警告或强制措施,强迫其停止相应操作;
3、对工作站进行锁机、关机、限制鼠标活动等;
4、服务器和工作站之间的信息互送。
功能的实现
1、监控全部tcp连接
tcp/ip(transmission control protocol/inte.net protocol:传输控制协议/互联网协议)是一个包括tcp、ip、 udp、arp、rarp和icmp等在内的网络协议集。tcp/ip经常被称为“将inte.net绑定在一起的粘合剂”,它允许在空间上分离的多个信息网络连接在一起形成一个巨大的虚拟网络。tcp和udp(用户数据报协议)是两个最常用的数据传输协议,它们都使用设置监听端口的方法来完成数据传输。
在本文中讨论tcp连接。通过使用tcp, inte.net客户机可以打开到另一个inte.net客户机的虚拟连接并传送数据流。与udp不同,tcp协议通过重传丢失的数据报保证传输的可靠性。它也保证在接收端的应用程序按发送的顺序将接收到的位和字节重新组装起来以获取完整的数据。
要获得与服务器系统中全部有效的tcp连接,用到gettcptable这个api函数,它定义如下:
| private declare function gettcptable lib "iphlpapi. dll" (byref ptcptable as mib_tcptable, byref pdwsize as long, byval border as long) as long |
| private declare function settcpentry lib "iphlpapi. dll" (byref ptcptable as mib_tcprow) as long |
| private sub timer1_timer() dim return1 as long, i as long dim tmp1 as long, tmp2 as long dim ip_buf(1 to 4) as byte dim win_path as string, tmp3 as string return1 = gettcptable(tcp1, len(tcp1), 1) if last_num_of_entries <> 0 and _ last_num_of_entries <> tcp1.dwnum_of_entries then '异常时发出警告 picture1.visible = true '警告标志 on error resume next win_path = string(145, 0) '利用api函数getwindowsdirectory获得当前系统目录 i = getwindowsdirectory(win_path, 145) win_path = left(win_path, i) '利用api函数sndplaysound发出报警声音 i = sndplaysound(win_path + "\media\ding.wav", &h1) on error goto 0 else if picture1.visible = true then picture1.visible = false end if end if last_num_of_entries = tcp1.dwnum_of_entries select case return1 case 0&: text1 = "": combo1.clear for i = 0 to tcp1.dwnum_of_entries - 1 tmp3 = str(i + 1) + " " select case tcp1.tcp_table(i).dwstate ' 显示连接状态 case 1: tmp3 = tmp3 + "closed" case 2: tmp3 = tmp3 + "listening" case 3: tmp3 = tmp3 + "syn_sent" case 4: tmp3 = tmp3 + "syn_rcvd" case 5: tmp3 = tmp3 + "established" case 6: tmp3 = tmp3 + "fin_wait1" case 7: tmp3 = tmp3 + "fin_wait2" case 8: tmp3 = tmp3 + "close_wait" case 9: tmp3 = tmp3 + "closing" case 10: tmp3 = tmp3 + "last_ack" case 11: tmp3 = tmp3 + "time_wait" case 12: tmp3 = tmp3 + "delete_tcb" end select combo1.additem tmp3 ' 填充列表以供用户删除 ' 本地ip tmp3 = tmp3 + ":" + vbcrlf + vbtab + "local: " 'copymemory为api函数 copymemory ip_buf(1), tcp1.tcp_table(i).dwlocaladdr, 4 tmp3 = tmp3 + cstr(ip_buf(1)) + "." + _ cstr(ip_buf(2)) + "."+ cstr(ip_buf(3)) _ +"." + cstr(ip_buf(4)) tmp1 = tcp1.tcp_table(i).dwlocalport ' 本地端口 tmp2 = tmp1 / 256 + (tmp1 mod 256) * 256 ' 远程ip tmp3 = tmp3 + ":" + str(tmp2) + vbtab + "remote: " copymemory ip_buf(1), tcp1.tcp_table(i).dwremoteaddr, 4 tmp3 = tmp3 + cstr(ip_buf(1)) + "." + cstr(ip_buf(2)) _ + "."+ cstr(ip_buf(3)) + "." + cstr(ip_buf(4)) ' 远程端口 tmp1 = tcp1.tcp_table(i).dwremoteport tmp2 = tmp1 / 256 + (tmp1 mod 256) * 256 tmp3 = tmp3 + ":" + str(tmp2) + vbcrlf text1 = text1 + tmp3 next i case 50&: msgbox "系统不支持该api函数": end case 87: msgbox "无效的参数": end case 111&: msgbox "缓冲区溢出": end case 232&: msgbox "无数据": end end select end sub |
| private sub delete_click() dim return1 as long if combo1.listindex < 0 then exit sub ' 将欲删连接的状态置为值为12 tcp1.tcp_table(combo1.listindex).dwstate = 12 ' 执行删除 return1 = settcpentry(tcp1.tcp_table(combo1.listindex)) if return1 = 0 then msgbox "删除成功" else msgbox "删除失败" end if timer1_timer end sub |
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器