分享
 
 
 

NFS和NIS安全

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

[ 简介 ]

为什么几乎所有关于Solaris安全的书籍和文章都会非常明确地写到:关闭NFS和NIS服务?虽然如此,但有些系统管理员却无法关闭这些服务,因为已经有些网络应用必需它们。虽然NFS和NIS的安全问题存在于其服务结构中,是与生俱来的,然而仍然可以通过一些方法使其变得相对更安全些。

--[ 什么是NFS ]----------------------------

基于RPC(remote procedure call)协议的网络文件系统是由Sun Microsystems公司最早于1980年实现的,用于在异种UNIX操作系统共享文件。NFS的客户端/服务器实现结构使得远程磁盘对于本地客户端是透明可见的。它通过几个守护进程和配置文件来实现文件共享。缺省地,整个过程没有使用独立的认证方法,从而

造成了NFS的安全问题。(参见图1)

NIS NFS

RPC

XDR- External Data Representation

Internet Protocol

Network Transport (e.g. Ethernet)

图 1-NFS协议栈

它是如何工作的呢?由于NFS运行于面向无连接(不需要对传输数据包进行任何确认)的UDP协议上,NFS则试图强迫对它发送的每一个命令进行确认。如果收到确认,则继续发送数据。如果在特定时间内未收到确认,数据将被重传。

NFS不单包括NFS协议,还包括MOUNT协议。这些协议在NFS中以服务器端守护进程的方式实现:rcp.mountd、nfsd和portmap。 mountd进程通知nfsd进程哪些文件系统可以被安装到本地主机中。portmap负责操纵基于rpc的服务。在客户端,nfs的实现由biod、 rpc.statd和rpc.lockd守护进程完成。boid完成在运行着多实例的客户端的性能优化:read-ahead和write- behind。rpc.statd和rpc.lockd负责文件的加锁和解锁。

NFS的一个关键文件是/etc/exports,它定义了哪些共享和对谁是可用的。另一个文件是/etc/fstab,它包含了在客户端上被安装的文件系统列表。

--[ 什么是NIS ]----------------------------

Network Information Service(网络信息服务),通常还称为Yellow Pages(黄页),是一种集中管理系统通用访问文件(如/etc/passwd、/etc/group或/etc/hosts)的分布式数据库系统。 master服务器存放这些文件,而客户端则通过网络访问其中的信息。

在NIS中被访问的信息存放在被称为maps的多个文件中。对于位于中心的master服务器,必须维护所有的maps,而客户端则访问它们。同时还有 slave服务器也保存有备份,这些slave服务器可以处理客户端的map请求访问,但不允许修改maps信息。所有对于maps的修改只能在 master服务器上进行,然后再由master分发到各个slave服务器上。(参见图2)

-----------------Master-----------------

| | |

Slave | Slave

| | |

Client Client Client

图 2-NIS客户端/服务器结构

当一个'+'号被添加到本地文件中时,客户端知道应该去访问NIS系统。同时,/etc/nsswitch.conf文件指定了查询名字服务信息的次序:DNS(域名服务)、NIS或本地文件。

NIS的实现也是通过几个守护进程。ypserv是服务器守护进程,而ypbind是客户端进程以构造NIS请求。maps可以在更新后手工(使用 yppush)传送到slave服务器,或者通过ypxfrd进程自动(slave服务器检查服务器上的时间戳以进行正确的更新)传送。

--[ NFS和NIS的安全问题 ]----------------------------

为什么这两个服务存在如此多的安全问题?在过去几年里,有关这两个服务的安全问题不断被发现,这似乎与其设计有关。NFS使用AUTH_UNIX的认证方法,即非显式信任NFS客户端在服务器的UID(用户ID)和GID(组ID)。对于文件系统共享输出(export)时被明确地指定了允许root用户访问的权限,任何在NFS客户端获取了root权限的攻击者都可能会轻易控制NFS服务器。另外,攻击者通过编写设置UID和GID值的程序,使其有访问 NFS服务器端任何用户的文件。同时,NFS守护进程服务器还不时被发现存在缓冲区溢出漏洞。

