我们是工程,他们是工业

| Life | #IDC

公司把IDC搬到了AT&T,最近几天一直都在加班。

这家机房的基础设施和服务都不错,唯一的问题是他们卖东西的时候和AT&T的接入服务一样—-有时候有意无意地去混淆一些概念。说到这里得提一句,导致我决定不使用AT&T的DSL服务的原因就是,他们居然把动态IP说成是一个feature,并强调这个feature能够提供更好的安全性,这样的"包装"真是让我觉得非常不舒服。

阅读全文…( 本文约 1004 字,阅读大致需要 3 分钟 )

FreeBSD CAM/AHCI committed

| Kernel | #AHCI | #CAM | #FreeBSD

下周一的8.0-BETA2会包含这个。CAM/AHCI是按照CAM框架重写的AHCI驱动(之前是ata(4)),提供了包括NCQ等硬件特性的支持,并改善了对SATA光驱的支持。与OpenBSD的实现不同,FreeBSD实现通过扩展CAM框架使其直接对ATA设备提供支持。

阅读全文…( 本文约 201 字,阅读大致需要 1 分钟 )

27了,不能再假装年轻了

| Life

27了,不能再假装年轻了。

参与评论

Heal The World (Lyrics)

| Shared Chaos | #Michael Jackson

In memorial of Michael Jackson (1958.08.29 - 2009.06.25)

“Heal The World”

There’s A Place In
Your Heart
And I Know That It Is Love
And This Place Could
Be Much
Brighter Than Tomorrow
And If You Really Try
You’ll Find There’s No Need
To Cry
In This Place You’ll Feel
There’s No Hurt Or Sorrow

阅读全文…( 本文约 520 字,阅读大致需要 3 分钟 )

DNS安全:投毒攻击与缓存服务器的配置

| Security | #BIND | #DNS | #Security

DNS是目前互联网上使用最为普遍,同时也是漏洞很多的一个协议。DNS投毒攻击(Poisoning)是一种比较常见的攻击手法,具体而言,通常一台 DNS 缓存服务器能够影响大量的客户机,通过投毒攻击,能够使得大量用户访问某个具体域名时得到不正确的结果(例如,钓鱼网站,等等)。

阅读全文…( 本文约 1115 字,阅读大致需要 3 分钟 )

Apache中同一IP多个HTTPS虚拟主机的实现

| Security | #Apache | #TLS | #作弊条

在 Apache 文档中提到,不能在单个 IP 上同时有多个按名字识别的虚拟主机(“named virtual host”)。不完全是这样。

HTTPS协议的过程是:服务器首先与客户机之间进行服务器身份验证并协商安全会话,然后,客户端向服务器发送 HTTP 请求。这样一来,在客户端开始发送请求之前,服务器就已经把证书发给了客户端(客户端根据本地的根证书去验证证书链,等等)。而最重要的是,为了表明身份,这个证书的周知名称(“Common Name”)填写的应该是域名,否则浏览器会给出警告。

阅读全文…( 本文约 800 字,阅读大致需要 2 分钟 )

驱动程序是什么

| Kernel | #driver

Disclaimer: 这是一篇科普文章,不会涉及太多的技术细节。

简单地说,驱动程序是操作系统与硬件(有时也包括其他的软件或在硬件上运行的firmware)之间的一种接口程序。对于操作系统来说,驱动程序是非常重要的

不过,在现代系统中,多数情况下,驱动程序并不只是简单机械地翻译操作系统的请求,更多的时候,驱动程序还有另外的很重要的作用,即绕过硬件本身的问题,常见的例如,临时加载一份较新版本的固件、针对某些版本的硬件禁用某些会导致问题的特性、分配内存的时候确保按边界对齐或只在前4GB分配以绕过DMA引擎寻址能力差的问题、通过增加延迟来解决硬件制造时对时序过于敏感的问题,等等。通过驱动程序绕过这些问题,能够让用户看不到(或者,至少在硬件负载不大的情况下看不到)问题的存在,并消除一小部分问题(例如原先随硬件发布的固件版本存在一些问题,而又没有提供更新固件的接口,新版本的驱动可能会在系统引导的过程中上传一份新版的固件到设备的临时存储)。

一般来说,驱动程序可以在逻辑上分为以下三个部分:

阅读全文…( 本文约 1078 字,阅读大致需要 3 分钟 )

FreeBSD CLang/LLVM项目终于进svn了

| Development | #CLang | #FreeBSD | #LLVM

如题。

不过这一次因为-CURRENT code slush的缘故,应该不会在 8.0-CURRENT 里面引入了(Ed在svn里面建立了另一个branch来做)。我想从各方面考虑,9.0-RELEASE里面正式砍掉gcc那一套东西应该不会是很困难的事情。传统上 FreeBSD 的代码用到了很多gcc的扩展,因此可能还需要一段时间。

阅读全文…( 本文约 197 字,阅读大致需要 1 分钟 )

绝对外行才会说和相信「绝对安全」这种说法

| Security

我今天话放这儿。

参与评论

实现安全的三种途径

| Security | #principals | #security

回国的时候和 康神 及端木吃饭的时候聊起过这个话题,这里整理出来。

实现安全有三种主要的手法:基于隐蔽的安全(或者,基于假象的安全)、基于默认配置的安全和基于设计的安全。

基于假象的安全很容易理解,也很容易实现。举一个简单的例子,在一片西瓜地前面戳一块牌子,说这块西瓜地里有一个西瓜里面注射了剧毒。

可以想象,由于信息的不对称(不知道是哪个西瓜有毒,或者根本就没有西瓜有毒),试图偷西瓜的人就会有所忌惮—-如果偷走的西瓜含有剧毒,那么这个西瓜是没办法吃的。然而,这样做有至少三个很致命的弱点:首先,为了实现最大化的利益,很可能瓜地的主人并不真的注射剧毒(或者反过来说,把偷瓜的人毒死并不是他的目的,他的目的是尽可能地保护瓜不被偷);其次,即使瓜地的主人真的只给一个西瓜注射了剧毒,那么如果有人偷了那个西瓜并且死掉,那么知道这件事的人就可以冲过来直接把所有的西瓜偷走;最后,一个以牙还牙的小偷,很可能会在牌子上留下这么一段话:现在有两个了……

简单地说,基于假象或隐蔽的安全,建立在"别人不知道其机制"的基础上。这样的做法有时能够在一定程度上延缓攻击,但并不能使攻击的成功率降低。将弱点隐蔽这种方法成本比较低,例如,把门钥匙放在门框上、将知名服务端口如ssh(tcp/22)转到不知名端口如tcp/12580上、port knocking技术,以及国内银行常用的Active X插件等等。然而,假象终归是假象,这些方法都不能真正改善系统的安全性。这类做法,充其量只能作为没有其他更好的办法时候的一种临时 workaround,而不能带来长久的安全。

第二种做法,也就是基于默认配置的安全,是一类非常常见的策略。这种做法通常与其他安全机制合并使用。简单地说,采用这种策略的系统,在其出厂的时候是没有暴露在外的弱点的,例如它可能只开启了非常少量,甚至完全不开启任何服务,随后,管理员可以根据需要进行配置来开放一些需要的服务。

阅读全文…( 本文约 1515 字,阅读大致需要 4 分钟 )