网络攻击与防御服务器防御软件


C/S架构,服务器端被植入目标主机,服务器端通过反弹连接和客户端连接。从而客户端对其进行控制。

侦查攻击:搜集网络存在的弱点,以进一步攻击网络。分为扫描攻击和网络监听:扫描攻击有端口扫描,主机扫描,漏洞扫描。

网络监听:主要指只通过软件将使用者计算机网卡的模式置为混杂模式,从而查看通过此网络的重要明文信息。

端口扫描:根据TCP协议规范,当一台计算机收到一个TCP连接建立请求报文(TCPSYN)的时候,做这样的处理:



1、如果请求的TCP端口是开放的,则回应一个TCPACK报文,并建立TCP连接控制结构(TCB);



2、如果请求的TCP端口没有开放,则回应一个TCPRST(TCP头部中的RST标志设为1)报文,告诉发起计算机,该端口没有开放。



1、如果该报文的目标端口开放,则把该UDP报文送上层协议(UDP)处理,不回应任何报文(上层协议根据处理结果而回应的报文例外);



2、如果该报文的目标端口没有开放,则向发起者回应一个ICMP不可达报文,告诉发起者计算机该UDP报文的端口不可达。

利用这个原理,攻击者计算机便可以通过发送合适的报文,判断目标计算机哪些TC或UDP端口是开放的。



1、发出端口号从0开始依次递增的TCPSYN或UDP报文(端口号是一个16比特的数字,这样最大为,数量很有限);



2、如果收到了针对这个TCP报文的RST报文,或针对这个UDP报文的ICMP不可达报文,则说明这个端口没有开放;



3、相反,如果收到了针对这个TCPSYN报文的ACK报文,或者没有接收到任何针对该UDP报文的ICMP报文,则说明该TCP端口是开放的,UDP端口可能开放(因为有的实现中可能不回应ICMP不可达报文,即使该UDP端口没有开放)。

这样继续下去,便可以很容易的判断出目标计算机开放了哪些TCP或UDP端口,然后针对端口的具体数字,进行下一步攻击,这就是所谓的端口扫描攻击。

攻击者事先汇集目标的信息,通常采用whois、Finger等工具和DNS、LDAP等协议获取目标的一些信息,如域名、IP地址、网络拓扑结构、相关的用户信息等,这往往是黑客入侵之前所做的第一步工作。

扫描攻击包括地址扫描和端口扫描等,通常采用ping命令和各种端口扫描工具,可以获得目标计算机的一些有用信息,例如机器上打开了哪些端口,这样就知道开设了哪些服务,从而为进一步的入侵打下基础。

黑客对目标主机发出探测包,由于不同操作系统厂商的IP协议栈实现之间存在许多细微的差别(也就是说各个厂家在编写自己的TCP/IP协议栈时,通常对特定的RFC指南做出不同的解释),因此各个操作系统都有其独特的响应方法,黑客经常能确定出目标主机所运行的操作系统。

常常被利用的一些协议栈指纹包括:TTL值、TCP窗口大小、DF标志、TOS、IP碎片处理、ICMP处理、TCP选项处理等。

由于在共享介质的网络上数据包会经过每个网络节点,网卡在一般情况下只会接受发往本机地址或本机所在广播(或多播)地址的数据包,但如果将网卡设置为混杂模式(Promiscuous),网卡就会接受所有经过的数据包。

基于这样的原理,黑客使用一个叫sniffer的嗅探器装置,可以是软件,也可以是硬件)就可以对网络的信息流进行监视,从而获得他们感兴趣的内容,例如口令以及其他秘密的信息。

访问攻击:密码攻击:密码暴力猜测,特洛伊木马程序,数据包嗅探等方式。中间人攻击:截获数据,窃听数据内容,引入新的信息到会话,会话劫持(sessionhijacking)利用TCP协议本身的不足,在合法的通信连接建立后攻击者可以通过阻塞或摧毁通信的一方来接管已经过认证建立起来的连接,从而假冒被接管方与对方通信。

拒绝服务攻击:伪装大量合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务响应。

要避免系统遭受DoS攻击,从前两点来看,网络管理员要积极谨慎地维护整个系统,确保无安全隐患和漏洞;

而针对第四点第五点的恶意攻击方式则需要安装防火墙等安全设备过滤DoS攻击,同时强烈建议网络管理员定期查看安全设备的日志,及时发现对系统存在安全威胁的行为。

正确了解这些不同的拒绝攻击方式,就可以为正确、系统地为自己所在企业部署完善的安全防护系统。

要有效的进行反攻击,首先必须了解入侵的原理和工作机理,只有这样才能做到知己知彼,从而有效的防止入侵攻击行为的发生。