NIS服务常见的安全问题有:DoS攻击(在多台客户端上使用finger服务)、缓冲区溢出攻击(libnasl)、NIS maps查询弱认证和其各个守护进程也存在各自的安全问题,等等。此外NIS或netgroups的错误配置也会产生严重的安全问题。任何人均有可能轻易就可以访问NIS数据库。方法?只要猜测NIS域的名字,绑定其客户端到该域,然后运行ypcat命令来获取所需信息。

NFS和NIS都运行在非特权端口上,这意味着系统中的任何用户都能运行它们。如果原先的守护进程程序被恶意程序替换了,攻击者就可以获得分配给这些守护进程的资源的访问权限。

--[ 保护NFS ]----------------------------

要保护NFS,下面的checklist可对保护NFS服务提供帮助

第一步:你首先需要确定安装了最新的NFS补丁。面对漏洞攻击程序的频繁发布,Sun也较快地提供相应的安全补丁程序。第二步:检查NFS的设置。首先检查/etc/exports文件。其中的所有主机和网络组是否都是最新、最正确的?用户和主机有可能会曾经移动或改变,因此经常检验该文件以保证其内容正确是非常重要的。注意检查网络组的正确性。(提示:这些网络组可在/etc/netgroup文件中找到。)

不过,在离开/etc/exports文件前,还有其它项目需要检查。由于文件系统的访问权限也是在这里定义的,所以需要小心检查它们。如果对于一个文件系统未指定任何的访问权限,则存在问题。这意味该文件系统可被任何人从任何地方访问。对于输出共享的文件系统均应明确指定允许访问的主机或网络组,和访问权限(例如只读)。这样使得攻击者要想入侵系统必须突破更多的安全限制。对于该文件还要注意一点:确保NFS服务器不要存在自引用,和指定主机时要使用全称域名(FQDN)。

第三步是确保所有被共享的文件名不超过256字符。当修改完/etc/exports文件后,要记住运行/etc/exportfs使修改生效。然后运行 showmount -e来校验被共享输出的文件系统访问权限。第四步是确保/etc/exports和/etc/netgroups的访问权限为644,属主为root,组用户为root或sys(或适当的组用户)。

第五步是在被输出文件系统机器上运行fsirand,而且在cron服务中设置其周期性自动运行。安装了fsirand的系统会为文件系统生成随机性的节点数值。虽然在运行fsirand前必须先unmount共享的文件系统,这可能会造成一些不便,但它能使恶意攻击者更难以猜测文件句柄。

最后一步是激活NFS的端口监视。在前面我们曾提到NFS缺省时运行在非特权端口。在Solaris系统中可以通过在/etc/system文件中添加以下内容来修补:

set nfssrv:nfs_portmon = 1

这会使NFS服务器仅接受来自特权端口的客户端请求。不要忘了添加该参数后要

重启机器。

--[ 保护NIS ]----------------------------

要保护NIS安全,checklist的第一步也是确定安装了最新的NFS补丁。第二步是了解NIS的结构是如何设置的。如果是在两个或多个网络上运行 NIS服务器,或许应该考虑使NIS服务仅运行于一个网络。其中的原因是对于基于多网络的服务器需要路由功能支持,这样的话任何人都可能绑定到NIS域并读取所有的NIS maps。如果NIS服务器在路由器后运行,则此建议也是适用的。

检查NIS结构的另一个方面是确保NIS maps是否与本地口令文件是相互独立的。这条策略可以使恶意攻击者更难从NIS主服务器获取口令信息。同时要确保root口令也不包含在NIS map。checklist的第三步是检查用户口令强度,即是否符合安全策略?是否过于简单?等等。不符合口令安全策略的口令会破坏NIS安全性,因为恶意攻击者可能通过猜测用户口令来登录到系统中。所以要密切关注用户口令的安全性。

checklist的第四步是检查空口令。这只要运行以下命令即可:

#!/bin/sh

