delphij's Chaos

选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……

23 Oct 2006

看来还是按操作系统封比较有效

之前一直有些头疼的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

效果出乎意料地好,在完全禁止使用低版本的Linux内核的计算机访问ssh端口之后,蠕虫尝试已经完全被阻止了。

注意:被动的操作系统检查尽管通常是准确的,但是客户一端如果采用了自行订制过的协议栈,或使用FreeBSD或OpenBSD中pf的scrub,或者类似的TCP/IP封包规格化能力,这种检查也就不那么有效了。尽管如此,对于这类问题并不需要过分担心,因为有能力做这些事情的人,通常也不会感染蠕虫。


Archived: 8 Comments

makara | October 23, 2006 5:55 PM

太美妙了!

我也想用pf!

找到一本书叫《Building Firewall with OpenBSD and PF》,它和FreeBSD下有多大区别?

能否请你推荐些资料?

用pf是不是就没必要用ipf了?

mafa | October 23, 2006 7:30 PM

《Building Firewall with OpenBSD and PF》这本书很好,没记错的话好像有第2版的。区别就是默认没有流量控制,需要编译内核。

用了pf当然不能用ipf了。

老大,如果把ssh的端口改成一个未定义的端口,再加上禁止扫描不是也很好吗?

makara | October 23, 2006 11:01 PM

谢谢!

是第二版。就是说使用上没有区别了?

Xin LI | October 23, 2006 11:15 PM

如果把ssh的端口改成一个未定义

的端口,再加上禁止扫描不是也
很好吗?

不好。ssh端口改了以后很多程序也要跟着一起改,降低了兼容性,还有就是做安全很重要的一个原则——决不能把安全建立在别人不知道的基础上,换端口不过是给自己一些“安全”的假象。

antijp | October 24, 2006 7:49 AM

pf和ipf并不冲突,应该是可以同时使用的。但是有顺序的关系,这个是pfil所决定的。FreeBSD里面的pf会自己就把一个packet送出去,这样的话ipf就拿不到了(ipf如果在pf后面被加载的话)。对于输入的packet,则相反。

mafa | October 26, 2006 5:37 PM

谢谢老大和antijp给我指出错误!

busky | December 28, 2006 10:28 AM

linux歧视?

Xin LI | December 31, 2006 11:04 PM

我不认为陈述事实也可以称做“歧视”,因为这个社会需要有人讲真话,敢于讲真话,我也希望大家都能讲真话。