droplet's blog

droplet's picture

CISSP知识点解析系列:qualitative vs quantitative

Qualitative (定性),Quantitative(定量)是风险分析的两种手段。两者的区别也很容易,就是定量需要用钱来做量的单位;而定性只是指出风险的等级。漏洞会被利用,利用之后就会威胁,有威胁就存在风险。但是风险对于不同的组织和人来说,衡量标准是不一样的。这里有一个例子展示了定性分析的方法,虽然方法很简单,但是背后所需的知识并不少。

Owasp

droplet's picture

kernelchina.org的安全实践(2)

对于服务器来说,安全加固有哪些必要的工作?

1)开始防火墙?开启防火墙,只允许访问启用的服务。但是这有几个不好的地方。一是开启防火墙肯定会影响服务器的性能,特别是在netfilter/iptables的实现里面,性能并不是首要的目标;而是服务和防火墙规则之间没有关联,需要分别设置,这会增加一定的难度。启用防火墙的好处是限制系统的访问点,或者是服务器有缺陷时,提供临时的防护手段(比如前段时间windows协议栈的一个问题)。

2)是否需要开始syncookie。开启syncookie可以一定程度上防止syn flood(看流量大小),但是对性能也有影响。

3)各种服务的日志。Fail2ban或者denyhost都是通过检查服务器的日志来确定攻击的。这种实现方式比较灵活(可以支持多种日志),但是性能较低(相对于集成在服务器里面的安全功能)。日志提供了安全里面可跟踪(trackable),可审计(auditable),是安全的基础之一。

4)定期检查。定期检查系统的安全状况,用nmap就可以实现。

droplet's picture

kernelchina.org的安全实践(1)

春节期间,把kernelchina.org从bluehost迁移到了linode,希望速度能快一点。bluehost提供的是虚拟主机(virtual host),是一个服务器支持多个用户,这种虚拟化是软件的虚拟化,虽然用户在使用上感觉是被隔离的,但实际上,完全隔离在这种模式下是做不到了,特别是在系统层面没有隔离,单靠服务器的虚拟化,很难模拟一个完全的隔离环境,所以很多其他用户的信息是可以看到的。虚拟主机很难提供SLA,所以有时性能是无法控制的(这个和服务器的位置也有关系,bluehost对中国用户的支持好像差一点)。linode提供的是虚拟服务器(virtual private server),是基于XEN的服务器,完全虚拟化,完全隔离,QoS也能保障,很多个人网站都推荐使用linode。为了提升kernelchina.org的用户体验,我也把服务器迁移到了linode,我的linode refer code是(点这个链接注册使用linode,可以给我20$的回扣~-~)

    http://www.linode.com/?r=ae1d176c39756bdf939b5110bf19612529216448

迁移的步骤如下:

1)在linode注册,并购买虚拟主机,我买的是512的plan,在网上看了其他人的评论,感觉512对于日访问量不到1000独立ip的网站应该是足够了。以后访问量上来了,可以换其他的plan。网站的访问速度,和网络的关系更大一点,和服务器的性能关系小一点。网络的访问速度当然是就近原则,hop越多,访问速度越慢。

2)安装服务器。linode大多数用户用的都是ubuntu server,我也选这个服务器。

3)设置密码,和ssh访问。好的密码相当于一把可靠的锁。linode提供两种访问方式,通过web管理虚拟主机,或者通过ssh登录虚拟主机。web管理,linode可以设置白名单(whitelist),只有白名单的ip可以管理你的虚拟主机。想想在防火墙设计里面,对于管理ip和管理端口,都是必选项。而且有些时候会限制只能从某个接口访问管理界面,或者只通过console管理。管理的流量和正常的流量分离,这样可以避免被窃听或者负载太大无法管理的情况。通过ssh登录虚拟主机,最好是配置只通过证书认证,而不是通过密码认证。使用证书的好处是密码不会在网络上传输,避免被窃听,而且应该禁止root访问ssh。对于密码尝试的次数也应该有限制,最大尝试次数5次,超过这个次数,应该禁止这个源地址访问一段时间。

   以前有一个server就是被破解了密码,服务器被入侵。后来重装,设置更复杂的密码,最重要的是安装了fail2ban (http://en.wikipedia.org/wiki/Fail2ban) 这个软件,对于密码扫描类的攻击,有很好的防护作用。

4)更新服务器。时刻保证服务器是最新的,安装了最新的安全补丁。ubuntu的安全更新服务,很好用。

5)安装服务器。apache, mysql以及php。这部分的优化和安全设置还没有做完,以后有时间再更新。

6)迁移数据。迁移数据分为两步,一是数据库和web文件;而是DNS。数据库和web文件迁移需要注意用户名和用户权限,web是一个入口,设置正确的权限才能避免服务器的信息泄露;而DNS迁移需要等待24小时,dns cache刷新之后,才能看到迁移的结果。

droplet's picture

做大的艺术 - 大型网站的架构设计 [转载]

