僵尸网络 Mirai 新变种来袭,企业成新目标

臭名昭著的 IoT/Linux 僵尸网络 Mirai 出现新变种,杀伤力更强。

安全团队 Unit 42 近日发布报告披露了 Mirai 的新变种病毒,研究者在样本中发现了该病毒的 27 种漏洞利用方式,其中 11 种是 Mirai 中没遇到过的。

Mirai 是去年肆虐的僵尸网络病毒,其通过感染存在漏洞的 IoT 设备,并下载 Telnet 扫描其它潜在 Mirai 僵尸宿主机,将其感染,连结成网,在需要时对目标系统发起攻击。Mirai 先后进行 DDoS 导致了美国的、德国大断网,并针对全球最大动态 DNS 提供商 DYN 与网络托管服务提供商 OVH 等进行攻击,带来了极其恶劣的影响。

同时 Mirai 作者将其源码公布,这使得更多人可以更加方便地对该病毒进行变种创作,此次发现的新变种正是其中之一。

Unit 42 安全人员指出,此次新变种针对不同嵌入式设备,如路由器、网络存储设备与网络摄像机等,利用这些设备存在的漏洞进行大面积攻击。报告中特别指出,该变种僵尸网络会针对 WePresent WiPG-1000 无线演示系统和 LG Supersign 电视,这两款设备都是企业级产品,并且它们存在的漏洞早在去年就公开了。

报告认为这表明该变种有将 Mirai 攻击从公共基础设施转向企业目标的趋势。

研究人员表示目前该变种僵尸网络还在通过不断感染更多设备,并添加更多用于对设备进行暴力破解的密码扩大其攻击面,而利用企业应用漏洞使得攻击具有更大的网络带宽,DDoS 能力大大提高。

此外,该变种还有其它特性,比如它使用与 Mirai 特征相同的加密方案,表密钥为 0xbeafdead;它使用域 epicrustserver[.]cf 在端口 3933 进行 C2 通信;除了扫描其它易受感染的设备,它还可以进行 HTTP Flood DDoS 攻击。

报告中还提到了一个具有讽刺意味的案例,该变种病毒的 shell 脚本攻击负载植入在一个用于“电子安全、集成和报警监控”业务的网站上。

那么,如此疯狂的僵尸网络冲着企业而来,企业可以怎么办呢?

  • 了解网络上的 IoT 设备、更换默认密码,确保设备更新补丁
  • 无法修补的设备直接从网络中去掉

详情查看报告:https://unit42.paloaltonetworks.com/new-mirai-variant-targets-enterprise-wireless-presentation-display-systems

Chrome 将警告用户不再支持 Flash Player

Adobe 计划在 2020 年淘汰 Flash Player,这将是万维网历史上的一个关键点。全世界都在为这个关键时刻做准备,其中就包括浏览器开发公司。谷歌正在尽可能顺利地完成 Flash Player 的过渡,即将推出的 Chrome 76 也将在这方面迈出这关键的一步

新版本浏览器将完全禁用 Flash Player,但谷歌希望启用此功能的用户亲自在设置中完成所有操作。浏览器明显的变化是启动时显示的警告,不过谷歌可能在未来的几周对这个显示做进一步的调整。

据 9to5google 报告,最近 Chromium 的开发人员在讨论中提供了显示警告的早期视图,该警告将在浏览器顶部作为信息栏显示。“2020年12月之后 Flash Player 将不再受支持”,通知中写道,并在末尾附上了链接,方便用户了解通知详情。

目前,Canary 版 Google Chrome 尚未加入此警告。据 Chromium 的代码提交,警告的显示已在进行中,晚些将与功能标志一起添加到新版浏览器。

Chrome 即将加入的这个警告显示,可以让用户提前得知 Flash Player 支持的即将结束,使得浏览器取消支持 Flash Player 的整个转换过程更加顺畅。

apollo配置中心新增自定义环境

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。   默认阿波罗环境设定了

