10/30/2009

Ubuntu 官方正式发布 Ubuntu 9.10

经过了漫长的等待,Ubuntu 官方在刚刚已经正式发布了被受期待的 Ubuntu 9.10 ( Karmic Koala ) !其实在这之前就可以在镜像服务器下载 Ubuntu 9.10 ( Karmic Koala ) 正式版的ISO镜像文件了,为了不影响 Ubuntu 9.10 正式版的ISO文件向各地镜像服务器分发的进度,OwnLinux 并没有公布下载链接。目前官方已经正式开放了 Ubuntu 9.10 正式版的ISO文件下载服务。 今天从世界各地涌入的巨大下载量也是对各个官方服务器一次严峻的考验。 官方的下载界面已经从 Ubuntu 9.10 RC 更改为 Ubuntu 9.10 ( Karmic Koala ) 正式版了:

ubuntu-910-final-released-1
Ubuntu 9.10 ( Karmic Koala ) 正式版的下载地址:
http://cn.releases.ubuntu.com/9.10/
http://tw.releases.ubuntu.com/9.10/
http://releases.ubuntu.com/releases/9.10/

Ubuntu 9.10 ( Karmic Koala ) 正式版ISO镜像文件MD5码列表
836440698456aa2936a4347b5485fdd6 *ubuntu-9.10-alternate-amd64.iso
3faa345d298deec3854e0e02410973dc *ubuntu-9.10-alternate-i386.iso
dc51c1d7e3e173dcab4e0b9ad2be2bbf *ubuntu-9.10-desktop-amd64.iso
d91659de6e945dbb96eb8970b2b4590a *ubuntu-9.10-desktop-armel+dove.img
297875d2a7531824a0fb08f241d33e85 *ubuntu-9.10-desktop-armel+imx51.img
8790491bfa9d00f283ed9dd2d77b3906 *ubuntu-9.10-desktop-i386.iso
ed6e77587b87fe0d92a2f21855869f00 *ubuntu-9.10-netbook-remix-i386.iso
14707e8847b9c9ba2dd1869fb5086e4f *ubuntu-9.10-server-amd64.iso
55618ad5f180692f9dac20cbff352634 *ubuntu-9.10-server-i386.iso
37a04db193b1a342f961f59aea2fada8 *wubi.exe

友情提示: alternate 为文字界面的安装版本, desktop 为包含 Live CD 的图形界面安装版本, server 为服务器版本, i386 为32位的系统版本, amd64 为64位的系统系统版本,请根据你自己的需要下载相应的版本。由于版本比较多,下载的时候不要下错版本了哟,做了又费带宽又费电又费精力的事就不好了:) 最后建议大家:使用P2P下载以减轻官方服务器的负担。

10/10/2009

更好地登录Google的服务

最近,当我们用https的方式来打开Google Docs或Google Groups时经常被重置,而用http打开却没有问题。
有不少人怀疑SSL加密技术已经被破解,但就目前的情况来说,对SSL进行窃听还需更多的投入。

为什么https被重置而http却能正常打开?我的猜测是,当浏览器向DNS发出查询请求时,DNS监控系统发现浏览器正在访问的是https的Google服务,于是就直接reset了。本文就此问题提供较为简单的解决方案。

Sent to you by 参考消息 via Google Reader:

via 可能 by Jason Ng on 10/9/09

本文仅用于技术交流,Google上有很多优秀的东西,如果只着眼于消灭异己,你失去了世界的大多数美丽。

最近,当我们用https的方式来打开Google DocsGoogle Groups时经常被重置,而用http打开却没有问题。有不少人怀疑SSL加密技术已经被破解,但就目前的情况来说,对SSL进行窃听还需更多的投入。

为什么https被重置而http却能正常打开?我的猜测是,当浏览器向DNS发出查询请求时,DNS监控系统发现浏览器正在访问的是https的Google服务,于是就直接reset了。本为就此问题提供较为简单的解决方案。

一、为什么不加密反而能访问?

