选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……
今天 强迫症 朱小瘦同学提到一个非常有意思的问题,一个32bit的无符号整数算术右移32个bit应该得多少?
我们知道算术右移一个bit相当于除2,所以一个32bit无符号整数除以 2^32,理论上,应该得0。
然而事实不是这样。测试显示在 x86 系统上,一个32bit无符号整数算术右移32个bit之后得到的是原数。例如下面这个测试程序:
#include <stdio.h>
int
main(void /* int argc, char **argv */)
{
unsigned int a = 0x5a5a5a5a;
a >>= 32;
printf("%x\n", a);
return 0;
}
不启用任何优化的话,编译出来的程序得到的结果是:
5a5a5a5a
更进一步,我们将上面的测试改写为:
#include <stdio.h>
int
main(void /* int argc, char **argv */)
{
unsigned int a = 0x5a5a5a5a;
int i;
for (i=0; i<33; i++)
printf("%x\n", a >> i);
return 0;
}
2011年6月8日是 Internet Society 倡导的世界 IPv6 日,许多著名的互联网公司都将在这一天测试全面开放 IPv6 访问;中国地区的 IPv6 日网站可以在 这里 找到。
我个人的网站其实从 2007 年 7 月就已经跑在 IPv6 上面了,不过来自 IPv6 网络的访客很少。希望这次活动能够让更多的人知道和了解 IPv6。
Read more...之前用的邮件系统是基于 postfix、Cyrus IMAPd、amavisd-new等软件在2006年搭建的,跑了5年多,作为不折腾会死星人,对这套系统一直有相当多的不满意,举例来说:
Cyrus IMAPd支持 foo+box@domain.tld,也就是如果foo用户的邮箱中存在’box’这个子目录时直接投递到那个子目录很有问题;
Cyrus IMAPd采用的是自己的邮箱格式。支持这种格式的只此一家;我虽然不是Maildir的fans,但Maildir是一种事实标准,而且处理起来工具也要多的多;
amavisd-new和postfix的集成原先是采取双MTA的方式进行的,这种做法会导致至少多一倍的磁盘I/O(好处是在系统过载的时候不影响进信),并且由于多了一个环节有可能引入更多的不确定性【1】;
当然其实更重要的还有:
为了便于备份而采用的 ZFS 快照和远程复制机制,以及,
原先的服务器和我的物理距离太远,为了访问速度必须要做迁移。
新的方案大致如下,有时间慢慢整理howto出来:
现在还差一个队列前会话期间反垃圾的策略服务。之前采用的是 postfix-gps,找了一圈没有找到一个让人感觉靠谱的,所以准备找时间自己拿 twisted 重新写一个然后开源放出来。
【1】这个说法可能是有争议的。我认为以milter方式集成的好处是对方看到的是超时而不是已经将邮件收下,因此出现问题的机会要少一些。
Read more...很久以前我曾经建议过别人使用足够长的一大串英文单词作为密码,现时这样做已经完全不能保障安全了。
Colin Percival最近在 一篇文章 中提到了这样的数据:使用价值 $10k 的 GPU 破解使用MD5的34位英文密码(例如"You will never guess this password")所需要的时间仅为两小时(如果使用专用的硬件,以$1M投资的ASIC可以在一秒之内完成破解)。如果密码长度不够长的话,采用了特殊符号的帮助也不大。足够复杂的8位密码,例如"6,uh3y[a"使用 $10k 的 GPU 破解只需10个小时。
因此,我认为现时应采取的密码策略应该是:
确保每个网站都使用不同的随机密码,这些密码的内容应包括大小写字母、数字__和__特殊符号,且密码不应少于12位。
确保每个网站都是用不同的随机密码尤其重要:因为你可能不知道哪个网站什么时候被人骇掉,即使其密码进行过hash处理,如果很短、不包括大小写字母/数字/特殊符号的,或者选用了不适当的hash算法(如MD5),仍然是会被穷举出来的。
我自己最近十年使用的密码生成器可以在 这里 访问。
Read more...以前一直没注意过这个问题,今天在邮件列表看到 Matthew Flemming 发的邮件才知道实际上 C 标准并不保证 sizeof(void *) == sizeof(int(*)(void))。不过,几乎所有的现代系统上这个等式都是成立的。
例外的情况是类似 x86 实模式这类分段的内存模型中,函数指针可能默认是个far pointer(不过话说,现在还有人为这样的硬件写C吗?);另外据说IA64上也不一样,不过没有办法证实或证伪。
Read more...这次休假前头一天晚上收到了 ISC 发来的安全公告 CVE-2011-1910。我起草完 FreeBSD 安全公告 FreeBSD-SA-11:02.bind.asc 之后就去休假了,这里补上这个漏洞的说明。
无论你是否使用 DNSsec,只要用 BIND 9.x 来做 DNS 缓存解析服务(而不仅仅做Authoritive DNS服务),就有可能受到这个漏洞的影响。而攻击的方法也相当简单,攻击者只要建立一个 DNS 域,令在回应域名不存在的同时发回一个大的 RRSIG RRset,即可触发 BIND 的某处断言令其退出。
由于目前坊间已经出现了针对这一问题的攻击,FreeBSD 安全团队在收到 ISC 安全公告之后立即发布了对应的安全公告和二进制更新。使用受支持的安全分支的用户可直接用 freebsd-update 获得更新,安装之后使用 /etc/rc.d/named restart 重启服务即可。
Read more...APC BE550G 是一种廉价的UPS,支持以 USB 线通知被保护的系统或查询状态。
在 FreeBSD 上可以用 apcupsd 来配合 USB 通知使用。
去年大河发生过一次停电事故,所以买了一个 UPS 来配合自己的机器;今天大河又来了一次大约90分钟的停电,算是完成了对 UPS 的完整测试。
UPSCABLE usb
UPSTYPE usb
DEVICE
POLLTIME 60
LOCKFILE /var/spool/lock
SCRIPTDIR /usr/local/etc/apcupsd
PWRFAILDIR /var/run
NOLOGINDIR /var/run
ONBATTERYDELAY 6
BATTERYLEVEL 8
MINUTES 3
TIMEOUT 0
ANNOY 300
ANNOYDELAY 60
NOLOGON disable
KILLDELAY 0
NETSERVER on
NISIP 127.0.0.1
NISPORT 3551
EVENTSFILE /var/log/apcupsd.events
EVENTSFILEMAX 1024
UPSCLASS standalone
UPSMODE disable
STATTIME 0
STATFILE /var/log/apcupsd.status
LOGSTATS off
DATATIME 0
FACILITY DAEMON
SENSITIVITY H
WAKEUP 60
LOWBATT 02
SELFTEST 336
上述设置中比较重要的:
其他一些数据:
最近忙得要死,今天看到 谷奥 的 消息 说 Google Analytics 可以抓访问时的速度数据了,于是部署了一下。
另外,十年以后突然跟你要大学专业课介绍的国家真的伤不起。
Read more...今天收到一封奇怪的钓鱼信,它声称来自 Domain Registration of America,准确地说出了我的名字和拥有的域名中的两个,并建议我立即把域名转移到他们那里。
开价是……一年$30。
用这么坑爹的价钱是想提醒我这是钓鱼邮件吗?
当然,这事其实还没完。我仔细看了一下这封信,发现后面的小字写的还是很详细的,或者说,人家只是一个proposal,姜太公钓鱼愿者上钩的意思。这个事情奇怪的地方在于,邮寄的成本并不太便宜,算上人工的话,如果是美国工人做这个事情的话,算上邮费,一封信怎么也得有$1才能邮寄到我这里;另一方面,减去域名注册的成本,两个域名续费一年的利润大概是$45,也就是说,需要至少1/45的人上当才能把成本打平。
把钓鱼信邮寄到硅谷是怎样的国际主义精神啊,不理解,谁能帮忙理解一下这种商业模式?
Read more...住在西海岸的同学可以在 West Coast and Alaska Tsunami Warning Center 这里找到相关的信息,以及对这次本州地震的海啸模拟。
从美国地震局网站上 看,余震仍然在继续中。
另外,今年的 AsiaBSDCon 仍会如期举行。
Read more...