(一)用户权限统一认证研究现状
目前,业界流行使用LDAP加Kerberos模式进行用户权限统一认证。LDAP的英文全称是Lightweight Directory Access Protocol,是一种支持TCP/IP协议的目录访问标准。Kerberos是MIT在20世纪80年代中期开发的基于KDC概念和Needham.schroeder方法的分布式认证系统,它可以在不安全的网络环境中为用户对远程服务器的访问提供自动鉴别、数据安全性和完整性服务,以及密钥管理服务。
Kerberos是一种认证协议,LDAP既能认证也能授权。将两者结合在一起使用主要是出于安全性考虑,LDAP的认证机制安全性不如Kerberos。LDAP的查询性能非常好,而且能够进行分角色授权,这方面又弥补了Kerberos的不足。正常情况下,客户端访问服务由服务保障安全,引入Kerberos认证机制后,将由KDC来保障服务的安全。
所有Linux服务器作为LDAP认证的客户端,都需要加入KDC;加入后,会生成KDC与各个加入者之间的密钥。客户端会向KDC请求一个ticket,这个ticket被称为TGT。KDC会使用之前KDC与客户端之间生成的密钥来加密TGT,并发送给客户端。
业界流行的LDAP/Kerberos用户权限统一认证解决方案存在两个不足,一是没有充分考虑用户认证授权服务的高可用性,在LDAP/Kerberos服务器出现硬件故障、网络故障时用户认证会失败;二是没有对认证信息进行实时收集和检测。
(二)安全日志审计研究现状
安全扫描,针对公司全部域名进行URL探测,主要包括代码泄露、SQL注入防范与模拟用户攻击行为。
根据美国计算机安全协会(CSI)和美国联邦调查局(FBI)最新的研究表明,在接受调查的公司中有52%的公司系统遭受过外部入侵,但事实上98%的公司都安装有防火墙设备。这些攻击为269家受访公司带来的经济损失,包括系统入侵、滥用Web应用系统、网页置换、盗取私人信息及拒绝服务共计超过1.41亿美元。美国前总统奥巴马也曾公开在电视讲话上表示,每年由于黑客的恶意攻击,美国的损失高达1000亿美元。
业界针对产生如此多的Web攻击原因进行了分析,主要有:好奇心驱动;技术炫耀;技术学习;Web攻击探索。
很多公司通过安全扫描工具进行安全审计及入侵防范。扫描工具可以扫描和检测所有常见的Web应用安全漏洞,如SQL注入(SQL-injection)、跨站点脚本攻击(cross-sitescripting)、缓冲区溢出(buffer overflow)及源代码或公司内部敏感信息暴露在公网等。针对互联网Web应用的安全扫描,需要了解网站的结构和规模,确定扫描的基本策略,一般需要按照目录和扫描策略进行扫描任务的分解。网站的主页、passport认证相关的页面、电子商务网站的交易页面是扫描的重点,最容易发现的安全隐患——跨站点脚本执行和SQL注入问题——也是扫描策略的重点组成部分。
安全扫描的测试需要慎重选择,特别是SQL注入等,因为往往有比较强的副作用,对系统可能造成一定的影响,在生产环境中使用一定要慎重。实际执行安全扫描之前,了解一下网站使用的是什么技术、提供什么类型的业务、大概的规模是很有必要的。
在扫描任务执行的过程中,需要检查是否存在以下情况。
提示网络连接不上,或者提示部分页面无法打开。出现这个情况,需要检查扫描速度是否过快,超出了服务器承受的范围,应该考虑增加URL超时时间,减少扫描程序的并发连接数,以允许更长时间的等待页面影响并减少对服务器的访问连接数。
需要对扫描出的安全问题进行复查和归类,部分属于我们不关注的安全隐患,需要过滤掉,将真正存在的安全问题记录下来并逐一解决。在实际工作中,经常对一个网站进行定期扫描,那就需要使用增量分析的形式,确认哪些问题已经修复、哪些是新发现的安全隐患。
系统日志、应用程序日志长期保留,定期将N台服务器上的日志汇总到一台服务器上进行集中分析,通过shell/awk/python脚本对日志进行模式匹配,过滤其中是否包含安全隐患。
集中式日志事后分析的方式相当于安全扫描的方式,效率比较低,但更容易发现是否存在安全入侵的问题,所有的实际用户行为都保留在原始日志中没有藏身之处。(www.xing528.com)
这样的汇总分析方式,需要有一台高性能的集中分析机器,硬盘够大,CPU够强劲。同时,这种分析方式对运维工程师的个人能力提出了比较高的要求,既要熟悉网络安全,又要精通日志分析脚本开发。这类脚本可维护性也不高,日志类型变化时需要花费很多时间进行修改,灵活性不够。这种分析方法的优点是,上线快,准备周期短,没有引入新的系统或技术,适合于中小规模的网站、互联网公司等使用。
使用商用软件Splunk进行日志收集,安全性分析、监控,日志展现。Splunk是一款可运行于各种平台的日志分析软件,支持的工作平台包括Windows、Linux、Solaris、FreeBSD、AIX、MacOS、HPUnix。与Google Analytics这类Web日志分析软件的不同之处在于,Splunk可以支持任何IT设备,如服务器、网络设备、应用程序、数据库所产生的日志,并以高效索引方式进行日志处理后让工程师对日志中出现的各种情况进行搜索,以及通过非常好的图形方式展现出来。互联网公司服务器所产生的日志数量是非常惊人的,但安全性分析必须基于全部的日志,稍有遗漏可能就让一个安全漏洞逃过检查。与上一节的方案相比,Splunk使用了更高效的方式,用现代搜索引擎技术对日志进行搜索,同时提供了一个非常强大的AJAX式的界面展现日志。
Splunk 可以说是一款非常专业的日志分析软件,但有两个缺点:首先 Splunk 是一个商业软件,购买的成本比较高,互联网公司处于成本和技术积累方面的考虑,一般倾向与使用开源解决方案或内部开发解决方案,因此,降低购买成本应该是Splunk的未来发展趋势;其次,Splunk 太庞大了,安全性审计只是其中的部分功能,由于其核心部分没有开源,因此比较难基于 Splunk 做定制或二次开发。
(三)海量日志实时分析研究现状
互联网公司内部各个平台会产生海量的日志,如搜索引擎的查询、负载均衡设备的请求日志、视频网站的播放记录等。处理海量日志一般需要定制的日志系统,系统需要具有如下特征:构建应用系统与分析系统的桥梁,将它们之间的关系解耦;支持接近实时的在线分析系统和分布式离线分析系统;具有高可扩展性,在日志数量爆发性增长时,分析系统可以灵活地水平扩展。
1.Facebook开源Scribe项目分析研究
Scribe是facebook开源的日志收集系统,在Facebook内部已经得到大量的应用。Scribe是基于一个使用非阻断C++服务器的thrift服务的实现。它能够从各种日志源上收集日志,存储到一个中央存储系统(可以是NFS、分布式文件系统等)上,以便进行集中统计分析处理。它为日志的“分布式收集,统一处理”提供了一个可扩展的、高容错的方案。
Scribe从各种数据源上收集数据,放到一个共享队列上,然后push到后端的中央存储系统上。当中央存储系统出现故障时,Scribe可以暂时把日志写到本地文件中;待中央存储系统恢复性能后,Scribe把本地日志续传到中央存储系统上。
Scribe实现的主要功能和优点:支持多种存储类型,并且可以方便地扩展;Scribe收集到的原始日志可以按照文件大小和时间进行自动切分;独立客户端支持多种编程语言(java、C++、python),并且可以与应用程序框架集成。Scribe方案目前在Facebook和Twitter得到了广泛使用,每天收集处理数10TB以上的海量日志。Scribe架构并不复杂,且日志格式灵活,支持异步发送消息及使用消息队列。这样的特点使它非常适用于用户行为分析的基础数据收集,并且支持Hadoop可以进行分布式计算。与thrift配合之后,Scribe可以跨语言和平台进行日志收集,性能也很高。因此,Scribe并非只能用于网站应用,它还可以用于任何方面的数据收集。如果有客户端程序,可以利用thrift生成C++ Header文件加入你的源码中编译,然后统一编译集成客户端,这样可以进行用户数据收集;也有开发android客户端应用的工程师在java源码中加入thrift代码,在androidapp的客户端实现用户数据收集。
目前Scribe也存在一些问题:中心服务器和本地服务器的单点故障,单台服务器宕机对整个日志收集系统的数据流影响比较大;当客户端日志文件自动切分时,可能出现原始日志丢失的情况;历史日志不能自动清理,日志堆积过多时会存在性能瓶颈。
2.Hadoop+HIVE方案分析研究
Hadoop是Google核心算法MapReduce的一个开源实现,用于海量日志的并行处理。Hadoop支持的数据量可以达到PB级别(1PB=1024TB,1TB=1024GB)。Hadoop的核心包含HDFS和MapReduce,HDFS是分布式文件系统,用于分布式存储海量数据。HDFS有着高容错性的特点。对于外部而言,HDFS就像一个传统的分级文件系统,可以创建、删除、移动或重命名文件。HDFS自身的架构是基于一组特定的节点构建的,包括NameNode和DataNode。NameNode仅有一个,它在HDFS内部提供元数据服务;DataNode为HDFS提供存储块。由于仅存在一个NameNode,所以NameNode就成为HDFS架构中的一个单点。存储在HDFS中的文件被分成块,然后将这些块复制到多个计算机中(DataNode)。NameNode可以控制所有文件操作。HDFS内部的所有通信都是基于标准的TCP/IP协议。Map Reduce的思想是由Google的一篇论文中所提出而被广为流传的,Map Reduce就是任务的分解与结果的汇总。
Hadoop在处理海量日志存储与运算方面具有很多优点:扩展性强,数据量大幅增长时HDFS可以横向扩容;成本低廉,可以通过普通机器组成的服务器群来分发以及处理数据,这些服务器群总计可达数千个节点;计算效率高,通过数据分发,Hadoop可以在数据所在节点并行处理;可靠性高,Hadoop可以自动维护数据的多机复制,并且在任务失败后能自动重新部署计算任务。
HIVE是基于Hadoop的数据仓库,使用Hadoop-hdfs作为数据存储层,提供类似SQL的查询语言(HQL),通过Hadoop-Mapreduce完成数据计算,通过HQL语言提供使用者传统RMDBS一样的表格查询特性和分布式存储计算特性(YAHOO的PIG,Google的Swazall,Microsoft的DryadLINQ,是与HIVE类似的系统)。
HIVE系统用户可以通过命令行、网页、Thrift框架APi进行数据查询。Driver模块是HIVE系统将用户操作转化为Map Reduce计算的重点模块。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。