如何防止黑客入侵[1]:避免使用高权限用户

文章目录

★基本概念扫盲
★反面教材
★危害性
★你该如何做?
★可能的麻烦

  为啥俺把这个话题列在头一条?——因为这是个非常普遍、且远远没有得到重视的问题。根据俺的经验,如果你能够养成好习惯,【不】使用高权限用户(尤其是管理员)进行日常操作,就可以大大降低被黑的概率。下面,俺就来具体介绍一下。

★基本概念扫盲

  考虑到本文是面向外行人士,先进行一下名词解释。

◇用户权限

  所谓的“用户权限”,通俗地说,就是某个用户的权力有多大。权力越大,能干的事情越多。

◇用户组

  用户组,顾名思义,就是一组用户的集合。
  在主流的操作系统中,“用户权限”通常是和“用户组”挂钩滴。针对不同的用户组,分配了不同的权限。
  为了让用户省事儿,Windows 系统内置了若干用户组(比如:Users、Power Users、Guests、等)。这些内置的用户组,事先已经预定义好若干用户权限。

◇高权限用户

  本文提及的【高权限用户】,主要是指 Windows 系统中 Administrators 组的用户或 Linux/Unix 系统中 root 组的用户。
  另外,顺便消除一个误解。很多菜鸟以为:Windows 系统中,只有用户名为“Administrator”的用户才具有管理员权限。其实捏,任何一个用户,即使用户名不叫“Administrator”,只要是属于“Administrators 组”,也同样具有管理员权限。

★反面教材

  菜鸟的例子就不提了,光说说俺接触过的很多程序员吧。这帮家伙在使用 Linux/Unix 系统进行开发时,都晓得应该用普通用户的帐号进行操作;当需要做某些高级权限的操作,再切换到管理员帐号(root 帐号)。但即便是这些开发人员,在自己的 Windows 系统中,却喜欢用管理员(Administrator)进行日常操作,实在是很讽刺。
  如果连 IT 专业的开发人员都这样,那不太懂技术的菜鸟,就可想而知了。

★危害性

  如果你平时总是用管理员权限登录到系统并进行日常工作,那就意味着你所运行的每一个程序,同时也具有了管理员权限。要知道,管理员权限的权力是非常大滴——几乎可以干任何事情。
  假设你有上述【坏】习惯。某天,你从网上下载了一个软件,且软件已经感染了病毒。那么,当你运行这个软件时,这个病毒就会被激活。更要命的是,它也同样具有【管理员权限】。也就是说,病毒获得了与杀毒软件平起平坐的地位。假如这个病毒的作者水平再高一些,甚至可以骗过杀毒软件或者直接把杀毒软件干掉。
  除了病毒,木马也是一样。假设你上网的时候,一不留神访问了某个挂马的网站。一旦木马被激活,也同样是以【管理员权限】运行,危害同样也巨大。

★你该如何做?

  考虑到 Windows 系统的用户占绝大多数,俺就光拿 Windows 系统来说事儿。希望 Linux 及 Mac OS 的 fans 不要见怪哦。
  为了尽量少用高权限用户。你最好刚装好系统之后,单独创建一个非管理员用户。

不见图、请翻墙

  你可以让该用户仅仅属于“Power Users 组”,如下图:

不见图、请翻墙

  如果想更安全的话,可以只加入“Users 组”,今后,就主要通过这个用户进行日常的操作。如下图:

不见图、请翻墙

  考虑到有些同学不了解这两个用户组,在权限方面与管理员有啥区别。俺简单列举一下。

◇“Power Users组”与“Administrators 组”的差别

  相对于“Administrators 组”,“Power Users 组”缺少了如下几项权限(俺只列主要的):
\1. 不能添加、删除、禁用系统中的其它用户。
\2. 不能修改其它用户的属性(包括口令、所属的用户组、等)
\3. 不能安装/卸载硬件驱动程序。
\4. 不能安装/卸载某些应用软件。
\5. 不能查看系统的安全日志。

◇“Users 组”与“Administrators 组”的差别

  “Users 组”的权限比“Power Users 组”更小。除了“Power Users 组”做不到的事情,“Users 组”还【缺少】如下权限(俺只列主要的):
\1. 不能修改系统时间。
\2. 不能修改某些系统目录(包括:系统盘的 \WINDOWS 目录、系统盘的 \WINDOWS\SYSTEM32 目录、系统盘的 \Program Files 目录)。
\3. 不能启动/停止某些系统服务。
\4. 不能修改注册表 HKEY_LOCAL_MECHINE 下的所有键值。

  从上述对照,明显可知,“Users 组”的权限更小,使用起来更安全。比如说,即使你运行了一个带毒的程序,由于病毒和你一样,也仅有“Users 组”的权限。所以病毒也就无法修改/破坏重要的系统目录,掀不起太大风浪。

★可能的麻烦

  通常来说,越安全的措施,往往也意味着越麻烦。但是这些麻烦,都有相应的解决之道。

◇切换用户的麻烦

  当你以普通用户身份登录后,可能由于某些原因,需要用管理员用户干点事情。但是你(可能是开了很多程序)又不想把当前用户注销。
  俺的建议是:使用【快速用户切换】(洋文叫:Fast User Switching)功能来切换用户。此功能从 Windows XP 开始提供。简单地说,就是可以让几个不同的用户同时登录同一个系统,平滑地切换。有了此功能,这个麻烦就不明显啦。

  如果你非常不幸,还在使用比较古老的 Windows 2000 系统;或者你使用的是 Windows 的服务版本(比如 Windows Server 2003)。在这些版本的 Windows 系统中,默认是没有“快速用户切换”功能滴。这可咋办捏?
  俺的建议是:
  可以在【不】注销当前用户的情况下,以另一个用户(比如管理员)启动某个需要更高权限的程序。为了说清楚,举例如下:
  假设你当前处于一个普通用户的环境,但是想另外启动一个具有管理员权限的程序,比如说命令行程序(cmd.exe)。
\1. 你先创建一个指向 cmd.exe 的快捷方式。(该咋样创建快捷方式,就不用俺来教了吧?)
\2. 用鼠标选中该快捷方式,在快捷菜单(右键菜单)中,选择“属性”菜单项。出现如下对话框。

不见图、请翻墙

\3. 在该对话框中,点“高级”按钮。出现如下对话框。把“以其他用户身份运行”选项打勾,即可。至此,快捷方式创建完毕。

不见图、请翻墙

\4. 以后,如果你想在普通用户环境中,以管理员身份执行命令行,只需点击该快捷方式,就会弹出如下对话框。然后在该对话框中输入管理员的用户名和口令,就能以管理员的身份,把该命令行启动起来。

不见图、请翻墙

◇安装软件/驱动的麻烦

  安装驱动总是需要【管理员权限】才行;另外,很多软件(比如 MS Office)在安装时,也要求用【管理员权限】进行。
  俺的建议是:
  在刚装好系统之后,先用管理员用户把上述这些软件/驱动程序都搞好。然后,就无需再用管理员用户了。毕竟你经常使用的软件相对固定,不可能三天两头安装软件或驱动(除非你是软/硬件发烧友)。即便偶尔需要重新装个软件或驱动,也可以用上述介绍的方式,【临时】切换到管理员权限。

◇修改系统时间的麻烦

  如果你平时用的是“Users 组”而不是“Power Users 组”,那你连修改系统时间的权限也没有。
  俺的建议是:
  启用 Windows 系统自带的时间同步服务,让它帮你自动同步系统时间。

  除了上述这几点,如果还有谁碰到其它的麻烦,也欢迎来信跟俺交流。俺会补充到本文中。本系列的下一个帖子,将会介绍攻击者是如何搞定你的口令/密码

如何防止黑客入侵[2]:攻击者如何搞定你的口令/密码?

文章目录

★使用密码的场合(密码的类型)
★攻击者如何通过技术手段搞定的你的密码?
★攻击者如何通过【非技术】手段搞定的你的密码?
★结尾

  在上文,俺强调了高权限用户的潜在风险。接下来,咱要介绍一下,和口令相关的安全话题。毕竟在大伙儿的日常生活中,口令的使用是必不可少滴。
  考虑到和口令相关的内容较多,俺分两部分来说:今天首先揭露攻击者的种种伎俩;下一帖再详述应对的措施。

★使用密码的场合(密码的类型)

  为了便于后面的叙述,俺有必要先总结一下,使用口令的几种场合。
  针对这几种不同的场合,攻击者会采取不同的攻击手法;因此,大伙儿也要采取针对性的防范手法。

◇操作系统用户的口令

  这种场合应该好理解。目前主流的操作系统都具有口令验证的用户登录机制。

◇各种网络应用的口令

  随着网络(尤其是 Web)的普及,这种场合越来越多。比如:电子邮件(Email)、即时通讯(IM)、论坛(BBS)、上网炒股、等,都需要有用户口令认证。

◇各种本地应用程序的口令

  此种场合可能不如网络应用的口令那么常见。比如:用口令加密的压缩文件、用口令加密的 Office 文档、PGP 密钥的口令、Outlook 设置的启动口令……

◇其它

  除了上述3种类型,其它那些比较少见、杂七杂八的,统统归为其它。比如:BIOS 的开机口令。

★攻击者如何通过技术手段搞定的你的密码?

  前面列举了密码的不同使用场合。接着咱要介绍一下:攻击者会利用哪些技术手段,攻破你的密码。

◇木马盗取

  如果你的电脑已经被攻击者安装了木马,那你的一举一动有可能都会被监视。在这种情况下,你在这台电脑上输入的任何密码,都将会被攻击者获取。所以,这种情况是很危险滴——不管是哪种类型的密码,都可能被盗。
  至于如何防止自己的计算机被植入木马,【不是】本帖的重点。俺会在本系列后续的帖子中专门介绍木马的防范。