LOCAL, DEV, FWS, FAT, UAT, LPT, PRO, TOOLS, UNKNOWN;这样的环境命名空间。
增加sklinux环境示范:
1.假设增加sklinux
在com.ctrip.framework.apollo.core.enums.Env类中有定义。比如增加sklinux环境L
public enum Env{
  LOCAL, DEV, SKLINUX, FWS, FAT, UAT, LPT, PRO, TOOLS, UNKNOWN;
  ...
}
apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/core/enums/Env.java 文件路径

2.修改com.ctrip.framework.apollo.core.enums.EnvUtils类,在其中加入BETA枚举的转换逻辑
case "SKLINUX":
        return Env.SKLINUX;

文件路径:
apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/core/enums/EnvUtils.java
3.修改apollo-env.properties,增加beta.meta占位符:
local.meta=http://localhost:8080
dev.meta=${dev_meta}
fat.meta=${fat_meta}
sklinux.meta=${sklinux_meta}
uat.meta=${uat_meta}
lpt.meta=${lpt_meta}
pro.meta=${pro_meta}
文件路径:
apollo/apollo-portal/src/main/resources/apollo-env.properties
4.修改com.ctrip.framework.apollo.core.internals.LegacyMetaServerProvider类,增加读取SKLINUX环境的meta server地址逻辑:

增加

env.getProperty("sklinux_meta", prop.getProperty("sklinux.meta")));

未增加前:
 domains.put(Env.LOCAL, getMetaServerAddress(prop, "local_meta", "local.meta"));
 domains.put(Env.DEV, getMetaServerAddress(prop, "dev_meta", "dev.meta"));
 domains.put(Env.FAT, getMetaServerAddress(prop, "fat_meta", "fat.meta"));
 domains.put(Env.UAT, getMetaServerAddress(prop, "uat_meta", "uat.meta"));
 domains.put(Env.LPT, getMetaServerAddress(prop, "lpt_meta", "lpt.meta"));
 domains.put(Env.PRO, getMetaServerAddress(prop, "pro_meta", "pro.meta"));
文件路径:
./apollo/apollo-core/src/main/java/com/ctrip/framework/apollo/core/internals/LegacyMetaServerProvider.java
cd apollo/scripts/ && ./build.sh 即可

[INFO] Reactor Summary for Apollo 1.4.0-SNAPSHOT:
[INFO]
[INFO] Apollo ……………………………………… SUCCESS [ 0.667 s]
[INFO] Apollo Core …………………………………. SUCCESS [ 3.964 s]
[INFO] Apollo Common ……………………………….. SUCCESS [ 1.377 s]
[INFO] Apollo Open Api ……………………………… SUCCESS [ 0.875 s]
[INFO] Apollo Portal ……………………………….. SUCCESS [ 6.668 s]
[INFO] ————————————————————————
[INFO] BUILD SUCCESS
[INFO] ————————————————————————
[INFO] Total time: 14.254 s
[INFO] Finished at: 2019-05-06T10:50:55+08:00
[INFO] ————————————————————————
==== building portal finished ====

5.protaldb增加SKLINUX环境配置。portaldb.serverconfig 表中的apollo.portal.envs字段 dev,uat,fat,pro,sklinux

6.为apollo-portal添加新增环境对应的meta server地址。apollo-env.properties中增加:dev.meta=http://x.x.x.x:8080
7.准备sklinux环境的adminservice和configservice 以及db,然后启动
8.重启portal服务就新增成功了。

HTTPS连接过程以及中间人攻击劫持

一 、HTTPS连接过程及中间人攻击原理

