计算机网络安全及防范技术
创新互联是一家专业提供白银区企业网站建设,专注与成都网站制作、成都做网站、H5建站、小程序制作等业务。10年已为白银区众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。
摘 要 主要阐述计算机信息网络攻击和入侵的特点、方法以及其安全防范手段。
关键词 计算机网络安全 防范技术
1 计算机网络安全的含义
计算机网络安全的具体含义会随着使用者的变化而变化,使用者不同,对网络安全的认识和要求也就不同。例如从普通使用者的角度来说,可能仅仅希望个人隐私或机密信息在网络上传输时受到保护,避免被窃听、篡改和伪造;而网络提供商除了关心这些网络信息安全外,还要考虑如何应付突发的自然灾害、军事打击等对网络硬件的破坏,以及在网络出现异常时如何恢复网络通信,保持网络通信的连续性。
从本质上来讲,网络安全包括组成网络系统的硬件、软件及其在网络上传输信息的安全性,使其不致因偶然的或者恶意的攻击遭到破坏,网络安全既有技术方面的问题,也有管理方面的问题,两方面相互补充,缺一不可。人为的网络入侵和攻击行为使得网络安全面临新的挑战。
2 计算机网络攻击的特点
计算机网络攻击具有下述特点:①损失巨大。由于攻击和入侵的对象是网络上的计算机,所以一旦他们取得成功,就会使网络中成千上万台计算机处于瘫痪状态,从而给计算机用户造成巨大的经济损失。如美国每年因计算机犯罪而造成的经济损失就达几百亿美元。平均一起计算机犯罪案件所造成的经济损失是一般案件的几十到几百倍。②威胁社会和国家安全。一些计算机网络攻击者出于各种目的经常把政府要害部门和军事部门的计算机作为攻击目标,从而对社会和国家安全造成威胁。③手段多样,手法隐蔽。计算机攻击的手段可以说五花八门。网络攻击者既可以通过监视网上数据来获取别人的保密信息;也可以通过截取别人的帐号和口令堂而皇之地进入别人的计算机系统;还可以通过一些特殊的方法绕过人们精心设计好的防火墙等等。这些过程都可以在很短的时间内通过任何一台联网的计算机完成。因而犯罪不留痕迹,隐蔽性很强。④以软件攻击为主。几乎所有的网络入侵都是通过对软件的截取和攻击从而破坏整个计算机系统的。它完全不同于人们在生活中所见到的对某些机器设备进行物理上的摧毁。因此,这一方面导致了计算机犯罪的隐蔽性,另一方面又要求人们对计算机的各种软件(包括计算机通信过程中的信息流)进行严格的保护。
3 计算机网络中的安全缺陷及产生的原因
网络安全缺陷产生的原因主要有:
第一,TCP/IP的脆弱性。因特网的基石是TCP/IP协议。但不幸的是该协议对于网络的安全性考虑得并不多。并且,由于TCP/IP协议是公布于众的,如果人们对TCP/IP很熟悉,就可以利用它的安全缺陷来实施网络攻击。
第二,网络结构的不安全性。因特网是一种网间网技术。它是由无数个局域网所连成的一个巨大网络。当人们用一台主机和另一局域网的主机进行通信时,通常情况下它们之间互相传送的数据流要经过很多机器重重转发,如果攻击者利用一台处于用户的数据流传输路径上的主机,他就可以劫持用户的数据包。
第三,易被窃听。由于因特网上大多数数据流都没有加密,因此人们利用网上免费提供的工具就很容易对网上的电子邮件、口令和传输的文件进行窃听。
第四,缺乏安全意识。虽然网络中设置了许多安全保护屏障,但人们普遍缺乏安全意识,从而使这些保护措施形同虚设。如人们为了避开防火墙代理服务器的额外认证,进行直接的PPP连接从而避开了防火墙的保护。
4 网络攻击和入侵的主要途径
网络入侵是指网络攻击者通过非法的手段(如破译口令、电子欺骗等)获得非法的权限,并通过使用这些非法的权限使网络攻击者能对被攻击的主机进行非授权的操作。网络入侵的主要途径有:破译口令、IP欺骗和DNS欺骗。
口令是计算机系统抵御入侵者的一种重要手段,所谓口令入侵是指使用某些合法用户的帐号和口令登录到目的主机,然后再实施攻击活动。这种方法的前提是必须先得到该主机上的某个合法用户的帐号,然后再进行合法用户口令的破译。获得普通用户帐号的方法很多,如: 利用目标主机的Finger功能:当用Finger命令查询时,主机系统会将保存的用户资料(如用户名、登录时间等)显示在终端或计算机上;利用目标主机的X.500服务:有些主机没有关闭X.500的目录查询服务,也给攻击者提供了获得信息的一条简易途径;从电子邮件地址中收集:有些用户电子邮件地址常会透露其在目标主机上的帐号;查看主机是否有习惯性的帐号:有经验的用户都知道,很多系统会使用一些习惯性的帐号,造成帐号的泄露。
IP欺骗是指攻击者伪造别人的IP地址,让一台计算机假冒另一台计算机以达到蒙混过关的目的。它只能对某些特定的运行TCP/IP的计算机进行入侵。IP欺骗利用了TCP/IP网络协议的脆弱性。在TCP的三次握手过程中,入侵者假冒被入侵主机的信任主机与被入侵主机进行连接,并对被入侵主机所信任的主机发起淹没攻击,使被信任的主机处于瘫痪状态。当主机正在进行远程服务时,网络入侵者最容易获得目标网络的信任关系,从而进行IP欺骗。IP欺骗是建立在对目标网络的信任关系基础之上的。同一网络的计算机彼此都知道对方的地址,它们之间互相信任。由于这种信任关系,这些计算机彼此可以不进行地址的认证而执行远程操作。
域名系统(DNS)是一种用于TCP/IP应用程序的分布式数据库,它提供主机名字和IP地址之间的转换信息。通常,网络用户通过UDP协议和DNS服务器进行通信,而服务器在特定的53端口监听,并返回用户所需的相关信息。DNS协议不对转换或信息性的更新进行身份认证,这使得该协议被人以一些不同的方式加以利用。当攻击者危害DNS服务器并明确地更改主机名—IP地址映射表时,DNS欺骗就会发生。这些改变被写入DNS服务器上的转换表。因而,当一个客户机请求查询时,用户只能得到这个伪造的地址,该地址是一个完全处于攻击者控制下的机器的IP地址。因为网络上的主机都信任DNS服务器,所以一个被破坏的DNS服务器可以将客户引导到非法的服务器,也可以欺骗服务器相信一个IP地址确实属于一个被信任客户。
5 常见的网络攻击及其防范对策
5.1 特洛伊木马
特洛伊木马程序技术是黑客常用的攻击手段。它通过在你的电脑系统隐藏一个会在Windows启动时运行的程序,采用服务器/客户机的运行方式,从而达到在上网时控制你电脑的目的。
特洛伊木马是夹带在执行正常功能的程序中的一段额外操作代码。因为在特洛伊木马中存在这些用户不知道的额外操作代码,因此含有特洛伊木马的程序在执行时,表面上是执行正常的程序,而实际上是在执行用户不希望的程序。特洛伊木马程序包括两个部分,即实现攻击者目的的指令和在网络中传播的指令。特洛伊木马具有很强的生命力,在网络中当人们执行一个含有特洛伊木马的程序时,它能把自己插入一些未被感染的程序中,从而使它们受到感染。此类攻击对计算机的危害极大,通过特洛伊木马,网络攻击者可以读写未经授权的文件,甚至可以获得对被攻击的计算机的控制权。
防止在正常程序中隐藏特洛伊木马的主要方法是人们在生成文件时,对每一个文件进行数字签名,而在运行文件时通过对数字签名的检查来判断文件是否被修改,从而确定文件中是否含有特洛伊木马。避免下载可疑程序并拒绝执行,运用网络扫描软件定期监视内部主机上的监听TCP服务。
5.2 邮件炸弹
电子邮件炸弹是最古老的匿名攻击之一,通过设置一台机器不断的大量的向同一地址发送电子邮件,攻击者能够耗尽接受者网络的带宽,占据邮箱的空间,使用户的存储空间消耗殆尽,从而阻止用户对正常邮件的接收,防碍计算机的正常工作。此种攻击经常出现在网络黑客通过计算机网络对某一目标的报复活动中。
防止邮件炸弹的方法主要有通过配置路由器,有选择地接收电子邮件,对邮件地址进行配置,自动删除来自同一主机的过量或重复的消息,也可使自己的SMTP连接只能达成指定的服务器,从而免受外界邮件的侵袭。5.3 过载攻击
过载攻击是攻击者通过服务器长时间发出大量无用的请求,使被攻击的服务器一直处于繁忙的状态,从而无法满足其他用户的请求。过载攻击中被攻击者用得最多的一种方法是进程攻击,它是通过大量地进行人为地增大CPU的工作量,耗费CPU的工作时间,使其它的用户一直处于等待状态。
防止过载攻击的方法有:限制单个用户所拥有的最大进程数;杀死一些耗时的进程。然而,不幸的是这两种方法都存在一定的负面效应。通过对单个用户所拥有的最大进程数的限制和耗时进程的删除,会使用户某些正常的请求得不到系统的响应,从而出现类似拒绝服务的现象。通常,管理员可以使用网络监视工具来发现这种攻击,通过主机列表和网络地址列表来分析问题的所在,也可以登录防火墙或路由器来发现攻击究竟是来自于网络外部还是网络内部。另外,还可以让系统自动检查是否过载或者重新启动系统。
5.4 淹没攻击
正常情况下,TCP连接建立要经历3次握手的过程,即客户机向主机发送SYN请求信号;目标主机收到请求信号后向客户机发送SYN/ACK消息;客户机收到SYN/ACK消息后再向主机发送RST信号并断开连接。TCP的这三次握手过程为人们提供了攻击网络的机会。攻击者可以使用一个不存在或当时没有被使用的主机的IP地址,向被攻击主机发出SYN请求信号,当被攻击主机收到SYN请求信号后,它向这台不存在IP地址的伪装主机发出SYN/消息。由于此时主机的IP不存在或当时没有被使用所以无法向主机发送RST,因此,造成被攻击的主机一直处于等待状态,直至超时。如果攻击者不断地向被攻击的主机发送SYN请求,被攻击主机就会一直处于等待状态,从而无法响应其他用户的请求。
对付淹没攻击的最好方法是实时监控系统处于SYN-RECEIVED状态的连接数,当连接数超过某一给定的数值时,实时关闭这些连接。
参考文献
1 胡道元.计算机局域网〔M〕.北京:清华大学出版社,2001
2 朱理森,张守连.计算机网络应用技术〔M〕.北京:专利文献出版社,2001
3 刘占全.网络管理与防火墙〔M〕.北京:人民邮电出版社,1999
1、软件开发的第一个流程是项目开发目的分析与确定,主要是在软件开发商将开发项目确定下来之后,需要与需求方进行讨论,确定需求方对于软件开发的需要实现目标及其具体需要的功能等等,并确定是否可达成;
2、接下来就是需求分析,这个步骤也是为软件开发的正常进行确定具体思路的阶段。在确定软件开发可进行后,必须要对客户需要实现的软件功能需求进行具体详细的分析。同时应当考虑在开发过程中可能出现的变化情况,制定需求变更计划随时应对特殊情况的发生,保证软件开发流程的顺畅进行;
3、接下来就是软件设计。软件设计要根据上一阶段对软件功能需求分析的结果,来设计软件系统的框架结构、功能模块和数据库等等。它主要分为总体设计和详细设计两个部分;
4、接下来就是编程实施步骤。编程也是根据对软件设计,将软件设计的各部分需求通计算机程序代码来实现运行,编程有统一、规范的程序编写规则,保证软件程序的易懂性、易维护性;
5、接下来就是软件测试步骤。也就是在根据设计将客户软件需用编程代码来实现之后,也就是软件程序完成之后,需要对编写的程序,形成整体构架、功能进行单元、组装、系统三阶段的测试,以测试程序编写的正确性,以及对客户需求功能满足的充分性,以此来确定软件是否达到开发要求,同时也是一个发现问题、纠正问题的过程;
6、通过以上核心环节完成了软件开发,接下来就是在软件开发达到客户需求之后,开发者将软件系统交予客户,并将软件安装程序、数据库的数据字典、《用户安装手册》、《用户使用指南》、需求报告、设计报告、测试报告等产物交付给客户,同时指导客户进行软件安装、以及安装技巧,提醒客户注意软件运行状况、环境、服务器及相关中间件的检测与注意事项,知道客户软件的实际操作方法、使用流程等等问题,实现合同规定任务;
7、用户在接受开发商交付的软件开发结果,并进行实际操作、测试运行,实现满意结果之后,对开发出来的软件进行验收;
8、定制开发的软件通常都需要提供售后服务,定期对软件进行维护,或者根据用户出现的新需求,进行应用软件程序的修改,使之不断满足客户实际需求。
理论上讲,VB可以做任何游戏,游戏开发不是一言两语能说明白的,在这里可以给你简单的说一下,具体开发方法请仔细百度。
开发游戏你需要解决四个技术问题:
1:图像绘制。2:声音播放。3:用户输入控制。4:文件的读写。
其中2、3、4基本可以用VB的基础语言功能和操作系统提供的API解决,唯独绘图需要引擎来解决。除非是很小的小游戏,否则你不太可能用系统控件去做一个游戏,你也不能天才到啥都自己实现出来,你就算有那么天才,也没那个时间精力,也没有必要。做游戏用的绘图引擎一般是GDI或DIRECTX或OPENGL。VB6可以使用GDI或DIRECTX7、8,VB点虐 可以使用DIRECTX9以上的版本。其中GDI可以用来开发2D游戏,DIRECTX可以用于开发任何类型游戏,DIRECTX不但可以用来绘图,其还包含解决游戏中联网、用户输入控制、声音播放的专用模块推荐使用。
楼主你好,由于输入内容有限,只能输入这么多 public void do_chang(int x, int y){ //移动 int i; for(i=0;i4;i++)map[it[i,1]+ity,it[i,0]+itx]=false; ity+=y;itx+=x; //参照点位置移动 for(i=0;i4;i++)map[it[i,1]+ity,it[i,0]+itx]=true; if(y==1)++nextnum; //下落次数 } public bool will_chang(int x, int y){ //测试能否移动 int i,tempitx,tempity; bool falg=false; tempitx=itx; tempity=ity; tempitx+=x; tempity+=y; for(i=0;i4;i++)map[it[i,1]+ity,it[i,0]+itx]=false; for(i=0;i4;i++){ if (tempitx+it[i,0]1 || tempitx+it[i,0]=11) falg=true; //X越界 if (tempity+it[i,1]1 || tempity+it[i,1]=21) falg=true; //Y越界 if (map[it[i,1]+tempity,it[i,0]+tempitx]) falg=true; //有阻碍物 } for(i=0;i4;i++)map[it[i,1]+ity,it[i,0]+itx]=true; if(falg)return false; return true; } public void do_up(){ //变形 int i; string temp; for(i=0;i4;i++)map[it[i,1]+ity,it[i,0]+itx]=false; if(++trndY=4)trndY=0; temp = source[trndX,trndY]; for(i=0;i4;i++){ it[i,0]=temp[i*2]-'0'; it[i,1]=temp[(i+1)*2-1]-'0'; map[it[i,1]+ity,it[i,0]+itx]=true; } } public bool will_up(){ //测试能否变形 int i,temprndY; bool falg=false; int[,] tempit = new int[4,2]; string temp; temprndY=rndY; if(++temprndY=4)temprndY=0; temp=source[rndX,temprndY];//获取下一个方块资源 for(i=0;i4;i++)map[it[i,1]+ity,it[i,0]+itx]=false;//先使当前方块消失 //虚变形 for(i=0;i4;i++){ tempit[i,0]=temp[i*2]-'0'; tempit[i,1]=temp[(i+1)*2-1]-'0'; if (itx+tempit[i,0]=0 || itx+tempit[i,0]=11) falg=true; //X越界 if (ity+tempit[i,1]=0 || ity+tempit[i,1]=21) falg=true; //Y越界 if (map[tempit[i,1]+ity,tempit[i,0]+itx]) falg=true; //有阻碍物 } for(i=0;i4;i++)map[it[i,1]+ity,it[i,0]+itx]=true;//还原消失方块 if(falg)return false; return true; } public void do_ini(){ //每个方块的初使化 string temp; itx=3;ity=0; //参考坐标值 nextnum=0; //下落次数初使化 trndX=rndX; trndY=rndY; rndX = rnd.Next(0,6); rndY = rnd.Next(0,3); temp=source[trndX,trndY]; for(int i=0;i4;i++){ it[i,0]=temp[i*2]-'0'; it[i,1]=temp[(i+1)*2-1]-'0'; } }