◇弱密码猜解

  所谓的“弱密码猜解”,就是说:如果你的密码比较弱,攻击者就容易猜出来。这种攻击手法,对于操作系统用户口令、网络应用口令、本地应用口令,统统适用。
  而且攻击者在盗取口令的时候,通常会先尝试进行弱口令猜测。为啥捏?因为大部分用户都不太具有安全意识,口令都会比较简单(比较弱)。并且,根据【二八原理】,绝大多数的傻瓜用户会使用极少数的弱口令。所以,攻击者先把最流行的那些个弱口令挨个试验一遍,没准就已经成功了。
  为了让大伙明白弱口令的严重程度,来看看2009年底的“一个案例”。
  话说国外一个小有名气的交友网站(RockYou)被黑客攻破。里面大约3260万用户数据被盗。更加杯具的是,RockYou 采用明文方式存储用户的口令。因此,这3260万用户的口令也统统暴露鸟。后来有好事者把被盗的用户口令拿来分析一番。结果发现,有相当多的用户在使用一些极其弱智的口令。
  用的最多的 TOP 10 分别是:

\1. 123456
\2. 12345
\3. 123456789
\4. password
\5. iloveyou
\6. princess
\7. rockyou
\8. 1234567
\9. 12345678
\10. abc123

  据说名列第一的口令(123456)有30万人使用,真是不看不知道,一看吓一跳啊!

◇暴力破解

  除了对弱密码进行猜解,攻击者还可以通过穷举的的方式,破解中等强度的密码。所谓的穷举法,就是把所有可能的字母/数字的组合都试验一遍,直到找到正确的密码。
  现在 CPU 的计算能力日新月异,尤其是多核 CPU/GPU 普及之后,暴力破解的效果会越来越好。你的密码必须【很强】,才能彻底消除暴力的风险。
  由于这种攻击手法,需要进行成千上万次的试错,所以比较适合针对本地应用的口令(比如破解加密的压缩文件),而不太适合对网络应用进行在线口令破解。
  在下一个帖子,俺会介绍《如何构造安全的口令/密码》。

◇网络传输截获(嗅探)

  在这种方式下,攻击者会通过【嗅探】的方式,分析你的上网数据。如果你在上网过程中,存在明文传输的口令,就会被截获。
  非安全专业的网友,可能不太明白什么是“嗅探”,俺来稍微解释一下。攻击者会利用某些嗅探软件,收集网络上传输的所有数据。这个过程好比电话窃听。嗅探软件类似于窃听器;你的上网数据类似于电话的通话内容。
  这几年,随着现在无线网络(WiFi)的普及,网络嗅探的风险大大增加,列位看官切不可掉以轻心哦。

◇客户端截获

  所谓“客户端截获”,通常是针对网络应用的口令而言。举几个例子。
  举例1:
  很多网友上网时,为了免去输入口令的麻烦,会让浏览器帮忙记住口令。通常浏览器会把这些口令保存在某个文件中(可能以明文方式,也可能以密文方式)。如果某天你的电脑中了木马,那么木马程序有可能会盗走这个保存口令的文件。然后攻击者就可以通过分析该文件,破解出你保存过的所有网络应用的口令。
  举例2:
  如果你是软件公司的开发人员,多半你会使用某种源代码版本管理工具(比如 SVN、CVS、等)。为了免去每次操作时输入口令的麻烦。通常开发人员会让这些客户端软件记住用户名和口令。如果哪天你中了木马,或者笔记本电脑被盗,那么攻击者同样可以破解你保存下来的口令,进而用你的身份盗取源代码。

◇服务端截获

  和“客户端截获”方式相对的,还有“服务端截获”。具体是啥意思捏?俺来解释一下。
  凡是利用口令进行验证的软件系统,都需要存储和口令相关的信息。否则的话,软件系统就无法验证用户输入的口令。如果攻击者能够拿到这些口令的关联信息,那他/她就有可能分析出口令是啥。
  (如果你不是搞 IT 专业滴,下面这段可能看不太明白。不过没关系,不影响你理解后续章节)
  简而言之,通常有三种方式来存储口令的关联信息:1、存储口令的明文;2、存储口令经过加密后的密文;3、存储口令的散列值。
  第一种方式是最土鳖的,稍微先进一些的系统,都不这么干了。后面两种方式,虽然看不到明文,但是攻击者还是有可能通过某种技术手段,反推出口令的明文。具体细节,本文就不再多说了。
  那攻击者如何获得存储在软件系统的口令关联信息捏?其实前面提到的 RockYou 网站的杯具,就是一个很好的例子。俺再举另一个例子。
  比如说:某个 Linux/Unix 服务器存在安全漏洞,攻击者利用此漏洞搞到了 /etc/shadow 文件。那么攻击者就可以采用上述提到的暴力破解的招数,攻破该服务器上所有强度较弱的口令。

★攻击者如何通过【非技术】手段搞定的你的密码?

  说完了技术手段,自然就得再说说【非】技术手段。所谓的非技术手法,也就是社会工程学手法。用于盗取密码的社会工程学手法,大概有如下几种。

◇偷窥

  偷窥是最简单的一种社会工程学攻击手法。虽然简单,但是有效。比如很多盗取银行卡的家伙,就是偷窥的手法,得到被害人的银行卡密码。

◇网络钓鱼(phishing)

  另外一个骗取口令的方式,就是通过网络钓鱼。比如某些攻击者,会伪造一个银行的网站。其界面和真实的网站一模一样。然后通过某种方式(比如:虚假链接、欺诈邮件、DNS 欺骗 …),引诱你到这个网站上。由于假网站和真网站的界面很像,你可能信以为真,然后在假网站中输入你的用户名和密码。
  有些高明的钓鱼网站,会采用类似Web代理的技巧:把你的所有输入操作,转而提交给真网站;然后把真网站输出的界面,再转回给受害者看。这样的话,受害者就跟在真实网站进行插作,没啥区别,不易看出破绽。
  更多关于网络钓鱼的介绍,可以参见维基百科的“这个页面”。

◇分析

  如果攻击者对你比较了解,那么他有可能通过深入的分析,攻破你的口令防护。
  有木有觉得很神奇?很匪夷所思?其实这种招数很常见,且不算太难。俺来举个例子。
  相信很多网友都用过电子邮箱的找回口令功能。当你口令遗忘之后,可以通过回答事先预设的问题,来找回口令。很多不太专业的用户,预设的问题都很简单(比如:你的手机号是多少?比如:你的生日是哪天?)。对于这类过于简单的问题,攻击者可以很容易地找到答案,从而窃取到你的邮箱口令。

◇欺骗

  最近几年,通过电话诈骗,骗取银行卡密码的案例越来越多。这种作案手法,就属于社会工程学中,“欺骗”的范畴。其实在IT领域,某些黑客也会利用这种手法来获取口令。

★结尾

  介绍到这里,列位看官对黑客盗取口令的手法,应该有一个初步的认识了。本系列的下一个帖子,具体介绍如何构造安全的口令/密码。

如何防止黑客入侵[3]:如何构造安全的口令/密码

文章目录

★【不要】共用口令/密码
★密码的【分级机制】
★一些反面教材——【脆弱】密码的举例
★如何构造【复杂】密码?
★结尾

  在上文,俺介绍了攻击者,是如何攻破口令这道关口的。为了避免口令被轻易地破解,有必要了解构造安全密码的技巧。所以,今天就来介绍此话题。

★【不要】共用口令/密码

  俺发现有相当多的同学喜欢靠一个口令包打天下。这是相当相当危险的事情。同一个口令,用的场合越多,则泄密的危险越大。而一旦泄露,你的安全防线就会全面崩溃。
  所以,今天要讲的头一个要点,就是绝对不要在所有(大多数)场合,使用同一个口令。

★密码的【分级机制】

  由于共用口令存在很大的风险,比较稳妥的办法就是——每一个场合仅使用一个密码。但是很多人会抱怨说:这样会很繁琐,增加了很多的麻烦。那如何才能做到既安全,又不太麻烦捏?这就要引入密码的分级机制。
  根据安全圈内一个人所共知的常识:越安全的措施,通常也就越麻烦,成本也高;反之亦然。另外,根据二八原理,非常重要口令毕竟只占少数。所以,就像电影要有分级机制一样,你的密码/口令也要引入分级的概念。通过分级机制,对大多数不太重要的口令,可以采取简化的安全措施;而对少数重要的口令,采取高度安全的措施。
  下面,就来介绍一下,如何对不同的口令,进行分类。

◇第1级:不重要的口令

  所谓不重要的口令,就是说万一被盗了或者忘记了,对你没啥损失。
  比如,俺经常碰到一些土鳖的论坛,只允许注册会员从上面下载附件。因此俺就经常临时注册一个账号,然后登录上去下载东西。这类账号,基本上都属于一次性的(用完即扔),所以重要程度很低。
  对于那些不重要的口令,基本上不用考虑太多安全性的因素。随便设置一个即可。

◇第2级:重要但少用的口令

  对于重要的口令,还要根据其使用的频繁程度,再区别对待。有些口令虽然重要,但是使用的频度很低。由于这类口令很少使用,所以设置得麻烦一些,问题也不大。
  比如俺管理的一些研发的服务器(比如源代码服务器),其重要程度非常高,但是平常基本无需登录。

◇第3级:重要且频繁使用的口令

  最后这类口令,既重要,又经常用。所以,设置这类口令就比较讲究。要同时兼顾安全性和易用性。
  比如自己日常使用的操作系统用户密码,就属于此类。

★一些反面教材——【脆弱】密码的举例

  说完了分级机制。接下来俺先列举一些反面教材,让大伙儿看看,啥样的口令算是脆弱的?(顺便说一下:2011年底,国内各大网站纷纷被脱库。)

◇口令和用户名一样

  无需多说,这种情形的口令,非常脆弱。

◇口令是一串简单数字

  在上文,俺举了RockYou 网站用户数据被盗的案例。在该网站3200万用户中,最受欢迎的十大弱智口令分别是:

1
2
3
4
5
6
7
8
9
10
1.  123456
2. 12345
3. 123456789
4. password
5. iloveyou
6. princess
7. rockyou
8. 1234567
9. 12345678
10. abc123

  从这个 TOP 10 可以看出,有一半是采用连续数字。所以,用连续的数字串(包括顺序和逆序)作密码,也是很愚昧滴。

◇口令太短

  如果你的口令小于6个字符,是很容易被暴力破解滴。毕竟,小于6个字符的所有组合,也没多少个。对专门穷举密码程序来说,那简直是小菜一碟。

