邪恶八进制信息安全团队技术讨论组's Archiver

EvilOctal 2005-5-11 01:12

[转载]网络安全手册(二)

  信息来源:邪恶八进制信息安全团队

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提供了更强的安全性,特别是提高了远程命令执行的安全性.
(未完代续)

页: [1]
© 1999-2008 EvilOctal Security Team