【安全公告】Samba 远程命令执行漏洞风险通告

2017 年 5 月 24 日,Samba 官方发布了 4.6.4 版本,修复了一个严重的远程代码执行漏洞,漏洞编号为 CVE-2017-7494,漏洞影响了 Samba 3.5.0 之后到 4.6.4/4.5.10/4.4.14 中间的所有版本。该漏洞可能会影响开启了 Samba 服务的 Linux 主机,请可能被漏洞影响的用户仔细阅读本文,并做相应的处理。

漏洞利用条件:
1. 服务器打开了文件/打印机共享端口 445,让其能够在公网上访问
2. 共享文件拥有写入权限
3. 恶意攻击者需猜解 Samba 服务端共享目录的物理路径

注意事项:
1. 请检查青云的防火墙规则,如果打开了 445 等危险端口,建议关闭。其他危险端口参见 【安全公告】Windows 勒索软件病毒风险通告
2. 青云的防火墙在默认情况下不会开启这些有风险的端口。所以如果您没有变更过防火墙,请放心使用。

修复办法:
如果您启用了 Samba 服务,并开放了 445 端口,那么可以考虑通过以下办法修复:
1. 安装补丁或者升级到 Samba 4.6.4/4.5.10/4.4.14 任意版本。
2. 如果暂时不能升级版本或安装补丁,可以使用临时解决方案:在 smb.conf 的 [global] 节点下增加 “nt pipe support = no” 选项,然后重新启动 Samba 服务。

参考资料:
【漏洞预警】Samba远程代码执行漏洞,影响7年前版本
【高危预警】Samba远程代码执行漏洞(CVE-2017-7494)分析

青云QingCloud 软件定义数据中心技术入选绿色数据中心先进适用技术目录

贵阳,2017年05月25日——

今天,由中国电子学会与中国计算机用户协会主办的中国绿色数据中心发展论坛在贵阳举行。工信部、国家机关事务管理局、国家能源局等相关部门领导出席大会,讲解了国家绿色数据中心评价指标体系,并对采取先进的数据中心技术的企业进行授牌表彰。青云QingCloud作为唯一一家云计算软件技术服务商,以领先的软件定义数据中心技术入选第一批绿色数据中心先进适用技术目录。

青云QingCloud基础设施管理部主管陈宏超(右四)受邀出席颁奖仪式

工信部绿色数据中心先进适用技术奖牌

本次论坛作为2017年中国国际大数据产业博览会的主题论坛之一,以“绿色数据中心引领,支撑产业转型升级”为主题,围绕绿色数据中心行业发展趋势、技术产品、解决方案和发展模式等领域展开探讨。受邀出席本次大会的嘉宾近300名,分别来自行业主管部门的政府官员,以及国际学术团体、行业组织、科研院所、研究机构、国内外骨干企业和全国84家试点单位企业代表等。

青云QingCloud软件定义数据中心技术采用计算虚拟化、分布式存储、软件定义网络和智能运维等先进技术,基于x86或ARM服务器的基础设施构建软件定义的计算、存储和网络资源池,赋予数据中心快速交付和弹性调度IT资源的能力,并支持统一管理硬件和虚拟化资源。

借助青云QingCloud软件定义数据中心技术,企业可建设弹性扩展能力、按需与实时的基础设施交付与管理平台,大幅提升IT系统能效、保证业务连续性和创新能力。

作为青云QingCloud核心优势技术,软件定义数据中心技术将持续造福市场,帮助更多企业降低数据中心对大型、专有硬件的依赖,在节约硬件成本的同时极大地提高IT资源的使用率。以环保与节能减排的切实方案,助力绿色数据中心产业的进一步发展。

QingStor 对象存储新增 Logstash Input/Output 插件

QingStor Logstash Input/Output 插件为首届 QingStor Satellites 活动中成功孵化出的项目,在 QingStor Satellites 活动中,QingStor 团队会选择一些有意义的开源项目为课题,并作为导师指导高校学生逐步完成项目。

QingStor Logstash Input/Output 插件的开发者为 Tacinight,来自兰州大学信息科学与工程学院 DSLab 研究生一年级的同学 赵益民(下图即为赵益民同学近照)。