◇用英文单词作口令

  用【单个】英文单词作口令,也很容易被破解。毕竟,常用的英文单词,也就千把个;算上冷僻的,也就几万个。
  在许多年以前,就有黑客专门收集整理了英文单词的列表(称之为“口令字典”)。而且这个字典是根据单词的使用频度进行排序。有了这种密码破解字典,密码破解程序就可以轻易猜解出那些使用单个英文单词的密码。

◇用日期作口令

  有些同学希望用某个具有特殊意义的日期(比如:生日、结婚纪念日…)作为口令。要知道这种伎俩也是不灵滴。因为常见的日期,大都分布在最近100年的范围内。所以充其量,可能的个数也就大约是365*100个。即便把不同的日期表示格式考虑进去,也多不了几倍。在这个数量级上,对于暴力破解工具而言,还是小菜一碟。

◇其它的烂口令

  上述列举的这几种情况,大伙儿一定要避免。另外,你还可以去围观一下某老外整理的一个滥口令大全(这老外真有耐心)。提醒一下:这个列表是根据欧美用户统计的,未必适合中国的国情。

★如何构造【复杂】密码?

  前面已经说了:口令太简单,容易被破解。但是太复杂的话,万一自己也忘了,那可就完蛋了。所以,很多网友都纠结于口令到底该复杂到什么程度。俺的经验是:口令要做到对自己简单,对别人复杂。
  下面就来介绍俺在这方面的经验。

◇用多个单词构成词组

  前面提到,如果用【单个】英文单词作密码,容易遭受字典攻击。为了避免字典攻击,可以考虑由25个英文单词构成密码。如果你英语不灵光或你比较习惯中文,也可以考虑用25个汉字的拼音来构成密码。

优点
  由于能显著增加密码长度,可以抗击暴力破解。
缺点
  有可能需要改变你记忆密码的习惯。
  口令中仅包含字母,复杂度不够高。

◇插入特殊字符

  刚才提到了用多个单词或汉字拼音构造密码。为了让密码的强度再好一些,还可以在单词或汉字拼音之间,插入一些特殊字符。
  最常见的是插入空格。当然,你也可以考虑插入其它字符(比如:下划线、减号、斜杠、井号、星号、等)。
  通常进行暴力破解时,为了加快破解进度,都只针对字母和数字进行暴力破解。如果你的口令中含有特殊字符,会大大提高攻击者的难度。

优点
  由于口令包含较多特殊符号,复杂度大大提高。
缺点
  很多特殊字符的输入,要依赖于 SHIFT 键辅助。对于键盘指法不流畅的同学,可能会影响你输入密码时的击键速度,给偷窥者留下可乘之机。

◇字符变换

  所谓的字符变换,就是用形状类似的字母和数字进行相互替换,通过这种变换,可以规避前面提到的基于口令字典的攻击。
  常见的变换有如下几种:

1
2
3
4
5
6
7
8
9
字母o 和 数字0
字母l 和 数字1
字母z 和 数字2
字母s 和 符号$
字母g 和 数字9
字母q 和 数字9
字母a 和 符号@
字母b 和 数字6
字母x 和 符号*

  假设俺想用单词 program 作为口令,那么经过上述的变换之后,就成为 pr09r@m
  很明显,变换之后的口令同时具有字母、数字、符号。强度相当好 :)
  以上变换仅仅是举例。你可以对俺给出的这几个变换,进行扩展,以满足自己的习惯与偏好。

优点
  【不用】改变你原先的记忆习惯。
  由于口令包含较多特殊符号,复杂度大大提高。
缺点
  如果你想好的口令中,恰巧所有字母都没有对应的变换,那就比较不爽啦。

◇键位平移

  这个招数也比较简单,就是在进行键盘输入时,把手【向右】平移一个键位。通常咱们在盲打时,两只手的食指分别对着字母 F 和字母 J。平移之后,则食指对着 GK
  假设俺想用单词 program 作为口令,那么经过上述的变换之后,就成为 [tphts
  经过这种输入法,口令已经面目全非。但是对你自己来说,并不难记。

优点
  【不用】改变你原先的记忆习惯。
  口令看起来完全没规律。
缺点
  依赖于 QWERT 的键盘布局。万一哪天你想在非 QWERT 键盘(比如某些手机键盘)上输入口令,那你就歇菜了。

◇藏头诗

  在某些古代小说的情节中,经常可以看见藏头诗的桥段。藏头诗的点子,也可以借用来构造安全口令。
  为了用此招数,你先要想好一句令你印象深刻的话。这话可以是中文,也可以是英文、法文、火星文……反正只要是你熟悉的语言既可。最好这句话的字数(单词数)在8~20之间。然后你把这句话每一个单词的头一个字母取出来,组合成一个口令。如果是中文的话,就把每一个字的拼音的声母取出,组合成口令。
  假设俺想好的话是:“只有偏执狂才能生存”。那么用拼音的声母表示就成为 zypzkcnsc

优点
  【不用】改变你原先的记忆习惯。
  口令看起来完全没规律。
缺点
  口令中仅包含字母,复杂度不够高。
  如果句子中的字数(单词数)不够多,效果就不够好。
  对于港台的同学,由于没学过汉语拼音,只好用英文的藏头诗了。好在港台的英语教育通常比大陆好,应该关系不大 :-)

◇巧用 SHIFT 键

  在构造口令的时候,适当地组合一下 SHIFT 键,有时也可以达到不错的效果。假如你的口令中,有部分字符是数字,那当你输入口令时,按住SHIFT键会让这些数字字符变为特殊符号。

优点
  【不用】改变你原先的记忆习惯。
  由于口令包含较多特殊符号,复杂度大大提高。
缺点
  万一你原先的口令仅有字母,没有数字,则密码的强度会稍微打折扣。
  由于要依赖于 SHIFT 键进行切换,会影响你输入密码的击键速度。这会给偷窥者留下可乘之机。

◇运用数学等式

  还有一种又好记,看起来又复杂的密码构造方式——运用数学等式。
  比如,可以把密码设计成:7+8=15
  虽然只有6个字符,但是由于包含了符号,已经有一定的强度。如果你觉得6字符太少,可以很容易增加字符数及复杂度,比如改为:37+(9*2)=55
  如果你觉得还不够复杂,还可以搞得再变态一点——把某个数用英文表示。比如:two+7=nine

优点
  密码同时包含了字母、数字、符号。标准的高复杂度!
缺点
  需要改变你记忆密码的习惯。
  一旦你的口令被别人看到,别人很容易就可以发现你构造口令的规律。

◇利用散列值(哈希函数)

  最后,来说一种俺的看家本领——利用散列值构造口令。
  要构造基于散列值的密码,有好几种散列算法可供选择。对于不太懂技术的网友,俺建议用 CRC32 散列算法。为啥用它捏?因为这玩意儿操作起来比较方便。比如,假设俺想得到某个文件的 CRC32 散列值,只要用 7-Zip、WinRAR 之类的压缩工具,把它压缩成 zip 格式的文件,然后就可以看到该文件的 CRC32 值了(因为 zip 格式用 CRC32 散列算法作为文件的校验码)。不信你随便拿手头一个 zip 格式的文件打开来看看就明白鸟。
  因为 CRC32 生成的散列值比较【短】,对于懂技术并且安全要求较高的网友,可以用散列值【更长】的散列算法(比如:MD5、SHA1、SHA256 ……)。
  现在,详细说一下基于散列值的密码如何构造(以 CRC32 为例,其它散列算法依样画葫芦)
  首先,你先想好一个字符串,作为计算散列的种子。这个字符串不需要很复杂,也不需要很长。比方说你叫张三,那你可以拿张三的拼音声母 zs 作为【种子串】(注:此处纯属举例,实际情况中,你应该用【更长】的字符串作为种子串)。
  接下来,假设你有一个 hotmal 的邮箱,需要设置口令。你可以先用记事本(notepad)生成一个 txt 文件。里面先写上种子串 zs 再写上 hotmail,存盘。然后把这个 txt 文件用工具压缩成 zip 格式,看一下它的 CRC32 校验码 9C9041C0,然后就拿它作为密码。
  如果你再有一个 gmail 邮箱需要设置口令,只要同样地,新建一个 txt 文件并写入 zsgmail,同样计算 CRC32,就可以得到另外一个值 03B2F77D。大伙注意到没有?这两个值看起来没有任何关联性,而且从这两个口令,也看不出和种子串 zs 有啥关系。

优点
  密码同时包含了字母、数字,但是没有特殊符号。复杂度属于中高!
  由于散列值具有随机性。也就是说,你看到的绝大多数散列值都没啥规律。
  由于散列值具有不可逆性。也就是说,即便有一个密码暴露了,攻击者也看不出规律。
  即使有一个密码暴露,别人完全看不出规律。
缺点
  这种密码是完全随机的,常人是【不可能记住】滴。所以,在密码分级机制中,它仅适合第二级的密码。第三类密码没法这么玩。

  此招数的进阶:
  1. 你可以把 CRC 算法换成其它散列算法(比如: MD5、SHA1、SHA256 ……),就可以轻易构造出【超长的】密码或口令(几十个字符,甚至上百个字符)。
  2. 如果你自己会写点小程序或小脚本,你可以进行 N 次散列(N 可以是几千或几万)。这样一来,别人拿到你的某个密码后,更加难逆向分析出你的“种子串”。因此也就无法分析出由种子串构造出来的其它密码。

★结尾

  今天又花了不少篇幅,总算把俺平生积累的,关于如何构造复杂密码的经验,都讲完了。如果哪个网友还有其它独到的经验,希望来信和俺分享。如果俺觉得实用,也会补充到本文中。
  本系列的下一个帖子,会说说安全漏洞的基本防范。

如何防止黑客入侵[4]:安全漏洞的基本防范

文章目录

★扫盲基本概念
★安全漏洞的分类
★漏洞的防范措施

  前面用2个帖子来介绍口令方面的安全(在“这里”和“这里”)。今天扫盲一下跟安全漏洞相关的知识,为下一篇(Web 相关的防范)做好铺垫。考虑到俺博客的读者群,本文主要拿Windows桌面系统来举例,并且尽量说得浅显一点。

★扫盲基本概念

◇什么是漏洞?

  所谓的“漏洞”,简单来说,就是会引起各种问题的软硬件缺陷(软件业的行话叫 Bug)。要知道,任何东西都不可能是完美的,软硬件系统也不例外(毕竟开发软硬件系统的程序员/工程师,也是凡人,也会有出错的时候)。