https协议就是http+ssl协议,如下图所示为其连接过程:
这里写图片描述
1.https请求
客户端向服务端发送https请求;
2.生成公钥和私钥
服务端收到请求之后,生成公钥和私钥。公钥相当于是锁,私钥相当于是钥匙,只有私钥才能够打开公钥锁住的内容;
3.返回公钥
服务端将公钥(证书)返回给客户端,公钥里面包含有很多信息,比如证书的颁发机构、过期时间等等;
4.客户端验证公钥
客户端收到公钥之后,首先会验证其是否有效,如颁发机构或者过期时间等,如果发现有问题就会抛出异常,提示证书存在问题。如果没有问题,那么就生成一个随机值,作为客户端的密钥,然后用服务端的公钥加密;
5.发送客户端密钥
客户端用服务端的公钥加密密钥,然后发送给服务端。
6.服务端收取密钥,对称加密内容
服务端收到经过加密的密钥,然后用私钥将其解密,得到客户端的密钥,然后服务端把要传输的内容和客户端的密钥进行对称加密,这样除非知道密钥,否则无法知道传输的内容。
7.加密传输
服务端将经过加密的内容传输给客户端。
8.获取加密内容,解密
客户端获取加密内容后,用之前生成的密钥对其进行解密,获取到内容。 继续阅读

普罗米修斯监控

Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。

2016年由Google发起Linux基金会旗下的原生云基金会(Cloud Native Computing Foundation), 将Prometheus纳入其下第二大开源项目。Prometheus目前在开源社区相当活跃。

Prometheus和Heapster(Heapster是K8S的一个子项目,用于获取集群的性能数据。)相比功能更完善、更全面。Prometheus性能也足够支撑上万台规模的集群。

Prometheus的特点

多维度数据模型。
灵活的查询语言。
不依赖分布式存储,单个服务器节点是自主的。
通过基于HTTP的pull方式采集时序数据。
可以通过中间网关进行时序列数据推送。
通过服务发现或者静态配置来发现目标服务对象。
支持多种多样的图表和界面展示,比如Grafana等。 继续阅读

开源APM业务性能剖析系统架构

开源APM业务性能剖析系统架构

 

以前用过不少apm产品,最近我们开始使用elastic出品的免费开源APM。架构比较简单,由elasticsearch+kibana+APM-server+apm_agent构成
APM它是应用程序性能监控系统,主要是监控软件服务和应用程序实时性能、访问参数、接口响应时间、数据库查询请求、调用缓存以及内外部api接口性能、采集性能信息并存储到es集群。然后通过kibana进行展示或者做可视化分析。这样可以轻松快速的跟踪到问题点,并修复性能相关问题。
主要组件是:
APM agents
APM Server
Elasticsearch
Kibana APM UI

目前支持Nodejs,Python,Ruby,js,Go,java的性能追踪。暂时还没有php的探针支持。

 

架构如下:

elk

动态ARP检测原理及应用

在一个局域网中,网络安全可以通过多种方式来实现,而采取DHCP snooping(DHCP 防护)及DAI 检测(ARP 防护)这种技术,保护接入交换机的每个端口,可以让网络更加安全,更加稳定,尽可能的减小中毒范围,不因病毒或木马导致全网的瘫痪。 下面将详细的对这种技术的原理和应用做出解释。 继续阅读

Gradle 5.0 正式版发布!史上最快、最安全和最强大的版本

Gradle 5.0 正式版发布了!官方表示这是史上最快、最安全,最强大的版本。

改进的增量编译和增量注释处理构建在已经具有构建缓存和最新检查功能的可靠性能基础之上。

依赖约束 —— 依赖对齐和版本锁定提供了可扩展且灵活的依赖管理模型。

通过新的性能和依赖关系管理、日志记录和弃用的 API 使用检查,构建扫描得到了显著的改进。

静态类型的 Kotlin DSL 可在创建构建逻辑时提供代码完成、重构和其他的 IDE 辅助。

主要改进可分为以下几类:

最后,可以了解如何进一步升级到 Gradle 5.0

值得关注的新特性:

企业私有Harbor仓库

我们在研发、测试、生产环境使用Harbo已经1年多了,现在推荐给大家使用。