QingStor Logstash Input/Output 插件已经通过 QingStor 官方审核,并被收纳为 QingStor 官方的 Logstash 插件,后续将由 QingStor 官方与赵益民同学一起进行维护。

下文为简要使用文档。更多详细信息请参见 https://github.com/yunify/logstash-input-qingstor 和 https://github.com/yunify/logstash-output-qingstor。

Logstash 简介

Logstash 是一款轻量级的日志搜集和处理工具,可以方便的把分散的、多样化的日志收集起来,并进行自定义的处理,然后传输到指定的目标,比如输出到 Elasticsearch 或者写入文件。Logstash 整体可大致分为三部分,即数据输入(Input)、数据加工(Filter)、数据输出(Output),同时 Logstash 内置了多种输入输出插件,方便用户对接各种第三方服务。QingStor Logstash Input/Output 插件实现了对象存储服务和 Logstash 的对接,方便用户读取存储在对象存储的日志或者上传处理后的日志到对象存储。

安装

首先确保 Logstash 已正确安装,之后使用以下命令从 Ruby Gems 安装插件。

$ bin/logstash-plugin install logstash-input-qingstor
$ bin/logstash-plugin install logstash-output-qingstor

快速开始

使用插件之前请先在 青云控制台 申请 Access Key。

Input 和 Output 插件的基本配置项如下,查看更多可用选项可访问 GitHub 项目页面进行查阅。

input {
    qingstor {
        access_key_id => "your_access_key_id"
        secret_access_key => "your_secret_access_key"
        bucket => "input_bucket_name"
        region => "pek3a"
    }
}
output {
    qingstor {
        access_key_id => "your_access_key_id"
        secret_access_key => "your_secret_access_key"
        bucket => "output_bucket_name"
        region => "pek3a"
    }
}
设置完成之后启动 Logstash,即可从对象存储读取日志文件,然后按照固定大小或固定时间切分并归档,最后输出处理后的日志文件到对象存储。
$ ./bin/logstash -f qs_input_ouput.conf

致谢

最后对 QingStor Logstash Input/Output 插件的作者 Tacinight (赵益民同学) 表示感谢,同时我们也欢迎更多高校学生或第三方开发者参与到我们的开源项目中来。

QingStor 对象存储新增 .NET SDK

QingStor 对象存储到目前为止已经发布了包括 Go、Ruby、Swift、Java、JavaScript、PHP、Python、Scala 等八种语言的 SDK,为了方便 .NET 平台的用户使用 QingStor 对象存储服务,现特新增 .NET SDK。

QingStor .NET SDK 通过开源的 QingStor 对象存储的 API Specifications(OpenAPI 格式,亦称 Swagger 2.0 格式)及 SDK 生成工具 Snips 来生成相应的SDK接口和公共基础部分,在 Snips 的帮助下使其能够在短时间内开发出符合生产环境使用的SDK。

下文为简要使用文档,更多详细信息请参见 https://github.com/yunify/qingstor-sdk-net。

1. 安装

可通过以下三种安装方式任意一种安装。

  • 直接下载源码并将其添加至项目:
$ git clone https://github.com/yunify/qingstor-sdk-net.git
  • 直接添加 DLL 引用:
在 GitHub 的 Release 页面 下载相应版本的 DLL,然后将其添加至项目引用。由于此 SDK 
依赖于 Json.NET,可以添加该 SDK 对应版本的 Newtonsoft.Json.dll 引用或者使用 
NuGet来安装它:
Install-Package Newtonsoft.Json
  • 通过包管理器(NuGet)安装:
例如在 Visual Studio 2013 中,打开 NuGet 程序包管理器搜索 QingStor_SDK_NET 
或者在控制台中键入以下命令(其中,QingStor_SDK_NET45 表示 .NET Framework 4.5 
平台下的SDK):
Install-Package QingStor_SDK_NET45

2. 初始化服务

发起请求前首先建立初始化服务:

using QingStor_SDK_NET.Common;
using QingStor_SDK_NET.Service;

CConfig Config = new CConfig("Config.yaml");
CQingStor Service = new CQingStor(Config);

上面代码初始化了一个 QingStor Service。

3. 获取账户下的 Bucket 列表

CListBucketsOutput ListBuckets = Service.ListBuckets(null);

