VERP邮件地址的一个安全问题
前一阵在为cn.freebsd.org的邮件列表做维护时发现,由于网易的邮件系统无法正确地(更具体地说,是以符合标准的方式)进行退信,导致一些无效地址仍然在不停地接收邮件,导致邮件系统的管理员必须手动处理这些退信产生的报告。后来在挖掘了mailman的文档之后,发现它支持djb的VERP退信。
相比处理符合标准的退信来说,VERP所需的编码量更少,并且对于不符合标准的退信也能够做很好的处理。从开销上说,由于VERP不需要parse整封邮件,因此也不会导致性能上的折损,甚至由于不需要进行任何解信操作,这种做法在性能上应该会优于标准的做法。
阅读全文…6.2-RELEASE的package传的差不多了
今天看到FreeBSD 6.2-RELEASE的packages已经传到i386的R了,不知道什么时候解冻呢?
参与评论国内互联网真是南北有别啊
之前没体会,现在发现,从学校到电信骨干再到小网通,要比从学校直接连小网通快许多。莫非学校是用的电信的网络?
参与评论RSA和Caesar的Python实现
写了两个小程序,分别实现了RSA和Caesar(rot13)算法。感觉自己写命令行程序UI的能力下降了:(
参与评论KSE成为内核选项
今天,John Birrell同学commit了一个不大不小的patchset—-将KSE变为内核选项。具体说来,在-CURRENT上,KSE不再是一个必选项了。
KSE是FreeBSD 5.0-CURRENT时的一个非常重要的技术探索,它是对由华盛顿大学THOMAS E. ANDERSON等人提出的调度器激活概念的一个实现。
对于M:N线程来说,调度器激活是一项十分先进的概念。在这个模型中,内核并不需要了解用户态线程的细节,而用户态线程也并不是由内核直接调度,相反,这些线程被绑定到一系列"调度实体"上,内核能够看到这些调度实体,并在上下文切换时激活用户态的线程调度器。由于减少了内核-用户态的上下文切换操作,因此理论上这一模型能够获得更好的性能。
阅读全文…调试进行时
昨天深夜被李逵同学的电话叫醒,被告知新上线的一个Python应用发生了一个回归问题——一个使用了C模块的程序经常自己退出。
由于这个C模块已经几年没有改过了,加上没有coredump文件,因此调试起来非常困难。另一方面,我们的代码也是一行没改,因此很难确定到底是什么出了问题。李逵坚持认为这个问题是由于Python的编译配置不当引起的。天地良心……编译配置就是之前的配置,不过我还是想办法重编了一套,后来听这家伙说,他没有选pymalloc。
阅读全文…机房啊,机房……
说说这周发生的事情。
这周初步解决了困扰很久的ssh密码扫描蠕虫的问题。习惯上我是上来就禁止口令登录的,所以这种扫描(据蜘蛛说,这是一种叫做scanssh的虫子,不过我手头没有蜜罐资源,所以也就没有捕捉样本)没什么用,不过这种虫子讨厌的地方在于它能够花费几个小时的时间去穷举你的口令,而且是不同的帐号,这会产生几百KB的日志。
阅读全文…有点不能忍了……
受不了公司某些部门了……刚开始准备大干一场,今天又得到一个噩耗 :(
参与评论根据协议栈特征判断操作系统
传统上判断操作系统是通过扫描进行的,例如,发一个SYN+FIN的包,看对方如何回应,由于各式各样的原因,包括性能考虑,或编程上的疏忽,这些包会留有一些特征。这类典型的应用是nmap和NetCraft。
这类方法有它的作用,对于尝试攻击的人来说,这些特征能够给他们相当多的信息,这些信息甚至足以让攻击者找到一击毙命的攻击方法(例如,发现那是一台没有打过补丁、没有防火墙的Windows)。然而,它也有一些不可避免的局限:
- 并不是所有地区的法律都允许网络扫描行为。除此之外,这种行为通常也是不受欢迎的,至少它不是一种友好的行为。(事实上,发生在互联网上的扫描行为几乎都不是友善的)
- 对于NAT后的服务器,它只能判断出NAT网关所用的操作系统,而无法判断其后的系统所用的操作系统。
- 事后的「反击」或「报复」性扫描往往于事无补,在第一击的时候遏制攻击,对于安全相当重要。
看来还是按操作系统封比较有效
之前一直有些头疼的ssh虫问题,很令人吃惊地找到了一个解决方法。在扫描感染IP的TCP特征之后,发现这些机器的共同特征——他们都用的是Linux。
很幸运地,我不使用Linux,FreeBSD附带的pf提供了一项非常有意思的强大能力(这项能力源于OpenBSD的pf),即按操作系统来控制访问。其它用法还包括例如,禁止没有打补丁的Windows访问,让不同用的操作系统访问得到不同的内容等等。
考虑到Linux如此容易感染ssh蠕虫,我决定采用下述pf策略:
block in quick proto tcp from any os “Linux” to any port ssh
阅读全文…