Samba一直是为* nix系统上的Windows客户端提供共享文件和打印服务的标准。 家庭用户,中型企业和大型公司都使用它,它在不同操作系统共存的环境中脱颖而出。
由于广泛使用的工具很可能发生这种情况,大多数Samba安装都面临着可能利用已知漏洞的攻击的风险,这个漏洞在WannaCry ransomware攻击不久前就不会被发现,这一漏洞被认为是不严重的。
在本文中,我们将解释这个Samba漏洞是什么以及如何保护您对此负责的系统。 根据您的安装类型(从存储库或来源),您将需要采取不同的方法来执行此操作。
如果您目前在任何环境中使用Samba或者知道有人在做,请继续阅读!
脆弱性
过时和未修补的系统容易受到远程代码执行漏洞的攻击。 简单来说,这意味着访问可写共享的人可以上传一段任意代码,并使用服务器中的root权限执行该代码。
这个问题在Samba网站上被描述为CVE-2017-7494 ,并且已知会影响Samba版本3.5(2010年3月初发布)以及之后的版本。 非官方地,由于与WannaCry的相似之处, SambaCry被命名为SambaCry :它们均针对SMB协议,并且可能是可蠕虫的 - 这可能导致其从系统传播到系统。
Debian,Ubuntu,CentOS和Red Hat已采取迅速行动来保护其用户,并为其支持的版本发布了补丁。 另外,还提供了不受支持的安全解决方法。
更新Samba
如前所述,根据以前的安装方法,有两种方法要遵循:
如果您从发行版的存储库中安装了Samba。
我们来看看你在这种情况下需要做什么:
在Debian中修复Sambacry
确保apt设置为通过将以下行添加到源列表( /etc/apt/sources.list )来获取最新的安全更新:
deb http://security.debian.org stable/updates main deb-src http://security.debian.org/ stable/updates main
接下来,更新可用包的列表:
# aptitude update
最后,确保samba软件包的版本与该漏洞已修复的版本相匹配(请参阅CVE-2017-7494 ):
# aptitude show samba
在Debian中修复Sambacry
在Ubuntu中修复Sambacry
首先,检查新的可用软件包,并更新samba软件包,如下所示:
$ sudo apt-get update $ sudo apt-get install samba
已应用CVE-2017-7494修复程序的Samba版本如下:
- 17.04: samba 2:4.5.8 + dfsg-0ubuntu0.17.04.2
- 16.10: samba 2:4.4.5 + dfsg-2ubuntu5.6
- 16.04 LTS: samba 2:4.3.11 + dfsg-0ubuntu0.16.04.7
- 14.04 LTS: samba 2:4.3.11 + dfsg-0ubuntu0.14.04.8
最后,运行以下命令来验证您的Ubuntu框现在是否安装了正确的Samba版本。
$ sudo apt-cache show samba
在CentOS / RHEL 7上修复Sambacry
EL 7中修补的Samba版本是samba-4.4.4-14.el7_3 。 要安装它,做
# yum makecache fast # yum update samba
如前所述,请确保您已经有修补的Samba版本:
# yum info samba
在CentOS中修复Sambacry
较早的仍然受支持的CentOS和RHEL版本也有可用的修补程序。 查看RHSA-2017-1270了解更多。
如果从源代码安装了Samba
注意 :以下过程假定您以前从源代码构建了Samba。 非常鼓励您在将其部署到生产服务器之前,先在测试环境中进行广泛的尝试。
此外,请确保您在启动之前备份smb.conf文件。
在这种情况下,我们将从源代码编译和更新Samba。 但是,在开始之前,我们必须确保先前安装所有的依赖项。 请注意,这可能需要几分钟。
在Debian和Ubuntu中:
# aptitude install acl attr autoconf bison build-essential \ debhelper dnsutils docbook-xml docbook-xsl flex gdb krb5-user \ libacl1-dev libaio-dev libattr1-dev libblkid-dev libbsd-dev \ libcap-dev libcups2-dev libgnutls28-dev libjson-perl \ libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl \ libpopt-dev libreadline-dev perl perl-modules pkg-config \ python-all-dev python-dev python-dnspython python-crypto xsltproc \ zlib1g-dev libsystemd-dev libgpgme11-dev python-gpgme python-m2crypto
在CentOS 7或类似的:
# yum install attr bind-utils docbook-style-xsl gcc gdb krb5-workstation \ libsemanage-python libxslt perl perl-ExtUtils-MakeMaker \ perl-Parse-Yapp perl-Test-Base pkgconfig policycoreutils-python \ python-crypto gnutls-devel libattr-devel keyutils-libs-devel \ libacl-devel libaio-devel libblkid-devel libxml2-devel openldap-devel \ pam-devel popt-devel python-devel readline-devel zlib-devel
停止服务:
# systemctl stop smbd
下载并解压缩源(在撰写本文时,4.6.4是最新版本):
# wget https://www.samba.org/samba/ftp/samba-latest.tar.gz # tar xzf samba-latest.tar.gz # cd samba-4.6.4
仅供参考,请检查当前版本的可用配置选项。
# ./configure --help
如果在上一个版本中使用上述命令,您可能会包含上述命令返回的一些选项,或者您可以选择使用默认值:
# ./configure # make # make install
最后重新启动服务。
# systemctl restart smbd
并验证您是否正在运行更新的版本:
# smbstatus --version
应该返回4.6.4 。
一般注意事项
如果您正在运行给定发行版的不受支持的版本,并且由于某种原因无法升级到最新版本,则可能需要考虑以下建议:
- 如果SELinux启用,您将受到保护!
- 确保使用noexec选项挂载Samba共享。 这将阻止执行挂载在文件系统上的二进制文件。
加,
nt pipe support = no
到您的smb.conf文件的[global]部分并重新启动服务。 您可能需要记住,根据Samba项目,此“可能会禁用Windows客户端中的某些功能”。
概要
在本文中,我们描述了被称为SambaCry的漏洞以及如何减轻漏洞。 我们希望您能够使用此信息来保护您负责的系统。
如果您对本文有任何问题或意见,请随时使用以下表格通知我们。