// Print the HTTP status code.
// Example: 200
Console.Write(ListBuckets.StatusCode);

// Print the bucket count.
// Example: 5
Console.Write(ListBuckets.count);

4. 创建 Bucket

初始化并创建 Bucket, 需要指定 Bucket 名称和所在 Zone

CBucket Bucket = Service.Bucket("bucket-name", "pek3a");
CPutBucketOutput PutBucketOutput = Bucket.Put();

5. 获取 Bucket 中存储的 Object 列表

CListObjectsOutput ListObjectsOutput = Bucket.ListObjects(null);

// Print the HTTP status code.
// Example: 200
Console.Write(ListObjectsOutput.StatusCode);

// Print the key count.
// Example: 0
Console.Write(ListObjectsOutput.keys.Length);

6. 创建一个 Object

CPutObjectInput PutObjectInput = new CPutObjectInput();
PutObjInput.Body = new FileStream("/tmp/Screenshot.jpg", FileMode.Open);
CPutObjectOutput PutObjectOutput = Bucket.PutObject("Screenshot.jpg", PutObjectInput);

// Print the HTTP status code.
// Example: 201
Console.Write(PutObjectOutput.StatusCode);

7. 删除一个 Object

CDeleteObjectOutput DeleteObjectOutput = BucketObj.DeleteObject("Screenshot.jpg");

// Print the HTTP status code.
// Example: 204
Console.Write(DeleteObjectOutput.StatusCode);

8. 设置 Bucket ACL

CGranteeType Grantee = new CGranteeType() { id = "usr-id", type = "user" };
CACLType ACL = new CACLType() { grantee = Grantee, permission = "FULL_CONTROL" };
CPutBucketACLInput PutBucketACLInput = new CPutBucketACLInput();
PutBucketACLInput.acl = new CACLType[] { ACL };
CPutBucketACLOutput PutBucketACLOutput = Bucket.PutACL(PutBucketACLInput);

// Print the HTTP status code.
// Example: 200
Console.Write(PutBucketACLOutput.StatusCode);

控制台支持 NAS 监控、IP/端口组资源展示等

NAS 是支持基于 NFS 和 Samba(CIFS) 协议的网络共享存储服务,你可以将硬盘挂载到 NAS 服务器上,让多个客户端通过网络连接进行共享,同时支持可访问服务的账号的控制管理。

当 NAS 添加了共享存储目标后,控制台加上了对提供 NAS 服务的主机资源的监控。包括了 CPU、内存、硬盘使用率、吞吐和 IOPS、以及网络吞吐情况等监控。通过监控用户可以检查到 NAS 服务的使用情况,尤其是硬盘使用率等关键指标。

IP/端口组是具有相同特征的一组 IP 或者端口的集合,用于防火墙规则中源 IP 和端口范围的批量定义。控制台新增了在 IP/端口组列表对防火墙的展示,即使用了某个 IP/端口组的防火墙,会在相应表格项中展示出来,方便分组和过滤防火墙。

QingStor 对象存储新增 Scala SDK

QingStor Scala SDK 为首届 QingStor Satellites 活动中成功孵化出的项目,在 QingStor Satellites 活动中,QingStor 团队会选择一些有意义的开源项目为课题,并作为导师指导高校学生逐步完成项目。

QingStor Scala SDK 的开发者为 Cheerx ,来自兰州大学信息科学与工程学院 DSLab 研究生一年级的同学 谢启荣 (下图即为谢启荣同学近照)。

QingStor Scala SDK 已经过 QingStor 官方审核,并被收纳为 QingStor 官方的 Scala SDK,后续将由 QingStor 官方与谢启荣同学一起进行维护。

下文为简要使用文档。更多详细信息请参见 https://github.com/yunify/qingstor-sdk-scala 。

安装

点击 此处 下载最新版的 Jar 包,也可访问 GitHub 项目的 Releases 页面查看和下载历史版本。

文件名中包含 fat 后缀的 Release 中包含了 SDK 所需的依赖,使用时无需手动加载其依赖包,如 qingstor-sdk-scala-v2.0.0_2.11_fat.jar。而文件名中不包含 fat 的 Release 中没有包含相关依赖,需要手动指定。

