Hash
Hash一般译为“散列”,也有直接音译为“哈希”的,就是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,他们并非一一对应,因此不可能从散列值来唯一确定输入值。简单来说散列就是一种将任意长度的消息压缩到某一固定长度消息摘要的函数。
不同的关键字可能得到相同的散列值,如key1≠key2,而f(key1)=f(key2),这种现象称碰撞。
散列函数的特性:
- 如果两个散列值不同,那么他们的输入一定是不相同的,这个特性称为结果确定性;
- 散列值和输入并非一一对应,不同的输入的散列值可能相同;
常用的hash算法:MD4、MD5、SHA-1等,常用于文件校验、数字签名、鉴权协议等场景。参考这里。
防火墙
防火墙指的是一个有软件和硬件设备组合而成、在内部网络和外部网络之间、专用网与公共网之间的界面上构造的保护屏障,是一种获取安全性方法的形象说法。他是一种计算机硬件和软件的结合,使Internet和Intranet之间建立起一个安全网关(Security Gateway),从而保护内部网络免受非法用于的侵入,防火墙主要由服务访问规则、校验工具、包过滤盒应用网关4个部分组成,防火墙就是一个位于计算机和它所连接的网络之间的软件和硬件,而计算机流入流出的所有网络通信和数据包均要经过此防火墙,其实它是一种隔离技术。参考这里。
防火墙主要类型:
- 网络层防火墙:它可视为一种IP封装包过滤器,运作在底层的TCP/IP协议栈上,可以以枚举的方式,只允许符合特定规则的封包通过,其余一概禁止穿越防火墙,这些规则通常可以由管理员定义和修改,较新的防火墙能利用封包的多样属性来进行过滤如来源IP或端口、目的IP或端口、协议类型等等。
- 应用层防火墙:它是在TCP/IP协议栈的“应用层”上运作的,如你使用浏览器的HTTP或FTP的数据流都属于这一层。不过这种防火墙设置起来及繁琐又复杂,所以大部分防火墙都不考虑这类设计方法。
- 数据库防火墙:它是一款基于数据库协议分析和控制技术的数据库安全防护系统,基于主动防御机制,实现数据库的访问控制、危险操作阻断、可疑行为审计。它通过SQL协议分析,根据预定义的禁止和许可策略让合法的SQL操作通过,阻断非法违规操作,形成数据库的外围防御圈,实现SQL危险操作预防、实时审计。
DMZ(Demilitarized zone),中文称为“隔离区”,也称“非军事化区”,与军事区和信任区相对应,作用是把WEB,E-mail,等允许外部访问的服务器单独接在该区端口,使整个需要保护的内部网络接在信任区端口后,不允许任何访问,实现内外网分离,达到用户需求。DMZ可以理解为一个不同于外网或内网的特殊网络区域,DMZ内通常放置一些不含机密信息的公用服务器,比如Web、Mail、FTP等。这样来自外网的访问者可以访问DMZ中的服务,但不可能接触到存放在内网中的公司机密或私人信息等,即使DMZ中服务器受到破坏,也不会对内网中的机密信息造成影响。
原理:将部分用于提供对外服务的服务器主机划分到一个特定的子网——DMZ内,在DMZ的主机能与同处DMZ内的主机和外部网络的主机通信,而同内部网络主机的通信会被受到限制。这使DMZ的主机能被内部网络和外部网络所访问,而内部网络又能避免外部网络所得知。
当规划一个拥有DMZ的网络时候,我们可以明确各个网络之间的访问关系,可以确定以下六条访问控制策略。
- 内网可以访问外网:内网的用户显然需要自由地访问外网。在这一策略中,防火墙需要进行源地址转换。
- 内网可以访问DMZ:此策略是为了方便内网用户使用和管理DMZ中的服务器。
- 外网不能访问内网:很显然,内网中存放的是公司内部数据,这些数据不允许外网的用户进行访问。
- 外网可以访问DMZ:DMZ中的服务器本身就是要给外界提供服务的,所以外网必须可以访问DMZ。同时,外网访问DMZ需要由防火墙完成对外地址到服务器实际地址的转换。
- DMZ访问内网有限制:很明显,如果违背此策略,则当入侵者攻陷DMZ时,就可以进一步进攻到内网的重要数据。
- DMZ不能访问外网:此条策略也有例外,比如DMZ中放置邮件服务器时,就需要访问外网,否则将不能正常工作。在网络中,非军事区(DMZ)是指为不信任系统提供服务的孤立网段,其目的是把敏感的内部网络和其他提供访问服务的网络分开,阻止内网和外网直接通信,以保证内网安全。
以下为两种基本的架构——单防火墙和双防火墙,当然,可以根据实际网络的情况,使其结构更为复杂。
- 单防火墙
由一个具有三个网络端口的防火墙实现,三个端口分别接入内部网络,DMZ和外部网络。防火墙按照以上访问策略实现过滤不同网络间的通信。防火墙是这个网络结构的关键节点,其必须能保护内部网络和DMZ的通信安全。
- 双防火墙
由两个具有两个网络端口的防火墙实现,第一层防火墙分别连接外部网络和DMZ,为外部防火墙,只负责DMZ的访问控制;第二层防火墙分别连接内部网络和DMZ,为内部防火墙,负责DMZ和内部网络的访问控制。 这是个比较常用的架构布置,因为外部网络要经过两层防火墙才能进入内部网络,即使外部防火墙被攻破,内部防火墙仍能发挥防护作用,能提供相对较高的防护效果,当然,该架构的成本也比较高。
NAT(网络地址转换)
由于保密原因或 IP 在外网不合法,网络的内部 IP 地址无法在外部网络使用,就产生了 IP 地址转换的需求。网络地址转换(NAT,Network Address Translation)属接入广域网(WAN)技术,是一种将私有(保留)地址转化为合法IP地址的转换技术,它被广泛应用于各种类型Internet接入方式和各种类型的网络中。原因很简单,NAT不仅完美地解决了lP地址不足的问题,而且还能够有效地避免来自网络外部的攻击,隐藏并保护网络内部的计算机。使用这种转换方法是有一定限制的,即会话的请求及响应的发送必须经过相同的 NAT路由器。
NAT的实现方式有三种,即静态转换Static Nat、动态转换Dynamic Nat和端口多路复用OverLoad:
- 静态转换是指将内部网络的私有IP地址转换为公有IP地址,IP地址对是一对一的,是一成不变的,某个私有IP地址只转换为某个公有IP地址。借助于静态转换,可以实现外部网络对内部网络中某些特定设备(如服务器)的访问。
- 动态转换是指将内部网络的私有IP地址转换为公用IP地址时,IP地址是不确定的,是随机的,所有被授权访问上Internet的私有IP地址可随机转换为任何指定的合法IP地址。也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。动态转换可以使用多个合法外部地址集。当ISP提供的合法IP地址略少于网络内部的计算机数量时。可以采用动态转换的方式。
- 端口多路复用(Port address Translation,PAT)是指改变外出数据包的源端口并进行端口转换,即端口地址转换(PAT,Port Address Translation).采用端口多路复用方式。内部网络的所有主机均可共享一个合法外部IP地址实现对Internet的访问,从而可以最大限度地节约IP地址资源。同时,又可隐藏网络内部的所有主机,有效避免来自internet的攻击。因此,目前网络中应用最多的就是端口多路复用方式。
Memcached
Memcached是一个高性能的分布式缓存系统,主要用来减轻数据库的负载,从而提高相应速度,它是基于一个存储键值对的hashmap,其守护进程是用C些的,但客户端可以用任何语言来编写,并通过memcached协议与守护进程通讯。
memcached的API使用32位元的循环冗余校验(CRC-32)计算键值后,将数据分散在不同的机器上。当内存满了以后,接下来新增的数据会以LRU(最近最少使用)机制替换掉。而且它并不提供冗余,当某个服务器S停止运行或崩溃了,所有存放在S上的键/值对都将丢失。
memcached作为高速运行的分布式缓存服务器,具有以下的特点。
- 协议简单
- 基于libevent的事件处理
- 内置内存存储方式
- memcached不互相通信的分布式
为了提高性能,memcached中保存的数据都存储在memcached内置的内存存储空间中。由于数据仅存在于内存中,因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。memcached本身是为缓存而设计的服务器,因此并没有过多考虑数据的永久性问题。