(原文在这里http://blog.sina.com.cn/s/blog_46d0a3930100euxb.html,看了一些关于网站架构方面的文章,基本上是大同小异。也就是说,基本的原则都是一样的,而且软件也都是开源软件。但难点在于整合和运营。整合需要一些自制的工具或者根据业务定制软件;运营需要考虑数据中心建设,业务流程设计等等,不是一个简单的软件问题。从小到大的演化是一个很有意思的故事,和人的成长类似)

droplet's picture

DNS

这几天因为要迁移服务器,所以把DNS相关的知识又看了一遍,有一些心得和大家分享一下:

Bb727007_tcpipm01(en-us,TechNet_10)

(图片来自微软网站)

1)关于根服务器

Root server负责域名体系的根“.”。Local dns server不能解析的域名,都会查询根服务器,得到次一级的服务器,比如.org.。然后org服务器会告诉resolver下一级的服务器在那里,比如.kernelchina.org.,最后是相应的web服务器的地址,比如www.kernelchina.org。Root server的数据库应该不会很大(顶级域名数量有限)。有13个root server,这些服务器的内容应该是完全相同的(不存在解析请求从一个root转发到另一个root)。每一级的dns server都会有冗余机制来保证可靠性,比如root server就有13个,一是保证可靠性,也可以负载分担。一般DNS server有Master-Master,Master-Slave,Slave-Slave的配置方式,以保证可靠性。

http://www.zytrax.com/books/dns/ch4/

http://www.isoc.org/briefings/016/index.shtml

2)关于解析器(resolver)

  Bb727007_tcpipm03(en-us,TechNet_10)

(图片来自微软网站)

一般DNS服务器有两种解析模式:recursive(递归);iterative(迭代)。在Client发送DNS请求时,一般都是recursive,在这种方式下,DNS服务器或者回复可以解析的域名ip,或者回复不能解析。但是recursive方式对DNS服务器是一个负担。所以,当client发送recursive的请求,而DNS服务器又没有工作在recursive模式时,需要client本地的dns resolver具有iterative解析的能力。这是一个协商的过程,总之一般DNS服务器都支持这两种方式,只不过离client近的DNS服务器需要工作的recursive模式,以学习更多的DNS cache;而离client远的服务器工作在iterative模式,以减轻服务器本身的负担。不过,如果是提供DNS服务,最好是recursive模式,也就是说client的请求到此为止,不需要client做更多其它的事情。

droplet's picture

CISSP知识点解析系列:Positive pressure

Positive pressure,意思是空气正压。通常在一个数据中心,为防止外面的空气进入数据中心,需要保持空气正压,也就是内部的大气压比外部的大。这样可以避免数据中心内部的空气污染而导致的设备损坏。同样的还有positive flow,也就是水应该向外流,也就是说设备所在的区域应该比四周要高(想想卫生间是怎么装修的)。空气正压在坦克的三防里面也有应用,前几天看一个坦克三防的介绍,要求坦克内部的气压比外面高,防止辐射,化学污染进入内部。

数据中心应该位于大楼的中间层,而且应该在本层区域的中心。这个也符合分层保护的原则,优先级最高,权限最高的要放在内层(想想操作系统的ring protection)。数据中心不能放在地下室(防止被水淹),不应有明显的标志(太明显了会吸引破坏者)。关于数据中心选址,建设有很多话题,以后会介绍。正规的数据中心规划应该遵循一些原则,这样可以避免灾难发生,或者是灾难发生后,对数据中心的破坏较小。

droplet's picture

CISSP知识点解析系列:数据分级

安全的第一步是识别资产,并把资产分级。对信息安全来说,信息就是资产,因此信息也需要分级。通常有两种分级方式,一种是商业用途的,一种是政府或者军事用途的,如下:

商业用途 政府或军事用途

Top Secret

Top Secret

Highly Confidential(confidential)

Secret

Proprietary(private)

Confidential

Internal Use only

Restricted

Public Documents

Unclassified

信息资产的等级从上而下,TOP secret是需要最高的保护,而Public或者unclassfied是对公众开放的信息。在看美国大片的时候,经常会看到标记TOP secret的纸袋,里面装着绝密的信息,里面的消息当然是知道的人越少越好。

对做信息安全的人来说,了解客户的业务,帮助客户识别资产并划分等级,并针对不同资产采取不同的保护方式,这样的安全方案才是有的放矢。

http://en.wikipedia.org/wiki/Top_secret

http://www.yourwindow.to/information-security/gl_dataclassification.htm

droplet's picture

CISSP知识点解析系列:CISSP简介

CISSP (Certified Information Systems Security Professional)是信息安全领域认可程度很高的一个认证。据说全球大概有6万左右持有CISSP证书的工程师。是CIO/CSO的入门证书。CISSP与厂商无关,所有不会考察某个具体产品的知识,而是倾向于概念性,通用的知识点。CISSP有十个知识领域(Common Body of Knowledge  or CBK),如下:

1)Access Control

2)Telecommunications and Network Security

3)Information Security Governance and Risk Management

4)Software Development Security

5)Cryptography

6)Security Architecture and Design

7)Operations Security

8)Business Continuity and Disaster Recovery Planning

9)Legal, Regulations, Investigations and Compliance

10)Physical (Environmental) Security

CISSP的特点是知识面广,但是考试本身并不会涉及太深入的知识,个人认为CISSP考试有以下几个难点:

1)知识面广。CISSP认证需要至少5年的相关领域的工作经验。但即使有5年的工作经验,也不可能对所有的知识领域有了解。安全本身又是一个交叉的行业,涉及软件,硬件,管理,站点设计,灾备等等。每个领域都有很复杂的知识体系,所以CISSP只是一个入门证书,需要持续不断的学习,并且在专门的领域深入去研究。CISSP让你对安全有一点感觉,至于做出一点事情,需要付出更大的努力。

2)英文考试。目前还没有中文版的考试,所以对中国人来说还是有一定的难度。由于涉及知识面广,所以专业术语特别多,词汇量有一定的要求。

3)毅力。准备考试,至少需要两到三个月的准备时间。每天至少要花两到三个小时。这对于已经工作的人来说,有一定的难度。如果不能坚持,很显然是没法通过考试的。

4)体力。CISSP考试时间需要六个小时,100多页的英文试卷,对人的精力和体力是一个考验。我的感觉是,考完了,饿坏了,准备的吃的没时间吃,也不太方便(准备了豆沙饼,放书包里面,不好拿出来,吃也麻烦,早知道带几个士力架或者巧克力,还好一点)。6个小时,答题,检查,上厕所,其实很紧张。

CISSP有三四百个知识点,需要理解,而不是死记硬背,所以对于知识积累还是有一定的好处的。这个系列就是对一些知识点的解析或者是解释。希望对想参加CISSP考试的朋友有帮助。学习CISSP,推荐几个站点

www.isc.org

http://en.wikipedia.org/wiki/Certified_Information_Systems_Security_Professional

www.chinacissp.org (对我帮助很大)

有疑问,也可以在这个网站上讨论。

droplet's picture

CISSP知识点解析系列:RAID

RAID (redundant array of independent disks; 或者redundant array of inexpensive disks),顾名思义,通过多个独立硬盘提供存储的高可靠性。RAID可以用软件实现,也可以用硬件实现,但是应该对应用软件透明。RAID实现里面,有三个基本概念:

1)Striping (条带)简单说就是把数据分散到多块硬盘上,其实就是一个cluster。它可以扩展逻辑硬盘的容量,并且由于是并行读写的,所以速度很快。

2)Mirroring (镜像)简单说就是把数据镜像到另外一块硬盘上,从而提供高可靠性。由于数据是冗余的,所以空间有浪费,而且速度较慢。

3)Parity (奇偶校验)附加额外的校验和,从而在硬盘损坏的情况下恢复数据,由于数据是冗余的,所以空间有浪费(但是比mirror好一点),而且速度也慢一点。

所有的RAID等级,基本上上面三个方面的组合,比如

RAID 0   Striping

RAID 1   Mirroring

RAID 2,3,4,  Striping and Parity, 2,3,4已经被淘汰了,不再使用

RAID 5 Striping and Parity 用的最多的RAID

RAID 6 Striping and Parity 是RAID 5的扩展

RAID 10 (1+0)或者RAID 01 (0+1) Mirroring and Striping提供高可靠性,同时扩展磁盘空间

还有很多其他的RAID 类型,基本上就是上面三个方面的组合,记住0,1,5就可以了。

最新的关于存储高可靠性的分类方式有变化,更简单一点:

1)Failure-resistant disk systems (FRDS)

2)Failure-tolerant disk systems (FTDS)

3) Disaster-tolerant disk systems (DTDS)

上面的分类,可靠等级依次递增,实现复杂度也依次递增。

RAID的概念可以用于存储的高可靠性,同样也适用于网络设备的高可靠性,比如网络设备里面的session备份。网络高可靠性的解决方案里面,也包括cluster和mirror两种方式。唯一不同的是parity不好实现。其实parity就是一个压缩存储的机制,对于网络设备这种要求低延时的设备,好像不太适用。

http://en.wikipedia.org/wiki/RAID

droplet's picture

How browsers work [转载]

http://taligarsiel.com/Projects/howbrowserswork1.htm

layers

想要了解浏览器是如何工作的朋友可以了解一下,当然这只是入门知识,更深入的东西当然少不

了去看代码,那不是一天两天可以搞定的。

现在知识分类越来越细,在每一个专门领域,各种知识都是浩如烟海。走马观花就需要一定的时间,

更何况深入了解。知识越来越成为人类的负担。不过想要做成一件事是不需要了解那么多东西的,做

事情反而很简单,可以边实践,边学习。等到什么都搞懂了,时间已经不等人了。

Syndicate content