◇什么是安全漏洞?

  在上述提到的缺陷中,那些会被攻击者加以利用的,并因此导致安全问题的缺陷,就是所谓的“安全漏洞”。

◇什么是补丁?

  补丁是一个很形象的说法。如果你衣服破了个洞,只要打个补丁,不需要把整件衣服换掉。同样的,如果你的某个软件有漏洞,也只要打一个补丁,不需要重新安装新版本的软件。大多数情况下,补丁和漏洞是配套的。

◇什么是攻击代码 / 攻击程序?

  为了利用某个安全漏洞,黑客需要运行某个程序,这个程序就叫做攻击程序(也叫“攻击代码”)。通俗地说,攻击程序和补丁之间的关系,就好比矛和盾之间的关系。

★安全漏洞的分类

  除了上述的基本概念,你还需要大致知道安全漏洞的分类方式。

◇按照所在软件的类型分类

  根据出现漏洞的软件的类型,可以把漏洞分为“操作系统漏洞”、“应用软件漏洞”、“Web 漏洞”等。
  所谓的“操作系统漏洞”,就是操作系统本身有的安全缺陷。
  所谓的“应用软件漏洞”,就是你安装的软件所内含的安全缺陷。
  近几年来,基于 Web 的攻击日益增多,所以把 Web 漏洞单独分一类。所谓的“Web 漏洞”,也就是跟Web相关的漏洞——包括了浏览器本身的漏洞和网站的漏洞(本系列的下一篇会具体介绍这方面的知识)。

◇按照危险级别分类

  还可以根据漏洞的危险程度,进行分类。通常按照“高中低”分三级(也有把危险级别定为5级的)。级别越高,就越危险。
  对于高危的漏洞,有可能导致攻击者在你的电脑上植入木马。

◇按照攻击代码的位置分类

  针对攻击代码所处的位置,可以把漏洞分为“远程漏洞”、“本地漏洞”两类。
  所谓的“远程漏洞”,就是说,攻击者只需要在另外一台机器运行攻击代码,就可以让你的电脑中招。
  所谓的“本地漏洞”,就是攻击者的攻击代码必须在你的机器上执行。

◇按照补丁的情况分类

  刚才已经解释过了“补丁”和“漏洞”之间的关系。
  对于大部分漏洞而言,都有对应的补丁;但是少数漏洞没有补丁。没有补丁的漏洞是很危险的。为啥会出现这种情况捏?俺稍微解释一下。

1. 未公开的漏洞
  有些黑客发现某个漏洞后,没有在圈内公开,也没有告知对应的软件厂商。那么这种漏洞就变成“未公开的漏洞”。因为没有公开,软件厂商不知情,自然也就没有发布补丁。
  这种漏洞【最危险】,有可能长期被攻击者用来入侵。据俺所知,有些高危漏洞已经在黑客圈内流传多年,而相应的软件厂商依然不知情。

2. 零日漏洞(Zero-Day)
  如今互联网很发达,某些资深且勤奋的攻击者可以对漏洞的发布作出快速反应。一旦某个漏洞的细节被公开,他们可以在24小时之内制作出相应的攻击代码。而这个时候,软件厂商多半还没来得及发布补丁。那么这些攻击者就可以利用这个时间差,进行入侵活动。所以,安全圈内也把这种漏洞称为“零日漏洞”(洋文叫:Zero-Day 或 0-Day)。相对于“未公开漏洞”,“零日漏洞”可利用的时间段会短一些。比较负责任的软件厂商通常会在一周或一月之内发布补丁。不过捏,也有些不靠谱的公司(包括大公司),要拖上好几个月才发布漏洞补丁(比如 Oracle)。

★漏洞的防范措施

  针对漏洞的这几种不同分类,俺分别介绍一下几种基本的、常见的防范方式。

◇个人防火墙

  个人防火墙主要用于防范“远程漏洞”,对于“本地漏洞”,防火墙基本帮不上忙。
  因为大多数远程漏洞,都存在于你机器对外开启的监听端口中。个人防火墙可以阻止这些端口对外开放,从而避免潜在的漏洞被攻击者利用。
  自从 Windows 2000 开始,微软就在操作系统中内置了防火墙功能。对于 Windows XP 以及之后的版本,可以直接到控制面板中开启它。
  如果你的电脑只是用来上上网、聊聊天、看看电影、用用办公软件,那你完全可以把防火墙设置成——不开放任何对外的端口。这样一来,即便你的电脑中存在远程漏洞,也不易被攻击者利用。

◇定期升级系统补丁

  Windows 系统的漏洞一直比较多——毕竟用户群太大,容易被黑客盯上。所以从很多年以前,微软就开始定期提供 Windows 补丁。具体的做法是每月的第二个星期二,发布新发现的漏洞的补丁。另外,如何发现高危的漏洞,也会临时发布紧急补丁。
  从 Windows 2000 开始,系统就支持自动的补丁升级机制。你只要在“控制面板”里打开“自动更新”这个功能,然后选择“自动”方式。你一定要确保系统的”自动更新”机制处于启用状态。这就可以堵住很多操作系统漏洞,从而降低攻击的风险。
  提醒一下:自动更新不是 Windows 独有滴。其它一些用户群比较大的桌面系统(比如:Mac OS,Ubuntu)也提供了自动更新安全补丁的功能。

◇启用软件的自动更新

  有一些做得比较好的软件,会内置自动更新功能(比如:Firefox、Chrome …),一旦其官方网站有新的版本或补丁,就会自动下载并更新。如果你担心这类软件有安全问题,可以启用它们的自动更新功能。

◇使用小众且活跃的软件

  俗话说树大招风。越知名的软件,就越容易引来黑客的注意,被发现安全漏洞的概率也会增大。
  比如说:IE 的用户群最大,针对 IE 漏洞的挂马攻击是各种浏览器中最普遍的;Firefox 相对就少很多;而 Chrome 和 Safari 就更少了(不过捏,随着 Firefox 和 Chrome 的流行,针对这两款浏览器的攻击也多起来了)。
  再比如说:同样是 PDF 阅读器,Adobe Reader 被曝光的漏洞就比较多,相对而言,Foxit Reader 和 PDF-XChange Viewer 就没这么多问题。
  为啥俺还要强调【活跃】捏?小众软件根据活跃程度可以分为:活跃 or 不活跃。不活跃的软件,通常说明:开发者维护该软件不够积极,也就意味着该软件在【漏洞修复】方面不够迅速/及时——这就会导致安全风险;反之,活跃的软件,就没这个问题。

  关于安全漏洞的基本防范,今天就聊到这里。考虑到近年来,针对 Web 攻击的情况剧增,本系列后续的帖子会说一下 Web 相关的话题。

如何防止黑客入侵[5]:Web相关的防范(上)

文章目录

★Web安全的重要性
★Web 相关的攻击手法
★如何选择浏览器?
★如何选择插件和扩展?

  由于俺比较懒,导致本系列已经中断了2年之久。上星期有读者留言,希望俺尽快把本系列补上。再加上昨天看到新闻,说 Java 7 爆出全系列的高危漏洞。凡此种种,促使俺补上了本系列的第5篇,关于 Web 的防范。这部分的内容比较长,为了避免大伙儿阅读疲劳,俺把《Web相关的防范》分为上中下3个部分。

★Web安全的重要性

  在聊正题之前,先给大伙儿强调一下“Web 安全”的重要性。
  如今互联网非常普及,大部分的家用电脑和商业电脑,都具备联网功能。而且大部分电脑只要一开机,就处于联网状态。作为电脑的使用者,有相当一部分时间是花在 Web 浏览(俗称网上冲浪)。在这样的环境中,Web 就成了恶意软件(病毒、木马、蠕虫、勒索软件……)最理想的一种传播媒介。据说如今大部分电脑中招,都与 Web 有关。
  正因为如此,才把 Web 相关的内容,单独汇总一篇。接下来,俺先介绍一下攻击者常见的招数,然后再介绍一下各种应对措施。

★Web 相关的攻击手法

◇嗅探(sniffer)

  所谓的“嗅探”,就是攻击者利用某些技术手段,截获你的网络数据流并进行分析,从而获取某些有价值的信息。通常来说,“嗅探”只是入侵的初始阶段(准备阶段)。攻击者通过“嗅探”获取到的信息,通常用来进行辅助后续的入侵行动。

  举例:
  很多人喜欢通过公共场所的 WiFi 热点上网。假如你使用的 WiFi 热点没有设置为强加密。那么,某个攻击者就有可能利用 WiFi 嗅探工具,截获你的上网流量。如果你正好在收发 Web 邮件,而且没有通过 HTTPS 加密(好多国内的 Web 邮箱【不】支持全程 HTTPS 加密)。那么,攻击者就可以看到你的收发的邮件内容。

◇钓鱼(phishing)

  “钓鱼攻击”包括很多种,基于 Web 的网络钓鱼是其中之一。
  由于“钓鱼攻击”属于社会工程学的范畴,也不是本文的重点。今后有空的话,单独写一篇“关于钓鱼攻击的防范”。

◇利用浏览器自身的安全漏洞

  在前文里,俺已经扫盲了”漏洞”、”补丁”等概念以及相关的一些常识。健忘的同学,可以再去温习一下。
  在软件行业中,几乎每一款软件都会有漏洞——浏览器自然也不例外。浏览器的漏洞有很多种,其中一类叫做”安全漏洞”。顾名思义,就是会导致安全问题的漏洞。
  如果某款浏览器的安全漏洞被攻击者发现,而浏览器厂商自己还不知晓。那么攻击者就可以利用该漏洞,发起广泛的攻击。

  举例:
  假设某个黑客研究 IE 的内核,首先发现 IE 存在一个“渲染图片导致缓冲区溢出”的漏洞。由于该漏洞是独家发现,只要该黑客不公开漏洞的信息,连微软(也就是 IE 浏览器的厂商)也会蒙在鼓里。因此,也就【没有】针对该漏洞的补丁。那么,这个黑客会如何利用该漏洞捏?
