如何配置samba服务器
在Linux平台,以二进制程序包和源代码两种方式安装samba服务器,并整理相关配置文件,并给出基本应用操作。
步骤:
1机器上已经存在的samba服务,版本为3021b,这是通过使用rpm命令得到的。如下:
# rpm –qa | grep samba
Samba-client-3021b-2
Samba-common-3021b-2
2将上面的samba-client-3021b-2卸载。使用命令:rpm –e samba-client-3021b-2。
3用rpm –e samba-common-3021b-2来卸载common,因为依赖关系,不成功。
4下载二进制程序包:
samba-common-3023c-4i386rpm,
samba-client-3023c-4i386rpm,
samba-doc-3023c-4i386rpm,
samba -3023c-4i386rpm。
5安装这些程序包。分别使用命令:
rpm –Uvh samba-common-3023c-4i386rpm
rpm –ivh samba-client-3023c-4i386rpm
rpm –ivh samba-3023c-4i386rpm
rpm –ivh samba-doc-3023c-4i386rpm
使用选项Uvh来安装common是因为原来的common没有被卸载,因此应进行升级安装(U)。
6安装完毕后,可以使用rpm –qa samba来确认。会输出samba-3024c-4。
7下面开始对samba服务进行配置。
8首先,修改/etc/samba/lmhosts文件。加入一行,为本机上的Windows系统IP地址和主机名。这样才可以通过Windows来访问Unix的samba服务。
9创建目录/export/sambadir作为共享目录。
命令:mkdir –p /export/sambadir
chmod 777 /export/sambadir
10修改/etc/samba/smbconf文件。这是samba的配置文件。
Security = user
Log file = /var/log/samba/log%m
Path = /export/sambadir
11使用testparam来测试修改结果。
12加入一个用户,并修改其密码。
13使用chkconfig命令来设置在启动级别5中启动samba。命令如下:
Chkconfig –list | grep smb
Chkconfig –level 5 smb on
Chkconfig –list | grep smb
14重新启动网络服务:
/etc/rcd/initd/cups stop
/etc/rcd/initd/smb restart
15然后就可以在Windows系统中通过12步中设定的用户名和密码来访问Linux。
16使用源代码的安装方式:下载samba-3023ctargz源代码包,解压。
Cd samba-3023c/source
/autogensh
/configure –prefix=/usr –localstatedir=/var –with-configdir=/etc/samba –with-privatedir=/etc/samba –with-fhs –with-quotas –with-smbmount –enable-cups –with-pam_smbpass –with-syslog –with-utmp –with-swatdir=/usr/share/swat –with-shared-modules=idmap_rid –with-libsmbclient
Make
Make install
17其余步骤与7之后相同。
在一些中小型网络,或者企业的内部网中,利用Linux建立文件服务器是一个很好的解决方案。针对企业内部网中的绝大部分客户机采用Windows的情况,我们可以通过使用Samba来实现文件服务器功能。 Samba是在Linux及Unix上实现SMB(Server Message Block)协议的一个免费软件,由服务器及客户端程序构成。这里我们只介绍服务器程序。 我们首先介绍一些SMB协议的情况。SMB协议是建立在NetBIOS协议之上的应用协议,是基于TCP138、139两个端口的服务。NetBIOS出现之后,Microsoft就使用NetBIOS实现了一个网络文件/打印服务系统。这个系统基于NetBIOS设定了一套文件共享协议,Microsoft称之为SMB(Server Message Block)协议。这个协议被用于Lan Manager和Windows服务器系统中,实现不同计算机之间共享打印机和文件等。因此,为了让Windows和Unix/Linux计算机相集成,最好的办法就是在Unix/Linux计算机中安装支持SMB协议的软件。这样使用Windows的客户端不需要更改设置,就能像使用Windows NT或Windows 2000服务器一样,使用Unix/Linux计算机上的共享资源了。Samba使SMB协议运行在NetBIOS协议上,并且使用Windows的NetBEUI协议让Unix/Linux服务器可以在Windows的网络邻居上被访问到。 Samba的服务器程序可以实现以下主要功能: ◆ 文件及打印共享; ◆ 计算机名与IP的解悉; ◆ WINS服务的支持; ◆ 用户权限设置(如果配合Linux 的Quota还可以实现用户磁盘空间配额)。学习linux基本命令,推选《linux就该这么学》!
Samba的含义
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB也就是信息服务块,是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置NetBIOSoverTCP/IP使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
Samba的功能
Samba是许多服务以及协议的实现,其包括TCP/IP上的NetBIOS、SMB、CIFS、DCE/RPC,或者更具体来说包括MSRPC、一种WINS服务器、NT域协议包。
Samba是SMB协议的一种实现方法,主要用来实现Linux系统的文件和打印服务。Linux用户通过配置Samba服务器可以实现与windows用户的资源共享。进程smbd和nmbd是Samba的核心,在全部时间运行。
SMB(Sever Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是C/S协议,client可以通过协议访问服务器上的共享文件系统。
Samba的核心进程是:
1)smbd。这是samba的SMB服务器,它使用SMB协议与Client链接,完成用户认证,权限管理,和文件共享服务。
2)nmbd。提供NetBIOS名字服务器的守护进程,可以帮助客户定位服务器和域。
Samba的配置文件:smbconf。
Samba的客户端:smbclient。用于访问其他SMB计算机共享的资源。
swat是一个samba专用的www服务器,用于通过客户浏览器配置samba,提供了对samba的图形配置界面。
smbprint是一个shell脚本,使用smbprint向windows计算机共享出的打印机发送要打印的文档。
nmblookup用于查询NetBIOS名字的命令工具。
一、安装Samba组件
如果选择完全安装Red Hat Linux 90,则系统会默认安装Samba组件。我们可以在终端命令窗口输入以下命令进行验证:
[root@ahpeng root] rpm -qagrep samba
如果结果出现以下所示的5个软件包,则表示已经安装:
samba-swat-227a-790
samba-227a-790
redhat-config-samba-104-1
samba-common-227a-790
samba-client-227a-790
如果没有安装过Samba软件包,则可以插入第1张安装光盘,然后鼠标依次单击“主菜单→系统设置→添加/删除应用程序”菜单项,打开“软件包管理”对话框,在该对话框中找到“Windows文件服务器”选项,确保该选项处于选中状态,然后单击“更新”按钮即可开始安装。
你也可以把第1张安装光盘插入光驱,然后在终端命令窗口输入以下命令:
[root@ahpeng root]# cd /mnt/cdrom/RedHat/RPMS
[root@ahpeng RPMS]# rpm -ivh samba
[root@ahpeng RPMS]# rpm -ivh redhat-config-samba-104-1noarchrpm
二、Linux主机访问Windows主机
安装好Samba之后,就有了与Windows互相访问的基础。这里先介绍一下如何用字符命令方式访问Windows宿主机的共享资源。
1、查询宿主机的共享资源
可以使用“smbclient –L WindowsHostName”命令(此处的WindowsHostName用Windows主机名代替)。本例是要查询Windows主机Peter 上的共享资源,可以在终端窗口输入“smbclient –L Peter”命令,然后回车即可看到Windows主机的共享资源。
2、连接宿主机的共享目录
可以使用“smbclient //WindowsHostName/ShareName”命令来连接Windows主机上的某个共享文件夹,如果该共享文件夹需要用户名和密码,则可以使用“smbclient //WindowsHostName/ShareName –U UserName”命令。例如要连接Windows主机Peter上的共享目录Share,我们可以在终端窗口输入“smbclient //Peter/Share”命令然后回车即可。
如果连接成功,即可出现“smb:>”提示符,在该命令提示符下输入适当的命令,即可对所连接的共享目录进行操作。
Smb支持的命令有大约40个命令,可以很方便地对共享目录进行删除、重命名、切换目录等操作。如果要列出共享目录“Share”下的具体内容,可以使用ls命令。要删除其下的testtxt文件,可以使用“del testtxt”命令。共2页。
3、映射网络驱动器
我们知道,Windows下可以将共享目录映射为网络驱动器,这样就可以把共享目录当成本地文件夹来使用。在Linux下可以借助于 smbmount命令来实现,具体的命令参数是“smbmount //WindowsHostName/ShareName /mnt/smbdir”(此处的ShareName指代Windows共享资源名称,smbdir指代挂载点名称)。假设要将Windows主机 Peter下的共享文件夹Share映射为/mnt/WinShare目录,具体步骤是:
首先在/mnt目录下创建一个目录,假设为/mnt/WinShare;
然后打开终端命令窗口,运行“smbmount //Peter/Share /mnt/WinShare”即可。
现在再在文件管理器里打开/mnt/WinShare目录可以看到共享目录的内容,要卸载该映射目录,可以使用umount命令。
4、用Nautilus访问Windows主机
借助Gnome桌面下的文件管理器Nautilus,我们可以用图形界面来访问Windows主机,这里要注意的是Nautilus只是提供访问Windows主机的图形界面,具体的底层操作还是借助于Samba客户端来完成。
在Gnome桌面环境下,单击“主菜单→网络服务器”菜单项,即可用Nautilus文件管理器查看工作组列表。双击工作组名称,即可看到其下的Windows主机。
双击其中的某台Windows主机图标,即可看到该主机的共享文件夹,可以看到这和Windows下的网络邻居几乎一样。
由于Nautilus本身就是Red Hat Linux的文件管理器,所以我们可以任意往Windows共享目录里拷贝文件、删除文件、创建目录等等(对于windows 2000/XP主机还需要考虑该共享资源的权限设置)。
三、Windows主机访问Linux主机
要想让Windows宿主机能够访问Linux虚拟机,就必须在Linux虚拟机上启动Samba服务。在启动之前,还需要对Samba服务的属性进行配置,例如指定Linux虚拟机的共享目录、所在的工作组名称等。
1、配置Samba服务器
在以前版本的Red Hat Linux,我们必须直接修改Samba配置文件smbconf,或者使用SWAT对Samba进行全方位的设置。Red Hat Linux 90新引入了一个图形化的Samba服务器配置工具,可以让我们很方便地对Samba服务器进行配置。以root用户身份登录系统,单击“主菜单→系统设置→服务器设置→Samba服务器”菜单项,即可打开Samba服务器配置对话框。也可以在终端命令窗口输入“redhat-config- samba”,来访问Samba服务器配置对话框。
首先对Samba服务器的基本设置和安全选项进行配置,单击配置对话框上的“首选项→服务器设置”菜单项,即可打开服务器设置对话框。
基本设置:在对话框的“基本”标签页,我们可以指定Linux主机所在的工作组名称,需要注意的是,此处的工作组名称不一定非得与Windows主机所在的工作组名称一致。
安全设置:然后进行Samba服务器安全设置,这里一共有4个选项。
“验证模式”代表如果Windows主机不是位于NT域里,此处应该选择“共享”验证模式,这样只有在连接Samba服务器上的指定共享时才要求输入用户名、密码;“验证服务器”代表对于“共享”验证模式,无需启用此项设置;“加密口令”选项应该选择“是”,这样可以防止黑客用嗅探器截获密码明文;“来宾账号”代表当来宾用户要登录入 Samba 服务器时,他们必须被映射到服务器上的某个有效用户。选择系统上的现存用户名之一作为来宾Samba账号。当用户使用来宾账号登录入 Samba 服务器,他们拥有和这个用户相同的特权。
添加共享目录:单击Samba配置对话框工具栏上的“增加”按钮。在打开的对话框中的“基本”标签页上,指定(共享)目录为某个存在的目录,例如可以指定/tmp,再指定该目录的基本权限是只读还是读/写。在“访问”标签页上,可以指定允许所有用户访问、或者只允许某些用户访问。
2、启动Samba服务器
打开终端命令窗口,输入“/sbin/service smb start”命令,即可出现以下提示信息,表示Samba服务已经启动。
# /sbin/service smb start
启动SMB 服务 [确定]
启动NMB 服务 [确定]
接下来在Windows里打开“网络邻居”,就可以看到我们刚才设置的Samba服务器了
第1步,执行“应用程序”/“系统设置”/“服务器设置”/“Samba”菜单命令,将弹出“Samba服务器配置”对话框 。
第2步,在弹出的“Samba服务器配置”对话框中执行“首选项”/“服务器设置”命令,将弹出“服务器设置”对话框。在该对话框的“基本”选项卡中设置工具组名称,可与Windows操作系统工作组的名称相同,也可在“描述”文本框中填写计算机的描述语言,它将在网络中显示。
第3步,切换到“安全性”选项卡,在该选项卡中设置验证模式“共享”、加密口令为“否”、来宾账户“无来宾账户”,最后单击“确定”按钮完成服务器配置。
第4步,单击“Samba服务器配置”对话框中工具栏上“添加”按钮,将弹出“创建Samba共享”对话框,在“目录”文本框中输入需要共享的目录路径和目录名,在“共享名”文本框中输入网络中显示的名称,默认为共享目录名,也可在描述文本框中输入一些说明,在“基本权限”中可以选择用户是否有权限对共享目录进行写操作,若不需网络中的客户对共享的资源进行修改,则选择“只读”选项。
第5步,切换到“访问”选项卡,在该选项卡中选择“允许所有用户访问”选项,最后单击“确定”按钮完成服务器配置。
第6步,关闭“服务器配置”对话框,执行“应用程序”/“系统设置”/“服务器设置”/“服务”菜单命令,在该对话框的服务列表中选中“smb”,再单击工具栏中的“重启”按钮。
第7步,通过以上的配置,Samba服务器就配置完成了。在Windows操作系统中打开网上邻居,在网上邻居中即可看到Linux操作系统rho1的共享“cdrom”。
开放NetBiOS服务(137端口)
端口说明:137端口主要用于“NetBIOS Name Service”(NetBIOS名称服务),属于 UDP端口,使用者只需要向局域网或互联网上的某台计算机的137端口发送一个请求,就可以获取该计算机的名称、注册用户名,以及是否安装主域控制器、 IIS是否正在运行等信息。
端口漏洞:因为是UDP端口,对于攻击者来说,通过发送请求很容易就获取目标计算机的相关信息,有些信息是直接可以被利用,并分析漏洞的,比如IIS服务。另外,通过捕获正在利用137端口进行通信的信息包,还可能得到目标计算机的启动和关闭的时间,这样就可以利用专门的工具来攻击。
操作建议:建议关闭该端口。
具体而言,就是说通过137端口除了该机的计算机名和注册用户名以外,还可以得到该机是否为主域控制器和主浏览器、是否作为文件服务器使用、IIS和Samba是否正在运行以及Lotus Notes是否正在运行等信息。也就是说,只要您想获得这些信息,只需向这台个人电脑的137端口发送一个请求即可。只要知道IP地址,就可以轻松做到这一点。不只是公司内部网络,还可以通过因特网得到这样的信息。
137端口为什么会把这种信息包泄漏到网络上呢?这是因为,在Windows网络通信协议 --“NetBIOS over TCP/IP(NBT)”的计算机名管理功能中使用的是137端口。
计算机名管理是指Windows网络中的电脑通过用于相互识别的名字 --NetBIOS名,获取实际的IP地址的功能。可以用两种方法使用137端口。
一种方法是,位于同一组中的电脑之间利用广播功能进行计算机名管理。电脑在起动时或者连接网络时,会向位于同组中的所有电脑询问有没有正在使用与自己相同的NetBIOS名的电脑。每台收到询问的电脑如果使用了与自己相同的NetBIOS名,就会发送通知信息包。这些通信是利用137端口进行的。
另一种方法是利用WINS(Windows因特网名称服务)管理计算机名。被称为WINS服务器的电脑有一个IP地址和NetBIOS名的对照表。 WINS客户端在系统起动时或连接网络时会将自己的NetBIOS名与IP地址发送给WINS服务器。与其他计算机通信时,会向WINS服务器发送 NetBIOS名,询问IP地址。这种方法也使用137端口。
如上所述,为了得到通信对象的IP地址,137端口就要交换很多信息包。在这些信息包中,包括有如表3所示的很多信息。利用广播管理计算机名时,会向所有电脑发送这些信息。如果使用NBT,就会在用户没有查觉的情况下,由电脑本身就会向外部散布自己的详细信息。
什么是NetBIOS及NetBIOS的作用与应用
英文原义:NetBIOS Services Protocols
中文释义:(RFC-1001,1002)网络基本输入/输出系统协议
注解:该协议是由IBM公司开发,主要用于数十台计算机的小型局域网。NetBIOS协议是一种在局域网上的程序可以使用的应用程序编程接口(API),为程序提供了请求低级服务的统一的命令集,作用是为了给局域网提供网络以及其他特殊功能,系统可以利用WINS服务、广播及Lmhost文件等多种模式将NetBIOS名解析为相应IP地址,实现信息通讯,所以在局域网内部使用 NetBIOS协议可以方便地实现消息通信及资源的共享。因为它占用系统资源少、传输效率高,尤为适于由 20 到 200 台计算机组成的小型局域网。所以几乎所有的局域网都是在NetBIOS协议的基础上工作的。
应 用:在Windows操作系统中,默认情况下在安装TCP/IP协议后会自动安装NetBIOS。比如在Windows 2000/XP中,当选择“自动获得IP”后会启用DHCP服务器,从该服务器使用NetBIOS设置;如果使用静态IP地址或DHCP服务器不提供 NetBIOS设置,则启用TCP/IP上的NetBIOS。具体的设置方法如下:首先打开“控制面板”,双击“网络连接”图标,打开本地连接属性。接着,在属性窗口的“常规”选项卡中选择“Internet协议(TCP/IP)”,单击“属性”按钮。然后在打开的窗口中,单击“高级”按钮;在“高级 TCP/IP设置”窗口中选择“WINS”选项卡,在“NetBIOS设置”区域中就可以相应的NetBIOS设置。
因NETBIOS给用户带来的潜在危害
当安装TCP/IP协 议时,NetBIOS 也被Windows作为默认设置载入,我们的计算机也具有了NetBIOS本身的开放性。某些别有用心的人就利用这个功能来攻击服务器,使管理员不能放心使用文件和打印机共享。
利用NETBIOS漏洞进行攻击的端口分别为:
135端口开放实际上是一个WINNT漏洞,开放的135的端口情况容易引起自外部的 “Snork”攻击!!!
对于135端口开放的问题,可以在你的防火墙上,增加一条规则:拒绝所有的这类进入的UDP 包,目的端口是135,源端口是7,19,或者135,这样可以保护内部的系统,防止来自外部的攻击。大多数防火墙或者包过滤器已经设置了很多严格的规则,已覆盖了这条过滤规则,但任需注意:有一些NT的应用程序,它们依靠UDP135端口进行合法的通讯,而打开你135的端口与NT的RPC服务进行通讯。如果真是这样,你一定要在那些原始地址的系统上(需要135口通讯),实施上述的规则,指定来自这些系统的通讯可以通过防火墙,或者,可以被攻击检测系统所忽略,以便维持那些应用程序的正常连接。为了保护你的信息安全,强烈建议你安装微软的最新补丁包。
上面我们说到Netbios(NETwork Basic Input/Output System)网络基本输入输出系统。是1983年IBM开发的一套网络标准,微软在这基础上继续开发。微软的客户机/服务器网络系统都是基于 NetBIOS的。在利用Windows NT40 构建的网络系统中,对每一台主机的唯一标识信息是它的NetBIOS名。系统可以利用WINS服务、广播及Lmhost文件等多种模式通过139端口将 NetBIOS名解析为相应IP地址,从而实现信息通讯。在这样的网络系统内部,利用NetBIOS名实现信息通讯是非常方便、快捷的。但是在 Internet上,它就和一个后门程序差不多了。因此,我们很有必要堵上这个可怕的漏洞。
——利用NetBIOS漏洞攻击
1利用软件查找共享资源
利用NetBrute Scanner 软件扫描一段IP地址(如100131~10013254)内的共享资源,就会扫描出默认共享
2 用PQwak破解共享密码
双击扫描到的共享文件夹,如果没有密码,便可直接打开。当然也可以在IE的地址栏直接输入扫描到的带上共享文件夹的IP地址,如“\\10013191”(或带C$,D$等查看默认共享)。如果设有共享密码,会要求输入共享用户名和密码,这时可利用破解网络邻居密码的工具软件,如PQwak,破解后即可进入相应文件夹。
——关闭NetBIOS漏洞
1 解开文件和打印机共享绑定
鼠标右击桌面上[网络邻居]→[属性] →[本地连接] →[属性],去掉“Microsoft网络的文件和打印机共享”前面的勾,解开文件和打印机共享绑定。这样就会禁止所有从139和445端口来的请求,别人也就看不到本机的共享了。
2 利用TCP/IP筛选
鼠标右击桌面上[网络邻居] →[属性]→[本地连接] →[属性],打开“本地连接属性”对话框。选择[Internet协议(TCP/IP)]→[属性]→[高级]→[选项], 在列表中单击选中“TCP/IP筛选”选项。单击[属性]按钮,选择“只允许”,再单击[添加]按钮(如图2),填入除了139和445之外要用到的端口。这样别人使用扫描器对139和445两个端口进行扫描时,将不会有任何回应。
3 使用IPSec安全策略阻止对端口139和445的访问
选择[我的电脑]→[控制面板]→[管理工具]→[本地安全策略]→[IP安全策略,在本地机器],在这里定义一条阻止任何IP地址从TCP139和TCP445端口访问IP地址的IPSec安全策略规则,这样别人使用扫描器扫描时,本机的139 和445两个端口也不会给予任何回应。
4 停止Server服务
选择[我的电脑]→[控制面板]→[管理工具]→[服务],进入服务管理器,关闭Server 服务。这样虽然不会关闭端口,但可以中止本机对其他机器的服务,当然也就中止了对其他机器的共享。但是关闭了该服务会导致很多相关的服务无法启动,如机器中如果有IIS服务,则不能采用这种方法。
5 使用防火墙防范攻击
在防火墙中也可以设置阻止其他机器使用本机共享。如在“天网个人防火墙”中,选择一条空规则,设置数据包方向为“接收”,对方IP地址选“任何地址”,协议设定为“TCP”,本地端口设置为“139到139”,对方端口设置为“0到0”,设置标志位为“SYN”,动作设置为“拦截”,最后单击[确定]按钮,并在“自定义IP规则”列表中勾选此规则即可启动拦截139端口攻击了。
非局域网用户如何防范NETBIOS漏洞攻击
在windows9x下如果是个拨号用户。完全不需要登陆到 nt局域网络环境的话。只需要在控制面板→网络→删除microsoft网络用户,使用microsoft友好登陆就可以了。但是如果需要登陆到nt网络的话。那这一项就不能去处。因为nt网里需要使用netbios。
在windowsNT下可以取消netbios与TCP/IP协议的绑定。控制面板→网络 →Netbios接口→WINS客户(tcp/ip)→禁用。确定。重启。这样nt的计算机名和工作组名也隐藏了,不过会造成基于netbios的一些命令无法使用。如net等。
在windowsNT下你可以选中网络邻居→右键→本地连接→INTERNET协议(TCP/IP)→属性→高级→选项→TCP/IP筛选→在“只允许”中填入除了137,138,139只外的端口。如果在局域网中,会影响局域网的使用
在windowsXP下可以在控制面板上点击管理工具-本地安全策略,右击"IP安全策略, 在本地计算机"选择"管理IP筛选器表和筛选器操作",点添加,在对话框里填,随便写只要你记得住最好还是写"禁用135/139端口"比较看的懂 点右边的添加->下一步->源地址为"任何地址"->目的地址"我的地址"->协仪为TCP->在到此端口里填135或 139就可以
0条评论