由于在早期的阶段,路由器对包的最大大小是有限制的,许多操作系统TCP/IP栈规定ICMP包的大小限制在64KB以内。

在对ICMP数据包的标题头进行读取之后,是根据该标题头里包含的信息来为有效载荷生成缓冲区。

当大小超过64KB的ICMP包,就会出现内存分配错误,导致TCP/IP堆栈崩溃,从而使接受方计算机宕机。

根据这一攻击原理,黑客们只需不断地通过Ping命令向攻击目标发送超过64KB的数据包,就可使目标计算机的TCP/IP堆栈崩溃,致使接受方宕机。

防御方法:现在所有的标准TCP/IP协议都已具有对付超过64KB大小数据包的处理能力,并且大多数防火墙能够通过对数据包中的信息和时间间隔分析,自动过滤这些攻击。

Windows98、WindowsNT4.0(SP3之后)、Windows/XP/Server、Linux、Solaris和MacOS等系统都已具有抵抗一般“Pingofdeath”拒绝服务攻击的能力。

对于一些大的IP数据包,往往需要对其进行拆分传送,这是为了迎合链路层的MTU(最大传输单元)的要求。

比如,一个字节的IP包,在MTU为的链路上传输的时候,就需要分成三个IP包。

如果MF标志设置为

1,则表面这个IP包是一个大IP包的片断,其中偏移字段指出了这个片断在整个IP包中的位置。

例如,对一个字节的IP包进行拆分(MTU为),则三个片断中偏移字段的值依次为:

0,,。

这样接收端在全部接收完IP数据包后,就可以根据这些信息重新组装没正确的值,这样接收端在收后这些分拆的数据包后就不能按数据包中的偏移字段值正确重合这些拆分的数据包,但接收端会不断偿试,这样就可能致使目标计算朵操作系统因资源耗尽而崩溃。

泪滴攻击利用修改在TCP/IP堆栈实现中信任IP碎片中的包的标题头所包含的信息来实现自己的攻击。

IP分段含有指示该分段所包含的是原包的哪一段的信息,某些操作系统(如SP4以前的WindowsNT4.0)的TCP/IP在收到含有重叠偏移的伪造分段时将崩溃,不过新的操作系统已基本上能自己抵御这种攻击了。

防御方法:尽可能采用最新的操作系统,或者在防火墙上设置分段重组功能,由防火墙先接收到同一原包中的所有拆分数据包,然后完成重组工作,而不是直接转发。

TCP/IP栈只能等待有限数量ACK(应答)消息,因为每台计算机用于创建TCP/IP连接的内存缓冲区都是非常有限的。

如果这一缓冲区充满了等待响应的初始信息,则该计算机就会对接下来的连接停止响应,直到缓冲区里的连接超时。

由于黑客们发送请示的IP地址是伪造的,所以确认信息也不会到达任何计算机,当然也就不会有任何计算机为此确认信息作出应答了。

而在没有接收到应答之前,目标计算机系统是不会主动放弃的,继续会在缓冲区中保持相应连接信息,一直等待。

当达到一定数量的等待连接后,缓区部内存资源耗尽,从而开始拒绝接收任何其他连接请求,当然也包括本来属于正常应用的请求,这就是黑客们的最终目的。

不过“SYN洪水攻击”还是非常令人担忧的,由于此类攻击并不寻求响应,所以无法从一个简单高容量的传输中鉴别出来。

这类攻击中的数据包源地址和目标地址是相同的,当操作系统接收到这类数据包时,不知道该如何处理,或者循环发送和接收该数据包,以此来消耗大量的系统资源,从而有可能造成系统崩溃或死机等现象。

防御方法:这类攻击的检测方法相对来说比较容易,因为它可以直接从判断网络数据包的源地址和目标地址是否相同得出是否属于攻击行为。

并对这种攻击进行审计,记录事件发生的时间,源主机和目标主机的MAC地址和IP地址,从而可以有效地分析并跟踪攻击者的来源。

攻击者伪造一个合法的IP地址,然后由网络上所有的路由器广播要求向受攻击计算机地址做出回答的请求。

由于这些数据包表面上看是来自已知地址的合法请求,因此网络中的所有系统向这个地址做出回答,最终结果可导致该网络的所有主机都对此ICMP应答请求作出答复,导致网络阻塞,这也就达到了黑客们追求的目的了。

这种Smurf攻击比起前面介绍的“PingofDeath”洪水的流量高出一至两个数量级,更容易攻击成功。

还有些新型的Smurf攻击,将源地址改为第三方的受害者(不再采用伪装的IP地址),最终导致第三方雪崩。