\1. 首先挑选一张图片(为了吸引人,通常会选一张美女图之类的照片),然后精心地嵌入一段攻击代码在图片内部。
\2. 把这张图片放到网上(比如张贴到某个大型论坛,再配上一个吸引人的标题)。
\3. 过不了多久,就会吸引到很多网友来围观。如果围观的网友用的浏览器不是 IE,那么他仅仅是看到一张美女图而已,不会有啥异样。如果围观的网友用的正好是有漏洞的 IE 版本,当 IE 打开那张图片的瞬间,攻击代码就会被激活(被运行)。然后,攻击代码会悄悄地在这台电脑中安装一个木马(技术行话叫“植入木马”)。之后,这台电脑就成为攻击者的肉鸡了(攻击者可以远程控制肉鸡,为所欲为)。
\4. 攻击者控制了肉鸡之后,既可以拿去卖钱(有专门的地下肉鸡交易市场),也可以偷窥机主的隐私(看看有没有网银、裸照、QQ 靓号)。如果控制的肉鸡数量巨大,还可以搞 DDOS 攻击……

◇利用浏览器【插件或扩展】的安全漏洞

  如今大部分浏览器上,都安装了插件。最常见的插件就是 Flash 插件。另外还有“PDF 插件、Java 插件”等等。
  浏览器的插件也属于软件,也会存在安全漏洞,因此也可以被攻击者利用。一般来说,攻击者对插件漏洞的利用,类似于对浏览器漏洞的利用。

  举例1:
  2011年,美国大名鼎鼎的安全公司 RSA 遭到入侵并且被深度渗透,连看家产品 SecureID 的密钥也被偷了。
  攻击者之所以能得手,就是利用了 Flash 插件的一个零日漏洞。洋文好的同学,可以看“这里”的详细报道。

  举例2:
  同样是在去年,有不少 Gmail 用户遭到入侵。但实际上,Gmail 本身并没有出问题。攻击者是利用 Flash 的漏洞,伪造跨站请求,然后在 Gmail 的转发列表中加入一个攻击者的邮箱。之后,被害人收到的所有邮件,都会自动转发给攻击者。

  从最近几年的趋势来看,插件漏洞导致的安全问题,要多于浏览器漏洞导致的安全问题。

◇跨站脚本攻击(XSS)

  最后再来说说”跨站脚本”的问题。
  大部分 XSS 攻击,都是利用网站本身的漏洞。所谓的网站,其实就是若干 Web 服务器,上面运行若干软件。前面说了,只要是软件,就可能存在漏洞(包括安全漏洞)。所以,Web 服务器上的软件自然也不例外。
  基于 XSS 的攻击有很多种类型,具体的技术原理也有所差异。考虑到大部分读者不是搞技术的,俺就不深入展开了。仅举一例,让大伙儿有个感性的认识。

  举例:
  比如某个 BBS 论坛存在漏洞——【没有】对用户发布的帖子内容(此处的“内容”,不是指文字的内容,而是指特殊字符)进行严格的检查。如果某个攻击者发现了此漏洞,就可以精心构造一个帖子,在帖子的正文中包含一段攻击脚本(通常是 JavaScript)。接下来,攻击者把这个帖子发布到该论坛上。
  然后捏,如果有人浏览了这篇帖子,这段攻击脚本就会被激活,然后干坏事……

★如何选择浏览器?

  对于用户来说,浏览器是 Web 的根基。所以,谈 Web 的安全防范,首先得聊一聊如何选择浏览器。
  挑选浏览器有如下几个指标供参考:
1. 浏览器的质量好不好
评判安全方面的质量,最关键的一条是:看浏览器有没有经常出安全漏洞。
2. 浏览器的更新快不快
爆出漏洞后,浏览器的开发团队是否及时出补丁或新版本。
3. 浏览器的功能强不强
除了要看浏览器本身的功能,还要看其支持的扩展是否丰富。

  根据上述指标,俺把市面上常见的浏览器,根据靠谱的程度,划分为如下三类:

◇第一类:Firefox 和 Chrome(含 Chromium)

  俺个人强烈建议用 Firefox 或 Chrome 进行网上冲浪,因为这两款浏览器很符合上述指标。
质量好
本世纪初,浏览器市场被 IE 一统天下。但随着时间推移,IE 在全球的市场份额逐步被 Chrome & Firefox 占去一半以上。这充分说明 Firefox 和 Chrome 的质量很好。另外,在安全漏洞方面,Firefox 和 Chrome 也优于 IE。
更新快
说到快速更新(快速迭代),这是 Chrome 的首创。从去年开始,Firefox 也学 Chrome 采用快速版本更新。
功能强
说到功能,Firefox 刚出道时,利用丰富的扩展吸引了足够多的用户。如今,无论是扩展的种类还是扩展的下载量,Firefox 是最多的;至于 Chrome,由于出道时间晚,这扩展方面不如 Firefox,但显然比 IE 强多了。

  除了上述这几条,这两款浏览器还具有如下优点:
支持的平台很多
支持三大主流的桌面系统(Windows、Mac OS、Linux),支持两大主流的移动系统(Android、iOS)。
开源项目
由于开源而且参与的程序员也多,所以软件中的漏洞容易被及早发现。
(Chromium 是开源滴;Chrome 虽然基于 Chromium,但包含【闭源】模块)

  以上就是俺推荐 Firefox 和 Chrome 的理由。在本文的后续章节,俺会以这两款浏览器为主,进行介绍。

◇第二类:IE、Safari、Opera

  先说 Safari 和 Opera。这两款的出道时间早于 Firefox 和 Chrome。忙活了这么多年,如今的市场份额依然很低,这已经说明某些问题。另外,俺个人觉得 Safari 和 Opera 的扩展和插件不够丰富,更新速度也不够快,所以俺不推荐。

  至于 IE,曾经是市场份额最大的浏览器,而是集成(捆绑)在 Windows 系统中。为啥俺把它放到第二类捏?有如下几个原因:
\1. IE 跟 Windows 集成得太紧密。IE 如果爆漏洞,通常要等微软发布 Windows 补丁来修复。而 Windows 补丁是按月发布的——太不及时啦。
\2. 相比 Firefox 和 Chrome,IE 是闭源项目。由于源代码不公开,而且参与的人不够多,导致潜在的漏洞难以被发现。
\3. IE 用户大都是菜鸟用户(很多菜鸟只知道用系统内置的浏览器)。由于菜鸟不太懂安全防范,有些【低级】骇客就喜欢盯着这个用户群。

  说到这儿,可能有同学会问:天朝的好多网银都只能用 IE(很多网银客户端依赖于 IE 的 ActiveX 控件),咋办捏?别担心,在本系列的下一篇《Web相关的防范 (下)》会谈到此问题的解决方法。

◇第三类:五花八门的【国产】浏览器

  说到【国产】的浏览器,有必要谈一下浏览器的内核(也就是浏览器的引擎)。绝大部分国产的浏览器,都不是自己开发内核,而是基于老外现成的内核。常见的浏览器内核有三款,分别是:
Gecko 内核(来自于 Mozilla 开源组织,主要供 Firefox 使用)
Trident 内核(来自于微软,主要供 IE 使用)
WebKit 内核(独立的开源项目,Chrome 和 Safari 使用此内核)
  几款常见的国产浏览器(360浏览器、傲游浏览器、QQ 浏览器),使用的是 Webkit + Trident 的双内核模式。
  某些国产浏览器把双内核作为吹嘘的亮点。但在安全层面,双内核反而会带来安全问题。假如你手头的国产浏览器采用了 Webkit + Trident 双内核。只要这两款内核中,有一个爆出安全漏洞,你就有可能中招。也就是说:双内核会增加你中招的概率。
  俺极力反对【国产】浏览器,还有另一个原因——政治层面的安全问题。朝廷为了监控屁民在互联网上的一言一行,会跟国产浏览器厂商合作,通过浏览器记录网民的行踪。

  举例:
  前几年腾讯搞的“TT浏览器”,会把用户上网行踪记录在某个文件中。
  至于 360,名声更是臭不可闻。360 浏览器本身就存在收集用户隐私的问题,居然还好意思自称是“安全浏览器”。而且大伙儿别忘了,奇虎公司跟 GFW 一直保持着暧昧的关系哦。

  综上所述,俺个人【非常反对】使用国产浏览器。

★如何选择插件和扩展?

  说完浏览器的选择,再来聊聊如何选择插件和扩展。

◇插件和扩展的【区别】

  先来扫盲一下插件和扩展的区别(连很多 IT 技术人员都把这两者混为一谈)。所谓的插件,洋文叫“plugin”;所谓的扩展,洋文叫“extension”。两者的区别如下:

插件
  在功能上,插件通常是用来渲染 HTML 页面中的 <object><embed> 标签。
  插件通常实现比较【底层】的功能,通常以平台相关的代码(本地代码)编写,可以调用操作系统的 API。形式上,插件以动态库(Windows 上就是 DLL 文件)的方式,加载到浏览器的进程内。由于使用本地代码编写,插件通常依赖于特定的操作系统(不同系统的插件不能混用)。

举例:
Flash 插件
媒体播放器插件
PDF 插件
Java 插件

扩展
  扩展,顾名思义,是用来扩展浏览器自身的功能。所以,扩展可以调用浏览器自身的 API,但是大部分扩展【不能】调用操作系统的 API。
  一般来说,扩展是跟操作系统无关的。比如 Firefox 的大部分扩展,既可以用于 Windows 平台的 Firefox,也可以用于 Linux 和 Mac 的 Firefox。

◇插件和扩展在安全方面的差异

  由于插件比较底层,一旦出现高危漏洞(比如能够执行本地代码的漏洞),攻击者就可以在操作系统中植入木马。可以这么说,插件出现漏洞,其危险性类似于浏览器出现漏洞。
  相对而言,扩展出现漏洞,其危险性往往不如插件严重,通常也不会导致攻击者植入木马。

◇尽量使用口碑好的扩展

  虽然扩展出漏洞导致的危险性不如插件那么高,但也不能掉以轻心。
  俺的经验是:尽量使用知名度高且评价好的扩展。这样的扩展通常成熟度也比较高——即使出了漏洞,更新也比较及时;这类扩展也会有更多安全研究人员对其进行研——即使有漏洞,也更容易被发现。
  反之,对于某些很少人用的扩展,最好敬而远之。顺便提一下。某些层次低的入侵者,甚至会把木马伪装成浏览器扩展,再忽悠一个很花哨的功能,然后放到网上给大伙儿用。

