Linux Shadow-Password-HOWTO - 2. 为何shadow你的pa

大部分目前;Linux;发行版本预设值并未包含Shadow;Suite;安装 。这些版本包括;Slackware;2.3,;Slackware;3.0;和其他受欢迎的发行版本 。主要原因之一是在原始Shadow;Suite版权声明中并未很清楚的描述该软体是否需使用者付费 。;Linux;使用;GNU;版权通常允续使用者可免费且任意使用相关套件 。;


Shadow;Suite现在维护人员;Marek;Michalkiewicz;已经可以从在;BSD;样式允需再使用版权之原始作者那接收原始码 。;目前版权发行已解决,因此可以预期在未来版本之预设值将包括;password;shadowing 。;即使如此,你仍需要自行安装 。;


如果你的版本是从;CD-ROM;安装 。你可能发现即使目前版本并未有Shadow;Suite;安装,但你仍然可以在该片;CD-ROM;找到你需要安装的Shadow;Suite 。;


然而,所有Shadow;Suite;3.3.1,;3.3.1-2;版本和;shadow-mk;伴随签入(login)程式和其他suid;root程式均有安全上问题,因此不应该使用太久 。;


所有必要档案均可以透过匿名;FTP;站或网站找到 。;

在没有安装Shadow;Suite的;Linux;系统,包括密码的帐号使用者资讯通常储存在;/etc/passwd;档 。储存的密码为;加密(encrypted)格式 。;然而,如果你问一个密码专家,他/她将告诉你真正的密码档只是编码(encoded)而不是加密格式,因为当使用;crypt(3);时,文字档倍设为;null;且密码是键值(key) 。;因此,接下来我将在这篇文件中使用;编码 。;


使用在密码栏位编码的演算法於技术上是使用one;way;hash;function 。这是一个在单一方向计算简单但逆向计算非常困难的演算法 。关於这正确的演算法可以在;2.4;节或於;crypt(3);操作手册找到 。;


当使用者挑选或指定一个密码,系统将随机产生一个值,叫做salt,将密码进行编码 。;这表示任何特定的密码可以;4096;中不同方法储存 。;salt;值将储存被编码的密码; 。;

当使用者签入或提供一个密码,;salt;首先接收欲储存编码密码 。然後这提供密码会和;salt;值一起编码,且比较已经编码密码 。如果有;match;,该使用者通过权限检查 。;


随机编码和复原原始密码是有计算复杂度的(但不是不可能的) 。然而,在某些系统很多使用者的密码都设为一般文字(或是一般文字的简单变化);


系统骇客知道这件事,且将简单的加密文字和一般使用4096;salt;值密码之目录 。然後他们将比较在资料库之;/etc/passwd;档之编码密码,只要他们找到一个比对,他们可以找到一个帐号之密码 。这和dictionary;attack有关,且用於未经许可存取系统取得和展开常用的方法之一 。;


如果你想过一个;8;码的密码编码成;4096;*;13;码的字串,那麽一个用在描述;400,000;一般文字、名字、密码和简单变化的字典将需要;4GB;硬碟存取空间 。;骇客需要做的只是分类字串跟检查比对结果 。;自从;4GB;硬碟可以以美金;1000.00;以下买到後,对大多数系统骇客的意义可想而知; 。;

如果骇客首先发现你的;/etc/passwd;档,他们只需要将真正包含在;/etc/passwd;档;salt;值的字典编码,这方法可由拥有486级电脑或几个有几百;MB;硬碟空间的十来岁的小孩适用 。;


即使没有很大的磁碟空间,像;crack(1);的工具程式通常可以在足够使用者系统中至少破解一对密码(假设系统使用者倍允许挑选他们想要的密码) 。;


/etc/passwd;档也包括一些相关资讯,像使用者;ID 和群组;ID所使用的系统程式;因此;/etc/passwd;档;必须;保持全世界可读性.;如果你改变;/etc/passwd;档以致於没有人可以读取,你将发现的第一件事是;ls;-l;命令将取代名称而显示使用者;ID; 。;

Shadow;Suite;透过将密码存至另一个档(通常是;/etc/shadow;档)来解决该问题 。;/etc/shadow;档对任何人设定可读档,只有;root;权限可以读写;/etc/shadow;档 。某些程式(像;xlock)不需要改变密码,只需要确认密码即可 。这些程式可以以;suid;root;执行或者你可以设定一个群组;shadow;用来唯读;/etc/shadow;档,然後这些程式可以执行;sgid shadow 。;

推荐阅读