
Use UML sequence diagram analyzing Multi threading program
由 droplet 在 周四, 2010-06-10 14:29 提交 编程实践用UML的时序图分析多线程程序,个人感觉是非常实用,也很有帮助。时序图本意就是分析多个并发实体之间的消息传递,或者对象调用。对很多异步执行的消息传递,在多线程环境下,消息有哪个线程处理是不确定的。所以需要辅助工具来分析。MT环境下,最常见的问题:1,执行顺序的问题; 2,互斥。有时候从代码上去分析比较困难,画个图就简单多了。
贴一个自己画的一个草图,看看什么样子。


网络软件工程师的N种境界
由 droplet 在 周二, 2010-06-08 18:19 提交 IT人生之所以说网络软件开发,是因为本人以前,以及目前的工作是这个,做网络软件开发。如果说其他领域的软件开发,由于
对领域知识不是很熟悉,评价有可能不太客观。所以还是在自己的本行发发议论最好。
做网络软件开发,就我所做的这个领域,缩小一下范围:是网络安全方面,再缩小一下范围,是防火墙,VPN之类的东西。
本人在N个做安全的公司从业过,基本上一直做到就是网络协议栈,以及filter,routing等等。更高级的安全话题,比如
web firewall, ids/ips等等。没有做过。以前见过,都是拿snort改的,加上界面,估计设计到engine以及signature开发的
也少。以前在国产安全公司工作,基本上就是ipchains, iptables, netfilter等等。虽然有现成的东西,但是在上面做产品,需要
做的事情也很多。最起码需要一个好的用户界面WEBUI/CLI之类的需要考虑,做好了也不容易。再者就是功能的集成,把许多
东西集成到一起,能跑起来,不出错,不crash,这个还是需要一些技术的。在这个层次,需要了解的知识包括:
a) 内核。由于ipchains/iptables/netfilter都是在内核空间里实现的。所以要对内核提供的机制和api需要了解。这是一个基本
的要求。因为不能指望什么事情都是ready,所以很多时候需要亲自动手。Get hands dirty,从open source做东西,基本
都是这样。
b) RFC。需要对网络协议很熟,最起码的要求,ip/tcp/udp要熟。但是这个相对简单的要求,很多从业人员是达不到的,很多人可能
没有仔细看过RFC,对一些细节的定义模糊,导致做产品不能符合要求。

“云”杀毒如何工作?
由 droplet 在 周三, 2010-06-02 18:45 提交 业界评论国内杀毒厂商推出的“云”杀毒,没搞明白是怎么一回事。
把文件提交到厂商的服务器去杀毒,然后再传回来。这样可以避免在客户端保存病毒库,也可以减小客户端的CPU使用率。但这里面有几个问题:
1)对于内存病毒没有效果。所以在客户端的杀毒软件应该保留了一部分功能,比如检查启动项,检查内存等等。
2)最新文件进行查杀。假设系统在第一次杀毒之后,所有的文件都是干净的,那么只需要对新文件进行查杀。文件可以来源于网络,或者各种介质。这样做的前提是需要一次全面的杀毒,以后可以增量杀毒,但是对未知的病毒,第一次没查出来,以后是不是需要再来一次全面杀毒?如果服务器端的病毒库更新了,是不是需要再杀一次?
3)这种查杀必须是在线情况下才能施行。对网络连接明显有很高的要求。
4)传到厂商服务器上的文件如何保护?传输过程如何保护?
5)客户端能够检测到新病毒的破坏并且可以上报服务器,这个程序就非常智能了。这个能够自动进行吗?

Firewall: the first line
由 droplet 在 周四, 2010-05-20 16:12 提交 业界评论Firewall是信息安全的标准配置,但是firewall要解决什么问题哪?一句话:access control,而且是network access control。不管是内到外,还是外到内的访问,firewall都是第一道防线。所以firewall的policy都是基于5元组的,有的也会加上mac address,interface,zone等信息。但5元组是最基本的。
更进一步的发展,firewall又增加了application access control,访问控制的对象变成了URL/domain/resource等等。但是firewall里面没有identity的信息,所有做更细粒度的控制有点难度。一般来说,application access control都是由application来做的,需要结合identity management系统,权限管理等来实现。
其他的access control的产品,比如SSL VPN/IPSEC VPN/PPTP VPN等等,在访问控制的同时,还能够提供安全通道。但是,一般这些产品都会部署在firewall之后,做为second line的控制。
由此可见,access control是分层的:
1st line: firewall
2st line: vpn
3st line: application
当然也不排除把1,2,3都做到firewall里面。但是从安全设计的角度来看,application都需要access control,这个是不会省略的。而且application的access control都死role-based,要比firewall复杂。如果firewall能够获得identity/role的信息,可以在policy加上这些信息,不过相对复杂一点。