◇尽量避免使用【插件】

  从上述对比可知,插件如果出现漏洞,危险性很高。所以,俺的建议是:尽量避免使用【插件】
  不过捏,避免使用插件,说起来简单,但是做起来有点难度。其它插件,说不用就不用了。但是 Flash 插件,实在是用得太广泛了(视频网站用到它,网页休闲小游戏也用到它),估计大伙儿难以割舍啊。
  不幸的是,Flash 插件又最危险。一方面是因为 Adobe 的程序猿,安全意识太差;另一方面是因为 Flash 是用得最多的插件,成为攻击者的重点研究对象。根据2011年的统计数字,去年一年,光是【高危漏洞】,Flash 就爆了4次——当之无愧地坐上漏洞排行榜的头把交椅。
  面对 Flash 插件,该咋办捏?列位看官,请听下回分解。(下一篇会尽快发布)

如何防止黑客入侵[6]:Web相关的防范(中)

文章目录

★如何防范浏览器和插件的漏洞?
★“多浏览器”的方案
★【多实例】的方案
★【多用户】的方案

  在本系列的前文聊了些基础性的东西,包括:常见的攻击手法、如何选择浏览器和插件。今天,俺继续介绍几个相对高级一点的话题。

★如何防范浏览器和插件的漏洞?

  在前一篇已经告诉大伙儿“如何选择浏览器”。但是光知道这个是不够滴!因为浏览器也是软件,只要是软件就可能会出现漏洞(包括安全漏洞)。
  即使你按照俺的建议,选择 Firefox 或 Chrome 作为日常的浏览器,也【无法完全避免】浏览器自身出漏洞的问题。而且浏览器的漏洞中,有一些是没有补丁的高危漏洞(包括“未公开漏洞”&“零日漏洞”,俺在前文里介绍过)。因为没有补丁,所以这类高危漏洞就特别危险。这就引出了第一个问题:如何防范浏览器的漏洞?
  另外,在浏览器插件中,Flash 插件既是最危险的插件,也是使用最广的插件。这就引出了第二个问题:如何安全地使用危险的插件?
  要解决上述2个问题,可以使用同一个原则,那就是:【对浏览器进行隔离】。具体的隔离方式有很多种,今天俺由浅入深,分别介绍一下。

★“多浏览器”的方案

◇操作步骤

  这招是最简单的——就是在一台电脑上安装多款【不同内核】的浏览器。具体步骤俺就不多说了,节约点口水。

◇优点

1. 解决网银的问题
  前面提到了国内网银依赖于 IE 的问题。但是 IE 的安全性又不如 Firefox 和 Chrome,咋办捏?最简单的办法就是同时安装两款浏览器(比如 IE + Firefox)。平时你上网的时候,用 Firefox,需要用网银,则改用 IE。
  由于你仅仅在使用网银的时候,才开启 IE,大大降低了 IE 被入侵的机会。

2. 解决跨站脚本(XSS)的问题
  使用多种浏览器,还可以帮你解决跨站脚本攻击的问题。
  单纯的XSS攻击,主要是依赖 JavaScript。而 JavaScript 只能在浏览器进程内起作用,无法跨浏览器进程。所以,如果你同时使用 A B 两款浏览器。如果 A 浏览器发送 XSS 攻击,通常不会影响到 B 浏览器。除非这个 XSS 攻击结合了浏览器漏洞或插件漏洞。那么,多款浏览器是否能防范浏览器漏洞和插件漏洞捏?请看往下看。

3. 部分解决高危插件(Flash)的使用问题
  俺在上一篇提到了利用 Flash 入侵 Gmail 的案例。
  比方说,你同时用 Firefox 和 Chrome。其中 Firefox 安装 Flash,用来上普通的网站;而 Chrome 不装或禁用 Flash,专门用来上 Google 的相关服务器(比如 Gmail)。
  某天,你收到一封恶意的邮件,该邮件会利用 Flash 的漏洞来入侵用户的电脑。幸运的是,你用来访问 Gmail 的 Chrome 上没有 Flash 插件(被禁用),于是攻击者的阴谋没有得逞 :-)

◇缺点

1. 无法彻底解决浏览器漏洞和插件漏洞的问题
  细心的读者会注意到,刚才那个小节的标题是部分解决高危插件(Flash)的问题。为啥俺要特地强调【部分解决】捏?因为浏览器的漏洞和插件的漏洞有很多种。有些漏洞只是让浏览器崩溃,无伤大雅;而有些漏洞可以导致在本地执行代码,并且能进一步植入木马。一旦你碰到后者,即使你采用“多种浏览器”的方式,也抵挡不住。
  某些天真的网友可能会问:浏览器厂商和插件厂商不是会升级补丁吗?但是问题在于,有少数一些漏洞是没有补丁的。为啥会这样捏?请看本系列上一篇《安全漏洞的基本防范》,里面介绍了”未公开漏洞”和”零日漏洞”。
  不过别担心,俺后面还会介绍更高级的招数,来防范这种情况。

2. 灵活性不够
  对于“多浏览器”的方案,还有一个缺点是不够灵活。
  因为你要为每一种用途安装一款浏览器,如果你的用途比较多(比如:上网银、普通浏览、Web 邮箱、看视频),就要装好几款。
  另外,有些用户就喜欢某一款浏览器,你让这些用户装好几款浏览器,他们会觉得不爽。
  对于“灵活性不够”的缺点,大伙儿可以参考接下来要介绍的第二招——“多实例”的方案。

★【多实例】的方案

◇什么是浏览器的多实例?

  所谓的浏览器多实例,有时候也称之为“Multiple Profiles”。
  不论是 Firefox 还是 Chrome,默认安装的时候,只有一个实例(Profile)。和浏览器相关的各种信息,包括:插件、扩展、外观(皮肤)、页面缓存、cookie、等等,都存储在这个实例中。
  反之,如果使用多实例,每个实例都具有独立的插件、独立的扩展、独立的外观(皮肤)、独立的页面缓存、独立的 cookie、等等。不同实例之间是相对隔离的,【不会】互相影响。
  对于 Chrome,再特别提醒一下:
  Chrome 同时支持“Multiple Profiles”与“Multiple Accounts”。但别把这两者搞混了。即使你配置了多个 Accounts,依然在【同一个】实例里。

◇操作步骤

  多实例的配置,很多人不晓得。所以俺详细说一下。考虑到 Windows 用户居多,俺以 Windows 举例。Linux 和 Mac OS 的操作步骤大同小异。

多实例的 Firefox

  对于 Windows 上的 Firefox,Profile 都放置于 %APPDATA%\Mozilla\Firefox\Profiles 目录下。
  假设你想创建一个【全新的】Firefox 实例,可以通过如下命令行来启动 Firefox。

1
"{PATH}\firefox.exe" -P "XXXX" -no-remote

  上述命令中,{PATH} 表示你的 Firefox 的【安装目录】。XXXX 表示你要创建的【实例名】(实例名可以是任意字母组合,你也可以把 XXXX 改成其它名称)。
  运行完上述命令,Firefox 会启动出一个名叫 XXXX 的实例。与此同时,在 %APPDATA%\Mozilla\Firefox\Profiles 下会多出一个名叫 XXXX 的目录。
  按照上述方式依样画葫芦,你就可以启动出任意多个 Firefox 实例。为了省事,你可以把上述命令行做成一个快捷方式,放到桌面上,免得每次都敲键盘。
  另外,Firefox 还提供了一个多实例的管理界面,用如下命令可以调出该界面。

1
"{PATH}\firefox.exe" -p

多实例的 Chrome

  Chrome 类似于 Firefox,也可以通过命令行启动新的实例。
  对于 Windows 上的 Chrome,由于 Chrome 安装的时候没让选安装目录,所以其【exe 的安装目录固定如下】:

Windows 7 或 Vista 系统
C:\Users\**{USER}**\AppData\Local\Google\Chrome\Application\chrome.exe
Windows XP 系统
C:\Documents and Settings\**{USER}**\Local Settings\Application Data\Google\Chrome\Application\chrome.exe
  上述的 {USER} 表示你的 Windows 用户名

  找到 chrome.exe 之后,接下来,你需要创建一个目录,用来存放新创建的实例。比方说,你用的是这个目录: X:\XXXX\
  然后,通过如下命令启动 Chrome,就可以创建出新实例

Vista 或 Windows 7 系统

1
C:\Users\{USER}\AppData\Local\Google\Chrome\Application\chrome.exe --user-data-dir="X:\XXXX\"

Windows XP 或 Win 2003 系统

1
C:\Documents and Settings\{USER}\Local Settings\Application Data\Google\Chrome\chrome.exe --user-data-dir="X:\XXXX\"

  按照上述方式依样画葫芦,你就可以创建出任意多个 Chrome 实例。为了省事,你可以把上述命令行做成一个快捷方式,放到桌面上,免得每次都敲键盘。

◇优点

1. 解决跨站脚本(XSS)的问题
  这个优点跟“多浏览器”方案是类似的。俺就不再啰嗦了。

2. 部分解决高危插件(Flash)的使用问题
  这个优点跟“多浏览器”方案是类似的。俺就不再啰嗦了。

3. 灵活性高
  与“多浏览器”的方案相比,“多实例”的方案明显灵活多了。因为 Firefox 和 Chrome 可以创建出任意多个实例(只要你的硬盘够大,想建几个实例都行)。而且,这个方案可以满足某些 Firefox 粉丝或 Chrome 粉丝的个人偏好。

◇缺点

1. 无法彻底解决浏览器漏洞的问题
  在这方面,“多实例方案”与“多浏览器方案”具有共同的缺陷——无法抵御具有【本地代码执行】的高危漏洞。包括浏览器漏洞和插件漏洞都有可能出现这类高危漏洞。
  那么,该咋办捏,请看下一节——“多用户”的方案。

★【多用户】的方案

  前面提到的两种方案,都无法防范某些浏览器或插件的高危漏洞。因为这些高危漏洞会导致在本地执行攻击代码,并有可能植入木马。现在,俺来介绍第三种方案——多用户方案。此方案可以防范大部分在本地执行的攻击代码。
  先说明一下,此处的“用户”指的是【操作系统用户】。

