y = key expires in n years Key is valid for? (0)
这里是问你钥匙的使用期限,0代表没有使用期限,为默认值。
You need a User-ID to identify your key; the software constructs the user idfrom Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) [email protected] "
Real name:
这里是问你收信者的ID,批注,和email信箱,请先输入ID,接着他会问你email和批注。
You need a Passphrase to protect your secret key.
nter passphrase:
这里是问你收信的密码,请输入你想要的密码。接下来会看到如下的讯息:
We need to generate a lot of random bytes. It is a good idea to perform some other action (type on
the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random
number generator a better chance to gain enough entropy.
+++++++++++++++++++++++++.++++++++++..++++++++++.+++++.++++++++++..+++++
+++++++++++++++.++++++++++++++++++++++++++++++++++++++++++++++++++>+++++
.+++++.............+++++
这边的意思是告诉你它正在利用随机数产生钥匙,为了让随机数够乱(随机),在产生过程中也请你胡乱动你的鼠标和键盘,这些都会被当随机数的输入。
当执行完后,你的新钥匙就产生了,此钥匙被放置在家目录的.gnupg目录底下。 想要列出你的钥匙,请执行#gpg --list-keys,会看到如下结果:
/home/binbin/.gnupg/pubring.gpg
------------------------
pub 1024D/818D271A 2000-09-13 binbin <[email protected]>
sub 1024g/DDD13635 2000-09-13
一旦钥匙产生之后,你就可汇出你的公开钥匙和汇入他人的公开钥匙(切记!不要公开自己的私人钥匙)。
寄出自己的公开钥匙可以如下的步骤:
#gpg --armor --export [email protected]
这结果大概是如下:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.1.0 (GNU/Linux)
hkfhgdhlkfdhdjvjglfhggfkhldfhdfkghkfdff fdlghkfdhgskfhglsfdhgfdsdshlghlsfdhdfgg
dfgjdfgjdsjg;jdsg;jsdjgdsjdsjdfjvmwewdp qewuirweuffkvjfgperewq[9-34wicick`-9`wx
jjkdd209ur20[udfc-49f--uv;sadq[fd\dff esagfsjdgfldff238r09237fzdfwqjeqdkhasdf
jshdgfsdghff9preygfdkf;dfj034tfgfgfjgg kafjsfh308ghj;efhrg;kfjg\s;dfjsd;lfjf
jshdagfljkf
jfkfjdsvlk;fvlkjclvjcljvxc 1dsc-
-----END PGP PUBLIC KEY BLOCK-----
废除你的认证:
假如你忘记密码了,或着有人发现你的密码了,你可以发布消息说这个公开钥匙不要使用了。要废除你的认证,可以使用 --egn-revoke选项,执行
#gpg --output revoke.asc --gen-revoke [email protected]
将公开钥匙送上key server:
有时候将公开钥匙个别寄给人是很花时间的,尤其通讯簿名单很多时,你可以将你的公开钥匙送上 key server,这样会比较方便。
key server是Internet上的数据库,里面放的就是公开钥匙,供想要的人去查询,Internet上的key server有很多,而且有些会试着跟其它的key server联机作同步更新。将你的公开钥匙送上key server就是将公开钥匙公开了。
在此先提供一个:http://www.keyserver.net。或者你想自己架一个和另外找一个国内的也可。将你的公开钥匙送上 key server 的执行方法为
#gpg --keyserver www.keyserver.net --send-key [email protected]
或者可经由浏览器将自己的 PGP 公开钥匙加上去。就是将你的xxx.asc内容完全的贴上去即可。
汇入别人的钥匙:
这边说的是将别人的公开钥匙加入自己的钥匙圈里,当你汇入别人的公开钥匙之后,你就可以读取他人寄给你的信。当你收其它人寄来的公开钥匙时,请将他存成文字文件。
或者是当你用netscape连上key server,当你取到你想要的公开钥匙时,将他存成文字文件。然后在命令列执行#gpg --import xxx.txt若没看到错误讯息,就表示成成功了。
若想了解更多的使用状况的话,请多善用U*NIX的线上求助系统,在命令列下执行 #man gpg或至http://www.gnupg.org
2.5 iproute
由iproute-2.2.4-3lp.i386.rpm提供,可增强IP 路由与网络装置的设定工具。
Iproute会读取一个由WIRE程序产生的档案,并尝试判定应将其送至何处。它的运作是藉由查看由FIP引头的各个字段如DU(目的地或最终使用者),SU (逻辑起源或使用者,如:wire名称),SR(替代的路由名称),SC (原始字符组)及SH (原始引头)等来确定其传送档案的方式。
它会透过检视一个有SU引头栏(或者是SR引头栏)名称的查找表来获知档案应被送往何处。
假如档案内有SD (复制wire)则这个档案会被复制,并链接到其新的名称。
若您在档案中用了DU则不需做任何进一步的处理。这时会用-r or %REUSEDU旗标标注。
此时这个程序并不会传送相关档案,它仅会在2GO输出序列建立链接,其形式如下:
#SU:srcuser#DU:destuser#SN:filename#SC:chrset_date_time[_optionals]
您可以改变DU, SU, SN 和 SC.的默认值。
所有的参数都是任选的─虽然即使每个路由档案只有一行指令,但每个待传送档案都要有路由档。 一般而言,这个档案会包括:
- 注释
- 一个预设目的地(使用 %DU关键词)
- 一个原始字符组(使用%SC关键词)
其它常用关键词包括:
- 一些路由指示行
- %SZ 栏(若有备用档案)
- %LOG(显示标题或其它有意义的字段)
2.6 iputils
由iputils-20000121-3lp.i386.rpm提供,提供了几组关于IP上的Utility。
有clockdiff,ping/ping6,traceroute6,arping,rdisc,ifenslave tracepath/tracepath6。
详细使用请#man arping,#man clockdiff,#man in.rdisc,#man ping, #man tracepath,以及 /usr/doc/iputils-20000121/README.ifenslave。
2.7 ipvsadm
由ipvsadm-1.1-3lp.i386.rpm提供,其功能在丛集式计算机(cluster)利用ipvsadm程序建立LVS(Linux Virtual Server),cluster上接受要求的 节点(active node)会把要求绕送到真正提供此服务的点。ipvsadm可以用来 建立,维护kernel的路由表(routing table)。它支持两种通讯协议(IP和 UDP),三种封包转送方式(NAT,tunneling,direct routing),四种负载均衡 (load balancing)的算法(round robin, weighted round robin, least-connection 和 weighted least-connection)。其下命令的形式有两种:
ipvsadm COMMAND [protocol] service-address [scheduling- method] [persistent-timeout]
ipvsadm command [protocol] service-address server- address [packet-forwarding-method] [server-capacity]
第一种形式加上一个公用服务地址(一个和服务要求关联的主机地址及端口位,而非一个特定的网络主机) 到核心的路由表,并确定指派服务要求到主机的方法及其持续逾时时间等。
第二种形式是关联路由表内现存的一个带有多个服务器主机的公共服务地址到服务要求被重新导向的地方。这个形式亦指出封包传送的方式及服务器主机间的相对能力。 以下提供一个范例供参:
ipvsadm -A -t 207.175.44.110:80 -s rr
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.1 -m
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.2 -m
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.3 -m
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.4 -m
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.5 -m
这个范例的指令设定了一个用来分配在207.175.44.110的端口位80上网络内送需求的重新导向主机,它会将这些网络内送需求均等的指派给在207.175.44.110的埠位80的五个网络服务器主机。本例的连网模式为NAT,而每个真实服务器是以LVS的机制进行伪装。
请注意:
网络服务器的预设路由须设定到重新导向主机中,且重新导向主机必须设定为能传送伪装的封包。
2.8 kerberos 5
此程序由 krb5-configs-1.1.1-10lp.i386.rpm, krb5-devel-1.1.1-10lp.i386.rpm,krb5-libs-1.1.1-10lp.i386.rpm, krb5-server-1.1.1-10lp.i386.rpm,krb5-workstation-1.1.1-10lp.i386.rpm提供。
Kerberos 能给网络识别服务有较安全的联机,识别包括下列的过程:
.辨别来者的身份.
.验证要求服务者是来自何方.
kerberos使用密码来辨别身份,但是密码绝对是经过编码过的,不会那么容易被其它人截取。
为什么使用kerberos:
很多传统的网络系统使用以密码为基础的身份识别。当一个使用者需要所提供的网络服务时,按照要求输入了密码。伺服端比对密码之后,确认无误让使用者进入。
但是,读者有没有想过?若联机传送的资料没有经过加密处理,则是以明文 (plaintext)的方式传送,当然这也包含了你的密码。如果有心人士想要侵入你的系统的话,他可以从中拦截封包,再加以分析,就可找出密码了。
kerberos主要的设计原理就是在确定密码在传送过程中,有经过资料加密处理。并且适当的使用kerberos可以根绝网络上拦截封包的程序来找出你的密码的威胁。
为什么不使用kerberos:
在某些原因下,kerberos比较难实作成:
.没有一套程序可以快速的将标准的UNIX密码数据库转换成kerberos的密码数据库。
.在目前Linux上,kerberos跟PAM(Pluggable Authentication Modules)只能达到部份兼容,还没达到完全兼容的地步。
.对于某一个程序若想要使用kerberos的话,他的程序代码必须要修改成能对kerberos函式库正确的呼叫。对于一些程序的修改成如此的话,可能要花费相当大的功夫。
.对于其它的应用程序的话,可能修改的部份包括适应客户端和伺服端的通讯协议,当然这也是要花费很多时间。更有甚着,对于closed source,我们连想要修改都没办法。
.最后,如果你想在你的网络上使用kerberos的话,必须客户端和伺服端同时使用。
假如随便一个service还在使用以明文为方式的密码的话,那你的客户端使用kerberos也没用。因此想要你的网络安全得到kerberos保护的话,你就必须所有相关的程序配合才行
kerberos的术语:
跟其它的计算机系统一样,kerberos也有自己的术语,知道这些术语对于了解kerberos或你将来看这类的书会有一些帮助。
.ciphertext-
编码后的数据。
.client(客户端)-
网络上的一个个体(可能是user,主机或是程序),这个个体可以获得kerberos的进入权(tickets)。
.credential cache 或 ticket file-
一个档案,里头包括使用者和各种服务器联机过程编码的关键值。kerberos 5 提供一个架构来使用其它的快取型态(例如shared memory),但是对于将快取的档案形式,也是支持的很好。
.key-
大量的数据,用来将数据编码和译码用。编码后的资料如果key值不对,或猜测方法不对,这些资料都无法被译码回来。
.Key Distribution center-
一台用来发布 kerberos 的权限的主机(有时候也叫 Ticket Granting Server或简称 TGS)
.keytab-
key table的简写,一个档案,里头包含了principal和关键值key的列表。服务器从keytab档案里取出所需要的关键值。预设的 keytab档案为/etc/krb5.keytab。
.plain text-
未编码的数据。
.principal-
能使用kerberos认证的使用者和服务器。principal名字的表示格式为"root[/instance]@realm",若是一个使用者,就把root换成使用者ID,中括号里的东西是可有可无,假如这个principle有instance的话,那就用斜线"/"。
.realm-
一个使用kerberos的网络,主要是包含少量的服务器(也叫KDC)和多量的的客户端。
.service-
网络上程序或计算机的存取。
.ticket-
进入权,暂时的电子凭证,用来针对某一服务的身份识别。
.Ticket Granting Ticket(TGT)-
一个特别的进入权(ticket),可以允许客户端得到额外的进入权,而不需要经过KDC的允许。
kerberos之运作与运用:
在了解kerberos使用的一些术语之后,这边简单介绍kerberos的认证过程是如何进行的。在一个"正常"的网络上,使用密码来辨识使用者。当一个使用者要求某项服务,服务器提示使用者输入密码。使用者输入密码,密码以明文方式传输到服务器,然后服务器允许使用者使用这项服务。就像先前所提到的,kerberos 主要解决的问题是确定密码在传送过程中,有经过资料加密处理,并且适当的使用kerberos可以根绝网络上拦截封包的程序来找出你的密码的威胁,为了达到这样的功能,验证的工作是不可缺的,所以Kerberos主要是和验证有关的工具程序。
Kerberos 5并不与帐号授权有关的安全功能有直接关联,但为了能支持这些相关安全功能,它具有一个将授权与帐号信息,当作其进入许可验证资料的一部份的传输防窜改机制。这些信息对于在要求进入许可时具有多重限制的作用,其中每一项限制的加密并非Kerberos协议的重点,取而代之的,它是由使用中的授权或帐号机制所定义,而各项限制是登载于进入许可档的_a_u_t_h_o_r_i_z_a_t_i_o_n _d_a_t_a字段下。
当客户要求进入权限时,各项限制会被送到KDC以将其插入进入许可档、加密,及避免被破坏。一般在Kerberos协议的格式中,客户可能会要求KDC包含或加入这些限制资料到新的进入许可档中。
KDC并不会从进入许可文件移除任何授权资料(_a_u_t_h_o_r_i_z_a_t_i_o_n _d_a_t_a)。而TGS则会自TGT复制这些资料到新的进入许可档中,然后再加入其余所设定的任何授权资料。当在对进入许可档进行解密时,应用服务器便可获得这些资料。由于Kerberos不会解译这些资料,所以应用服务器可利用这些资料来限制客户端对资源的存取。
在其它的使用上,_a_u_t_h_o_r_i_z_a_t_i_o_n _d_a_t_a栏也可被用在代理(proxy)的权限上。客户从KDC要求代理以指定在授权资料中的任何授权限制,然后将proxy和session key安全地传给其它人,他们就可以从应用服务器获得有限制的服务。
自由软件基金会(Open Software Foundation)的已发行计算机环境(Distributed Computing Environment)使用_a_u_t_h_o_r_i_z_a_t_i_o_n _d_a_t_a栏来产生专属属性证明(PACs)。一些专属的信息系由一个专属服务器维护,当某客户提出一个PAC的要求时,专属服务器会要求一个用来判定其本身为专属服务器的Kerberos许可进入,但它会限制该客户所属群组,并判别一个特定的DCE使用者ID。然后这个进入许可档会被送到客户处以用来确定其DCE使用者ID和证明其为已登记群组的成员之一。本质上而言,这个专属服务器会赋予这个客户一个代理权,让其作为专属服务器以主张所登记的DCE使用者ID和其是否属于有登记的群组。假如前述的权限档不包括各项限制,则它会指出该客户为专属服务者,让该客户能主张任何的使用者ID和其是否属于任何已登记群组。
在Linpus Linux上设定kerberos 5 的客户端:
设定kerberos 5 客户端并不会像设定伺服端那么深入。至少,你必须要安装客户端的套件,并且提供客户端有效的krb5.conf组态档。kerberos版本的rsh和rlogin同样也需要一些组太档上的改变。
(1)确定krb5-libs-1.1.1-10lp.i386.rpm, krb5-workstation-1.1.1-10lp.i386.rpm这两个客户端套件有安装在客户端上,你也必须要提供自己的/etc/krb5.conf文件给客户端的主机。通常这可以跟KDC的krb5.conf档一样。
(2)其它被kerberos化的服务必须要激活,要使用kerberos化的telnet,你必须要执行#ntsysv 或 #chkconfig 来激活 ktelnet。
kerberos和PAM(Pluggable Authentication Modules):
目前,kerberos化的服务并不会利用PAM,一个kerberos化的服务会跳过PAM。
有关于kerberos的信息和来源:
http://www.nrl.navy.mil/CCS/people/kenh/kerberos-faq.html
Kerberos 的常见问答集FAQ(Frequently Asked Question)
http://web.mit.edu/kerberos/wwww
kerberos在MIT的网页
ftp://athena-dist.mit.edu/pub/kerberos/doc/usenix.PS
一本书-kerberos: An Authenticiation Server for Open Network System
http://web.mit.edu/kerberos/www/dialogue.html
对话录-Designing an Autnentication System: a Dialogue in Four Scenes
http://www.ornl.gov/~jar/HowToKerb.html
一些在建立keberos网络上的建议
此外,在安装kerberos的RPM档时,Kerberos V5 Installation Guide 和Kerberos V5 System Administrators Guide也同时安装下去了,安装的文件目录在/usr/share/doc/krb5-xxxxx底下。
2.9 LAM(Local Area Multicomputer)
LAM 是一个用来执行与监控丛集运用上MPI应用软件的简单而功能强大的环境,以下介绍一些执行与操作LAM的简单步骤:
2.9.1激活 LAM
使用者须建立一个列出丛集运用所有机器的表列档案,其方法如下:
% cat lamhosts
# a 2-node LAM
node1.beowulf.nd.edu
node2.beowulf.nd.edu
每台机器将会被指定一个节定指针,第一个指针由0开始,第二个为1,其它则接下去。 用recon工具确定这个丛集是可启用的,方法如下:
% recon -v lamhosts
recon: testing n0 (node1.beowulf.nd.edu)
recon: testing n1 (node2.beowulf.nd.edu)
用lamboot工具在所指定的丛集上实际激活 LAM,其方法如下:
% lamboot -v lamhosts
LAM 6.2.0 Beta - University of Notre Dame
hboot n0 (node1.beowulf.nd.edu)...
hboot n1 (node2.beowulf.nd.edu)...
因LAM并未强制须使用特定的环境,或LAM shell ,所以lamboot执行完后会回到shell提示,您可用tping指定来测试这个丛集和LAM是否有在运作,其方法如下:
% tping -c1 N
1 byte from 2 nodes: 0.009 secs
2.2.9.2编译MPI程序
相对于其它讯息传送系统, MPI是相当简易而好用的工具程序,以下是一个完整的动态负载平衡主/仆式应用的通讯架构,再后面则介绍一些编写典型平行应用的必要功能等:
#include
#define WORKTAG 1
#define DIETAG 2
main(argc, argv)
int argc;
char *argv[];
{
int myrank;
MPI_Init(&argc, &argv); /* initialize MPI */
MPI_Comm_rank(
MPI_COMM_WORLD, /* always use this */
&myrank); /* process rank, 0 thru N-1 */
if (myrank == 0) {
master();
} else {
slave();
}
MPI_Finalize(); /* cleanup MPI */
}
master()
{
int ntasks, rank, work;
double result;
MPI_Status status;
MPI_Comm_size(
MPI_COMM_WORLD, /* always use this */
&ntasks); /* #processes in application */
/*
* Seed the slaves.
*/
for (rank = 1; rank < ntasks; ++rank) {
work = /* get_next_work_request */;
MPI_Send(&work, /* message buffer */
1, /* one data item */
MPI_INT, /* data item is an integer */
rank, /* destination process rank */
WORKTAG, /* user chosen message tag */
MPI_COMM_WORLD);/* always use this */
}
/*
* Receive a result from any slave and dispatch a new work
* request work requests have been exhausted.
*/
work = /* get_next_work_request */;
while (/* valid new work request */) {
MPI_Recv(&result, /* message buffer */
1, /* one data item */
MPI_DOUBLE, /* of type double real */
MPI_ANY_SOURCE, /* receive from any sender */
MPI_ANY_TAG, /* any type of message */
MPI_COMM_WORLD, /* always use this */
&status); /* received message info */
MPI_Send(&work, 1, MPI_INT, status.MPI_SOURCE,
WORKTAG, MPI_COMM_WORLD);
work = /* get_next_work_request */;
}
/*
* Receive results for outstanding work requests.
*/
for (rank = 1; rank < ntasks; ++rank) {
MPI_Recv(&result, 1, MPI_DOUBLE, MPI_ANY_SOURCE,
MPI_ANY_TAG, MPI_COMM_WORLD, &status);
}
/*
* Tell all the slaves to exit.
*/
for (rank = 1; rank < ntasks; ++rank) {
MPI_Send(0, 0, MPI_INT, rank, DIETAG, MPI_COMM_WORLD);
}
}
slave()
{
double result;
int work;
MPI_Status status;
for (;;) {
MPI_Recv(&work, 1, MPI_INT, 0, MPI_ANY_TAG,
MPI_COMM_WORLD, &status);
/*
* Check the tag of the received message.
*/
if (status.MPI_TAG == DIETAG) {
return;
}
result = /* do the work */;
MPI_Send(&result, 1, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD);
}
}
MPI的程序都是由一个独特的"rank" (整数值如0, 1, 2, ...,)来设定,如N-1. MPI_COMM_WORLD表示 "在这个MPI应用程序内的所有程序" ,它被称为是一个通讯器,且它提供了所有要做讯息传送的必要信息。而可迁移的函式库更使得通讯器能指供其它系统所无法处理的同步保护功能。
要进入或退出MPI,就像其它系统一样,您可以使用以下两个函式来激活及清除 某MPI程序:
MPI_Init(&argc, &argv);
MPI_Finalize( );
正常来说,一个平行应用的程序必须知道它本身的rank及现存有多少其它的程序。它是利用呼叫MPI_Comm_rank( ) 来得知它的rank 的,其方法如下:
int myrank;
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
要获知现存有多少其它程序则须利用 MPI_Comm_size( ):
int nprocs;
MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
讯息的传送是经由一个特别的程序,且其会依使用者的设定而被标记上一个卷标(整数值)。这个卷标是用来判别一个程序可能会传送或接收的不同讯息种类,以上列的范例而言,其卷标是用来判别工作讯息和结束讯息的,以下是一个范例:
MPI_Send(buffer, count, datatype, destination, tag,
MPI_COMM_WORLD);
一个接收讯息的程序会判定传送程序的卷标和rank,你可使用MPI_ANY_TAG 或 MPI_ANY_SOURCE 来接收由任何不同卷标的程序所发出的任何讯息,其范例如下:
MPI_Recv(buffer, maxcount, datatype, source, tag,
MPI_COMM_WORLD, &status);
有关接收讯息的信息会问传回一个状态变量,已收到的讯息卷标状态为MPI_TAG,而发送程序的rank状态为status.MPI_SOURCE.
其它未在本范例使用的功能是传回已收到的资料种类数量的。有了这些函式后,您就几乎可编写其所有的应用。
程序的激活透过mpirun指令来进行,SPMD应用程序能在使用mpirun激活 MPI的时侯被激活,其方式如下:
% mpirun -v n0-1 foo
2445 foo running on n0 (o)
361 foo running on n1
一个有多程序的应用程序必须在其规划表(一个用来列示每个程序和其目标节点的档案)中被注明,其方法如下:
% cat appfile
# 1 master, 2 slaves
n0 master
n0-1 slave
% mpirun -v appfile
3292 master running on n0 (o)
3296 slave running on n0 (o)
412 slave running on n1
要监控有MPI应用程序,您可以在任何时侯显示完整的MPI同步状态下的所有程序和讯息,其方法如下:
% mpitas
TASK (G/L)
FUNCTION
PEER|ROOT
TAG
COMM
COUNT
DATATYPE
0/0 master
Recv
ANY
ANY
WORLD 1
INT
1 slave
2 slave
<running>
<running>
程序的rank 0会拒绝从任何使用MPI_COMM_WORLD通讯器的原始程序和讯息卷标中接收含有单一整数的程序讯息,而其它的程序仍在执行,兹示范如下:
% mpimsg
SRC (G/L)
DEST (G/L)
TAG
COMM
COUNT
DATATYPE
MSG
0/0
1/1
7
WORLD
4
INT
n0,#0
稍后我们会看到一个由程序rank 0传送到程序rank 1的讯息被缓冲处理并等待被接收。这个程序讯息是以卷标7利用MPI_COMM_WORLD通讯器传送,且含有4个整数。
2.9.2.3 清除LAM
要清除LAM的话,所有使用中的程序和讯息皆可在不须重新开机的情况下被移除,您只要利用以下指令即可:
% lamclean -v
killing processes, done
sweeping messages, done
closing files, done
sweeping traces, done
通常使用者可以用mpirun来执行一个程序,并在结束时用lamclean,然后再用 mpirun另一个程序,而无须用lamboot来执行使用者的MPI程序。
2.9.2.4 结束LAM
要结束LAM 的话,您可使用wipe工具来移除LAM在网络上所有进程的踪迹,这种情形应该在完全不再需要用到LAM/MPI的时侯使用,其方式如下:
% wipe -v lamhosts
tkill n0 (node1.beowulf.nd.edu)...
tkill n1 (node2.beowulf.nd.edu)...
2.2.10 mc server mcserv
(mcserv-4.5.42-12lp.i386.rpm)是一个专门针对Midnight Commander网络档案系统开发的伺服程序,它提供使用Midnight档案系统的用户对主机档案系统的存取功能。 假如这个程序是由root执行,则它会尝试取得一个保留的埠位,否则它会用9876当作它的埠位。
假如在系统上有一个端口位关连的程序在运作,则其会向这个端口位关连程序登记,从而使用户能自动连结到正确的埠位上。
假如系统上没有端口位关连程序,则您就要利用-p选项来手动设定,有关其详细介绍,你可到下列网站:
http://www.gnome.org/mc/
2.2.11 nc(netcat)
nc (nc-1.10-7lp.i386.rpm)是用来处理几乎所有TCP或UDP的事情的,它可以打开TCP 联机,传送UDP封包,听取专用的TCP和UDP埠,执行埠位扫瞄和起始信息路由传送等。它不像telnet,它可以良好的编写scripts,并将错误讯息在标准错误上分隔开,而不是将其送到标准输出上,它会某些功能上和telnet重复
目的埠位可以是个别的整数值,services(5)上列示的名称或是范围,范围的形式是nn-mm,且有些分别的埠位或范围是可以在指令行上被指定的。
有关nc的使用,您可参考netcat README文件
2.2.12 net-tool
net-tools (net-tools-1.54-5lp.i386.rpm)套件包含一群构成Linux操作系统NET-3基本组的程序集,也包括了许多可以用来设定网络连结的工具程序,如arp, rarp, ifconfig, netstat, ethers 和 route等。
2.2.13 net-cfg
netcfg(netcfg-2.25-2lp.noarch.rpm)是Red Hat的Linux工具之一,它能提供图形接口以利使用者用来做各种连网设定等。
相关信息请参考Red Hat或其关联网站。
2.2.14 NFS utilities
nfs-utils (nfs-utils-0.1.6-3lp.i386.rpm)套件提供一个daemon给核心NFS服务器和一些相关工具,它能提供比一般使用者使用的传统Linux NFS服务器更好的效能。
这个套件亦包含有showmount程序,Showmount会询问远程主机的登载daemon有关NFS的信息,例如: showmount可以显示在远程主机登载的客户端资料。
2.2.15 nscd
Nscd ( nscd-2.1.3-16lp.i386.rpm) 会抓取寻找名称服务的要求,并能大幅的提升NIS+的效能,且能协助DNS服务器。须注意的是,请不要在2.0版的核心使用它,因为它正好会引发该版核心的bugs。
当您有需要一个抓取名称服务需求的daemon 时,您可以安装nscd,只要避免使用2.0版的核心就好。
2.2.16 nss_ldap
LDAP似乎逐渐有被当成储存使用者信息(密码,使用者家目录,电话号码等)工具的趋势,而NSS LDAP (nss_ldap-105-2lp.i386.rpm)模块则可让您透过LDAP来做使用者验证。
有关这个模块的取得,您可到下面这个网站:
http://www.padl.com/nss_ldap.html
要获得LDAP相关概念与工具,你可到以下的网站:
http://sites.inka.de/ms/python/ldap-client-cgi/
http://www.mountpoint.ch/oliver/kldap/
http://biot.com/gq/
http://igloo.its.unimelb.edu.au/LDAPExplorer/
http://www.mozilla.org/directory/
2.2.17 openssl
此套件由openssl-0.9.4-4lp及openssl-devel-0.9.4-4lp提供。其中由openssl-0.9.4-lp提供http上的安全联机,提供一个开放使用的SSL (Secure Socket Layer)。此部份您可参考第10章相关介绍章节。
2.2.18 PAM(Pluggable Authentication Modules)
PAM(Pluggable Authentication Modules)是设计用来提供系统管理者,一个能适当分配他们系统中,所允许应用程序权限的工具,而PAM的区域环境设定则是由「/etc/pam.conf」或「/etc/pam.d/」目录所控制的。
pam-0.72-7lp.i386.rpm PAM(Pluggable Authentication Modules)提供了一个方法供系统管理者建立了一套认证的政策,而不需要重新编译一套认证程序。有了PAM,你可以控制这些认证模块如何的结合程序,利用编辑一个组态档完成。大部分Linux的使用者可能永远不会接触到这些组态档,当你使用RPM文件安装程序需要认证时,他们会对正常的密码认证作需要的改变。然而,你可能想要改变你的组态架构,在这时候你就必须要了解设定档。
在其设定档里头,定义了两个字符符号,做为注解(#)以及延伸本行至下一行的连接符号(\)。
在「/etc/pam.conf」里的环境设定格式如下:
service-name module-type control-flag module-path arguments
在「/etc/pam.d/」目录里的任何一个档案,有着下列的格式:
module-type control-flag module-path arguments
我们可以发现上面所叙述的两个格式中,除了第一个叙述多了「service-name」外,其余都是一样的,所以我们就一起介绍吧。
‧service-name
大部份都是与应用程序有相同的名称,如「ftpd」、「rlogin」、「su」等,其中的「OTHER」可以被指定成为与其它「module」共享,但是只要应用程序的「module」被指定后「OTHER」便失去作用。
‧module-type
包含了下列四种模式之一:
-auth
本module提供两种方式来验证使用者,第一种就是要求使用者输入密码做为确认的依据,第二种可以允许群组(group)以「membership」、或其它特别被允许的使用者。
-account
此module不执行验证使用者的纪录资料,而只搜寻有关日期的时间基本资料,以正确地了解系统的资源(最大的使用者数),或者只允许登录在使用者要求的根目录下,而且是在「console」模式下。
-session
此module最主要目的,是在使用者他们被服务到的前后,作一些关联性的工作,而这些工作,包含了开启或关闭相关纪录性资料的转换、Mounting目录等等的工作。
-password
这最后的module,会要求更新有关使用者的特征资料,有一种 module就是基于第一个module-type来验证(auth)每一个口令询问或响应。
‧config-flag
此项是用来指出与module联结的PAM链接库的成功与否,由于module间是依序堆栈放置的,因此便由config-flag来决定每一个module彼此之间关联的重要性。由于应用程序本身无法得知在「/etc/pam.conf」或「/etc/pam.d/」档案里的module是否成功或失败,因此需要藉由Linux-PAM libary来获得成功或是失败的响应值。 config-flag的简单句型是一个单一的keywords,而这个keywords则是重要地指出特定module成功与失败的相关结合。config-flag所用的keywords有下列四种:
-required
本项指出在此module成功时,可以轻易的达成module-type所提出的要求,当失败时,此module将不会对使用者明白的显示出来,会一直到所有剩余的modules(与 module-type相同)被执行后才会显现给使用者知道。
-requisite
此项跟required相似,不同处在某一个module传回一个错误值后,程序会直接将值回传给应用程序。这个错误值包含了第一个required或requisite的错误,值得注意的是,此项可以尽可能的保障使用者,在面对不安全的传输媒介下,有机会可以输入密码登入。可以料想的到,这样无疑是宣告给居心不良的人,可以有效的联结到此系统中。这样的动作必须考虑,面对一个并非毫无关系且充满敌意的环境下,暴露具敏感性的密码其危险性。
-sufficient
在module-type本身正确的执行结果之下,此module成功的话,可以视为完全的满足了Linux-PAM library的需求。在这样的情况下,没有之前required的错误,没有更多堆置的module形态下可以被提出来执行的。(注意:在这种例子下,后来的required 不会被提出来执行)。在同样module-type正确的执行下,此module失败将不会导致满足需求上的重大损失。
-optional
此项config-flag正如其文字上含意,不会对服务中使用者的要求,作出是否成功或是失败的决定。
一般来说,Linux-PAM在做决定时,将会忽略此module的成功与否,然而在缺乏任何先前或之后已被堆置module明确的成功与失败结果下,此module将决以自然的方式响应要求。
‧module-path:
此项为一可读取的目标档案,以绝对路径的方式来,表示档案的位置和名称,通常没给位置的话,内定的路径为「/usr/lib/security/」。
‧args:
此项是一个当被呼叫出来执行时,可以通过module的名单。对一个典型的Linux shell 命令来说,十分像arguments,通常对任何一个所给的module其正确的agrument是具有选择性和正确性。然而在遭遇到一个错误的argument时,错误的argument通常会被module所忽略掉,而这module会要求将所发生的错误写入syslog(3)里。
一般来说,在这个环境设定档里的每一行的格式,没有被固定下来的话,将会造成验证程序上发生重大的错误。一个执行上的错误,将会随着呼叫syslog(3)时,一起写入系统的纪录文件之中。
Linux-PAM可以完全使用「pam.conf」或「pam.d/」其中一个,也就是说「pam.conf」和「pam.d/」 两者只要其中之一就可以了,但在两者同时都存在的情况下,「pam.d/」的效力将会大于「pam.conf」,也就是说Linux-PAM只会使用到「pam.d/」而已。
PAM的认证是可以堆栈的(stacked),因此可以使用多重模块。例如 rlogin 一般使用至少两个认证方法:假如 rhosts 认证成功,就继续接用另一模块,假如失败,那就只做到密码认证的过程。新的模块可以任何时候加进,然后那些对PAM-aware的程序就可以利用这些模块。
譬如你有一个 one-time-passwd calculator 系统,那么你就可以写一个模块支持它(如何写PAM模块的文件在/usr/share/doc/pam*),PAM-aware程序可以使用新的模块并且和新的one-time-based calculator运行而不需要重新修改和编译。 1
2.2.19 passwd
Passwd (passwd-0.64.1-2lp.i386.rpm)是用来更新使用者验证标记的它被设定为须透过Linux-PAM API来运作。实质上,它会自我初始化为一个Linux-PAM的密码服务程序,并使用设定好的password模块来对使用者的密码作验证和更新。
以下是一个简单的对Linux-PAM设定档做设定以获得Passwd 服务的范例:
#
# passwd service entry that does strength checking of
# a proposed password before updating it.
#
passwd password requisite \
/usr/lib/security/pam_cracklib.so retry=3
passwd password required \
/usr/lib/security/pam_pwdb.so use_authtok
#
注意:
.它并不需要其它的模块型态来使其正常运作。
.请不要写为记住密码。
.请勿使用容易被猜中的密码。
要获得如何在Linux-PAM上对这个工具做较好的设定,您可利用以下网站的Linux-PAM System Administrators Guide:
http://parc.power.net/morgan/Linux-PAM/index.html
2.2.20 pidentd
pidentd(pidentd-3.0.10-6lp.i386.rpm)套件包含了identd,它可执行RFC1413办识服务器。Identd会找寻特定的TCP/IP联机,并送回使用者名称或有关拥有这个联机的程序的其它信息。
2.2.21 piranha
由piranha-0.4.12-2lp.i386.rpm提供,功能请参考架设服务器的cluster 部份。
2.2.22 portmap
Portmap( portmap-4.0-20lp.i386.rpm)是一个能将RPC程序号码转换为DARPA协议的服务器,你必须执行它才能进行RPC呼叫。
当一个 RPC服务器被激活后,它会告诉portmap它会听取那个端口位的讯息,和它准备提供服务给那一个 RPC程序号码,它会先与在服务器机器上的portmap连系,以确定RPC封包应被送往那个埠位。
Portmap必须在任何RPC服务器被呼用前激活。
一般情况下,portmap就像任何其它的daemon一样会分散和切断与终端机的关连,然后使用syslog(3)来记录错误讯息。 Portmap的可用选项包括:
-d (除错)
它可避免portmap被当做daemon使用,并使得错误和除错讯息被列示到标准错误输出。
-v (更详细信息)
执行portmap以获得更详细信息
您可参考tcpd((8)), hosts_allow((5)) and hosts_access((5))手册页来获得更多相关信息。
2.2.23 PVM(Parallel Virtual Machine)
Pvm( pvm-3.4.3-5lp.i386.rpm)是一个容许使用者交互式询问和修改虚拟机器的独立PVM进程。它的主控台能在虚拟机器上的任何主机被多次的激活与关闭,而不会影响PVM或任何其它正在运行的应用程序。
当pvm被激活后,它会判定 PVM是否已在执行,及是否在这个主机上已自动执行pvmd3,并传送指令列选项与主机档案给pvmd3,所以PVM不须要靠主控台来执行,而其一旦被激活后,主控台会提示如下:
pvm>
您可利用下列的主控台指令,兹介绍如下:
add hostname(s) - 增加主机到虚拟机器
alias -定义/列示指令代名
conf -列示虚拟机器设定值
delete hostname(s) -自虚拟机器上删除主机
echo - Echo自变量
export - 增加环境变量来产生输出列表
halt - 停止pvmds
help [command] - 列出指令的说明
id - 列出主控台进程代号
jobs - 列出执行中的工作
kill task-tid - 结束进程
mstat host-tid -显示主机状态
ps -a - 显示PVM进程
pstat task-tid - 显示进程状态
quit - 退出主控台
reset - 杀掉所有进程
setenv - 显示/设定环境变量
sig signum task - 传送讯号给进程
spawn [opt] a.out - 产生进程
其选项包括:
-(count) 进程数,预设为1
-(host) 在主机上产生,预设为任何主机
-(ARCH) 在主机上产生ARCH
-? 激活除错
-> 重新导向进程输出到主控台
-> file 重新导向进程输出到档案
->>file 重新导向进程输出附加到档案
trace - 设定/显示追踪事件屏蔽
unexport - 自产出的输出列表移除环境变量
unalias - 不定义指令代名
version - 显示版本
pvm 会在从tty读取指令前先读取 $HOME/.pvmrc,所以它可以用来自订主控台环境,如:
alias ? help
alias j jobs
setenv PVM_EXPORT DISPLAY
# print my id
echo new pvm shell
id
以下是一个应用范例供参:
pvm
在本地主机执行pvmd3或以联机方式执行pvmd3
pvm hostfile
激活主控台和pvmd3,其会先后读取主机档案,并将列出的计算机加到虚拟机器上
2.2.24 pwdb (Password Database Library)
Pwdb(pwdb-0.61-1lp.i386.rpm)套件包含了密码数据库libpwdb,它是一个执行一般使用者信息的数据库 ,且是专门针对Linux的AM (Pluggable Authentication Modules)设计的。可让使用者用来设定存取和管理包括NIS 和Radius的 /etc/passwd, /etc/shadow和网络验证系统。
2.2.25 PXE(Preboot eXecution Environment)
pxe(xe-0.1-15lp.i386.rpm)是一个网络开机服务器,它的套件件包含了PXE (Preboot eXecution Environment)服务器和当Linux 要从Linux PXE 服务器上的开机磁盘影像文件开机时,所需要的编码位等。
2.2.26 quota
quota(quota-2.00pre3-3lp.i386.rpm)套件包含了可用来监控和限制使用者和群组在每个档案系统中可使用磁盘的系统管理工具。
使用quota可显示使用者和群组磁盘使用与限制,而默认值则仅显示使用者部份,其可用旗标如下:
-g 列出使用者所属群组的群组限额l
-u 这个旗标等同默认值.
-v 显示档案系统上未指定作储存用的限额
-q 列出较简要的讯息,仅包含档案系统上超出限额的信息
同时使用 -g和 -u 会同时显示使用者限额和使用者所属群组限额
只有超级使用者可以使用-u 旗标和替代的user自变量来检视其它使用者的限制,非超级使用者能用
-g旗标和替代的group自变量来检视其所属群组的限制。 -q旗标的优先权高于-v旗标。
Quota会回报所有列在/etc/fstab上的档案系统限额,而对NFS的档案系统,则可呼叫伺服机器上的一个rpc.rquotad来获得相关信息。假如quota退出时出现一个非零的状态值,则表示有一个或多个档案系统超出限额。
2.2.27 routed
routed(routed-0.16-6lp.i386.rpm)是一个网络路由daemon,它是在开机时被激活来管理网络路由表的。 Routed系使用Xerox NS路由信息协议的一个变种版来确保最新的核心路由表信息,它使用一个能用在多种地址型态的通用协议,但目前仅被用在丛集网络的网际网络路由。
相关的资料你可参考Internet Transport Protocols, XSIS 028112, Xerox System Integration Standard.
2.2.28 rsync
rsync(rsync-2.4.1-3lp.i386.rpm)是一个和rcp功能很像的程序,然具有较多的功能选项,且使用rsync远程更新协议(remote-update protocol)可在既有档案存在的情形下大幅加速档案传送的速度。
rsync远程更新协议可让rsync在利用网络传送档案时,仅就两组档案不同的部份进行传送,其所采用的机制是非常有效率的总和搜寻查核(checksum-search)算法。
至于较详尽的相关应用,请参考rsyncd.conf档及以下网站:
http//linuxcommand.sourceforge.net
2.2.29 rsh
Rsh是一个远程shell程序,当您使用rsh( rsh-0.16-13lp.i386.rpm)时,它会连结到特定的主机,并执行所指定的命令。它会复制它的标准输入到远程的指令中、并复制远程指令的标准输出到它的标准输出,和复制远程指令的标准错误到它的标准错误。如此则rsh能接收任何端口位的标准错误信息。
有关中断、退出和结束讯号皆会被传到远程的指令中,而rsh通常会在远程指令终结时结束
在rsh登入目录的.k5login档中,每个使用者可能会有其私有的授权列表,这个档案中的每一行应包含一个Kerberos原则的名称,其形式如principal/instance@realm.,假如有一个~/.k5login档的话,则当其在经原使用者该档案内的一个主名称验证无误后,这个帐户就会被授权存取。
否则若经验证的原有使用者能被关连到使用"aname -> lname"关连法则(细节请参考krb5_anadd)的本地帐号的话,则这个原有使用者将被授权存取这个帐号。
2.2.30 rusers
rusers(rusers-0.16-5lp.i386.rpm)指令的功能和who很像,但它是用来列示在本地网络上所有机器的主机的。对每个向rusers响应的主机,它会以分行的方式列出目前登入的所有主机名称及使用者名称,且rusers会等待一分钟的时间来抓发较晚响应者的信息。
在此提供本指令的选项说明如下:
-a 列出所有响应的机器,即使无人登入也一样
-l 列出一个长格式的列表,内容包括使用者名称,主机名称,使用者登入的tty,使用者登入的日期和时间,使用者开始用键盘键入资料起算总共花用的时间及假如可能的话,远方主机是从何处登入的信息
2.2.31 sslwrap
sslwrap( sslwrap-2.0.5-2lp.i386.rpm)是一个简单的Unix服务程序,它会待在任何简单的TCP服务器如POP3, IMAP, SMTP等,并对所有联机的资料以TLS/SSL进行加密。它使用OpenSSL 来支持SSL version 2 and 3,它也能在没有inetd的情况下运作,且能对放在其它计算机上的资料进行加密。
Sslwrap系作用于您既有的服务器上的,且它不要求您对既有的服务器作任何修改。
2.2.32 tcp_wrappers
此程序包含于tcp_wrappers-7.6-11lp套件中,使用tcp_wrappers可以限制外界联机的范围,拒绝不安全地带的联机。
Linux Linux预设会帮你装tcp_wrappers,当你装了rpm文件后,程序会自动改掉/etc/inetd.conf内的设定。所以你在/etc/inetd.conf看到譬如telenet服务telnet stream tcp nowait root /usr/sbin/tcpd in.telnetd/usr/bin/tcpd即是tcp_wrappers的执行档。如此你即可使用/etc/hosts.allow及/etc/hosts.deny来限制使用,系统读取的顺序是先 /etc/hosts.deny,然后再/etc/hosts.allow,所以你可用hosts.allow里的范围,来压过hosts.deny。所以你修改的顺序,应该是先改/etc/hosts.deny,范例如下:
# service : person
ALL: some.host.name, .some.domain #某个领域,某个主机拒绝所有服务。
ALL EXCEPT in.fingerd: other.host.name, .other.domain
#其它领域,其它主机只能用finger服务。
至于/etc/hosts.allow档设定方法和/etc/hosts.deny一样。更详细的方法请执行#man /etc/hosts.deny 或 #man /etc/hosts.allow。
2.2.33 tcpdump
一个命令列模式的网络监控工具,tcpdump可以显示出某个时间网络上流过封包的表头(header),但是当然只限于同一领域,在这里列出几个范例:
监控某台主机(假设主机名称reddust)
#tcpdump host reddust
监控reddust流出的封包
#tcpdump src host reddust
监控reddust和backtrue
#tcpdump host reddust and backtrue
监控名为 seasad 的 gateway 的 ftp 流量
#tcpdump gateway seasad and port ftp
其它的命令列选项:
选项
功 能
-c count
接收多少封包就离开,count表示封包数目。
-F file
从档案读取封包过滤的规则
-i interface
倾印(dump)某个接口的封包,譬如eth0
-n
不要将IP转换成名称
-t
不要在某一列显示时间
-w file
将倾印出来的资料写入档案
以上只是列出大概,更详细的内容可执行#man tcpdump
2.3 关于网络安全的网站
http://www.cert.org
为计算机紧急事件回报小组CERT(Computer Emergency Report Team)的正式站台, 常发布一些安全上的消息,譬如系统的漏洞或程序上的错误。有时候即使一般使用者照着所发布文件的操作,就可轻易的入侵一个站台。因此身为系统管理者更应该要注意这些新的讯息。
http://www.cert.org.tw
同上,但此为位于国内的组织。 发布人:gemini 来自:www.linpus.com.tw