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