1、Google Docs经常用来传播非法信息

Google Docs一直是不和谐信息的传播工具因为它提供了https的访问方式,信息加密传输,第三者无法简单地窃听。Twitter上经常流传着一些使用Google Docs来传播的非法文档。

前段时间网上流传着一份上海某大学的硕士论文,该论文揭示了非法软件FreeGate如何获取最新的代理列表,其中最为重要的一个渠道就是Google Docs,由于GDocs在中国大陆能被正常访问,FreeGate能实时更新DNS和代理列表,从而逃过封锁。FreeGate获取Google Docs里的文件信息同样使用https方式来访问。

2、新型的拦截手段

类似于Google Docs这样的,https无法访问、http方式却可以访问的屏蔽方式以往很少见。之所以采用这样的方式,原因有3:

(1)Google Docs是一个常用的服务,不能完全屏蔽

(2)Google有众多的IP,几乎不能完全屏蔽,如果完全屏蔽,则会影响Google的正常使用

(3)必须要屏蔽Google Docs里的非法信息

这3个原因推动了新的拦截手段的发展。根据猜测,这种手段是这样进行的:当客户端发出加密的DNS解析请求时,DNS监视端一旦发现这个请求是Google Docs的,立即发出一个重置信号。而对于一般的非加密DNS请求,DNS监视端则不工作,剩下的监视工作交由正常的审查系统来进行。

3、新型拦截手段的好处

(1)有效地阻止了Google Docs上非法信息的传播,又能让Google Docs正常使用

(2)较为根本地封杀了FreeGate等非法软件

(3)当用户放弃使用https方式而改用http方式来访问时,信息都是以明文传输,所有内容全部都进入到审查系统审查,非法信息又不能传播。

二、解决方法一:OpenDNS

既然https访问被重置是发生在向DNS发出请求的时候,一个能很容易就想到的解决方案是换一个不会审查DNS请求的DNS。OpenDNS是较为普遍的选择。使用方法很简单,将电脑的DNS设置为:

208.67.222.222

208.67.220.220

如果你需要经常切换不同的DNS,可以使用“8个提高windows效率的免费软件里介绍的NetSetman来进行DNS切换。

但是,OpenDNS是位于国外的DNS,连接速度有点慢,我们不妨考虑另一种解决方案。

三、解决方法二:自定义hosts

在hosts里添加Google Docs的解析IP直接绕过DNS查询,就能正常使用https的Google Docs了。

hosts文件的位置:

1、windows:C:\Windows\System32\drivers\etc\hosts

2、Linux:/etc/hosts

用记事本打开hosts文件,下面这些内容添加到hosts文件的顶部:

209.85.225.101 docs.google.com

74.125.127.100 writely.google.com

74.125.127.139 spreadsheets.google.com

保存hosts,重启浏览器后,https方式的Google Docs就能正常访问了。

万一Gmail也遭遇到Google Docs的情况怎么办?用同样的方法,在hosts文件里加入Gmail的IP即可,为方便使用,我将提供有https方式的Google服务及其的IP列表如下

209.85.147.109 pop.gmail.com

209.85.147.109 smtp.gmail.com

66.102.7.19 mail.google.com

209.85.225.101 docs.google.com

209.85.225.102 groups.google.com

74.125.127.139 spreadsheets.google.com

74.125.127.100 services.google.com

74.125.127.100 writely.google.com

74.125.127.100 sites.google.com

209.85.225.104 reader.google.com

74.125.127.101 calendar.google.com

四:解决方法三:IPv6

目前的审查技术对IPv6是失效的,Google很早就支持IPv6访问,要使用IPv6版本的Google,首先要在电脑里安装IPv6协议,如下图:

安装完后重启电脑,接着用记事本打开hosts文件,在里面添加Google的IPv6 IP,比如Google Docs的hosts:

2001:4860:c004::68 docs.google.com

Google的IPv6地址是唯一的,举一反三,你可以添加更多的Google服务到hosts里去,比如:

2001:4860:c004::68 reader.google.com

2001:4860:c004::68 ipv6.google.com

其它的以此类推。

10/04/2009

Apache系统中.htaccess文件的应用

Apache系统中的.htaccess文件(或者”分布式配置文件”提供了针对目录改变配置的方法, 即,在一个特定的文档目录中放置一个包含一个或多个指令的文件, 以作用于此目录及其所有子目录。作为用户,所能使用的命令受到限制。管理员可以通过Apache的AllowOverride指令来设置。子目录中的指令 会覆盖更高级目录或者主服务器配置文件中的指令。.htaccess必须以ASCII模式上传,最好将其权限设置为644。
创建 .htaccess 文件时可能给你带来一些问题。写入内容到这个文件是非常容易的,你只需输入合适的代码到文本编辑器中(如记事本)。但是你可能在保存文件的时候碰到问题。 因为 .htaccess 是一个非常奇怪的文件名(这个文件没有名字而只有一个8字符的扩展名)。这个可能在特定的系统中不能被接受(如 Windows 95)。在绝大多数的操作系统中,你可以尝试在保存文件的时候输入以下文件名:”.htaccess”(包括引号)。如果这不起作用,你可能需要先把它命 名为别的名字(如 htaccess.txt),然后上传到服务器。上传之后,在 FTP 工具中重命名它。
尽管通过 .htaccess 可以做很多事情,但是这篇日志主要关注的是如何提高 WordPress 的安全性和可用性。
  1. 保护 .htaccess 自身的安全性。阻止用户通过读取和写入 .htaceess 来更改安全性的设置。

    order allow,deny
    deny from all
  2. 隐藏服务器的数字签名。隐藏服务器的数字签名之后,入侵者将很难找到有机会找到安全漏洞,因为他们不知道背后的服务器是什么。
    ServerSignature Off
  3. 限制上传文件的大小。这个能够帮助阻止 DoS 攻击(用户通过上传巨大的文件来冲垮服务器)并且能够节约带宽。
    LimitRequestBody 10240000
    # limit file uploads to 10mb
  4. 停止 mod_security 过滤器。这是一个可选的设置并且要小心处理。这些指令告诉服务器不要使用 mod_security 过滤器,因为 mod_security 过滤器不允许用户发表含有这些单词 “curl”,“lynx” 或者 “wget” 等等单词的文章。这个看起来有点琐碎,但是这个让一些站点头痛,因为这些单词几乎那些站点每天都会用到。
    SecFilterInheritance Off
  5. 保护 wp-config.php 文件。我们可以通过 .htaccess 文件阻止用户读取和写入 WordPress 的主配置文件。这个指令假设 WordPress 是安装在站带你的根目录。

    order allow,deny
    deny from all
  6. 指定自定义错误文档。这条指令做的更多是站点的可用性而不是安全性。它们指定了哪个页面将被显示,一旦服务器错误,如页面找不到(代码 404) 禁止访问(代码 403)等等。
    ErrorDocument 404 /notfound.php
    ErrorDocument 403 /forbidden.php
    ErrorDocument 500 /error.php
  7. 禁止浏览目录。这将阻止服务器在没有找到 index 文件(如 index.html,index.php 等等)的情况下显示文件夹目录内容。这能阻止用户看到文件夹的内容使得更难对网站发动攻击。
    # disable directory browsing
    Options All -Indexes
  8. 防止图片盗链。这个能够阻止其他网站盗链本网站的图片,迫使他们 要么指向整个页面,或者其他存储图像的地方。这个保存了宝贵的带宽并且能够增加流量(虽然只是一点点)。下面的代码将会显示 stealingisbad.gif 这张图片,当有人试着热链到到你的网站来显示图片
    #disable hotlinking of images
    RewriteEngine on
    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain.com/.*$ [NC]
    #RewriteRule \.(gif|jpg|png)$ http://www.yourdomain.com/stealingisbad.gif [R,L]
  9. 在你的站点给每个 URL 设置符合规定的或者“标准”的链接。这能够帮助提高网站的可用性和提高网站在搜索引擎中的排名。总之,它会把来自 http://yourdomain.com 的请求重定向到 http://www.yourdomain.com/.
    # set the canonical url
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^yourdomain\.com$ [NC]
    RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [R=301,L]
  10. 保护博客免受垃圾留言的侵扰(和普通方式提交的垃圾留言)。最后的那条指令将会阻止用户直接从其他网站的留言提交框发表留言,虽然这不是一个包罗 万象的反垃圾留言的方法,但是它确实能够帮助你。
    # protect from spam comments
    RewriteEngine On
    RewriteCond %{REQUEST_METHOD} POST
    RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
    RewriteCond %{HTTP_REFERER} !.*yourdomain.com.* [OR]
    RewriteCond %{HTTP_USER_AGENT} ^$
    RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
加入这些指令之后,你应该添加 WordPress 用于管理永久链接的代码。还有很多的指令和很多的方法可以提高网站的可用性和安全性,不过这里所列出的应该占了日常所需的大部分了。当你上传该文件到服务 器上之后,你应该一遍有一遍的测试直到你觉得所有的东西都工作正常,再测试一遍。检查下是否受保护的文件还能不能被访问,你依旧允许访问的文件和文件夹能 否还能访问。常规的经验可能是棘手的事情,它们可能导致看似随机的问题,所以在你发布你的网站之前务必完全的测试你的网站。
原文地址:http://fairyfish.net/2007/08/01/using-htaccess-to-secure-and- improve-wordpress/
关于正则表达式的学习http://www.javey.org/class/WebDev/Regex/30Minutes,Regex.html
本文来自: http://www.javey.org/archives/40

7/31/2009

让Firefox更安全,禁用RC4加密

现在网络安全越来越受人重视了,建议大家在Firefox中用更高强度的SSL加密算法AES

默认状态下,HTTPS链接会使用128位证书(如果不提供128位,则使用256位),但是如果我们觉得128位证书不够安全,那就需要强迫站点使用256位加密。打开Firefox浏览器,在地址栏中键入about:config,点击"保证小心",然后在页面顶端的过滤器中输入rc4,将过滤到的结果的value值为true的全部变为false(双击每个结果就可以改变),效果如下图:


以后新打开的加密页面就不再使用RC4加密了,如果不行请尝试清空Firefox的缓存。

7/25/2009

CNNIC称已升级DNS系统 更改信息15分钟可生效

7月23日,记者从CNNIC获悉,该中心7月22日完成原有DNS系统升级,今后CNNIC运维的中英文域名解析生效时间将由之前的4个小时缩短至15分钟左右.
据了解,CNNIC此次升级的包括中央主节点在内的全球9个域名顶级节点的域名解析(DNS)系统,涉及由CNNIC运维的中英文域名(英文域名包括 CN英文顶级域、6个类别域名和34个行政区域域名,中文域名包括.CN、.中国、.公司、.网络四个顶级域),升级之后,解析生效时间将由之前的4个小 时,缩短至15分钟左右.

另据部分域名注册商透露,CNNIC还将于7月25日10:00至7月26日4:00再次进行系统维护,届时将停止提供CN域名注册、中文域名注册、通用网址注册服务和注册商对帐系统,其它业务不受影响.

文/DoNews

7/22/2009

Fwd: 今天GOOGLE的登录按钮您看见了么?

今天早上一打开GOOGLE首页
习惯性的向右上角一看...
登录按钮给我放哪啦?!
只有一个个性化首页了....
https://twitter.com/hiid/statuses/2752811305
RT @kaifulee: 当然不是,Google.com由美国团队运营,遵守美国法律,Google.cn由中国团队运营,遵守中国法律。欢迎用户选择。如果你对跳转或.cn不满,请理解:如果没有.cn,我们就无法在中国合法运营,那么.com服务可能更不稳定

7/06/2009

Last-Modified ETag

1) 什么是”Last-Modified”?
  在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的 属性标记此文件在服务期端最后被修改的时间,格式类似这样:
Last-Modified: Fri, 12 May 2006 18:53:33 GMT
客户端第二次请求此URL时,根据 HTTP 协议的规定,浏览器会向服务器传送 If-Modified-Since 报头,询问该时间之后文件是否有被修改过:
If-Modified-Since: Fri, 12 May 2006 18:53:33 GMT
如果服务器端的资源没有变化,则自动返回 HTTP 304 (Not Changed.)状态码,内容为空,这样就节省了传输数据量。当服务器端代码发生改变或者重启服务器时,则重新发出资源,返回和第一次请求时类似。从而 保证不向客户端重复发出资源,也保证当服务器有变化时,客户端能够得到最新的资源。
2) 什么是”Etag”?
   HTTP 协议规格说明定义ETag为“被请求变量的实体值” (参见 —— 章节 14.19)。 另一种说法是,ETag是一个可以与Web资源关联的记号(token)。典型的Web资源可以一个Web页,但也可能是JSON或XML文档。服务器单 独负责判断记号是什么及其含义,并在HTTP响应头中将其传送到客户端,以下是服务器端返回的格式:
ETag: "50b1c1d4f775c61:df3"
客户端的查询更新格式是这样的:
If-None-Match: W/"50b1c1d4f775c61:df3"
如果ETag没改变,则返回状态304然后不返回,这也和Last-Modified一样。本人测试Etag主要在断点下载时比较有用。
Last-Modified和Etags如何帮助提高性能?
   聪明的开发者会把Last-Modified 和ETags请求的http报头一起使用,这样可利用客户端(例如浏览器)的缓存。因为服务器首先产生 Last-Modified/Etag标记,服务器可在稍后使用它来判断页面是否已经被修改。本质上,客户端通过将该记号传回服务器要求服务器验证其(客 户端)缓存。