描述 SDK 所需依赖关系的 SBT 文件片段样例如下:

libraryDependencies ++= {
  val akkaHttpVersion = "10.0.5"
  val circeVersion = "0.7.1"
  Seq(
    "com.typesafe.akka" %% "akka-http-core" % akkaHttpVersion,
    "com.typesafe.akka" %% "akka-http" % akkaHttpVersion,
    "io.circe" %% "circe-generic" % circeVersion,
    "io.circe" %% "circe-parser" % circeVersion,
    "org.yaml" % "snakeyaml" % "1.17",
    "de.heikoseeberger" %% "akka-http-circe" % "1.15.0"
  )
}

快速开始

使用 SDK 之前请先在 青云控制台 申请 Access Key。

初始化服务

发起请求前首先建立需要初始化服务:

import com.qingstor.sdk.config.QSConfig
import com.qingstor.sdk.service.QingStor

val config = QSConfig("ACCESS_KEY_ID", "SECRET_ACCESS_KEY")
val qsService = QingStor(config)

初始化并创建 Bucket, 需要指定 Bucket 名称和所在 Zone:

import com.qingstor.sdk.service.Bucket

val bucket = Bucket(config, "test-bucket", "pek3a")
val outputFuture = bucket.put(Bucket.PutBucketInput())

获取 Bucket 中存储的 Object 列表

val outputFuture = bucket.listObjects(Bucket.ListObjectsInput())
val listObjectsOutput = Await.result(outputFuture, Duration.Inf)

// Print the HTTP status code.
// Example: 200
println(listObjectsOutput.statusCode.getOrElse(-1))

// Print the key count.
// Example: 7
println(listObjectsOutput.keys.map(_.length).getOrElse(-1))

创建一个 Object

例如一张图片:

// Open file
val file = new File("/tmp/test.jpg")
val input = PutObjectInput(
  // Because this SDK used akka-http as http library, it's useless to set Content-Length here
  contentLength = file.length().toInt,
  body = file
)
val outputFuture = bucket.putObject("test.jpg", input)
val putObjectOutput = Await.result(outputFuture, Duration.Inf)
file.close()

// Print the HTTP status code.
// Example: 201
println(putObjectOutput.statusCode.getOrElse(-1))

删除一个 Object

val outputFuture = bucket.deleteObject(arg, Bucket.DeleteObjectInput())

// Print the HTTP status code.
// Example: 204
println(outputFuture.statusCode.getOrElse(-1))

使用中遇到问题请在 项目 Issues 区 提交反馈。

致谢

最后对 Scala SDK 的作者 Cheerx (谢启荣同学) 表示感谢,同时我们也欢迎更多高校学生或第三方开发者参与到我们的开源项目中来。

【安全公告】Windows 勒索软件病毒风险通告

近期全球爆发了多起较大规模的 Windows 勒索软件病毒攻击事件,众多 Windows 系统用户受到影响。

该勒索来自一款名为 “WannaCry” 的软件(木马),通过 Windows 系统的 SMB 服务器漏洞进行入侵,会导致磁盘文件被病毒加密,对用户数据造成严重损失。请可能被漏洞影响的用户仔细阅读本文,并做相应的处理。

注意事项:

  1. 请检查青云的防火墙规则,如果打开了 135、137、138、139、445、3389 等危险端口,建议关闭。
  2.  定期升级微软发布的安全补丁,微软已经于 2017 年 3 月 14 日发布了 MS17-010安全补丁。
  3. 如果必须打开 3389 端口,建议仅在必须使用的时候打开,其他时间请禁用。推荐您直接使用青云提供的 VNC 来访问,此访问方式经过加密,保证安全。
  4. 青云的防火墙在默认情况下不会开启这些有风险的端口。所以如果您没有变更过防火墙,请放心使用。

参考资料:

Microsoft 安全公告 MS17-010 – 严重
WannaCry ransomware used in widespread attacks all over the world
如何看待 5 月12 号爆发在各高校的电脑勒索比特币的病毒

青云QingCloud受邀出席云清联盟全网协同防护方案发布会

北京,2017年05月10日——

