您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 加强Linux用户网络访问权限的安全控制能力
M6-3加强Linux用户网络访问权限的安全控制能力1.1场景描述1.1.1学习目的学生通过该能力模块的学习,能够独立完成和熟练掌握安全设置NFS和SAMBA服务,从而实现文件安全访问的能力。。1.1.2学习要求理解:NFS和SAMBA基本概念。掌握:NFS与SAMBA安全配置。1.1.3学习重点和难点1.学习重点安全设置NFS安全设置SAMBA2.学习难点安全设置SAMBA:理解SAMBA服务器安全访问级别。1.2知识准备1.2.1NFSNFS是分布式计算机系统的一个组成部分,可实现在异构网络上共享和装配远程文件系统。NFS简介NFS由SUN公司开发,目前已经成为文件服务的一种标准(RFC1904,RFC1813)。其最大功能是可以通过网络让不同操作系统的计算机可以共享数据,所以也可以将其看做是一台文件服务器,如图1-1所示。NFS提供了除Samba之外,Windows与Linux及UNIX与Linux之间通信的方法。客户端PC可以挂载NFS服务器所提供的目录并且挂载之后这个目录看起来如同本地的磁盘分区一样,可以使用cp、cd、mv、rm及df等与磁盘相关的命令。NFS有属于自己的协议与使用的端口号,但是在传送资料或者其他相关信息时候,NFS服务器使用一个称为远程过程调用(RemoteProcedureCall,RPC)的协议来协助NFS服务器本身的运行。为何使用NFSNFS的目标是使计算机共享资源,在其发展过程中(即20世纪80年代),计算机工业飞速发展,廉价CPU及客户端/服务器技术促进了分布式计算环境的发展。然而当处理器价格下降时,大容量的存储系统相对而言价格仍居高不下。因此必须采用某种机制在充分发挥单个处理器性能的同时使计算机可共享存储资源和数据,于是NFS应运而生。NFS协议使用NFS,客户端可以透明地访问服务器中的文件系统,这不同于提供文件传输的FTP协议。FTP会产生文件一个完整的副本;NFS只访问一个进程引用文件部分,并且一个目的就是使得这种访问透明。这就意味着任何能够访问一个本地文件的客户端程序不需要做任何修改,就应该能够访问一个NFS文件。NFS是一个使用SunRPC构造的客户端/服务器应用程序,其客户端通过向一台NFS服务器发送RPC请求来访问其中的文件。尽管这一工作可以使用一般的用户进程来实现,即NFS客户端可以是一个用户进程,对服务器进行显式调用,而服务器也可以是一个用户进程。因为两个理由,NFS一般不这样实现。首先访问一个NFS文件必须对客户端透明,因此NFS的客户端调用是由客户端操作系统代表用户进程来完成的;其次,出于效率的考虑,NFS服务器在服务器操作系统中实现。如果NFS服务器是一个用户进程,每个客户端请求和服务器应答(包括读和写的数据)将不得不在内核和用户进程之间进行切换,这个代价太大。第3版的NFS协议在1993年发布。(1)访问一个本地文件还是一个NFS文件对于客户端来说是透明的,当文件被打开时,由内核决定这一点。文件被打开之后,内核将本地文件的所有引用传递给名为本地文件访问的框中,而将一个NFS文件的所有引用传递给名为NFS客户端的框中。(2)NFS客户端通过其TCP/IP模块向NFS服务器发送RPC请求,NFS主要使用UDP,最新的实现也可以使用TCP。(3)NFS服务器在端口2049接收作为UDP数据包的客户端请求,尽管NFS可以被实现为使用端口映射器,允许服务器使用一个临时端口,但是大多数实现都是直接指定UDP端口2049。(4)当NFS服务器收到一个客户端请求时,它将这个请求传递给本地文件访问例程,然后访问服务器主机上的一个本地的磁盘文件。(5)NFS服务器需要花一定的时间来处理一个客户端的请求,访问本地文件系统一般也需要一部分时间。在这段时间间隔内,服务器不应该阻止其他客户端请求。为了实现这一功能,大多数的NFS服务器都是多线程的--服务器的内核中实际上有多个NFS服务器在NFS本身的加锁管理程序中运行,具体实现依赖于不同的操作系统。既然大多数UNIX内核不是多线程的,一个共同的技术就是启动一个用户进程(常被称为nfsd)的多个实例。这个实例执行一个系统调用,使其作为一个内核进程保留在操作系统的内核中。(6)在客户端主机上,NFS客户端需要花一定的时间来处理一个用户进程的请求。NFS客户端向服务器主机发出一个RPC调用,然后等待服务器的应答。为了给使用NFS的客户端主机上的用户进程提供更多的并发性,在客户端内核中一般运行着多个NFS客户端,同样具体实现也依赖于操作系统。NFS服务器面临的安全隐患因为NFS在网络上明文传输所有信息,按照默认设置,NFS共享把根用户改成用户nfsnobody,它是一个不具备特权的用户账号。这样,所有根用户创建的文件都会被用户nfsnobody所有,从而防止了设置setuid的程序被上传到系统。如果使用了no_root_squash,远程用户就能够改变共享文件系统上的任何文件,把设置了特洛伊木马的程序留给其他用户,在无意中执行。NFS服务器安全策略(1)使用TCP_Wrappersportmap和rpc.nfsd结合起来,使NFS服务器上的文件即使没有任何权限也能容易得到。可以使用访问控制保障网络安全,在使用NFS时最好结合TCP_Wrappers来限制使用范围。(2)注意配置文件语法错误NFS服务器通过/etc/exports文件来决定要导出哪些文件系统,以及把这些目录导出到哪些主机上。编辑这个文件的时候要特别小心,不要添加额外的空格。例如:/etc/exports文件的以下行会使主机bob.example.com能够共享/tmp/nfs/目录。/tmp/nfs/bob.example.com(rw)但是/etc/exports文件中这一行的情况却不同。它共享同一目录,让主机bob.example.com拥有只读权限,却给全局以读写权限。这全是由主机后面的一个空格造成的。/tmp/nfs/bob.example.com(rw)使用showmount命令来校验哪些目录被共享,从而检查NFS共享配置是一个好习惯。showmount格式为:showmount-e(3)使用iptables防火墙因为NFS在网络上明文传输所有信息,所以让NFS服务器在防火墙后、在一个分段的安全网络上运行就很重要。无论何时在不安全的网络上传递NFS信息都有被截取的危险。从这个角度讲,谨慎制定网络计划就有助于防御重要的安全破坏。限制RCP服务访问的办法一般是使用防火墙,除了TCP-Wrapper还有ipchians和iptalbes的防火墙。在全面使用Linux2.4或更高版本内核的今天,了解iptables这种防火墙方法也就足够了。缺省的状态下,portmap使用111端口,而NFS使用2049端口,可以通过iptables来限制对该端口的访问:iptables-tfilter-AINPUT-pudp-d127.0.0.1--dport111-jDROPiptables-tfilter-AINPUT-pudp-d127.0.0.1--dport2049-jDROPiptables-tfilter-AINPUT-pudp-strusted_client-dthis_server_ip--dport\2049–jACCEPTiptables-tfilter-AINPUT-pudp-snot_trusted_client-dthis_server_ip–dport\2049-jDROP(4)把开放目录限制为只读权限可以在/etc/exports文件中设定权限选项ro,通常需要把NFS服务器对客户开放的任何目录或文件系统设置为只读访问:/appdevpc.nitec.com(ro)这样,devpc.nitec.com网络中的客户只能对/app目录进行只读访问。(5)禁止对某些目录的访问当开放一个完整的文件系统或者一个目录时,缺省情况下它的子目录会自动开放访问权限。如果希望限制对其子目录的访问可以使用noaccess访问选项,例如希望开放/pub目录权限但是禁止访问/pub/staff-only子目录:/pubweblab-??.nitec.com(ro)/pub/staff-onlyweblab-??.nitec.com(noaccess)注意:“??”代表任意字符。(6)rootsquashing访问问题按照默认设置,root用户的用户ID和组群ID都是0。root权限压缩(Rootsquashing)把用户ID0和组群ID0映射为匿名的用户和组群ID,因此客户上的根用户就不会在NFS服务器上具备根特权。如果这个选项被选,root用户就不会被映射为匿名用户,客户上的root用户就会对导出的目录拥有根特权。选择这个选项会大大降低系统的安全性。除非绝对必要,请不要选择它。为了明确执行该规则,可以修改文件/etc/exports:/(rw,root_squash)这样如果客户端的UID0(root)用户想要访问(读、写、删除)一个NFS文件系统,服务器端会用UID代替服务器的nobody账户。这样客户端的root用户不能修改和访问服务器端root用户才能访问和修改的文件。(7)使用nosuid和noexec选项SUID(SetUserID)或SGID(SetGroupID)程序可以让普通用户以超过自己权限的形式执行。很多SUID/SGID可执行程序是必须的,比如上面提到的passwd。SUID/SGID程序会被一些恶意的本地用户利用,获取本不应有的权限。运行以下命令可以找到所有具有这一属性的程序:#find/\(-perm-4000-o-perm-2000\)使用者必须查看这一列表,尽量减少那些所有者是root或是在root组中却拥有SUID/SGID属性的文件,删除或对其属性进行更改。使用nosuid选项禁止set-UID程序在NFS服务器上运行,可以修改文件/etc/exports加入一行:/(rw,root_squash,nosuid)上面的例子说明:/上可以登录,的用户可以读取/中的文件和目录,但是不能运行set-UID程序。/(rw,root_squash,noexec)上面的例子说明/上可以登录,的用户可以读取/中的文件和目录,但是禁止所登录文件系统中文件的执行。NFS是非常重要的网络协议,许多企业通过NFS协议共享硬盘和其它设备。把能登录NFS目录设置为只读访问、提高portmap服务的安全性、squashingroot访问、使用onset-UID和nonexecutable文件设置可以提高NFS服务器的安全。1.2.2SAMBASamba简介Samba(SMB是其缩写)是一个网络服务器,用于Linux和Windows共享文件之用;Samba即可以用于Windows和Linux之间的共享文件,也一样用于Linux和Linux之间的共享文件;不过对于Linux和Linux之间共享文件有更好的网络文件系统NFS,NFS也是需要架设服务器的;大家知道在Windows网络中的每台机器即可以是文件共享的服务器,也可以同是客户机;Samba也一样能行,比如一台Linux的机器,如果架了SambaServer后,它能充当共享服务器,同时也能做为客户机来访问其它网络中的Windows共享文件系统,或其它Linux的Sabmba服务器;我们在Windows网络中,看到共享文件功能知道,我们直接就可以把共享文件夹当做本地硬盘来使用。在Linux的中,就是通过Samba的向网络中的机器提供共享文件系统,也可以把网络中其它机器的共享挂载在本地机上使用;这在一定意义上说和FTP是不一样的。Samba用的netbios协议,如果
本文标题:加强Linux用户网络访问权限的安全控制能力
链接地址:https://www.777doc.com/doc-1254457 .html