当前位置: 首页 > news >正文

Linux 系统中这样修复 SambaCry 漏洞

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

Linux 系统中这样修复 SambaCry 漏洞Linux 系统中这样修复 SambaCry 漏洞

漏洞

过时和未修补的系统容易受到远程代码执行漏洞的攻击。简单来说,这意味着访问可写共享的人可以上传一段任意代码,并使用服务器中的 root 权限执行该代码。

这个问题在 Samba 网站上被描述为 CVE-2017-7494,并且已知会影响 Samba v3.5(2010 年 3 月初发布)及以后版本。由于与 WannaCry 有相似之处,它被非官方地被命名为 SambaCry:它们均针对 SMB 协议,并且可能是蠕虫病毒 - 这可能导致其从一个系统传播到另一个系统中。

Debian、Ubuntu、CentOS 和 Red Hat 已采取快速的行动来保护它们的用户,并为其支持的版本发布了补丁。另外,还提供了不受支持的安全临时解决方案。

更新 Samba

如先前提到的那样,根据你之前安装的方法有两种方式更新:

如果你从发行版的仓库中安装的 Samba

让我们看下在这种情况下你需要做什么:

在 Debian 下修复 SambaCry

添加下面的行到你的源列表中(/etc/apt/sources.list)以确保 apt 能够获得最新的安全更新:

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

Linux 系统中这样修复 SambaCry 漏洞Linux 系统中这样修复 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 已经安装了正确的版本。

$ 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

Linux 系统中这样修复 SambaCry 漏洞Linux 系统中这样修复 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

停止服务(LCTT 译注:此处不必要):

# 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 是启用的,你是处于保护之下的!
  • 确保 Samba 共享是用 noexec 选项挂载的。这会阻止二进制文件从被挂载的文件系统中执行。

还有将:

nt pipe support = no

添加到smb.conf 的 [global] 字段中。你或许要记住,根据 Samba 项目,这“或许禁用 Windows 客户端的某些功能”。

重要:注意 nt pipe support = no 选项会禁用 Windows 客户端的共享列表。比如:当你在一台 Samba 服务器的 Windows Explorer 中输入 //10.100.10.2/ 时,你会看到 “permission denied”。Windows 客户端不得不手动执行共享,如 //10.100.10.2/share_name来访问共享。

总结

在本篇中,我们已经描述了 SambaCry 漏洞以及如何减轻影响。我们希望你可以使用这个信息来保护你负责的系统。

如果你有关于这篇文章的任何提问以及评论,欢迎使用下面的评论栏让我们知道。

作者简介:

Gabriel Cánepa 是一名 GNU/Linux 系统管理员,阿根廷圣路易斯 Villa Mercedes 的 web 开发人员。他为一家国际大型消费品公司工作,在日常工作中使用 FOSS 工具以提高生产力,并从中获得极大乐趣。

via: https://www.tecmint.com/fix-sambacry-vulnerability-cve-2017-7494-in-linux/

作者:Gabriel Cánepa 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

原文来自:https://linux.cn/article-8596-1.html

本文地址:http://www.linuxprobe.com/linux-sambacry.html

转载于:https://my.oschina.net/u/3308739/blog/967884

相关文章:

  • (转)Scala的“=”符号简介
  • POJ 1739 Tony's Tour, 连通性状态压缩DP
  • 具体解释Hibernate中的二级缓存
  • JavaScript学习系列(一)什么是javascript
  • 移动端唤起键盘时取消position:fixed定位
  • 磁盘爆满
  • 29、Java并发性和多线程-非阻塞算法
  • 吕佳(帮别人名字作诗)
  • 如何弹出固定大小及内容的网页窗口
  • jvm 各个区含义
  • 文章推荐
  • Spark HA on yarn 最简易安装。
  • jade 入门教程
  • SICP-1.5-控制结构
  • C++面试题集(最全的C\C++试题集和答案)
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • Angular2开发踩坑系列-生产环境编译
  • Apache Zeppelin在Apache Trafodion上的可视化
  • echarts花样作死的坑
  • javascript从右向左截取指定位数字符的3种方法
  • js学习笔记
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • node学习系列之简单文件上传
  • PHP那些事儿
  • Service Worker
  • Spring框架之我见(三)——IOC、AOP
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 创建一个Struts2项目maven 方式
  • 开源地图数据可视化库——mapnik
  • 力扣(LeetCode)965
  • 手写一个CommonJS打包工具(一)
  • 算法-图和图算法
  • 探索 JS 中的模块化
  • 详解NodeJs流之一
  • 一些关于Rust在2019年的思考
  • ​渐进式Web应用PWA的未来
  • (04)odoo视图操作
  • (2)STM32单片机上位机
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (数据结构)顺序表的定义
  • (学习日记)2024.02.29:UCOSIII第二节
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)人的集合论——移山之道
  • ****Linux下Mysql的安装和配置
  • .java 9 找不到符号_java找不到符号
  • .net mvc部分视图
  • .net 提取注释生成API文档 帮助文档
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .net生成的类,跨工程调用显示注释
  • .考试倒计时43天!来提分啦!
  • @JsonFormat与@DateTimeFormat注解的使用
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