◇某些高危漏洞为啥很危险?

  俺前面反复提到“导致本地执行攻击代码的漏洞”。这样的漏洞是非常非常危险的。为啥捏?俺简单扫盲一下。
  如果你的浏览器或者浏览器插件具有这类漏洞,当你访问某个恶意网页时,如果该恶意网页能够利用此漏洞,就可以在你的本地的操作系统中执行攻击代码。由于这个攻击代码是在浏览器的进程内触发的,所以该攻击代码就具有当前用户所具有的权限。
  比方说,如今大部分网友都用 Windows 上网。并且,这些网友都是以“系统管理员”的身份使用浏览器。一旦碰到这类漏洞时,本地的攻击代码也同时具有了“系统管理员权限”。有了这么高的权限,攻击代码可以为所欲为。
  某些网友可能会问:那不用管理员身份上网,是不是就没事了?
  俺只能说,用低权限的用户身份(比如 Windows 里面的“Users 组”)上网,相对于用管理员身份上网,会好一些。但是捏,还是有问题。
  举个例子:
  即使你用低权限用户上网,一旦遭遇这类漏洞,攻击代码还是有可能植入木马。然后捏,这个木马有可能会查找你电脑上的各种私密文件(比如你的裸照)。然后木马会把这些私密文件发送给木马的主人。

  从上述例子可见,用低权限的用户上网,【不能】彻底解决问题。所以,俺隆重推出第三种方案——多用户方案。

◇啥是“多用户方案”捏?

  如今的桌面操作系统,无论是 Windows 还是 Linux 或 Mac OS,都可以创建多个操作系统用户,并且这多个用户可以同时运行程序。如果你用过 WinXP 的快速用户切换,应该对此深有体会。
  多用户方案的关键在于:
  你需要创建一个或多个【低权限】的“上网用户”(所谓低权限,必须低于你当前使用的用户权限)。这些“上网用户”专门用来访问各种网站。
  假使你不幸访问了恶意网页,遭遇本地执行的攻击代码,问题也不大。因为这些上网用户的权限很低,所以它们触发的攻击代码,权限也很低。因此攻击代码就比较难钻空子。一般来说,对“上网用户”的权限限制得越严格,攻击代码就越难有作为。

◇操作步骤

1. 创建上网用户
  如何在桌面系统中创建新的用户,大家应该都会吧?不会的同学,请看《避免使用高权限用户》一文的相关章节。上网用户可以只创建一个,也可以创建多个。具体建几个,看你的需求。
  举例:
  假如你非常看重网银的安全,可以创建两个上网用户,一个专门用来访问网银,一个专门用来上其它网站。
  提醒一下:在这些上网用户的环境中,除了浏览器,其它啥软件都【别】装。

2. 设置上网用户的权限
  再啰嗦一次,上网用户的权限,一定要低于你目前使用的用户权限。
  以 Windows 为例:
在 Windows 中,常见的用户组的权限大小分别是:“Administrators 组” > “Power Users 组” > “Users 组” > “Guest 组”
如果你平时用“Administrators 组”的用户,那么可以把上网用户设置为:“Power User”或“User”或“Guest”
如果你平时用“Power Users 组”的用户,那么上网用户就只能设置为 User 或 Guest。
以此类推……
(如果你想了解这些用户组之间的权限差异,可以参考本系列的第一个帖子《避免使用高权限用户》)

  提醒一下:
  Guest 用户组的权限是最低,低得难以想象。所以,从安全角度而言,把上网用户设置为“Guest 组”是最安全滴。但是,也是最麻烦滴。你需要进行好多设置——否则的话,你可能连浏览器都跑不起来。
  所以,除非你对 Windows 系统比较熟悉,否则的话,俺【不】建议使用“Guest 组”的权限。比较理想的权限是“Users 组”。这个组的权限也比较低,但是用起来不麻烦。

3. 设置文件目录的访问控制权限(ACL)
  每个人的电脑中,都会有某几个目录是用来存放你的敏感个人资料的。
  你必须设置这些目录的访问控制权限(简称 ACL),设置为:“上网用户”所在的组【不允许读写】。这样一来,你可以把自己那些敏感的,私密的文件(比如自己的裸照),都通过上述 ACL 保护起来。即使“上网用户”遭遇高危漏洞的攻击,本地执行的攻击代码也【难以拿到】你的隐私(俺说”难以拿到”,意思就是说,还是有可能滴,但是可能性很小,后面会解释)。
  顺便提醒一下:对于 Windows 系统,只有使用 NTFS 格式的分区,才支持 ACL。FAT32 格式的分区是不支持滴!
  如果你是个菜鸟,不懂得如何设置文件及目录的 ACL,没关系!Google 一下,你就知道。

4. 多用户浏览器共享同一个桌面的技巧
  你可以直接用 Windows 提供的“快速用户切换”。对于 Windows 系统,从 WinXP 开始就提供了”快速用户切换”的功能。用它来切换用户还是很方便滴。但是这招有一个缺点:你一次只能看到某一个用户运行的软件,其它用户运行的软件看不到。
  不过没关系,还有一个小技巧,可以让你在同一个桌面中,运行不同用户的软件(包括浏览器)。
  假设你创建了 A & B 两个用户。其中 A 是主用户,用来完成你日常的工作;B 是上网用户。那么你可以先登录“A用户”,然后在“A用户”的桌面上创建一个浏览器的快捷方式。(如何创建快捷方式,就不用俺手把手教了吧)
  用鼠标选中该快捷方式,在快捷菜单(右键菜单)中,选择“属性”菜单项。出现如下对话框。

不见图 请翻墙

在该对话框中,点“高级”按钮。出现如下对话框。把“以其他用户身份运行”选项打勾,就可以啦。

不见图 请翻墙

之后,如果你想在“A用户”的桌面上运行“B用户”的浏览器,只需点击该快捷方式,就会弹出如下对话框。然后输入“B用户”的用户名/口令,就能以“B用户”的身份运行浏览器。

不见图 请翻墙

  刚才介绍的是图形界面的配置。对于习惯于命令行的 IT 专业人员,还可以用命令行的方式启动指定用户的某个进程。Linux 系统和 Mac OS 系统有 susudo 命令;Windows 系统有 runas 命令。

◇优点

1. 解决跨站脚本(XSS)的问题
  这个优点跟前两种方案类似,俺就不再啰嗦了。

2. 解决高危插件(Flash)的使用问题
  这个优点跟前两种方案类似,俺就不再啰嗦了。

3. 防范各种浏览器漏洞
  正如刚才提到的——前两种方案(多浏览器、多实例)无法防御浏览器及插件的某些高危漏洞(具备本地执行攻击代码的漏洞)。而“多用户方案”可以大大降低这类漏洞的危害性。使得攻击代码只能威胁到“上网用户”本身,而不会威胁到其它操作系统用户。

◇缺点

1. 初始配置稍嫌麻烦
  相比前面两种方案,这个方案的【初始配置】比较麻烦。而且你要分清楚哪个用户是用来干啥的。不过捏,一旦用久了,习惯了,也就不觉得麻烦了。

2. 无法防范极个别高明的攻击者
  “多用户方案”之所以可以隔离攻击代码,是因为如今所有主流的桌面操作系统,都能够在操作系统层面,对不同的系统用户进行隔离。因为有操作系统层面的隔离,所以才限制了攻击代码的危害性。
  但是,操作系统层面的隔离,也不是百分之百可靠滴。不要忘了,操作系统本身也是软件,也可能出现安全漏洞。在操作系统的安全漏洞中,有一类漏洞叫做“权限提升漏洞”(简称“提权漏洞”)。所谓的“提权漏洞”,顾名思义,就是能够提升【当前执行代码】的权限。比方说,本来攻击代码没有管理员权限,通过”提权漏洞”,就可以拿到管理员权限。
  如果你的操作系统本身存在“提权漏洞”,同时你的浏览器或者插件存在“能够在本地执行代码的漏洞”,那么,高明的攻击者就有可能把这两者组合起来,对你的系统进行组合攻击。
  不过大伙儿别担心——要实现这类组合攻击,需要同时掌握【未公开的】浏览器或插件漏洞,并且还要有【未公开的】操作系统提权漏洞(俺在前文里介绍过,“未公开漏洞”总是比“零日漏洞”更危险)。另外,攻击者还需要做很多准备工作,才能诱使你访问到恶意网页。一般的入侵者根本没有这个本事,也没有耐心去搞这些。反之,有这个本事又有这个耐心的入侵者,通常不会拿这种招数去入侵普通网友(这么做简直是大材小用)。所以,如果你只是一个普通的网友,在前面三个方案中挑选一个,即可。

  估计有些好奇的同学会打听了。什么样的入侵者具有这种实力?什么样的人会成为他们的目标?
  由于本文的篇幅已经很长了,俺稍微调一下列位看官的胃口,在《Web相关的防范(下)》再来八卦这些,同时也介绍一下比“多用户方案”更高级的方案。虽然这种方案很多人用不到,但俺还是会写出来,就当满足一下大伙儿的好奇心 :-)

如何防止黑客入侵[7]:Web相关的防范(下)

文章目录

★【多虚拟机】的方案
★使用浏览器的【安全扩展】
★结尾

  在前文,俺介绍了三种隔离浏览器的方式(多种浏览器、同种浏览器多实例、多操作系统用户)。今天继续介绍第四种隔离方式——虚拟机,然后再推荐一些浏览器的安全扩展。

★【多虚拟机】的方案

◇什么是“虚拟机”?

  本文提到的“虚拟机”,全称是“操作系统虚拟机”。
  最近10年来,硬件水平显著提升,操作系统虚拟化的技术开始普及,出现了若干针对操作系统的虚拟化软件。这种软件可以让你在一台电脑上,同时运行【多个操作系统】(是不是很有趣?)。通过虚拟化软件来运行的操作系统,称之为“虚拟操作系统”;与之对应,你原先的操作系统称之为:真实操作系统或宿主操作系统。
  由于“虚拟操作系统”是虚拟出来滴,你可以在里面为所欲为,而【不会】对真实操作系统产生实质性的影响。比方说,你可以在虚拟系统中把硬盘格式化,但不会影响到你的真实系统。同样的,如果某个虚拟系统被病毒感染了,也不会影响真实系统和其它虚拟系统。