防御方法:关闭外部路由器或防火墙的广播地址特性,并在防火墙上设置规则,丢弃掉ICMP协议类型数据包。

Fraggle攻击只是对Smurf攻击作了简单的修改,使用的是UDP协议应答消息,而不再是ICMP协议了(因为黑客们清楚UDP协议更加不易被用户全部禁止)。

同时Fraggle攻击使用了特定的端口(通常为7号端口,但也有许多使用其他端口实施Fraggle攻击的),攻击与Smurf攻击基本类似,不再赘述。

防御方法:关闭外部路由器或防火墙的广播地址特性。在防火墙上过滤掉UDP报文,或者屏蔽掉一些常被黑客们用来进Fraggle攻击的端口。

电子邮件炸弹是最古老的匿名攻击之
一,通过设置一台计算机不断地向同一地址发送大量电子邮件来达到攻击目的,此类攻击能够耗尽邮件接受者网络的带宽资源。

这些网络设备为了便于远程管理,一般设置了一些TELNET用户界面,即用户可以通过TELNET到该设备上,对这些设备进行管理。

这些设备的远程管理界面便被占尽,这样合法用户如果再对这些设备进行远程管理,则会因为TELNET连接资源被占用而失败。

正常情况下,为了对网络进行诊断,一些诊断程序,比如PING等,会发出ICMP响应请求报文(ICMPECHO),接收计算机接收到ICMPECHO后,会回应一个ICMPECHOReply报文。

这样如果攻击者向目标计算机发送大量的ICMPECHO报文(产生ICMP洪水),则目标计算机会忙于处理这些ECHO报文,而无法继续处理其它的网络数据报文,这也是一种拒绝服务攻击(DOS)。

NetBIOS作为一种基本的网络资源访问接口,广泛的应用于文件共享,打印共享,进程间通信(IPC),以及不同操作系统之间的数据交换。

一般情况下,NetBIOS是运行在LLC2链路协议之上的,是一种基于组播的网络访问接口。

为了在TCP/IP协议栈上实现NetBIOS,RFC规定了一系列交互标准,以及几个常用的TCP/UDP端口:

WINDOWS操作系统的早期版本(WIN95/98/NT)的网络服务(文件共享等)都是建立在NetBIOS之上的。

因此,这些操作系统都开放了139端口(最新版本的WINDOWS/XP/等,为了兼容,也实现了NetBIOSoverTCP/IP功能,开放了139端口)。

WinNuke攻击就是利用了WINDOWS操作系统的一个漏洞,向这个139端口发送一些携带TCP带外(OOB)数据报文。

但这些攻击报文与正常携带OOB数据报文不同的是,其指针字段与数据的实际位置不符,即存在重合,这样WINDOWS操作系统在处理这些数据的时候,就会崩溃。

为了传送一个大的IP报文,IP协议栈需要根据链路接口的MTU对该IP报文进行分片,通过填充适当的IP头中的分片指示字段,接收计算机可以很容易的把这些IP分片报文组装起来。

目标计算机在处理这些分片报文的时候,会把先到的分片报文缓存起来,然后一直等待后续的分片报文。

如果攻击者给目标计算机只发送一片分片报文,而不发送所有的分片报文,这样攻击者计算机便会一直等待(直到一个内部计时器到时)。

如果攻击者发送了大量的分片报文,就会消耗掉目标计算机的资源,而导致不能相应正常的IP报文,这也是一种DOS攻击。

网络设备之间为了交换路由信息,常常运行一些动态的路由协议,这些路由协议可以完成诸如路由表的建立,路由信息的分发等功能。

这些路由协议在方便路由信息管理和传递的同时,也存在一些缺陷,如果攻击者利用了路由协议的这些权限,对网络进行攻击,可能造成网络设备路由表紊乱(这足可以导致网络中断),网络设备资源大量消耗,甚至导致网络设备瘫痪。

RIP,即路由信息协议,是通过周期性(一般情况下为30S)的路由更新报文来维护路由表的。

一台运行RIP路由协议的路由器,如果从一个接口上接收到了一个路由更新报文,它就会分析其中包含的路由信息,并与自己的路由表作出比较。

如果该路由器认为这些路由信息比自己所掌握的要有效,它便把这些路由信息引入自己的路由表中。

这样如果一个攻击者向一台运行RIP协议的路由器发送了人为构造的带破坏性的路由更新报文,就很容易的把路由器的路由表搞紊乱,从而导致网络中断。

如果运行RIP路由协议的路由器启用了路由更新信息的HMAC验证,则可从很大程度上避免这种攻击。