过程如下:
  1. 客户端请求一个页面(A)。
  2. 服务器返回页面A,并在给A加上一个Last-Modified/ETag。
  3. 客户端展现该页面,并将页面连同Last-Modified/ETag一起缓存。
  4. 客户再次请求页面A,并将上次请求时服务器返回的Last-Modified/ETag一起传递给服务器。
  5. 服务器检查该Last-Modified或ETag,并判断出该页面自上次客户端请求之后还未被修改,直接返回响应304和一个空的响应 体。

------------------------------
我们都知道,HTTP/1.1中有一个Etag,用来判断请求的文件是否被修改。
为什么要使用Etag呢?Etag主要为了解决Last-Modified无法解决的一些问题
1、一些文件也许会周期性的更改,但是他的内容并不改变(仅仅改变的修改时间),这个时候我们并不希望客户端认为这个文件被修改了,而重新GET;
2、某些文件修改非常频繁,比如在秒以下的时间内进行修改,(比方说1s内修改了N次),If-Modified-Since能检查到的粒度是s级的,这 种修改无法判断(或者说UNIX记录MTIME只能精确到秒)
3、某些服务器不能精确的得到文件的最后修改时间;

为此,HTTP/1.1引入了Etag(Entity Tags).Etag仅仅是一个和文件相关的标记,可以是一个版本标记,比如说v1.0.0或者说"2e681a-6-5d044840"这么一串看起来 很神秘的编码。但是HTTP/1.1 标准并没有规定Etag的内容是什么或者说要怎么实现,唯一规定的是Etag需要放在""内。

Etag由服务器端生成,客户端通过If-Match或者说If-None-Match这个条件判断请求来验证资源是否修改。我们常见的是使用If- None-Match.请求一个文件的流程可能如下:
====第一次请求===
1.客户端发起HTTP GET请求一个文件;
2.服务器处理请求,返回文件内容和一堆Header,当然包括Etag(例如"2e681a-6-5d044840")(假设服务器支持Etag生成和 已经开启了Etag). 状态码200

