如何在Linux系统中修复SambaCry漏洞(CVE-2017-7494)

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

在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中修复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的漏洞以及如何减轻漏洞。 我们希望您能够使用此信息来保护您负责的系统。

如果您对本文有任何问题或意见,请随时使用以下表格通知我们。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