Samba服务器分析1.docx
- 文档编号:10952077
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:8
- 大小:31.01KB
Samba服务器分析1.docx
《Samba服务器分析1.docx》由会员分享,可在线阅读,更多相关《Samba服务器分析1.docx(8页珍藏版)》请在冰点文库上搜索。
Samba服务器分析1
PINGDINGSHANUNIVERSITY
《网络操作系统配置与管理》
课程论文
题目:
对Linux中SAMBA服务器分析
院(系):
软件学院
专业年级:
软件工程2011级
姓名:
冯林
学号:
111530121
2014年06月06日
摘要
为了使windows主机间的资源能共享,微软于1980年开发了SMB(ServerMessageBlock),通过SMB通信协议,使网络上各台主机之间能够共享文件、打印机等资源。
目前类似这种资源共享的通信协议还有NFS、Appletalk、Netware等。
Samba是在Linux系统上实现SMB(SessionMessageBlock)协议的一个免费软件,以实现文件共享和打印机服务共享,它的工作原理与Windows网上邻居类似。
SMB使Linux计算机在网上邻居中看起来如同一台Windows计算机。
Windows计算机的用户可以“登录”到Linux计算机中,从Linux中复制文件,提交打印任务。
如果Linux运行环境中有较多的Windows用户,使用SMB将会非常方便。
Linux操作系统通过Samba服务器向局域网中的其它Windows主机提供文件共享的服务。
同时,在Linux服务器上还连接了一个共享打印机,打印机也通过Samba向局域网的其它Windows用户提供打印服务。
本文通过对Samba服务器的分析和网上调查,得出Samba服务器还是很完美的,基本没有什么大缺陷,除了对于Samba服务器支持的某些小局限和针对于某些版本存在的缓冲溢出缺陷,本文将对某些版本存在的缓冲溢出缺陷做出暂时的解决方案。
关键字:
Linux操作系统、Samba服务器、SMB协议、缓冲溢出缺陷。
目录
1引言1
2分析解决问题2
2.1Samba组成2
2.2Samba作用2
2.3Samba服务器的安装与配置2
2.4Samba缓冲溢出缺陷3
3结论5
4参考文献6
1引言
Samba是最先在Linux和Windows两个平台之间架起了一座桥梁,正是由于Samba的出现,我们可以再Linux系统和Windows系统之间互相通信,比如拷贝文件、实现不同操作系统之间的资源共享等,我们将其架设成一个功能强大的文件服务器,也可以将其架设成打印服务器提供本地和远程联机打印,甚至我们可以使用SambaServer完全取代NT/2K/2K3中的域控制器,做域管理工作,使用也非常方便。
Samba的支持并不是没有局限性。
目前的Samba系统能够较好的和Windows2000和WindowsXP客户端进行合作,但是它还没有完全集成到微软的活动目录结构中。
这也是它的3.0版本所要实现的。
虽然现在已经可以得到公开的Beta测试版本,但该版本仍在进一步研发中。
Samba系统的真正目的在于帮助简化混合操作系统环境中所存在的挑战。
对于大企业来说,在共享文件和共享打印的访问方面存在巨大挑战,而Samba系统的目的在于改变这种现象。
另外本人能力有限,对于Samba服务器支持局限性并没有太深的调研,只是对于Samba服务器的某些版本存在的缓冲溢出缺陷给予暂时的解决方案,虽然不能很透彻,但是也是自己努力查阅和分析的结果。
2分析解决问题
2.1Samba组成
给Windows客户提供文件服务是通过samba实现的,这套软件由一系列的组件构成,主要的组件有:
1)smbd(SMB服务器)
smbd是Samba服务守护进程,是Samba的核心,时刻侦听网络的文件和打印服务请求,负责建立对话进程、验证用户身份、提供对文件系统和打印机的访问机制。
该程序默认安装在/usr/sbin目录下。
2)nmbd(NetbioS名字服务器)
nmbd也是Samba服务的守护进程,用来实现“NetworkBrower”(网络浏览服务器)的功能,对外发布samba服务器可以提供的服务。
用户甚至可以用Samba作为局域网的主浏览服务器。
3)smbclient(SMB客户程序)
是Samba的客户端程序,客户端用户使用它可以复制Samba服务器上的文件,还可以访问Samba服务器上共享的打印机资源。
4)testparm
该程序用来快速检查和测试Samba服务器配置文件smb.conf中的语法错误。
5)smbtar
smbtar是一个shell脚本程序,它通过smbclient使用tar格式备份和恢复一台远程Windwos的共享文件。
还有其它工具命令用来配置Samba的加密口令文件、配置用于Samba国际化的字符集。
在Linux上,Samba还提供了挂载和卸载SMB文件系统的工具程序smbmount和smbumount。
2.2Samba作用
建立计算机网络的目的之一就是为了能够资源共享,如今接入网络的计算机大多数使用Windows操作系统。
为了能让使用Linux操作系统的计算机和使用Wmdows操作系统的计算机共享资源,需要使用Samba工具。
Samba是在Linux/Unix系统上实现SMB(SessionMessageBlock)协议的一个免费软件,以实现文件共享和打印机服务共享,它的工作原理与Windows网上邻居类似。
SMB使Linux计算机在网上邻居中看起来如同一台Windows计算机。
Windows计算机的用户可以“登录”到Linux计算机中,从Linux中复制文件,提交打印任务。
如果Linux运行环境中有较多的Windows用户,使用SMB将会非常方便。
如图8-1所示,图中的服务器运行Samba服务器软件,其操作系统是Linux。
该服务器通过Samba可以向局域网中的其它Windows主机提供文件共享的服务。
同时,在Linux服务器上还连接了一个共享打印机,打印机也通过Samba向局域网的其它Windows用户提供打印服务。
2.3Samba服务器的安装与配置
用户在安装RedHatLinux9的时候,如果选择了安装所有软件包,那么Samba就已经安装上了;如果系统没有安装,则可以从光盘的RedHat/RPMS目录下安装。
1.查询Samba是否已经安装
RedHatLinux9中提供了Samba服务器的RPM软件安装包,这里可以使用rpm命令来检查是否安装以及安装。
安装Samba服务器需要以下软件包:
samba-2.2.7a-7.9.0.i386.rpm,Samba服务器软件。
samba-common-2.2.7a-7.9.0.i386.rpm,Samba服务器与客户端都需要的文件。
2.安装Samba
如果输出如上所示的软件名称,则说明已经安装,否则可以使用下面的命令安装Samba服务器软件。
注意:
要先安装samba-common-2.2.7a-7.9.0软件包,才能顺利完成另外2个软件包的安装。
安装了Samba的上述公用软件包、服务器软件包和客户端软件包后就可以了,但为了配置的方便以及利用RedHatLinux9的新特性,建议再安装redhat-config-samba-1.0.4-1和samba-swat-2.2.7a-7.9.0两个软件包。
这两个软件包在RedHatLinux9安装光盘里都有,其中redhat-config-samba-1.0.4-1.noarch.rpm在第1张光盘里,samba-swat-2.2.7a-7.9.0在第2张光盘里,安装方法和上面的相同。
redhat-config-samba-1.0.4-1是Samba配置工具,使用它可以很方便地配置Samba。
samba-swat-2.2.7a-7.9.0是用来修改samba配置文件的。
3.Samba服务器配置
控制Samba安装的文件在"/etc/samba"目录下,其文件的名字是smb.conf。
要想让Samba系统工作,需要对这个文件进行一些基本的编辑工作。
首先你必须改变"HostsAllow"行中的内容,使该行中包含你的局域网信息。
如果你不对此行进行编辑的话,你的网络中的任何人都无法访问你的系统。
此行中应该包含你的局域网的前缀。
例如,我的实验室网络运行在10.254.1.0/24上。
因此我可以将10.或者10.254.或者10.254.1放在"hostallow"行中来允许我的网络中所有的机器来使用这个Samba系统。
当然,我指定的网络地址越少,对于其他人来说,就有越多的机会来使用我的Samba服务器。
要确保Samba系统正确运行的最后一步是要对每个用户帐户至少设置一个密码。
由于在Linux和Windows系统中保存密码的方式各不相同,所以对于SMB的密码数据库来说,你需要使用一个工具来进行管理。
你可以在控制台提示中输入"smbpasswd-aroot"命令来实现这个目的。
在这种情况下,该工具将提示你对选定的用户输入密码,然后确认密码(这里假设是个根用户)。
一旦完成这个过程,根用户就可以从一个Windows机器中连接到Samba的配置文件中指定的缺省共享文件夹。
在这种情况下,根用户的"home"目录以及一个选定的安装好了的打印机就已经可以使用了。
2.4Samba缓冲溢出缺陷
详细:
Samba是一款开放源代码的自由软件,向SMB/CIFS客户端提供跨平台文件共享和打印共享服务。
Samba-TNG是由Samba衍生的版本,相当于WindowsNTdomain控制器。
Samba程序由于对输入没有进行正确的边界缓冲区检查,导致存在缓冲溢出缺陷,能使匿名用户在目标机器上获得远程root权限:
StrnCpy(fname,pname,namelen); /*Line252ofsmbd/trans2.c*/
在trans2.c文件的call_trans2open函数中,SambaStrnCpy函数使用namelen将pname拷贝到fname中。
如果namelen变量值为strlen(pname)+1,将导致触发缓冲溢出缺陷。
fname是一个大小为1024字节的_typedef_pstring类型的变量,如果pname函数大小超过1024字节,将触发该缺陷。
攻击者通过向目标机器发送精心构造的数据,能在目标机器上获得root权限。
受影响的版本:
Samba2.2.8版及其之前的版本;
Samba2.0.10版及其之前的版本;
Samba-TNG0.3.1版及其之前的版本
2.5解决方案
临时解决方法:
修改Samba2.2.8版smbd/trans2.c文件第250行的源代码:
-StrnCpy(fname,pname,namelen);
+StrnCpy(fname,pname,MIN(namelen,sizeof(fname)-1))
3结论
在开学之前,大我一届的朋友去培训,学的就是LINUX的架构,当时还听不懂,后来开学开了这门课,才知道这门课很重要,而Samba服务器的安装与配置又是linux应用的基础,学了很久,慢慢的有了些了解。
这次的论文,我也是考虑了很久,感觉自己学的还不是很老练,所以选了最基础的Samba服务器的分析,最后通过网上资料的大量查阅和自己的分析,算是大概掌握了Samba服务器的安装和配置,针对Samba服务器的缺陷,本人也实在能力有限,只能借阅参考网上别人的成果,经过一段时间的努力,也算不尽完美的完成了这篇论文,也希望老师能够尽心评阅。
4参考文献
[1]王海涛,付鹰.即时通信——原理、技术和应用[J].信息通信技术.2010,3:
34-40.
[2]罗莉琴,詹祖桥.Windows网络编程[M].北京:
人民邮电出版社,2011.
[3]庞怡,许洪光,姜媛.即时通讯工具现状及发展趋势分析[J].科技情报开发与经济.2006,16:
84-86.
[4]代印唐,张世永.即时通信安全研究[J].电信科学.2006,4:
10-16.
[5]谢希仁.计算机网络(第5版)[M].北京:
电子工业出版社,2006.
[6]孙鑫,余安萍.VC++深入详解[M].北京:
电子工业出版社,2006.
[7]谭浩强.C程序设计(第三版)[M].北京:
清华大学出版社,2005.
[8]朱和平.即时通信研究综述[J].现代计算机.2006,12:
55-58.
[9]Zhangbin.Instantmessagingsoftwaresecurityanalysisanddesign[J].Computerapplications.2007,6:
223-228.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Samba 服务器 分析