如何防止黑客入侵[6]:Web相关的防范(中)
如何防止黑客入侵[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. 无法彻底解决浏览器漏洞和插件漏洞的问题
细心的读者会注意到,刚才那个小节的标题是
某些天真的网友可能会问:浏览器厂商和插件厂商不是会升级补丁吗?但是问题在于,有少数一些漏洞是没有补丁的。为啥会这样捏?请看本系列上一篇《 安全漏洞的基本防范 》,里面介绍了"未公开漏洞"和"零日漏洞"。
不过别担心,俺后面还会介绍更高级的招数,来防范这种情况。
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 都放置于
假设你想创建一个【全新的】Firefox 实例,可以通过如下命令行来启动 Firefox。
上述命令中,
运行完上述命令,Firefox 会启动出一个名叫
按照上述方式依样画葫芦,你就可以启动出任意多个 Firefox 实例。为了省事,你可以把上述命令行做成一个快捷方式,放到桌面上,免得每次都敲键盘。
另外,Firefox 还提供了一个多实例的管理界面,用如下命令可以调出该界面。
多实例的 Chrome
Chrome 类似于 Firefox,也可以通过命令行启动新的实例。
对于 Windows 上的 Chrome,由于 Chrome 安装的时候没让选安装目录,所以其【 exe 的安装目录固定如下 】:
Windows 7 或 Vista 系统
Windows XP 系统
上述的
找到
然后,通过如下命令启动 Chrome,就可以创建出新实例
Vista 或 Windows 7 系统
Windows XP 或 Win 2003 系统
按照上述方式依样画葫芦,你就可以创建出任意多个 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 系统有
1. 解决跨站脚本(XSS)的问题
这个优点跟前两种方案类似,俺就不再啰嗦了。
2. 解决高危插件(Flash)的使用问题
这个优点跟前两种方案类似,俺就不再啰嗦了。
3. 防范各种浏览器漏洞
正如刚才提到的——前两种方案(多浏览器、多实例)无法防御浏览器及插件的某些高危漏洞(具备本地执行攻击代码的漏洞)。而“多用户方案”可以大大降低这类漏洞的危害性。使得攻击代码只能威胁到“上网用户”本身,而不会威胁到其它操作系统用户。
1. 初始配置稍嫌麻烦
相比前面两种方案,这个方案的【初始配置】比较麻烦。而且你要分清楚哪个用户是用来干啥的。不过捏,一旦用久了,习惯了,也就不觉得麻烦了。
2. 无法防范极个别高明的攻击者
“多用户方案”之所以可以隔离攻击代码,是因为如今所有主流的桌面操作系统,都能够在操作系统层面,对不同的系统用户进行隔离。因为有操作系统层面的隔离,所以才限制了攻击代码的危害性。
但是,操作系统层面的隔离,也不是百分之百可靠滴。不要忘了,操作系统本身也是软件,也可能出现安全漏洞。在操作系统的安全漏洞中,有一类漏洞叫做“权限提升漏洞”(简称“提权漏洞”)。所谓的“提权漏洞”,顾名思义,就是能够提升【当前执行代码】的权限。比方说,本来攻击代码没有管理员权限,通过"提权漏洞",就可以拿到管理员权限。
如果你的操作系统本身存在“提权漏洞”,同时你的浏览器或者插件存在“能够在本地执行代码的漏洞”,那么,高明的攻击者就有可能把这两者组合起来,对你的系统进行组合攻击。
不过大伙儿别担心——要实现这类组合攻击,需要同时掌握【未公开的】浏览器或插件漏洞,并且还要有【未公开的】操作系统提权漏洞(俺在 前面的帖子 里介绍过,“未公开漏洞”总是比“零日漏洞”更危险)。另外,攻击者还需要做很多准备工作,才能诱使你访问到恶意网页。一般的入侵者根本没有这个本事,也没有耐心去搞这些。反之,有这个本事又有这个耐心的入侵者,通常不会拿这种招数去入侵普通网友(这么做简直是大材小用)。所以,如果你只是一个普通的网友,在前面三个方案中挑选一个,即可。
估计有些好奇的同学会打听了。什么样的入侵者具有这种实力?什么样的人会成为他们的目标?
由于本文的篇幅已经很长了,俺稍微调一下列位看官的胃口,在《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。
"{PATH}\firefox.exe" -P "XXXX" -no-remote
{PATH}
表示你的 Firefox 的【安装目录】。
XXXX
表示你要创建的【实例名】(实例名可以是任意字母组合,你也可以把
XXXX
改成其它名称)。 运行完上述命令,Firefox 会启动出一个名叫
XXXX
的实例。与此同时,在
%APPDATA%\Mozilla\Firefox\Profiles
下会多出一个名叫
XXXX
的目录。 按照上述方式依样画葫芦,你就可以启动出任意多个 Firefox 实例。为了省事,你可以把上述命令行做成一个快捷方式,放到桌面上,免得每次都敲键盘。
另外,Firefox 还提供了一个多实例的管理界面,用如下命令可以调出该界面。
"{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 系统
C:\Users\{USER}\AppData\Local\Google\Chrome\Application\chrome.exe --user-data-dir="X:\XXXX\"
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 系统有
su
或
sudo
命令;Windows 系统有
runas
命令。 ◇优点
1. 解决跨站脚本(XSS)的问题
这个优点跟前两种方案类似,俺就不再啰嗦了。
2. 解决高危插件(Flash)的使用问题
这个优点跟前两种方案类似,俺就不再啰嗦了。
3. 防范各种浏览器漏洞
正如刚才提到的——前两种方案(多浏览器、多实例)无法防御浏览器及插件的某些高危漏洞(具备本地执行攻击代码的漏洞)。而“多用户方案”可以大大降低这类漏洞的危害性。使得攻击代码只能威胁到“上网用户”本身,而不会威胁到其它操作系统用户。
◇缺点
1. 初始配置稍嫌麻烦
相比前面两种方案,这个方案的【初始配置】比较麻烦。而且你要分清楚哪个用户是用来干啥的。不过捏,一旦用久了,习惯了,也就不觉得麻烦了。
2. 无法防范极个别高明的攻击者
“多用户方案”之所以可以隔离攻击代码,是因为如今所有主流的桌面操作系统,都能够在操作系统层面,对不同的系统用户进行隔离。因为有操作系统层面的隔离,所以才限制了攻击代码的危害性。
但是,操作系统层面的隔离,也不是百分之百可靠滴。不要忘了,操作系统本身也是软件,也可能出现安全漏洞。在操作系统的安全漏洞中,有一类漏洞叫做“权限提升漏洞”(简称“提权漏洞”)。所谓的“提权漏洞”,顾名思义,就是能够提升【当前执行代码】的权限。比方说,本来攻击代码没有管理员权限,通过"提权漏洞",就可以拿到管理员权限。
如果你的操作系统本身存在“提权漏洞”,同时你的浏览器或者插件存在“能够在本地执行代码的漏洞”,那么,高明的攻击者就有可能把这两者组合起来,对你的系统进行组合攻击。
不过大伙儿别担心——要实现这类组合攻击,需要同时掌握【未公开的】浏览器或插件漏洞,并且还要有【未公开的】操作系统提权漏洞(俺在 前面的帖子 里介绍过,“未公开漏洞”总是比“零日漏洞”更危险)。另外,攻击者还需要做很多准备工作,才能诱使你访问到恶意网页。一般的入侵者根本没有这个本事,也没有耐心去搞这些。反之,有这个本事又有这个耐心的入侵者,通常不会拿这种招数去入侵普通网友(这么做简直是大材小用)。所以,如果你只是一个普通的网友,在前面三个方案中挑选一个,即可。
估计有些好奇的同学会打听了。什么样的入侵者具有这种实力?什么样的人会成为他们的目标?
由于本文的篇幅已经很长了,俺稍微调一下列位看官的胃口,在《Web相关的防范(下)》再来八卦这些,同时也介绍一下比“多用户方案”更高级的方案。虽然这种方案很多人用不到,但俺还是会写出来,就当满足一下大伙儿的好奇心 :-)
回到本系列的目录
版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者 编程随想 和本文原始地址:
https://program-think.blogspot.com/2012/09/howto-prevent-hacker-attack-6.html
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者 编程随想 和本文原始地址:
https://program-think.blogspot.com/2012/09/howto-prevent-hacker-attack-6.html
文章版权归原作者所有。