Ironport web reputation and google pagerank
由 droplet 在 周三, 2010-05-19 10:59 提交 业界评论Ironport 用web reputation来分类URL/domain的威胁等级,并依此来过滤威胁。Ironport用全球部署的sensor来收集botnet和spam的信息,并根据规则生成每个url/domain的repuation。这个思路,看起来和google的pagerank技术很相似。我认为它有以下几个特点
1)自动化。web reputation的生成,或者pagerank的生成,没有人为干预,完全是机器来计算,以保证公平。但是如果解决误伤的几率,这个是不是还需要一些补救算法。web repuation的输入据说有200多个。这在一定程度上可以避免误伤,不过计算的复杂度会提高。所以计算web reputation需要借助分布式计算的能力,有可能把这部分部署到云里面。如果这个数据能够共享,那是中小公司的福音。
2)海量数据。前面也说了,ironport要在全球范围内收集攻击的数据,包括netflow/log/virus/span等等。这种规模的部署和计算,不是一般公司可以做的。这需要资金和市场的支持。处理海量数据需要很多计算资源和存储资源,放到云里面是顺理成章。
http://en.wikipedia.org/wiki/PageRank

Random thoughts on cloud security
由 droplet 在 周二, 2010-05-18 14:55 提交 业界评论1) netflow或者jflow对网络监控很有用,但是它里面只包含了3/4层的信息,没有application的信息,如果有app flow或者
session flow,对分析7层的攻击很有用处。但是有几个问题
a) app flow里面要扩展哪些信息?netflow/jflow有标准的格式,很多工具都支持,在router/switch上用的很多。如果能搞一个
app flow的标准,在security device上支持,会很有帮助。
b) netflow是stateless的,做session flow需要是stateful,这个对设备来说,消耗太大。一般netflow都是通过router/switch的
mirror port或者tap port收集的,一个网络里面有很多个sensor,有专门分析netflow/jflow的工具。日志,网络流量,在这些数据里面挖掘出一些有用的信息,不容易。
2) botnet detection
botnet detection还有很多可以研究的话题。对server的保护,没有server profile,没法做有针对性的保护。也就是gateway对server不了解,
server的capacity,load等等。如果能够和server有联动,是不是识别更精确一点。有几个问题
a) 与server联动,还是与ids/idp联动?
b) 与server联动,用什么通讯方式?
c) 有了通讯,就有了代价和潜在的攻击后门。
3) virtualization
cloud computing一个很重要的特性就是virtualization,security device也必须支持virtualization的功能。怎么支持,是个问题。

Cloud security and botnet detection
由 droplet 在 周一, 2010-05-17 15:27 提交 业界评论Cisco的新名词“云火墙”,搭着卖自己ironport产品
http://www.ironport.com/company/about.html,看来半天,不知所云。
“云火墙”要监控,检测全球范围内的botnet,cisco在全球的很多isp的网络里面,放上botnet sensor,监测botnet。并把这些监测结果汇总起来,做成一个数据库。“云火墙”可以下载或者更新这个数据库,并根据这个数据库的信息来决定是否阻断连接。
这个和病毒的检测网络很像,比如病毒厂商还提出来一个“云查杀”,“云监测”。不知道这个“云监测”里面,有没有把用户的电脑当做一个监测的节点,如果是这样的话,那杀毒厂商要补贴用户了。白利用我的计算资源,偷偷干自己的事情。
病毒的监测这个好做一点。毕竟病毒的signature是静态的。病毒库更新了,就可以防所有已知的病毒。(当然,杀毒也不只有signature match一种方法,不过病毒库里面应该不包括查杀逻辑,如果库本身是可以执行的,那有可能引入新的安全问题)。
botnet如何监测,又如何生成一个数据库,让所有的查杀节点来阻断botnet?是ip地址?domain?还是其他?
从Client角度来说,重要的是能防止fishnet和被挂马的网站。如果有一个域名或者URL的数据库,阻止或者警告用户去访问fishnet或者被挂马的网站,这个当然是不错的。这样来看,这个“云火墙”更像是一个企业网的产品,而不是给运营商用的。
从Server角度来看,如果能够知道源地址来自botnet而直接阻断的话,就能避免C&C攻击。这里是否需要检查Client的URL是否是合法的哪?这个貌似比较困难,需要扫描server的URL,这个会对server造成更大的伤害。