一、Harbor介绍
     Harbor是一个英文单词,意思是港湾,港湾是干什么的呢,就是停放货物的,而货物呢,是装在集装箱中的,说到集装箱,就不得不提到Docker容器,因为docker容器的技术正是借鉴了集装箱的原理。所以,Harbor正是一个用于存储Docker镜像的企业级Registry服务。
Registry是Dcoker官方的一个私有仓库镜像,可以将本地的镜像打标签进行标记然后push到以Registry起的容器的私有仓库中。企业可以根据自己的需求,使用Dokcerfile生成自己的镜像,并推到私有仓库中,这样可以大大提高拉取镜像的效率。
二、Harbor核心组件解释
 Proxy:他是一个nginx的前端代理,代理Harbor的registry,UI, token等服务。
 db:负责储存用户权限、审计日志、Dockerimage分组信息等数据。
 UI:提供图形化界面,帮助用户管理registry上的镜像, 并对用户进行授权。
 jobsevice:jobsevice是负责镜像复制工作的,他和registry通信,从一个registry pull镜像然后push到另一个registry,并记录job_log。
 Adminserver:是系统的配置管理中心附带检查存储用量,ui和jobserver启动时候回需要加载adminserver的配置。
 Registry:镜像仓库,负责存储镜像文件。
 Log:为了帮助监控Harbor运行,负责收集其他组件的log,供日后进行分析。
三、Harbor获取版本和安装文档
  https://github.com/goharbor/harbor

Mikrotik路由安全防范设置

  1. 将默认用户名admin更改为其他名称
    /user set 0 name=superrootman
  2. 设置高强度的密码
    /user set 0 password=”zhegemimahenchanghenchang!@#”
  3. 通过IP地址访问
    /user set 0 allowed-address=xxxx/yy
  4. 只保留安全的服务
    /ip service disable telnet,f​​tp,www,api,api-ssl
    注意:该操作会禁用Telnet,FTP,WWW,API,API-SSL
  5. 更改默认端口,这将立即停止大多数随机SSH暴力登录尝试
    /ip service set ssh port=220
  6. 设置Winbox允许登陆的网段
    /ip service set winbox address=192.168.0.0/16
  7. 禁用mac-telnet服务
    /tool mac-server set allowed-interface-list=none
  8. 禁用mac-winbox服务
    /tool mac-server mac-winbox set allowed-interface-list=none
  9. 禁用mac-ping服务
    /tool mac-server ping set enabled=no
  10. 邻居发现
    MikroTik邻居发现协议用于显示和识别网络中的其他MikroTik设备,禁用所有接口上的邻居发现
    禁用IPv4 的邻居发现协议
    /ip neighbor discovery-settings set discover-interface-list=none
    禁用IPv6 的邻居发现协议
    /ipv6 nd set [find] disabled=yes
  11. 带宽服务器用于测试两个MikroTik路由器之间的吞吐量,请在测试后禁用它。
    /tool bandwidth-server set enabled=no
  12. DNS缓存
    /ip dns set allow-remote-requests=no
  13. 设置更安全的SSH访问,打开SSH强加密
    /ip ssh set strong-crypto=yes
  14. 关闭 Proxy,Socks代理
    /ip proxy set enabled=no
    /ip socks set enabled=no
  15. MikroTik UPnP服务(通用即插即用协议)
    /ip upnp set enabled=no
  16. MikroTik自带的DDNS服务器(动态域名解析)
    如果不是使用的话请用以下命令禁用
    /ip cloud set ddns-enabled=no update-time=no
  17. 某些型号的RouterBOARD有LCD模块用于信息显示。
    /lcd set enabled=no
  18. 如果你的路由器不提供VPN服务,请用以下命令关闭VPN
    /interface l2tp-server server set enabled=no
    /interface pptp-server server set enabled=no
    /interface sstp-server server set enabled=no
    /interface ovpn-server server set enabled=no
  19. 禁用在设备上使用Radius进行授权
    /user aaa set use-radius=no
  20. 禁ping