zjzhen 发表于 2011 年 3 月 8 日 18:07:57

根据网络部署情况选择合适的安全等级

在Windows系统中有网络安全等级的设置。而在SAMBA服务器中,也引入了这安全等级的概念。每一个安全等级都对应着一套默认的安全策略。在SAMBA服务器中,其安全等级共分为四级,分别为share、User、Server、和Domain。作为系统管理员需要了解这四个安全级别的差异,并根据企业的网络部署情况与安全性的需求,来选择合适的安全级别。

  一、各个安全级别的介绍及适用环境。

  1、Domian安全级别。这是SAMBA服务器中最高的安全等级。如果设置为这个安全等级,则SAMBA服务器本身并不会对客户端的身份进行验证。而把这些工作交给专门的域控制器或者其他服务器来处理。在以前的文章中,我记得说过利用SAMBA服务器作为Windwos客户端与Linux服务器的红娘最大的好处就是可以把Linux操作系统加入到微软的域中。也就是说,部署有SAMBA服务器的Linux操作系统支持微软的域环境。故如果企业现在的网络环境是域环境,则可以使用这个安全等级。系统管理员可以把SAMBA服务器加入到微软的域中,并让域控制器来负责客户端的身份认证。可以让微软的域控制器负责服务器与客户端的互动,处理用户登录、验证、目录搜寻等相关作业,以提供比较高的安全性。为此采用这个安全级别的话,有一个前期条件,即企业网络中已经实现了域管理。

  2、Servder安全等级与User安全等级。这两个安全等级非常的相似,为此我就在这里一同进行说明。User安全等级是SAMBA服务器的默认安全等级,他表示用户在访问服务器之前,必须先用有效的帐号与密码进行登录。也就是说,客户端必须持有有效的用户名与密码才能够进行访问。另外需要注意的一个问题是,系统管理员需要清除这个身份验证的时间。有些系统其身份验证的时间发生在文件具体访问的时候。也就是说,客户端在没有密码的情况下,可以访问共享文件的列表信息。但是要访问具体的文件,则需要提供密码才行。但是User安全等级则不同。在这个安全等级下,身份认证是发生在连接的时候。也就是说客户端无法提供有效的用户名与密码的话,则即使列表信息都不能够被访问。

  Server安全等级处于User安全等级与Domian安全等级之前。客户端在访问SAMBA服务器的时候,也需要提供有效的用户名与密码信息。只不过在这个安全等级下,会有另外的独立的服务器来负责这个身份的验证。这跟Domian安全级别非常的类似。只是在这个安全级别下没有域环境的强制要求。不过采取这个安全级别的话,跟Domain安全级别有一个很大的差异。即在Server安全等级下,如果在其他服务器上验证失败的话,则服务器会自动把这个安全等级降级为User。然后采用User安全等级的那一套身份验证机制。可见,对于客户端来说,可能User与Server两个安全等级并没有什么不同。但是系统管理员却可以在其中大做文章。如可以根据安全等级的不同,设置不同的访问策略、访问权限等等。

  通常情况下,如果企业对于安全性的要求比较高,而且已经有独立的服务器来完成邮件等应用服务的身份认证,则可以考虑采用Server级别。并可以通过禁止启用SAMBA密码文件来限制服务器采用User级别。

  3、Share安全级别。这个级别是SAMBA服务器中最低的安全级别。此时客户端连接到SAMBA服务器的时候,并不需要提供用户名与密码等身份验证信息,就可以访问Linux服务器上的共享资源。虽然这种安全级别方式比较方便,但是很明显其安全性很难得到保证。在日志信息中,也很难反映中客户端的访问信息。不过系统管理员需要注意的是,此时如果其在Linux系统中利用who命令来查询登录用户信息的话,会发现一些莫名其妙的用户。这主要是因为在share安全等级中,客户端并不是不需要任何帐号和密码就可以访问。而是此时SAMBA会自动提供一个有效的Unix帐号来打表客户端的身份。所以系统管理员会在who列表中看到一些陌生的帐户信息。由于这个级别缺乏安全保障,为此我是不建议大家采用这个安全级别的。

  二、SAMBA密码文件作用及维护。

  在谈到Server 安全等级的时候,我谈到过可以利用禁止启用SAMBA密码文件来限制系统从Server安全等级降低到User等级。为什么可以这么处理呢?

  这个主要是因为SAMBA服务器的帐号与密码与Linux操作系统的帐号与密码文件并不通用。也就是说,客户端及时具有Linux操作系统的用户名与密码,而没有SAMBA服务器的用户名与密码,则客户端仍然无法正常连接到Linux操作系统上。为此一些系统管理员常常会有类似的疑问,在身份认证窗口中输入正确的Linux帐号以及密码,但是系统仍然会提示密码错误而拒绝其登录。为什么输入正确的用户名密码仍然无法登录到SAMBA服务器呢?这主要是因为SAMBA服务器的密码文件与Linux操作系统的密码文件并不通用。为此客户端使用Linux操作系统的帐号密码数据却不能够登录到SAMBA服务器。

  可是如果系统管理员需要维护两套密码(SAMBA服务器密码与Linux操作系统密码),则会非常的麻烦。那么能否把它们的密码统一呢?答案是肯定的。要不然的话SAMBA服务器的可用性会大大的下降。其实实现的原理很简单,只需要把Linux操作系统的账户再SAMBA服务器中重新建立即可。如此的话,利用Linux系统的账户与密码就可以登录到SAMBA服务器中(其实他们所采用的密码文件仍然是不同的,只是两个服务器中用户名与密码相同而已)。但是手工建立这些用户名与密码信息的话,显然比较费时费力。其实SAMBA服务器的设计者已经考虑到了这个问题。在建立SAMBA密码文件的时候并不需要手工输入账户信息。这里我就给大家介绍一个小工具,这个工具的名字叫做“mksmbpasswd.sh”。这是一个脚本程序,主要的用途就是读取Linux操作系统的密码文件,然后把这个密码文件中的用户名、密码信息根据一定的规则转换为SAMBA密码文件。

   在利用这个脚本程序的时候,需要考虑到一个权限的问题。由于工作习惯,在部署SAMBA服务器的时候,我们往往会习惯性的专门设置一个用户名以及组,如SAMBA。然后利用这个用户名和组来部署SAMBA服务器。这主要是用来跟其他应用区分开来,实现独立的管理。但是此时若使用这个脚本程序的话,因为需要访问Linux操作系统中的密码文件。为此就需要以root特权用户的身份来执行这个命令。而不能够以SAMBA的身份来运行。一些第一次部署SAMBA服务器的系统管理员可能会经常犯这个错误。为此我在这里提醒大家,一定要以root特权用户的身份来执行这个命令,否则的话系统会提示出错信息,无法建立SAMBA密码文件。

  另外需要注意的是,密码文件建立后,SAMBA服务器不用重新启动,其密码文件是马上生效的。但是对于客户端来说,则不同。如在测试的时候,系统管理员发现无法利用Linux系统的帐户名与密码登录到SAMBA服务器。后来检查发现是这个密码文件在作怪。于是马上就对这个密码文件进行维护,加入了Linux操作系统的帐号与密码信息。但是此时客户端仍然无法登录到SAMBA服务器。而需要重新启动客户端后才能够登录。这个具体的原因我也不是很清楚,大家有时间的话可以研究交流一下。

  最后需要强调的是,SAMBA服务器的密码文件与Linux操作系统的密码文件不是同一个文件,而且他们也不会相互同步。为此如果在Linux操作系统中为某个员工新家了一个帐户的话,则仍然需要利用上面那个脚本程序在SAMBA密码文件中进行手工同步。或者手工建立一个相同的帐号。不过据我的了解,在后续SAMBA服务器版本中,其设计者可能会直接采用Linux系统的用户名密码文件作为SAMBA服务器的密码文件。这让我们拭目以待吧!
页: [1]
查看完整版本: 根据网络部署情况选择合适的安全等级