Security issues in data center
由 droplet 在 周五, 2010-05-14 11:03 提交 业界评论在一个public data center里面,主要的工作是托管客户的服务器,或者是提供VPS服务。所以,最重要的是web server/app server/database/email/ftp/dns等等。防护首先针对的是来自于外部的威胁,比如很常见的,针对web的攻击,XSS, SQL injection等等。当然,比较传统的access control, flood等,也是必须的。传统的安全产品,应该都还适用。但是,这些设备必须支持虚拟化,而且可以和router/switch的网络虚拟化功能结合起来。在这些设备上,如何创建用户的执行环境(sandbox),是需要考虑的一个问题。如果做成vmware那种虚拟机,从性能上来说,是没法接受的,而且也没看见哪个厂商这么做。control plane可以用虚拟机,但是data plane不能。
一旦虚拟主机被攻陷,如何发现并报告问题也是需要关注的。常见的就是日志,从日志里面发现问题。但日志一般关心的是外部的威胁,对内部到外的连接就不怎么关心。为了避免成为botnet里面的肉鸡,一是要防止被攻击,二是要在被攻陷后,及时告警和恢复。在配置firewall或者ips/ids策略时,应该考虑这一点。
当一台服务器被攻陷时,为避免这个危险扩散,在服务器之间,也应该有相应的策略。当然,用网关做access control,这个代价有点高。但至少应该有证书认证,密码保护等措施。不要在所有的服务器上设置相同的密码。这个用起来相对麻烦一点。

初来乍到
由 ilove_isamu 在 周四, 2010-05-13 22:08 提交 IT人生我是一个很菜很菜的编程初学者,因为一个偶然的机会发现了这块宝地,希望以后能够在这里跟大家多多交流学习,尽快的成长起来

Data center and virtualization
由 droplet 在 周四, 2010-05-13 14:21 提交 业界评论Virtualization在data center里面很重要。比较常见的,比如
apache的virtual host; mysql的database;vsftpd的virtual host,还有unix系统的多账户等等。
这属于软件的虚拟化,或者说,这是软件创建的sandbox或者user context。在这个sandbox里,用户可以做一些事情。但是用户的控制边界不能超出了这个context,否则就会给系统带来安全隐患。所以在VPS里面,一般需要禁止sudo,而且要为每个用户创建一个组。很显然,这种虚拟化还很原始,用起来也不方便。
有了虚拟机以后,可以为每个用户创建一个虚拟机。但是虚拟机的开销很大,为每个用户创建一个虚拟机,成本太高,也没有太大必要。用户有时需要的并不是虚拟机,而是一个执行环境。就目前来说,还没有哪个厂商把,web/ftp/mail/database等软件统一到一个虚拟执行环境里面来。很多VPS提供商做的只是整合,并且fix problem one by one。
网络的虚拟化也很重要,这里面最常见的就是ethernet里面的VLAN技术。网络虚拟化可以在二层做,也可以在三层做。比如vlan, vpls, mpls和ipsec vpn等vpn技术。如果cloud computing提供网络虚拟功能,大网套小网,小网又要划分成更小的网。这个如何划分,管理,是个头疼事。如何在虚拟网络里保证服务质量,更是个头疼事,当然,对于虚拟化来说,服务质量都是个难题。
Cloud computing提供一个执行环境,能够把目前用户应用跑在这个虚拟环境里面,这已经是个很不错的开始。现在用户还是托管服务器,购买带宽。如果以后能够直接购买服务,别的不用考虑,管理,维护的成本至少会节省下来。

最新评论
14 小时 39 分钟 前
22 小时 22 分钟 前
1天 18 小时 前
2 天 16 小时 前
5 天 14 小时 前
5 天 14 小时 前
5 天 18 小时 前
1周 19 小时 前
1周 21 小时 前
2 周 1天 前