该路由协议基于链路状态算法,具有收敛速度快,平稳,杜绝环路等优点,十分适合大型的计算机网络使用。

OSPF路由协议通过建立邻接关系,来交换路由器的本地链路信息,然后形成一个整网的链路状态数据库,针对该数据库,路由器就可以很容易的计算出路由表。

可以看出,如果一个攻击者冒充一台合法路由器与网络中的一台路由器建立邻接关系,并向攻击路由器输入大量的链路状态广播(LSA,组成链路状态数据库的数据单元),就会引导路由器形成错误的网络拓扑结构,从而导致整个网络的路由表紊乱,导致整个网络瘫痪。

当前版本的WINDOWS操作系统都实现了OSPF路由协议功能,因此一个攻击者可以很容易的利用这些操作系统自带的路由功能模块进行攻击。

跟RIP类似,如果OSPF启用了报文验证功能(HMAC验证),则可以从很大程度上避免这种攻击。

IS-IS路由协议,即中间系统到中间系统,是ISO提出来对ISO的CLNS网络服务进行路由的一种协议。

这种路由协议也是通过建立邻居关系,收集路由器本地链路状态的手段来完成链路状态数据库同步的。

该协议的邻居关系建立比OSPF简单,而且也省略了OSPF特有的一些特性,使该协议简单明了,伸缩性更强。

对该协议的攻击与OSPF类似,通过一种模拟软件与运行该协议的路由器建立邻居关系,然后传送给攻击路由器大量的链路状态数据单元(LSP),可以导致整个网络路由器的链路状态数据库不一致(因为整个网络中所有路由器的链路状态数据库都需要同步到相同的状态),从而导致路由表与实际情况不符,致使网络中断。

与OSPF类似,如果运行该路由协议的路由器启用了IS-IS协议单元(PDU)HMAC验证功能,则可以从很大程度上避免这种攻击。

能够使用多种不同的方法来实现,最平常的方法是应用服务器上通常可找到的应用软件(如SQLServer、Sendmail、PostScript和FTP)缺陷。

通过使用这些缺陷,攻击者能够获得计算机的访问权,以及该计算机上运行相应应用程序所需账户的许可权。

应用层攻击的一种最新形式是使用许多公开化的新技术,如HTML规范、Web浏览器的操作性和HTTP协议等。

这些攻击通过网络传送有害的程序,包括JAVAapplet和ActiveX控件等,并通过用户的浏览器调用它们,很容易达到入侵、攻击的目的。

虽然微软公司提供的代码验证技术可以使用户的ActiveX控件因安全检查错误而暂停这类攻击,但攻击者已经发现怎样利用适当标记和有大量漏洞的ActiveX控件使之作为特洛伊木马实施新的攻击方式。

这一技术可使用VBScript脚本程序直接控制执行隐蔽任务,如覆盖文件,执行其他文件等,预防、查杀的难度更大。

在应用层攻击中,容易遭受攻击的目标包括路由器、数据库、Web和FTP服务器和与协议相关的服务,如DNS、WINS和SMB。

MAC/CAM泛洪攻击是指利用工具产生大量欺骗MAC,快速填满CAM表,交换机CAM表被填满后,流量在所有端口广播,导致交换机就像共享HUB一样工作,这时攻击者可以利用各种嗅探攻击获取网络信息。

同时CAM表满了后,流量以洪泛方式发送到所有接口,也就代表TRUNK接口上的流量也会发给所有接口和邻接交换机,会造成交换机负载过大,网络缓慢和丢包甚至瘫痪。

采用DHCP协议可以自动为用户设置网络IP地址、掩码、网关、DNS、WINS等参数,简化了用户网络设置,提高了管理效率。

解决方案:DHCPsnooping,比较二层以太网帧的源MAC与DHCP请求报文中的clientMAC是否一直,如果不一致,则丢弃。

由于DHCP协议在设计的时候没有考虑到客户端和服务器端之间的认证机制,如果网络上存在多台DHCP服务器将会给网络照成混乱。

通常黑客攻击是首先将正常的DHCP服务器所能分配的IP地址耗尽,然后冒充合法的DHCP服务器。

最为隐蔽和危险的方法是黑客利用冒充的DHCP服务器,为用户分配一个经过修改的DNSserver,在用户毫无察觉的情况下被引导至预先配置好的假金融网站或电子商务网站,骗取用户帐户和密码,这种攻击后果是非常严重的。

解决方案:DHCPsnooping,设置信任端口和非信任端口,非信任端口拒绝DHCPoffer报文和DHCPack报文。还可以采用DHCPsnooping的报文限速功能,如果报文速率超过限制值,则端口进入errdisable状态。