====第二次请求===
1.客户端发起HTTP GET请求一个文件,注意这个时候客户端同时发送一个If-None-Match头,这个头的内容就是我们第一次请求时服务器返回的 Etag:2e681a-6-5d044840
2.服务器判断发送过来的Etag和计算出来的Etag匹配,因此If-None-Match为False,不返回200,返回304,客户端继续使用本 地缓存;

流程很简单,问题是,如果服务器又设置了Cache-Control:max-age和Expires呢,怎么办?
答案是同时使用,也就是说在完全匹配If-Modified-Since和If-None-Match即检查完修改时间和Etag之后,服务器才能返回 304.(不要陷入到底使用谁的问题怪圈)

我们来看Apache中的Etag实现。
1.Apache首先判断是不是弱Etag,这个留在下面讲。如果不是,进入第二种情况:

强Etag根据配置文件中的配置来设置Etag值,默认的Apache的FileEtag设置为:
FileEtag INode Mtime Size
也就是根据这三个属性来生成Etag值,他们之间通过一些算法来实现,并输出成hex的格式,相邻属性之间用-分隔,比如:
Etag "2e681a-6-5d044840"
这里面的三个段,分别代表了INode,MTime,Size根据算法算出的值的Hex格式,(如果你在这里看到了非Hex里面的字符(也就是0-f), 那你可能看见神了:))

当然,我们可以改变Apache的FileEtag设置,比如设置成FileEtag Size,那么得到的Etag可能为:
Etag "6"
总之,设置了几个段,Etag值就有几个段。(不要误以为Etag就是固定的3段式)

说明
这里说的都是Apache 2.2里面的Etag实现,因为HTTP/1.1并没有规定Etag必须是什么样的实现或者格式,因此,你也可以修改或者完全编写自己的算法得到 Etag,比如 "2e681a65d044840",客户端会记住并缓存下这个Etag(Windows里面保存在哪里,我还没找到:(), 下次访问的时候直接拿这个值去和服务器生成的Etag对比。

注意
不管怎么样的算法,在服务器端都要进行计算,计算就有开销,会带来性能损失。因此为了榨干这一点点性能,不少网站完全把Etag禁用了(比如 Yahoo!),这其实不符合HTTP/1.1的规定,因为HTTP/1.1总是鼓励服务器尽可能的开启Etag。

弱校验(弱Etag)
重新考虑前面提到的3个问题:
问题1、一些文件也许会周期性的更改,但是他的内容并不改变(仅仅改变的修改时间),这个时候我们并不希望客户端认为 这个文件被修改了,而重新GET;

解决办法:如果使用强Etag,每次得会要求重新GET页面,如果使用Etag,比方说设置成FileEtag Size等,就可以忽略MTime造成的Last-Modified时间修改从而影响了If-Modified-Since(IMS)这个校验了。这点和 弱Etag无关。

问题2、某些文件修改非常频繁,比如在秒以下的时间内进行修改,(比方说1s内修改了N次),If- Modified-Since能检查到的粒度是s级的,这种修改无法判断(或者说UNIX记录MTIME只能精确到秒)

解决办法:如果是这种情况,Apache会自动判断请求时间和修改时间之间的差值,如果小于1s,Apache会认为 这个文件在这1秒内可能会再次被修改,因此生成一个弱Etag(Weak Etag),这个Etag仅仅基于MTime来生成,因此MTime只能精确到s,所以1s内生成的Etag总是一样,这样就避免了使用强Etag造成的 1s内频繁的刷新Cache的情况。(貌似不用Etag,仅仅使用Last-Modified就可以解决,但是这针对的仅仅是修改超级频繁的情况,很多文 件可能同时也使用强Etag验证)。弱Etag以W/开始,比如:W/"2e681a"

问题3、某些服务器不能精确的得到文件的最后修改时间;

解决办法:生成Etag,因为Etag可以综合Inode,MTime和Size,可以避免这个问题