今天,由云清联盟举办的全网协同防护方案发布会在北京举行。作为云清联盟首批成员,青云QingCloud受邀出席本次大会。青松云安全、电信云堤等安全领域的理事会创始成员代表发布了一系列协同防护方案,包括联盟运转机制、联盟成员协作方案及情报平台对接方案等。

青云QingCloud网络架构师张宝受邀出席发布会(第一排右一)

云清联盟是由业内多家科技企业共同倡议发起的抗DDoS产业联盟,以“产业合作、情报分享、防护协同、标准促进”为宗旨,将全球运营商、IDC服务提供商和云服务提供商的资源进行整合,构成云端的“DDoS防御生态系统”。本次大会,云清联盟通过有组织的方式,如标准发布、平台搭建、技术联动、情报共享等方式搭建了一个产业级的协同防护方案,帮助联盟成员共同对抗大流量的DDoS攻击。

云清联盟于2015年创立,2016年在北京举办了第一届云清联盟高峰论坛,并邀请了青云QingCloud在内的多家科技企业成为首批联盟成员,共同对抗日益剧增的云端网络攻击。

作为一家注重云端安全的企业级云服务商,青云QingCloud自成立以来, 在云平台及数据安全、通信与网络安全、网络攻击防护及第三方合作防护采取了诸多举措:

  • 云平台及数据安全

青云QingCloud从上线之初就推出私有网络功能,实现100%的二层网络隔离策略,帮助用户轻松完成组网工作,使私有网络之间无法互通,用户无需担心被攻击。同时,青云QingCloud通过多重实时副本、分布式块存储技术、写时拷贝技术、备份与灾难恢复等机制保障用户数据安全。

  • 通信与网络安全

青云QingCloud的云平台通过网络架构、边界安全、账号安全等对用户的网络进行层次化深度安全防护,实现对云数据中心网络全方位保护及统一安全管理。

  • 其中,网络架构层次安全措施包括:机房安全设备、隧道互联技术(GRE/IPSec)、VPN(OpenVPN、PPTP)接入、过滤控制等;
  • 边界安全措施指代青云QingCloud可拓展、高可靠的防火墙;
  • 接入安全措施包括:SSH密钥,支持设置端口转发、过滤控制、加密隧道及防火墙规则的云端路由器;
  • 账号安全措施包括:SSH密钥、主账号和子账号功能、权限管理分配的账号设置、API签名等。
  • 网络攻击防护

青云QingCloud云平台的DDoS攻击防护服务,可帮助用户有效抵御大流量 DDoS 攻击。用户可以通过配置 DDoS 攻击防护服务,将攻击流量引流到防护服务器,确保源站的稳定可靠。

  • 第三方合作防护

在自身的防护措施基础上,青云QingCloud联合了电信、联通、移动运营商,以及青松、安全宝、牛盾、安全狗等第三方应用,共同为用户提供网站防护、入侵检测、抗DDoS供给、端点防护等服务,通过事前防御、事中控制、日常安全维护等措施,全方面为用户云端系统安全保驾护航。

青云QingCloud产品总监兼运营副总裁林源表示,“在互联网攻击日益猖獗的情况下,保障用户云应用的安全是云服务商的责任所在。在云安全方面, QingCloud采取了诸多举措,不止于自身各项安全机制的建立,更是联合很多安全领域专业的合作伙伴,为QingCloud用户提供更加安全、稳定的云服务。接下来,我们仍将矢志不渝地加大对安全方面的投入,不断提高云安全,让用户更放心地使用QingCloud服务。”

QingStor™杨锦涛:架构源于设计而非演进

武汉,2017年5月6日——

今天,由麦思博和猫友会联合主办、青云QingCloud协办的MOT技术领导者研修班在武汉举办,近200名拥有5年及以上软件研发工作经验的CTO、CIO和技术经理参加该培训。QingStor™研发总监杨锦涛(Osier Yang)受邀担任MOT讲师,并带来《QingStor™对象存储架构设计及产品演进》的主题演讲。

QingStor™研发总监杨锦涛(Osier Yang)

结合通用、海量、非结构化及平台化的产品核心定位,杨锦涛介绍了QingStor™对象存储的架构设计及产品体系策略。

杨锦涛表示,系统架构正如建筑的骨架,如果在成型后大刀阔斧地更改,所需耗费的成本往往是难以估量的。好的架构非演进而来,而是在预先做尽可能长远设计的基础上,并在实践过程中不断迭代而来。即,设计要长远,实现可迭代。