ARP作为IP层和链路层之间的联系纽带,其作用和责任非常重大,最主要的使命就是确定IP地址对应的链路层地址(MAC地址)。

但是由于特定的历史原因,ARP协议在设计的时候也没有考虑到安全因素,因此黑客可以很轻易的针对ARP协议的漏洞发起攻击,轻松窃取到网络信息。

ARP流量攻击的方式多种多样,比如伪造大量ARP请求,伪造大量ARP应答,伪造目的IP不存在的IP报文等等。

其最终目的只有一个:增加网络中ARP报文的流量,浪费交换机CPU带宽和资源,浪费内存资源,造成CPU繁忙,产生丢包现象,严重的甚至造成网络瘫痪。



2,对引起ARP解析失败的目的IP进行记录,当在固定时间内该IP引起ARP解析失败的次数超过设定值的时候下发ACL,通过硬件将目的IP为此IP的报文丢弃;

根据ARP协议的设计,为了减少网络上过多的ARP数据通信,一个主机即使收到非本机的ARP应答,也会对其进行学习。

比如黑客分别向两台主机发送一个ARP应答包,让两台主机都“误”认为对方的MAC地址是第三方的黑客所在的主机。

黑客一方面得到了想要的通信内容,另一方面,只需要更改数据包中的一些信息,成功地做好转发工作即可。

同时黑客连续不断地向这两台主机发送这种虚假的ARP响应包,让这两台主机一直保存错误的ARP表项,使其可以一直探听这两台主机之间的通信。

解决方案:对于ARP欺骗攻击,利用接入层交换机上已经记录了Snooping表项或(和)静态绑定了合法用户的信息进行报文合法性判断。

当交换机端口上收到ARP报文,将报文中的IP和MAC地址提取出来,然后与上述表项进行对比,若IP、MAC以及收到报文的端口信息在表项中,则认为是合法报文,正常处理,否则认为是非法报文予以丢弃。

例如:以公网上的DNS服务器为目标,希望通过使DNS服务器对伪造源地址的响应和等待,造成DOS攻击,并以此扩大攻击效果。

解决方案:防止IP/MAC欺骗,处理类似上面讲到的防止ARP欺骗,也是利用Snooping表项和静态绑定表项检测IP报文中IP、MAC和端口号的正确性。

所不同的是IP地址检查特性配置在交换机的端口上,对该端口生效,不是通过软件丢弃报文,而是直接在端口下发ACL规则,由硬件直接丢弃非法报文,极大降低了伪IP报文对交换机处理效率的影响。

边界安全(防火墙):访问控制列表和防火墙类似于建筑物外墙上的门锁,只让经过授权的用户(拥有钥匙或者胸牌的用户)进出。

边界安全可以控制对关键性应用、服务和数据的访问,使得只有合法的用户和信息才能从一个网络(信任域)进入另外一个网络。

利用一个跟踪特征数据库,它们可以记录任何不正常的情况,并采取相应的措施:发出警报,重置攻击者的TCP连接,或者禁止攻击者的IP地址再次登录网络。

网络IDS(NIDS)检则器通常可以利用一个不可寻址的混和接口卡监听某个子网上的所有流量,并通过另外一个更加可靠的接口发送任何警报和记录的流量(检测攻击代码,如木马、病毒,扫描攻击)。

安全连接(VPN):利用互联网协议安全标准(IPS)的虚拟专用网(VPN)可以提供信息的机密性、完整性和终端身份认证(防止数据被非法用户窃取,防止中间人的攻击)。

身份识别(802.1X,AAA):只有通过认证的用户才能访问网络(非法用户不能接入,防止密码攻击)。

准入控制(NAC/EAD(H3C)):NAC为完全符合安全策略的终端设备提供网络接入,且有助于确保拒绝不符合策略的设备接入,将其放入隔离区以修复,或仅允许其有限地访问资源(解决网络威胁)。

集成化产品安全:在提供传统防火墙、VPN功能基础上,同时提供病毒防护、URL过滤、漏洞攻击防护、垃圾邮件防护、P2P/IM应用层流量控制和用户行为审计等安全功能。

本文来自博客园,作者:古道轻风,转载请注明原文链接:work-attacks-and-defense-methods.html

订单按订单号拆?一个用户要查自己的订单你怎么整,第一个拆分图片感觉也有问题,根本就不能叫垂直拆分,本身就是不同的业务场景建立不同表吧

为何你会整理出来这么一大堆,redis加失效时间,操作相关数据成功之后删除redis就行了

那就是说读写分离本来就意义不大?Oracle是如何解决读写性能的,是因为数据库设计结构问题的原因吗