如何防止黑客入侵【0-4】
如何防止黑客入侵[0]:概述
上回俺在“如何隐藏踪迹,避免跨省追捕”系列中,谈到了操作系统的安全防范,其中有一个很重要的环节,就是防止自己的电脑被黑客入侵。当时由于篇幅有限,没有展开讨论。所以,今天就把这个话题补上。
防范黑客入侵,会涉及到不同方面的话题。因此,俺打算每个话题写一个帖子。有些话题,除了涉及技术领域,还会涉及非技术领域(也就是社会工程学)。对“社会工程学”不太熟悉的同学,可以先翻墙看“这里”,扫盲一下。
另外,本系列面向不太熟悉计算机安全的网友,因此行文会比较啰嗦。懂行的网友,请自行略过,以免浪费宝贵的时间。
为了方便阅读,把本系列帖子的目录整理如下(需翻墙):
1. 避免使用高权限用户
2. 攻击者如何搞定你的口令/密码?
3. 如何构造安全的口令/密码?
4. 安全漏洞的基本防范
5. Web相关的防范 (上)
6. Web相关的防范 (下)
7. ……
原文:http://program-think.blogspot.com/2010/06/howto-prevent-hacker-attack-0.html#index
========
如何防止黑客入侵[1]:避免使用高权限用户
为啥俺把这个话题列在头一条?——因为这是个非常普遍、且远远没有得到重视的问题。根据俺的经验,如果你能够养成好习惯,不使用高权限用户(尤其是管理员)进行日常操作,就可以大大降低被黑的概率。下面,俺就来具体介绍一下。
★基本概念扫盲
考虑到本文是面向外行人士,先进行一下名词解释。
◇用户权限
所谓的“用户权限”,通俗地说,就是某个用户的权力有多大。权力越大,能干的事情越多。
◇用户组
用户组,顾名思义,就是一组用户的集合。
在主流的操作系统中,“用户权限”通常是和“用户组”挂钩滴。针对不同的用户组,分配了不同的权限。
为了让用户省事儿,Windows系统内置了若干用户组(比如:Users、Power Users、Guests、等)。这些内置的用户组,事先已经预定义好若干用户权限。
◇高权限用户
本文提及的“高权限用户”,主要是指Windows系统中Administrators组的用户或POSIX系统中root组的用户。
另外,顺便消除一个误解。很多菜鸟以为:Windows系统中,只有用户名为“Administrator”的用户才具有管理员权限。其实捏,任何一个用户,即使用户名不叫“Administrator”,只要是属于“Administrators组”,也同样具有管理员权限。
★反面教材
菜鸟的例子就不提了,光说说俺接触过的很多程序员吧。这帮家伙在使用Linux/Unix系统进行开发时,都晓得应该用普通用户的帐号进行操作;当需要 做某些高级权限的操作,再切换到管理员帐号(root帐号)。但即便是这些开发人员,在自己的Windows系统中,却喜欢用管理员 (Administrator)进行日常操作,实在是很讽刺。
如果连IT专业的开发人员都这样,那不懂IT技术的外行人士,就可想而知了。
★危害性
如果你平时总是用管理员权限登录到系统并进行日常工作,那就意味着你所运行的每一个程序,同时也具有了管理员权限。要知道,管理员权限的权力是很大的,几乎可以干任何事情。
假设你有上述习惯。某天,你从网上下载了一个软件,且软件已经感染了病毒。那么,当你运行这个软件时,这个病毒就会被激活。要命的是,它也同样具有管理 员权限。这时,病毒就获得了和杀毒软件平起平坐的地位。假如这个病毒的作者水平再高一些,甚至可以骗过杀毒软件或者直接把杀毒软件干掉。
除了病毒,木马也是一样。假设你上网的时候,一不留神访问了某个挂马的网站。一旦木马被激活,也同样是以管理员的权限运行,危害同样也巨大。
★你该如何做?
考虑到Windows系统的用户占绝大多数,俺就光拿Windows系统来说事儿。希望Linux和Max OS的fans不要见怪。
为了尽量少用高权限用户。你最好刚装好系统之后,单独创建一个非管理员用户。
考虑到有些同学不了解这两个用户组,在权限方面与管理员有啥区别。俺简单列举一下。
◇Power Users组与Administrators组的差别
相对于Administrators组,Power Users组缺少了如下几项权限(俺只列主要的):
1、不能添加、删除、禁用系统中的其它用户。
2、不能修改其它用户的属性(包括口令、所属的用户组、等)
3、不能安装/卸载硬件驱动程序。
4、不能安装/卸载某些应用软件。
5、不能查看系统的安全日志。
◇Users组与Administrators组的差别
User组的权限比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、用鼠标选中该快捷方式,在快捷菜单(右键菜单)中,选择“属性”菜单项。出现如下对话框。
◇安装软件/驱动的麻烦
最主要的问题就是安装软件和安装驱动。安装驱动程序通常需要用管理员权限才行;另外,很多软件(比如Office)在安装时,也要求用管理员权限的用户进行安装。
俺的建议是:
在刚装好系统之后,先用管理员用户把上述这些软件/驱动程序都搞好。然后,就无需再用管理员用户了。毕竟你经常使用的软件相对固定,不可能三天两头安装 软件或驱动(除非你是软/硬件发烧友)。即便偶尔需要重新装个软件或驱动,也可以用上述介绍的方式,临时切换到管理员权限。
◇修改系统时间的麻烦
如果你平时用的是“Users组”而不是“Power Users组”,那你连修改系统时间的权限也没有。
俺的建议是:
启用Windows系统自带的时间同步服务,让它帮你自动同步系统时间。
除了上述这几点,如果还有谁碰到其它的麻烦,也欢迎来信跟俺交流。俺会补充到本文中。本系列的下一个帖子,将会介绍攻击者是如何搞定你的口令/密码。
原文:http://program-think.blogspot.com/2010/06/howto-prevent-hacker-attack-1.html
========
如何防止黑客入侵[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普及之后,暴力破解的效果会越来越好。除非你的密码很强,才能彻底消除暴力的风险。
由于这种攻击手法,需要进行成千上万次的试错,所以比较适合针对本地应用的口令(比如破解加密的压缩文件),而不太适合对网络应用进行在线口令破解。
在下一个帖子,俺会介绍《如何构造安全的口令/密码》。
◇网络传输截获(嗅探)
在这种方式下,攻击者会通过嗅探的方式,分析你的上网数据。如果你在上网过程中,存在明文传输的口令,就会被截获。
非安全专业的网友,可能不太明白什么是“嗅探”,俺来稍微解释一下。攻击者会利用某些嗅探软件,收集网络上传输的所有数据。这个过程好比电话窃听。嗅探软件类似于窃听器;你的上网数据类似于电话的通话内容。
这几年,随着现在无线网络(Wi-Fi)的普及,网络嗅探的风险大大增加,列位看官切不可掉以轻心哦。
◇客户端截获
所谓“客户端截获”,通常是针对网络应用的口令而言。举几个例子。
例1:
很多网友上网时,为了免去输入口令的麻烦,会让浏览器帮忙记住口令。通常浏览器会把这些口令保存在某个文件中(可能以明文方式,也可能以密文方式)。如 果某天你的电脑中了木马,那么木马程序有可能会盗走这个保存口令的文件。然后攻击者就可以通过分析该文件,破解出你保存过的所有网络应用的口令。
例2:
如果你是软件公司的开发人员,多半你会使用某种源代码版本管理工具(比如SVN、CVS、等)。为了免去每次操作时输入口令的麻烦。通常开发人员会让这 些客户端软件记住用户名和口令。如果哪天你中了木马或者电脑被盗,那么攻击者同样可以破解你保存下来的口令,进而用你的身份盗取源代码。
◇服务端截获
和“客户端截获”方式相对的,还有“服务端截获”。具体是啥意思捏?俺来解释一下。
凡是利用口令进行验证的软件系统,都需要存储和口令相关的信息。否则的话,软件系统就无法验证用户输入的口令,到底是不是正确的。如果攻击者能够拿到这些口令的关联信息,那他/她就有可能分析出口令是啥。
(如果你不是搞IT专业的,下面这段可能看不太明白)
通常用三种方式来存储口令的关联信息:1、存储口令的明文;2、存储口令经过加密后的密文;3、存储口令的散列值。第一种方式是最土鳖的,稍微先进一些 的系统,都不会用了。后面两种方式,虽然看不到明文,但是攻击者还是有办法通过相应的算法,反推出口令的明文。具体细节,本文就不再多说了。
那攻击者如何获得存储在软件系统的口令关联信息捏?其实前面提到的RockYou网站的杯具,就是一个很好的例子。俺再举另一个例子。
比如:某个Linux/Unix服务器存在安全漏洞,攻击者利用此漏洞搞到了“/etc/shadow”文件。那么攻击者就可以采用上述提到的暴力破解的招数,攻破该服务器上所有强度较弱的口令。
★攻击者如何通过“非技术”手段搞定的你的密码?
说完了技术手段,自然就得再说说非技术手段。所谓的非技术手法,也就是社会工程学手法(关于社会工程学的扫盲,请看“这里”)。用于盗取密码的社会工程学手法,大概有如下几种。
◇偷窥
偷窥是最简单的一种社会工程学攻击手法。虽然简单,但是有效。比如很多盗取银行卡的家伙,就是偷窥的手法,得到被害人的银行卡密码。
◇钓鱼
另外一个骗取口令的方式,就是通过网络钓鱼。比如某些攻击者,会伪造一个银行的网站。其界面和真实的网站一模一样。然后通过某种方式(比如:虚假链接、 欺诈邮件、DNS欺骗、等),引诱你到这个网站上。由于假网站和真网站的界面很像,你可能信以为真,然后在假网站中输入你的用户名和密码。
有些高明的钓鱼网站,会采用类似Web代理的技巧:把你的所有输入操作,转而提交给真网站;然后把真网站输出的界面,再转回给受害者看。这样的话,受害者就跟在真实网站进行插作,没啥区别,不易看出破绽。
更多关于网络钓鱼的介绍,可以参见“这里”。
◇分析
如果攻击者对你比较了解,那么他有可能通过深入的分析,攻破你的口令防护。是不是觉得很神奇?很匪夷所思?其实这种招数很常见,且不算太难。俺来举个例子。
相信很多网友都用过电子邮箱的找回口令功能。当你口令遗忘之后,可以通过回答事先预设的问题,来找回口令。很多不太专业的用户,预设的问题都很简单(比 如:你的手机号是多少?比如:你的生日是哪天?)。对于这类过于简单的问题,攻击者可以很容易地找到答案,从而窃取到你的邮箱口令。
◇欺骗
最近几年,通过电话诈骗,骗取银行卡密码的案例越来越多。这种作案手法,就属于社会工程学中,“欺骗”的范畴。其实在IT领域,某些黑客也会利用这种手法来获取口令。具体的一些欺骗的伎俩,可以参见俺之前的“社会工程学系列”帖子。
★结尾
介绍到这里,列位看官对黑客盗取口令的手法,应该有一个初步的认识了。本系列的下一个帖子,具体介绍如何构造安全的口令/密码。
原文:http://program-think.blogspot.com/2010/06/howto-prevent-hacker-attack-2.html
========
如何防止黑客入侵[3]:如何构造安全的口令/密码
在上一个帖子,俺介绍了攻击者,是如何攻破口令这道关口的。为了避免口令被轻易地破解,有必要了解构造安全密码的技巧。所以,今天就来介绍此话题。
★不要共用口令/密码
俺发现有相当多的同学喜欢靠一个口令包打天下。这是相当相当危险的事情。同一个口令,用的场合越多,则泄密的危险越大。而一旦泄露,你的安全防线就会全面崩溃。
所以,今天要讲的头一个要点,就是绝对不要在所有(大多数)场合,使用同一个口令。
★密码的分级机制
由于共用口令存在很大的风险,比较稳妥的办法就是——每一个场合仅使用一个密码。但是很多人会抱怨说:这样会很繁琐,增加了很多的麻烦。那如何才能做到既安全,又不太麻烦捏?这就要引入密码的分级机制。
根据安全圈内一个人所共知的常识:越安全的措施,通常也就越麻烦,成本也高;反之亦然。另外,根据二八原理,非常重要口令毕竟只占少数。所以,就像电影要有分级机制一样,你的密码/口令也要引入分级的概念。通过分级机制,对大多数不太重要的口令,可以采取简化的安全措施;而对少数重要的口令,采取高度安全的措施。
下面,就来介绍一下,如何对不同的口令,进行分类。
◇第1级:不重要的口令
所谓不重要的口令,就是说万一被盗了或者忘记了,对你没啥损失。
比如,俺经常碰到一些土鳖的论坛,只允许注册会员从上面下载附件。因此俺就经常临时注册一个账号,然后登录上去下载东西。这类账号,基本上都属于一次性的(用完即扔),所以重要程度很低。
对于那些不重要的口令,基本上不用考虑太多安全性的因素。随便设置一个即可。
◇第2级:重要但少用的口令
对于重要的口令,还要根据其使用的频繁程度,再区别对待。有些口令虽然重要,但是使用的频度很低。由于这类口令很少使用,所以设置得麻烦一些,问题也不大。
比如俺管理的一些研发的服务器(比如源代码服务器),其重要程度非常高,但是平常基本无需登录。
◇第3级:重要且频繁使用的口令
最后这类口令,既重要,又经常用。所以,设置这类口令就比较讲究。要同时兼顾安全性和易用性。
比如自己日常使用的操作系统用户密码,就属于此类。
★一些反面教材——脆弱的密码举例
说完了分级机制。接下来俺先列举一些反面教材,让大伙儿看看,啥样的口令算是脆弱的?(顺便说一下:2011年底,国内各大网站纷纷被脱库,大量用户口令侧漏。俺专门写了一篇博文,分析国内用户的口令习惯)
◇口令和用户名一样
无需多说,这种情形的口令,非常脆弱。
◇口令是一串简单数字
在上一个帖子,俺举了RockYou网站用户数据被盗的案例。在该网站3200万用户中,最受欢迎的十大弱智口令分别是:
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个。即便把不同的日期表示格式考虑进去,也多不了几倍。在这个数量级上,对于暴力破解工具而言, 还是小菜一碟。
◇其它的烂口令
上述列举的这几种情况,大伙儿一定要避免。另外,你还可以去围观一下某老外整理的一个滥口令大全(这老外真有耐心)。不过这个列表是根据欧美用户统计的,未必适合中国的国情。
★如何构造复杂的密码?
前面已经说了:口令太简单,容易被破解。但是太复杂的话,万一自己也忘了,那可就完蛋了。所以,很多网友都纠结于口令到底该复杂到什么程度。俺的经验是:口令要做到对自己简单,对别人复杂。
下面就来介绍俺在这方面的经验。
◇用多个单词构成词组
前面提到,如果用单个英文单词作密码,容易遭受字典攻击。为了避免字典攻击,可以考虑由2-5个英文单词构成密码。如果你英语不灵光或你比较习惯中文,也可以考虑用2-5个汉字的拼音来构成密码。
优点是:
由于能显著增加密码长度,可以抗击暴力破解。
缺点是:
有可能需要改变你记忆密码的习惯。
口令中仅包含字母,复杂度不够高。
◇插入特殊字符
刚才提到了用多个单词或汉字拼音构造密码。为了让密码的强度再好一些,还可以在单词或汉字拼音之间,插入一些特殊字符。
最常见的是插入空格。当然,你也可以考虑插入其它字符(比如:下划线、减号、斜杠、井号、星号、等)。
通常进行暴力破解时,为了加快破解进度,都只针对字母和数字进行暴力破解。如果你的口令中含有特殊字符,会大大提高攻击者的难度。
优点是:
由于口令包含较多特殊符号,复杂度大大提高。
缺点是:
很多特殊字符的输入,要依赖于SHIFT键辅助,会影响你输入密码的击键速度。这会给偷窥者留下可乘之机。
◇字符变换
所谓的字符变换,就是用形状类似的字母和数字进行相互替换,通过这种变换,可以规避前面提到的基于口令字典的攻击。
常见的变换有如下几种:
字母o 和 数字0
字母l 和 数字1
字母z 和 数字2
字母s 和 符号$
字母g 和 数字9
字母q 和 数字9
字母a 和 符号@
字母b 和 数字6
字母x 和 符号*
假设俺想用单词 program 作为口令,那么经过上述的变换之后,就成为 pr09r@m 很明显,变换之后的口令同时具有字母、数字、符号。强度相当好 :)
如果你有兴趣,还可以对俺给出的这几个变换,进行扩展,以满足自己的习惯和喜好。
优点是:
不用改变你原先的记忆习惯。
由于口令包含较多特殊符号,复杂度大大提高。
缺点是:
如果你想好的口令中,恰巧所有字母都没有对应的变换,那就比较不爽啦。
◇键位平移
这个招数也比较简单,就是在进行键盘输入时,把手向右平移一个键位。通常咱们在盲打时,两只手的食指分别对着字母F和字母J。平移之后,则食指对着G和K。
假设俺想用单词 program 作为口令,那么经过上述的变换之后,就成为 [tphts, 经过这种输入法,口令已经面目全非。但是对你自己来说,并不难记。
优点是:
不用改变你原先的记忆习惯。
口令看起来完全没规律。
缺点是:
依赖于QWERT的键盘布局。万一哪天你想在非QWERT键盘(比如某些手机键盘)上输入口令,那你就歇菜了。
◇藏头诗
在某些古代小说的情节中,经常可以看见藏头诗的桥段。藏头诗的点子,也可以借用来构造安全口令。
为了用此招数,你先要想好一句令你印象深刻的话。这话可以是中文,也可以是英文、法文、火星文……反正只要是你熟悉的语言既可。最好这句话的字 数(单词数)在6-20之间。然后你把这句话每一个单词的头一个字母取出来,组合成一个口令。如果是中文的话,就把每一个字的拼音的声母取出,组合成口 令。
假设俺想好的话是:只有偏执狂才能生存。那么用拼音的声母表示就成为:zypzkcnsc
优点是:
不用改变你原先的记忆习惯。
口令看起来完全没规律。
缺点是:
口令中仅包含字母,复杂度不够高。
如果句子中的字数(单词数)不够多,效果就不够好。
对于港台的同学,由于没学过汉语拼音,只好用英文的藏头诗了。好在港台的英语教育通常比大陆好,应该关系不大 :-)
◇巧用SHIFT键
在构造口令的时候,适当地组合一下SHIFT键,有时也可以达到不错的效果。假如你的口令中,有部分字符是数字,那当你输入口令时,按住SHIFT键会让这些数字字符变为特殊符号。
优点是:
不用改变你原先的记忆习惯。
由于口令包含较多特殊符号,复杂度大大提高。
缺点是:
万一你原先的口令仅有字母,没有数字,则密码的强度会稍微打折扣。
由于要依赖于SHIFT键进行切换,会影响你输入密码的击键速度。这会给偷窥者留下可乘之机。
◇运用数学等式
还有一种又好记,看起来又复杂的密码构造方式——运用数学等式。
比如,俺的密码可以设计成:
7+8=15
虽然只有6个字符,但是由于包含了符号,已经有一定的强度。如果你觉得6字符太少,还可以很容易增加,比如改为:
110+9=119
如果你觉得还不够复杂,还可以搞得再变态一点——把某个数用英文表示。比如:
two+7=nine
优点是:
密码同时包含了字母、数字、符号。标准的高复杂度!
缺点是:
需要改变你记忆密码的习惯。
一旦你的口令被别人看到,别人很容易就可以发现你构造口令的规律。
◇利用散列值(哈希值)
最后,来说一种俺的看家本领——利用散列值构造口令。
不熟悉IT技术的同学,可能不了解散列值是啥玩意儿。俺不想多浪费口水解释,好奇的同学请看维基百科的介绍。
为了构造基于散列值的密码,俺建议大伙儿选用的是CRC32散列算法。为啥用它捏?因为这玩意儿用起来比较方便。比如,假设俺想得到某个文件的 CRC32散列值,只要用WinRAR或7-Zip等压缩工具,把它压缩成zip格式的文件,然后就可以看到该文件的CRC32值了(因为zip格式用 CRC32散列算法作为文件的校验码)。不信你随便拿手头一个zip格式的文件打开来看看就明白鸟。
现在,详细说一下基于散列值的密码如何构造。
首先,你先想好一个字符串,作为计算散列的种子。这个字符串不需要很复杂,也不需要很长。比如,你叫张三,那你可以拿张三的拼音声母zs作为种子串。
假设你有一个hotmal的邮箱,需要设置口令。你可以先用notepad生成一个txt文件。里面先写上种子串sz再写上hotmail,存盘。然后把这个txt文件用工具压缩成zip格式,看一下它的CRC32校验码(是9C9041C0),然后就拿它作为密码。
如果你再有一个gmail邮箱需要设置口令,只要同样地,往那个txt文件写入zsgmail,然后计算CRC32,既可以得到另外一个值(03B2F77D)。大伙注意到没有?这两个值看起来没有任何关联性,而且从这两个口令,也看不出和种子串zs有啥关系。
优点是:
密码同时包含了字母、数字,但是没有特殊符号。复杂度属于中高!
由于散列值具有随机性。也就是说,你看到的绝大多数散列值都没啥规律。
由于散列值具有不可逆性。也就是说,即便有一个密码暴露了,攻击者也看不出规律。
即使有一个密码暴露,别人完全看不出规律。
如果把CRC算法换成其它算法(比如MD5或SHA-1),可以轻易构造出超长的密码(32个字符)。
缺点是:
这种密码是完全随机的,不是常人所能记住滴。所以,在密码分级机制中,它仅适合第二级的密码。第三类密码没法这么玩。
★结尾
今天又花了不少篇幅,总算把俺平生积累的,关于如何构造复杂密码的经验,都讲完了。如果哪个网友还有其它独到的经验,希望来信和俺分享。如果俺觉得实用,也会补充到本文中。
本系列的下一个帖子,会说说安全漏洞的基本防范。
原文:http://program-think.blogspot.com/2010/06/howto-prevent-hacker-attack-3.html
========
如何防止黑客入侵[4]:安全漏洞的基本防范
前面用2个帖子来介绍口令方面的安全(在“这里”和“这里”)。今天开始介绍和安全漏洞相关的东东。考虑到俺博客的读者群,本文主要面向Windows桌面操作系统,并且尽量说得浅显一点。如果你对安全已经比较熟悉,可以跳过本文,以免浪费时间。
★几个基本概念
◇什么是漏洞?
所谓的“漏洞”,简单来说,就是会引起各种问题的软硬件缺陷(IT的行话叫Bug)。要知道,任何东西都不可能是完美的,软硬件系统也不例外(毕竟开发软硬件系统的程序员/工程师,也是凡人,也会有出错的时候)。
◇什么是安全漏洞?
在上述提到的缺陷中,那些会被攻击者加以利用的,并因此导致安全问题的缺陷,就是所谓的“安全漏洞”。
◇什么是补丁?
补丁是一个很形象的说法。如果你衣服破了个洞,只要打个补丁,不需要把整件衣服换掉。同样的,如果你的某个软件有漏洞,也只要打一个补丁,不需要重新安装新版本的软件。大多数情况下,补丁和漏洞是配套的。
◇什么是攻击程序?
为了利用某个安全漏洞,黑客需要运行某个程序,这个程序就叫做攻击程序(或叫“攻击代码”)。攻击程序和补丁之间的关系,就好比矛和盾之间的关系。
★安全漏洞的分类
除了上述的基本概念,你还需要大致知道安全漏洞的分类方式。
◇按照所在软件的类型分类
根据出现漏洞的软件的类型,可以把漏洞分为“操作系统漏洞”和“应用软件漏洞”两类。
所谓的“操作系统漏洞”,就是操作系统本身有的安全缺陷。
所谓的“应用软件漏洞”,就是你安装的软件所内含的安全缺陷。
◇按照攻击代码的位置分类
针对攻击程序所处的位置,可以把漏洞分为“远程漏洞”、“本地漏洞”两类。
所谓的“远程漏洞”,就是说,攻击者只需要在另外一台机器运行攻击程序,就可以让你的电脑中招。
所谓的“本地漏洞”,就是攻击者的攻击代码必须在你的机器上执行。
★漏洞的防范措施
针对漏洞的这几种不同分类,俺分别介绍一下几种基本的、常见的防范方式。
◇个人防火墙
个人防火墙主要用于防范“远程漏洞”,对于“本地漏洞”,防火墙基本帮不上忙。
因为大多数远程漏洞,都存在于你机器对外开启的监听端口中。个人防火墙可以阻止这些端口对外开放,从而避免潜在的漏洞被攻击者利用。
自从Windows 2000开始,微软就在操作系统中内置了防火墙功能。对于Windows XP以及之后的版本,可以直接到控制面板中开启它。
另外,你也可以安装第三方的防火墙软件。俺建议安装国外的产品,比如Kaspersky(卡巴斯基)的KIS、Symantec(赛门铁克)的Symantec Endpoint Protection、ZoneAlarm等。不要用国内的防火墙产品。不要怪俺崇洋媚外,具体原因可以参见俺之前的帖子(在“这里”)。
如果你的电脑只是用来上上网、聊聊天、看看电影、用用办公软件,那你完全可以把防火墙设置成,不开放任何对外的端口。这样,即便你的电脑中存在远程漏洞,也不易被攻击者利用。
◇定期升级系统补丁
Windows系统的漏洞一直比较多——毕竟用户群太大,容易被黑客盯上。所以从很多年以前,微软就开始定期提供Windows补丁。具体的做法是每月的第二个星期二,发布新发现的漏洞的补丁。另外,如何发现高危的漏洞,也会临时发布紧急补丁。
从Windows 2000开始,系统就支持自动的补丁升级机制。你只要在“控制面板”里打开“自动更新”这个功能,然后选择“自动”方式。你一定要确保系统的”自动更新”机制处于启用状态。这就可以堵住很多操作系统漏洞,从而降低攻击的风险。
自动更新不是Windows独有滴。另外一些用户群相对较大的Linux桌面系统(比如Ubuntu)也提供了自动更新安全补丁的功能。如果你用的是这类系统,也可以
◇启用软件的自动更新
有一些做得比较好的软件,会内置自动更新功能(比如Firefox、Google Toolbar、等),一旦其官方网站有新的版本或补丁,就会自动下载并更新。如果你担心这类软件有安全问题,可以启用它们的自动更新功能。
◇使用小众软件
俗话说树大招风。越知名的软件,就越容易引来黑客的注意,被发现安全漏洞的概率也会增大。
比如说:IE的用户群最大,针对IE漏洞的挂马攻击是各种浏览器中最普遍的;Firefox相对就少很多;而Chrome和Safari就更少了。
再比如说:同样的PDF的阅读器,Adobe Reader被曝光的漏洞就比较多,相对而言,“Foxit Reader”和“PDF-XChange Viewer”就没这么多问题。
关于安全漏洞的基本防范,今天就聊到这里。考虑到近年来,针对Web攻击的情况剧增,本系列的下一个帖子想来说一下Web相关的话题。
版权声明
本博客所有的原创文章,作者皆保留版权。转载必须包含本声明,保持本文完整,并以超链接形式注明作者编程随想和本文原始地址:
http://program-think.blogspot.com/2010/08/howto-prevent-hacker-attack-4.html
如果你平时总是用管理员权限登录到系统并进行日常工作,那就意味着你所运行的每一个程序,同时也具有了管理员权限。
——————————————————————————————————————————————————
win7在很大程度上解决了这个问题,很多软件需要右键>以管理员身份运行。这个比XP好多了。