计算机网络相关

前言

下面总结的内容都比较简略,可能是摘抄了《白帽子》,可能是网上搜集的资料,或者直接给出了别人总结的很好的文章供以后查看,因为每个点展开来将都可以写好几篇文章(嗯,为自己偷懒找借口

OSI七层模型

TCP

UDP每次只能传输64kb,TCP则无限制

  • 三次握手

  • 四次握手

  • 为何连接的时候是三次,关闭的时候是四次 因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,”你发的FIN报文我收到了”。只有等到我Server端所有的报文都发送完了,我才能发送FIN报文,因此不能一起发送。故需要四步握手。

DNS解析

知乎

  • 在浏览器中输入www . qq .com 域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。
  • 如果hosts里没有这个域名的映射,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。
  • 如果hosts与本地DNS解析器缓存都没有相应的网址映射关系,首先会找TCP/ip参数中设置的首选DNS服务器,在此我们叫它本地DNS服务器,此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析,此解析具有权威性。
  • 如果要查询的域名,不由本地DNS服务器区域解析,但该服务器已缓存了此网址映射关系,则调用这个IP地址映射,完成域名解析,此解析不具有权威性。
  • 如果本地DNS服务器本地区域文件与缓存解析都失效,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(http://qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找http://qq.com域服务器,重复上面的动作,进行查询,直至找到www . qq .com主机。
  • 如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管是本地DNS服务器用是是转发,还是根提示,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

  • DNS在进行区域传输的时候用TCP,其他时候用UDP

  • DNS劫持与污染
    • DNS劫持就是指用户访问一个被标记的地址时,DNS服务器故意将此地址指向一个错误的IP地址的行为。范例,网通、电信、铁通的某些用户有时候会发现自己打算访问一个地址,却被转向了各种推送广告等网站,这就是DNS劫持。
    • DNS污染,指的是用户访问一个地址,国内的服务器(非DNS)监控到用户访问的已经被标记地址时,服务器伪装成DNS服务器向用户发回错误的地址的行为。范例,访问Youtube、Facebook之类网站等出现的状况。

HTTPS相关

  • https的原理 https 证书传递、验证和数据加密、解密过程解析

    使用了非对称加密对称加密、以及HASH算法

      非对称加密算法:RSA,DSA/DSS 
      对称加密算法:AES,RC4,3DES 
      HASH算法:MD5,SHA1,SHA256
    

    SSL介于应用层和TCP层之间(传输层):

  • HTTPS 协议降级攻击原理

    • 由客户端(如浏览器)发送第一个数据包 ClientHello,这个数据包中保存着客户端支持的加密协议版本
    • 服务器收到这个ClientHello数据包,查看里面客户端支持的加密协议版本,然后匹配服务器自己支持的加密协议版本,从而确认双方应该用的加密协议版本。
    • 服务器发送ServerHello数据包给客户端,告诉客户端要使用什么加密协议版本。

    如果客户端声称自己只支持某个旧版本有漏洞的加密协议,且服务器支持此协议,则攻击有可能发生。

  • https流量如何检测:这个问题是不是类似于用burp抓包的问题啊,下载CA证书,导入到浏览器,并设置为信任。(待补充吧

拒绝服务攻击

浅谈DDoS攻击与防御

  • 网络层DDoS攻击
    • SYN flood:三次握手的缺陷;措施:SYN cookie/SYN Proxy、safereset算法等
    • UDP flood:UDP是一种无连接的协议,伪造大量的源IP去发送UDP包。但UDP包双向流量基本对等,也会消耗自身资源
    • ICMP flood:不断发送不正常的ICMP包(内容很大,占带宽)。目前很多服务器禁ping(防火墙可以屏蔽)。

    • 防御:
      • 网络架构优化,采用负载均衡
      • 添加抗DDoS设备,流量清洗
      • 限制单IP请求频率
      • 防火墙等保护设置禁止icmp包等
  • 应用层DDoS
    • CC攻击:
      • 对一些消耗资源较大的应用页面不断发起正常的请求,如数据库查询;
      • 篡改流量大的A网站页面,加入<iframe src = "target">,则每当有人访问A,则也会对目标站发起get请求。
    • Slowloris攻击:以极低的速度往服务器发送http请求(完整的http头是的结尾是\r\n\r\n

    • HTTP POST DoS:发送http post包时,指定一个非常大的content-length值,再以很低的速度发包

    • Server Limit DoS:这是由于cookie导致的dos攻击,当然其原理还是基于webserver的特性。apache默认最大的http包头长度为8192字节,如果超出此长度,则会返回4xx错误。如果我们利用存储型xss漏洞,将一个超长的cookie写入客户端页面,则用户再访问此页面后,由于请求头加载了恶意的超长cookie,导致其不能访问该站的页面(除非清空cookie)

    • ReDoS:代码写得有缺陷,导致使用正则时,会出现大量占用资源的情况,导致服务不可用

    • 措施:
      • 使用频率高的数据放在memcache中(最近有新闻报道Memcached的安全漏洞导致github被大规模DDoS)
      • 网络架构优化,充分利用好CDN和镜像站点的分流作用
      • 限制请求频率,通过IP地址+Cookie定位一个客户端
      • 验证码(验证过程:对比用户提交的明文和服务器端Session里存放的验证码明文是否一致)
      • 判断UA(不可靠)
      • 让客户端解析一段JS(不可靠)(类似于区块链里面的Hashcash)
      • Apache的配置文件里,调小timeout、keepalivetimeout,增加maxclients,合理配置中间件
  • NTP Flood:放大+反射
    • 利用网络中NTP服务器的脆弱性(无认证,不等价数据交换,UDP协议),来进行DDos行为的攻击
    • Listpeers指令:列出目标NTP服务器的peers(NTP Servers)
    • monlist指令:获取与目标NTP Server进行过同步的最后600个客户机IP。这意味着,一个很小的请求包,就能获取到大量的活动IP地址组成的连续UDP包。如10M的通信流量可以得到5620M的攻击流量,也就是5G

防火墙的部署

`IDS`:网络入侵检测系统,对网络、系统的运行状况进行监视,尽可能发现各种攻击企图、攻击行为或者攻击结果,以保证网络系统资源的机密性、完整性和可用性。

`IPS`:入侵防御系统,根据预先设定的安全策略,对流经的每个报文进行深度检测(协议分析跟踪、特征匹配、流量统计分析、事件关联分析等),如果一旦发现隐藏于其中网络攻击,可以根据该攻击的威胁级别立即采取抵御措施,这些措施包括(按照处理力度):向管理中心告警;丢弃该报文;切断此次应用会话;切断此次TCP连接。

其他

  1. CSMA:抢占型的半双工介质访问控制协议