专栏名称: 奥斯特洛司机
朝闻道,夕死矣。为中产而奋斗的小编
目录
相关文章推荐
可爱多手工艺术  ·  65岁倪萍离婚炸上热搜!怒揭陈红20年“遮羞 ... ·  昨天  
51好读  ›  专栏  ›  奥斯特洛司机

7.2、控制连入数,黑客攻击防范以及畸形包应对

奥斯特洛司机  · 简书  ·  · 2019-04-17 13:53

正文

1、控制并发连入数量
epoll技术支持数万高并发,但是在实际的业务中,单纯探讨epoll支持多少并发连接意义不是很大,并发数量取决于很多因素:
一、采用的并发技术,epoll
二、服务器程序收发数据的频繁程度,以及处理的具体的业务复杂程度,占用的资源大小。
三、实际的物理内存。可用的物理内存数量直接决定能支持的并发连接。
四、其它的tcp/ip配置项。
一般日常所写的服务器程序一台计算机能支持几千甚至1到2万的并发基本上差不多够了。一个服务器程序要根据具体的物理内存,以及我们具体要实现的业务控制能够同时连入的数量。
如果允许客户无限连入,服务器肯定会崩溃。
初始化连接池要控制同时连入数量。
定义一个变量统计当前在线用户数。m_onlineusercont
accept成功+1,回收连接的时候-1。

  • 控制允许连入数量的解决思路:
    如果同时连入的用户的用户数量超过允许的最大数量时,直接将连接踢出去。close掉。

2、黑客攻击的防范
攻击效果:轻则服务器工作迟缓,重则整个服务器停摆,没办法提供正常服务。
比如拒绝服务攻击。
最严重的是利用程序漏洞,通过远程溢出手段攻破服务器程序锁在的计算机,拿到一定的权限甚至是root权限,那么计算机都在黑客的控制中了。制药谨慎细心的写程序,这个漏洞可以避免。
有些攻击利用tcp/ip协议先天的设计问题来攻击【syn flood】
DDOS攻击的一种。防火墙设备都可能防不住。甚至得从数据路由器想办法。
我们的服务器无法解决DDOS攻击,能够拒绝用户三路握手进来后的一些网络问题。

  2.1、flood攻击防范(本服务器这里是成功收包的频繁度)
           flood:洪水。用户三路握手只完成一半,只发送syn包不接收服务器的ack包,这样服务器会在一段时间后继续发送ack包。只到分钟级时间过后才抛弃这个连接。当数以万计的这种连接过来就会占用服务器的连接数。达到正常的连接被拒绝服务的效果。
           假设一个合理的客户端一秒钟发送数据包给服务器不超过10个,如果客户端不停的给服务器发送数据包,1秒钟超过了10个数据包,我们就认为这个客户端有恶意倾向,服务器应该果断的关闭这个客户端tcp连接。
  • 代码上如何实现呢?
    加3个配置项。是否开启;时间间隔;连续收到次数。
    引入函数testflood()
    调用哪个地方:凡是包收完整的地方都要调用。本服务器的类似情况有3个。

    2.2、畸形数据包防范
            意识:客户端发送过来的数据并不可信,服务器端必须要谨慎的验证。因为这些数据有可能是造假的或者畸形的。
            造假:数量是否合理。传值是否在正常值范围内。多做数据判断。基本能够避免客户端造假。
            畸形数据包:远程溢出攻击。攻击成功的主要原因就是服务器程序书写不当。缺少边界检查等。
    
  • 缓冲区溢出攻击:







请到「今天看啥」查看全文