◇什么是“多虚拟机”的方案?

  所谓“多虚拟机”的方案,就是在你的电脑上创建多个虚拟机,分别用来实现【不同安全级别】的上网行为。
  举个例子:
  你可以创建虚拟机A,只用来访问网银(不访问其它网站);然后创建虚拟机B,用来进行其它上网行为。那么,即使你在虚拟机B受到攻击,对虚拟机A也完全没有影响。这样一来,就可以彻底保证网银的安全。

◇为啥要用“多虚拟机”的方案?

前一篇博文提到的三种隔离方案,“多用户”比前两种方案安全。这种方案是基于操作系统提供的用户壁垒——包括:不同用户的进程隔离性、文件系统的访问控制(ACL)、等等。
  但是“多用户”方案还是有缺陷的。如果攻击者同时利用了未公开的浏览器漏洞和未公开的操作系统【提权】漏洞,就有可能攻破操作系统的用户壁垒。不过大伙儿别担心,实现这种攻击的难度比较大,只有足够牛B的入侵者能够做到这点。
  为了满足列位看官的好奇心,稍微介绍一下所谓的牛逼黑客,大都是哪些人。

御用骇客/御用高手
  所谓的“御用高手/御用骇客”,也就是官方资助的入侵者(类似于武侠小说中的大内高手)。这种类型的入侵者,往往不是一个人单干独斗,而是一个团队群殴。
  “御用高手”的目标大致有如下:
  1. 军事目标
军事目标主要有:外国重要的政府机构(比如:五角大楼)、外国重要的军工企业(比如:洛克希德-马丁公司)
俺在前文提到了 RSA 被入侵的案例:攻击者首先利用零日漏洞入侵某个 RSA 公司的雇员,经过深度渗透之后,入侵者搞到了 RSA 动态令牌产品(SecureID)的种子(种子是用来生成动态口令的)。由于 SecureID 产品被许多大公司采用,所以入侵者可以利用偷来的种子算出动态口令,进而实现对美国多家大型军工企业的入侵。
计划得如此严密的系列入侵,通常只有御用黑客团队能够干得出来。
  2. 经济目标
所谓的经济目标,主要都是国外知名的大公司。
通过入侵这些公司,可以窃取商业机密,从而获得巨大的经济效益。
  3. 政治目标
政治目标就比较杂,比如:知名的反共网站、某些知名的政治异议人士的电脑/手机/邮箱/IM、等等。
  举个例子:
  2009年底,Google 被来自中国大陆的攻击者深度渗透(这就是传说中的“极光行动”)。此事直接导致 Google 愤而退出中国市场。根据事后分析,入侵者的注意力集中在某些 Gmail 邮箱的内容。而这些 Gmail 邮箱恰恰属于中国的持不同政见者。由此可见,入侵 Google 的人很可能是朝廷的走狗。

民间高手
  除了御用黑客,也不排除民间有高手。甚至不排除某个御用黑客在业余时间干点脏活。
  和御用高手不同,民间高手的目标相对比较单一,大部分人是为了获取经济利益。

  综上所述,能被这2类人盯上的,往往是高价值目标。如果你只是一个普通网民,不用担心被高手盯上(也就是说,“多用户”的方案基本上可以满足你的安全需求);反之,如果你自认为是一个高价值的目标,或者你对安全的要求非常非常高,不妨尝试一下“多虚拟机”的方案。

◇如何操作?

  刚才已经说了“多虚拟机”的原理,还举了例子。
  如果你已熟悉“虚拟化软件”(比如:VMware 系列、VirtualBox、等)的使用,那么本方案对你来说其实很简单——无非就是安装若干个虚拟操作系统,然后在虚拟系统中安装软件,仅此而已。
  由于本文的重点是防范黑客入侵,所以俺就不再介绍虚拟化软件本身的安装和配置。关于虚拟化软件的扫盲(包括原理、安装、配置、使用),俺已经另写了一个系列(在“这里”)

◇优点

  在4种浏览器隔离方案中,多虚拟机的安全性最高。即使你的某个虚拟机被病毒感染或者被植入木马,也几乎不会影响到你的其它虚拟机和真实系统。
  当然,绝对的安全是不存在滴。虚拟化软件也是软件,只要是软件,就有可能出现漏洞,只要出现漏洞,就有可能被利用。但是,想通过虚拟化软件的漏洞来突破虚拟机的壁垒,难度更大(远远大于突破操作系统的用户壁垒)。这方面的技术细节,说来话长,俺就不展开了。

◇缺点

  对硬件的要求高(主要是物理内存和 CPU)。
  具体要多高的硬件配置,取决于你同时开几个虚拟机。同时运行的虚拟机越多,就需要越大的物理内存和越多的CPU核心。

★使用浏览器的【安全扩展】

  终于把浏览器的话题说完了。接下来再介绍几款安全方面的浏览器扩展。这些扩展可以帮你提高 Web 的安全性。

◇NoScript——同时支持 Firefox & Chrome

简介
  NoScript 是一个名气很大、功能很强的 Firefox 扩展,主页在“这里”。
通过它,你可以定制网站白名单。只有当你浏览白名单内的网站时,才启用浏览器的 JavaScript 脚本功能和插件功能(比如 Flash 插件、Java 插件、PDF 插件、等)。
  白名单只是它的功能之一,更多的功能介绍,请看它的主页。

局限性
  这个扩展可以有效地避免【陌生网站】上的挂马。但是,如果你【经常访问】的网站出现跨站脚本的漏洞,NoScript 有可能帮不了你。
  在前面的博文中,俺曾经举了一个跨站脚本攻击的例子。比如说,你经常上某个 BBS,并且该 BBS 的界面功能依赖于 JavaScript。那么,你就必须把这个 BBS 站点加入到 NoScript 的白名单中。假如这个 BBS 本身出现了基于 JS 的跨站脚本漏洞,那你还是有可能中招 :(

◇NotScripts 与 ScriptNo——专用于 Chrome

简介
  某些用 Chrome 的同学,如果不喜欢刚才提到的 NoScript,可以考虑 Chrome 上的另外两款扩展——跟 NoScript 很像(不但功能很像,连名称也很像)。
  一款叫做 NotScripts,主页在“这里”;另一款叫 ScriptNo,主页在“这里”。
  NotScripts 的用户数比 ScriptNo 略多。至于要选哪个,请大伙儿自行判断。

局限性
  这两款扩展的局限性类似于前一个小节提到的 NoScript,俺就不再啰嗦了。

◇HTTPS Everywhere

  这是著名的电子前线组织(EFF)发布的扩展,主页在“这里”,同时支持 Firefox 和 Chrome。说到 EFF,顺便提一下:Tor & TorBrowser 也是该组织发布的产品。
  如今,有很多网站都同时提供明文的 HTTP 协议和加密的 HTTPS 协议(比如维基百科)。装了 HTTPS Everywhere 扩展之后,如果你浏览的网站支持 HTTPS 协议,该扩展就会强制浏览器通过 HTTPS 协议访问该网站。从技术上讲,就是把所有针对该网站的 HTTP 请求都转换为 HTTPS 请求。
  为啥要强制用 HTTPS 协议捏?因为 HTTPS 是加密协议,可以保护你免受入侵者的嗅探(关于“嗅探”的案例,前面的博文提到过)。
  除了上述功能,HTTPS Everywhere 扩展还可以帮你侦测有问题的 CA 证书,降低“中间人攻击”(MITM)的风险。

局限性
  如果某个网站只有 HTTP 连接,不提供 HTTPS 连接,那 HTTPS Everywhere 也帮不了你。

◇LastPass

简介
  LastPass 名气最大的在线口令管理工具。官网在“这里”,维基百科的介绍在“这里”。
  该工具提供了针对所有主流浏览器的扩展(包括IE、Firefox、Chrome、Opera、Safari、等),帮你自动填写网站的登录口令,免除你记忆诸多口令的麻烦。你本人只需要记住一个【主密码】,LastPass 会利用主密码来加密本地的密码数据库——你的其它口令都存在在该数据库中。
  为了确保安全性,LastPass 进行在线同步时,传输的是加密后的数据库。因此,即使 LastPass 网站被黑,入侵者拿到的也只是加密后的用户口令数据库。同样的,如果有人偷了你的电脑,但不知道你的主密码,也无法打开你的密码数据库。

局限性
  LastPass 的做法相当于把鸡蛋都放在一个篮子里,有好处也有坏处。
  最大的风险在于主密码被盗。一旦主密码被盗,密码数据库中的所有密码就都暴露了。什么情况下会发生主密码被盗捏?比如你的电脑被植入木马,并且此木马具有键盘记录的功能;比如你输入主密码的时候,有人在旁边偷窥;……
  每个人都有很多密码。不过根据二八原理,真正重要的密码不到20%,大部分密码都不太重要。所以俺个人的建议是:少数特别重要的密码,还是靠自己脑子来记;大多数不太重要的密码,可以交给类似 LastPass 之类的口令管理软件。

◇BetterPrivacy

简介
  BetterPrivacy 是一个侧重于隐私保护的 Firefox 扩展,主页在“这里”。
  当你浏览某些网站的时候,网站可能会在你的电脑上记录 cookie。通过这些 cookie,网站可以追踪你的上网行为(比如你多久访问一次这个网站)。
  有了 BetterPrivacy,你就可以配置允许哪些网站记录 cookie。BetterPrivacy 的牛B之处在于:它不光可以控制传统的 cookie,还可以控制 Flash 的 cookie(LSO)。

局限性
  此扩展只针对隐私保护,无法防范扩展脚本等攻击。

  浏览器的安全类扩展,细分为很多领域,数量也很多。限于篇幅,俺仅挑选出每个领域最出名的代表。如果你还有补充的,可以到本文留言

★结尾

  关于 Web 的安全防范,本来只想写一篇。谁曾想,东扯西扯,居然写了三篇。可能有同学会问,为啥没提到杀毒软件和个人防火墙?俺觉得:把这两个话题放到 Web 安全防范中聊,不太合适——还是单独拿出来聊比较好。在本系列后续的博文,会说说杀毒软件和个人防火墙的那些事儿。