电脑技术学习

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

dn001
大部分目前;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。;

透过移动密码至;/etc/shadow;档,我们可以有力的备有骇客从存取编码密码到执行;dictionary;attack;的证据。;

除此之外,;Shadow;Suite;新增许多特色:;

设定档於设定为签入时预设(/etc/login.defs);
新增、修改和删除使用者帐号群组之工具程式;
密码寿命计算及到期日;
帐号到期日跟锁死;
隐藏群组密码;(可选择的);
两倍长度密码;(16;字元密码);[不建议使用];
针对使用者密码选择有较好的控制;
可拨接密码;
备用有效权限程式;[不建议使用];
安装;Shadow;Suite;贡献为有更安全系统,但是还有其他方法可以改善;Linux;系统的安全,且最终将有一系列的;Linux;安全;HOWTO's;将讨论其他安全基准和相关文件版本.;


针对目前其他;Linux;安全文件资讯,请参照网址:;Linux;Security;home;page.



2.1;为何您不要;shadow;你的;passwd;档;
有一些状况跟设定运用在安装;Shadow;Suite;将;不是;好主意: ;There;are;a;few;circumstances;and;configurations;in;which;installing;the;Shadow;Suite;would;NOT;be;a;good;idea:;

主机没有包含使用者帐号。;
主机是在;LAN;上跑且使用网路资讯服务(Network;Information;Services,;NIS)得到或供应使用者名称和密给网路上的其他机器使用(事实上这还是可以执行,但是实际上并不能增加任何安全)。;
机器是使用终端主机来验证使用者经由;NFS(Network;File;System),;NIS;或某些其他方法。;
机器跑其他软体验证使用者且没有任何;shadow;版本或原始码可获得。;


2.2;格式化;/etc/passwd;档;
一个;non-shadowed;/etc/passwd;档格式如下所示:;

username:passwd:UID:GID:full_name:directory:shell

其中;
username
使用者(签入)名称;

passwd
编码密码;

UID
使用者编号;

GID
预设存组编号;

full_name
使用者全名;-;事实上这个栏位称作;GECOS;(General;Electric;Comprehensive;Operating;System);栏位且可以储存全名外的资讯。Shadow;commands;and;manual;pages;refer;to;this;field;as;the;comment;field.;

directory
使用者根目录;(绝对路径);

shell
使用者签入的环境;(绝对路径);

举例说明:;
username:Npge08pfz4wuk:503:100:Full;Name:/home/username:/bin/sh

 中,Np;是;salt;且;ge08pfz4wuk;是编码密码。;已编码的;salt/password;就像;kbeMVnZM0oL7I;且这两个字串是一样的密码。对相同密码可能有;4096;种可能的编码。(本□例的密码是;"passwaor",这是比较;不好;的密码)。;

只要;shadow;suite;已经安装,;/etc/passwd;档将被替代成:;

username:x:503:100:Full;Name:/home/username:/bin/sh

本□例之第二栏位;x;现在只是一个 place;holder。 /etc/passwd档的格式并未真的改变,只是不再包含;编码密码。这表示任何程式可以读取;/etc/passwd;档,但并不真的需要确认密码是不是正确地运作。;

这些密码现在被重新放在;shadow;档(通常是在;/etc/shadow;档)。;


2.3;格式化;shadow;档;
/etc/shadow;档包括下列资讯:;

username:passwd:last:may:must:warn:expire:disable:reserved

其中;
username
使用者名称;

passwd
编码密码;

last
密码上次更动日期,以从1970年1月1日算起的天数代表;

may
密码改变前天数;

must
密码最常使用天数;

warn
代表期限前几天就事先警告使用者;

expire
超过密码过期天数後,就关闭该帐号;

disable
帐号关闭,以从1970年1月1日算起的天数代表;

reserved
预备栏位;

依照之前□例将变成:;
username:Npge08pfz4wuk:9479:0:10000::::


2.4;回顾;crypt(3).;
从;crypt(3);使用者文件得到:;

"crypt;是密码加密方程式。;It;is;based;on;the;Data;Encryption;Standard;algorithm;with;variations;intended;(among;other;things);to;discourage;use;of;hardware;implementations;of;a;key;search.;

[The];key;是使用者输入的密码。;[编码字串全是;NULLs];

[The];salt;是从;[a-zA-Z0-9./];集合中选出的两个位元字串。该字串是用於扰乱在;4096;种不同方法之一个演算法。;

透过得到;key;的每个位元的最低;7;bit[s],可以建立;56-bit;key;。;这56-bit;key;是用在重复加密一个常数字串(通常是包含所有灵的字串)。;传回值指到加密密码是一连串可印出之13个;ASCII;字元(最前面的一两个字元表示;salt;本身)。;透过每次的呼叫可将传回直指到静态资料。;


警告讯息:;Key;space;包括;2**56;即等於;7.2e16;可能的值。与用重大的平行电脑将;Key;space;极尽的搜寻是可能。像;crack(1);软体用来搜寻部分的由人产生之密码的;key;space;是可获得的。因此,密码的选择至少应该避免使用一般字及名字。一个用来检查解开密码选择的;passwd(1);程式使用是值得推荐的。;


DES;演算法本身有一些使;crypt(3);在任何其他密码权限区隔介面很差选择的使用方面剧变。如果你计画使用;crypt(3);介面来加密计画,以下描述千万别这麽作:得要一本加密好书和广泛获得;DES;程式库;.";一起使用。;

大多;Shadow;Suites;包括;16;位元的密码长度两倍之原始码。;在;des;专家建议避免使用当开始对较常密码先简单的编码左半然後右半。由於;crypt;运作方法,这将造成;较差的;安全编码密码。除此之外,使用者有可能记住;16;位元密码是一件比较差的事情。;


目前有允许权限理论用以取代某些更安全和支援较长密码(例如;MD5;演算法)且保有和;crypt;方法相容的发展工作正在进行。;


如果你正在寻找一本加密的好书,建议如下:;

"Applied;Cryptography:;Protocols,;Algorithms,;and;Source;Code;in;C"
by;Bruce;Schneier;
ISBN:;0-471-59756-2




--------------------------------------------------------------------------------

标签: linux