杨锦涛讲述了部分QingStor™架构中的设计点,包括其由来及具体的设计方案,阐释“架构源于设计而非演进”的主题,所选取的设计点有:

  • 多区域
  • RESTful
  • 底层存储模型
  • 负载均衡
  • 独立索引层
  • 海量文件存储的性能问题
  • 多集群调度

之后,杨锦涛简单介绍了QingStor™在狭义上的平台构建方面的状况。目前,QingStor™对象存储已支持Go、Ruby、Swift、Java、PHP、JavaScript、Scala、.NET、Python在内共九种语言的 SDK。此外,所有 SDK 的大部分代码均由自动化代码生成工具 Snips 生成,Snips 的开发和使用大幅降低了SDK 的开发及后期维护成本。

谈到QingStor™对象存储产品体系策略时,杨锦涛表示,QingStor™对象存储的产品体系策略的核心是走向用户。目前,QingStor™对象存储已与青云QingCloud AppCenter、大数据平台、CDN实现无缝深度集成;支持多种场景下的数据迁移;作为连接计算平台与存储平台的纽带,异步数据处理框架及各种类型的数据处理;点播及直播服务;等。

总而言之,在场景化和行业化的指导原则下,QingStor™对象存储将推出更多解决方案及产品。

关于MOT

MOT作为国内顶尖的mini MBA,由发源于美国西雅图的麦思博(msup)举办,面向广大IT企业管理者,致力于技术团队的技能提升、软件工程的实际应用和产品品质的创新与超越。每年超过1000家企业续单参与msup旗下公开课、工作坊、案例研究、国际游学等培训项目。

QingStor 对象存储推出 FTP 对接工具 qsftpd

qsftpd 是一个将 QingStor 对象存储作为存储后端的 FTP Server,用户通过简单的配置,即可通过 FTP 协议使用对象存储服务。qsftpd 已在 GitHub 开源,更多详情可参见 https://github.com/yunify/qsftpd。

下载安装

qsftpd 支持 Linux、macOS 和 Windows 操作系统,最新版本下载链接如下,也可访问 GitHub 项目的 Releases 页面查看和下载历史版本。

使用示例

创建配置文件,如 qsftpd.yaml,并根据需要进行配置,示例配置文件如下。

# 设置 QingStor 对象存储服务
qingstor:
  access_key_id: access_key_id_example
  secret_access_key: secret_access_key_example
  host: qingstor.com
  port: 443
  protocol: https
  log_level: warn

# 填写需要使用的 Bucket
bucket_name: bucket_name_example
zone: pek3a

# FTP Server 配置,如监听的端口号和最大连接数
listen_host: 127.0.0.1
listen_port: 21
public_host: 127.0.0.1
max_connections: 128

# 认证设置,默认允许匿名用户登录,也可以指定特定的用户登录
#users:
#  username_example: password_example

启动 FTP Server。

$ qsftpd -c path/to/your/qsftpd.yaml
[2017-04-12T03:24:40.541Z #2527]  INFO -- : Listening... 127.0.0.1:21
[2017-04-12T03:24:40.541Z #2527]  INFO -- : Starting...
[2017-04-12T03:24:49.330Z #2527]  INFO -- : FTP Client connected: ftp.connected, id: 76e209d6a89448279e947a7babe0097d, RemoteAddr: 127.0.0.1:51788, Total: 1
......

最后使用 ftp 客户端连接 FTP Server 进行测试。

$ ftp -a 127.0.0.1
Connected to 127.0.0.1.
220 Welcome to QSFTP Server
331 User name okay, need password.
230 Password ok, continue
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
229 Entering Extended Passive Mode (|||6081|)
150 Using transfer connection
d--------- 1 ftp ftp            0  Nov 30 00:00  test-output

226 Closing transfer connection
ftp> put AUTHORS
local: AUTHORS remote: AUTHORS
229 Entering Extended Passive Mode (|||6887|)
150 Using transfer connection
100% |***********************************|   146       91.68 KiB/s    00:00 ETA
226 Closing transfer connection
146 bytes sent in 00:00 (2.19 KiB/s)
ftp>