( cat /etc/passwd; ypcat passwd ) | awk -F':' '{if $2 == ""} print $1)' [2]

第五步是确保口令域中'*'的正确使用。在客户端的口令文件中设置如下内容:

+:*:0:0:::

然后试着登录该客户端。正确的结果应该是不能成功登录。然后把"+"号后面的"*"号去掉,此时如果以"+"帐号能和其它NIS用户一样成功登录,则该NIS服务器版本存在安全问题,应下载安装最新补丁。这是旧版本ypbind的一个安全漏洞。

第六步是检查服务器数据库maps是如何创建的。创建DBM文件时可以有一个特定的关键字是YP_SECURE,它可以使NIS服务器仅回答来自特权端口的客户端请求。另外,被信任的主机或网络可在/var/yp/securenets文件中指定,ypserver和ypxfrd会读取该文件。

--[ Netgroups ]----------------------------

netgroups是包含特定主机的限制组,用于限制到特定主机的NFS访问和定义特定域管理员的用户。netgroups可能也是系统管理的讨论焦点,然后如果你真的需要增加对NFS和NIS的攻击难度,那么或许就需要使用它。通过定义netgroups,能够指定文件可以被企业网内什么用户和哪里访问。netgroups的主要数据库存放在NIS主服务器的/etc/netgroup文件中。

如果使用netgroups,注意确保实施以下策略:

* 禁止本地系统rlogin和rsh的使用,特别是对服务器。如果不能禁止,则尽可能限制这些服务的

使用和.rhosts文件的管理。

* 检查/etc/netgroup文件的语法错误。

* 全面测试netgroups中定义的组的访问权限。

另外,要注意文件中的特殊字符:文件中的空白字符有可能意味任何人都能够安装特定的文件系统。主机或用户名的错误拼写也可能造成安全漏洞。

--[ 高级进阶 ]----------------------------

阅读了以上内容,你是否相信NFS和NIS服务安全配置已经足够?下面再做进一步的讨论。

Secure NFS(安全NFS)是使用了Secure RPC(安全RPC)的服务,它集成了DES加密和指数密钥交换,提供普通NFS所没有的认证功能。

NIS+/LDAP NIS+是NIS的最新替代版本,其内嵌了更多的安全功能(虽然不是最好的)。NIS+具有分级结构,而NIS是平面结构,即NIS+拥有更多的访问控制功能。NIS+正在集成到LDAP中,以实现新的服务器服务:ypldapd。

CFS(Cryptographic File System,加密文件系统)由Matt Blaze开发,它将加密服务置于文件系统层,可以说是NFS的替换版本。除基于公共密钥加密功能外,CFS在操作系统中还有包括密钥管理、透明访问、性能优化、可扩展性和可移植性等多个特点。

--[ 结论 ]----------------------------

NFS和NIS服务的不安全性是其固有的,因此它们仍将是未授权访问者的攻击目标之一。然而,如果实施了本文上面讨论的安全技术,NFS和NIS的安全性将得到一定提高。如果仍不能满足安全策略的要求,可以实施在“高级选项”中讨论的一些技术。

--[ 参考文献 ]----------------------------

[1] Practical UNIX Security, Simson Garfinkel and Gene Spafford, O'Reilly and Associates, Inc., 1991

[2] Managing NFS and NIS, Hal Stern, O'Reilly and Associates, Inc., 1991

[3] "Almost Everything You Ever Wanted to Know About Security" (but were afraid to ask!), http://www.nsi.org/Library/Compsec/faq.htm.Maintained by Alec Muffett.

[4] "Solaris Operating Environment Security", Alex Noordergraaf and Keith Watson, Sun BluePrints OnLine, January 2000

[5] UNIX Computer Security Checklist (Version 1.1), AUSCERT,ftp://ftp.auscert.org.au/pub/auscert/papers/unix_security_checklist

[6] "NIS to LDAP Transition: Exploring" Tom Bialaski, Sun BluePrints OnLine, February 2000.

[7] "A Cryptographic File System for Unix", Matt Blaze, AT&T Bell Laboratories, November 1993.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有