分类目录归档:DevOps

以太坊挖矿介绍

以太坊挖矿是一个涉及高度计算的工作,需要大量的时间和处理能力,期间会消耗大量的电力。
其主要算法是Ethash。

矿工通过以区块链技术为数学难题提供解决方案来获得奖励,就像比特币挖矿一样。以太坊是第一个“世界计算机”。这是一个分布式网络,任何人都可以使用。它能够运行应用程序,不存在停机、审查或欺诈的可能性。 继续阅读以太坊挖矿介绍

istio服务网格生产环境ingress网关部署SSL实战

服务网格实战之SSL服务发布

准备物件:
1.被各大厂认证签发过的、认证的域名私有证书、私钥,比如istio.sklinux.com。
2.基于云的k8s集群(生产环境)。
3.istio基础设施已经通过helm部署,并$(kubectl get svc -n istio-system|grep istio-ingressgateway)得到外部ip。
4.创建证书对象以及服务应用编排。
5.发布应用编排并使用https://istio.sklinux.com 进行测试。
大致步骤分为上面5部分,下面重点说下第4部分
首先创建证书对象:
kubectl create -n istio-system secret tls istio-ingressgateway-certs \
–key ssl/istio.sklinux.com/private.key \
–cert ssl/istio.sklinux.com/certificate.crt
将在istio-system创建一个secret为istio-ingressgateway-certs的对象,分别是私钥和证书。
然后进行检查是否在ingress-gateway的容器中已经发现:

~ kubectl exec -it istio-ingressgateway-xxxxx-xxxxx -n istio-system -c istio-proxy — ls -al /etc/istio/ingressgateway-certs/
total 0
lrwxrwxrwx 1 root root 14 May 27 09:33 tls.crt -> ..data/tls.crt
lrwxrwxrwx 1 root root 14 May 27 09:33 tls.key -> ..data/tls.key

已经看见tls.crt和tls.key

下面进行服务编排:
主要编排路线是:
Gateway->VirtualService->DestinationRule->Service->Deployment
其中在Gateway中定义协议为HTTPS以及域名:
- port:
number: 443
name: https
protocol: HTTPS
tls:
mode: SIMPLE
serverCertificate: /etc/istio/ingressgateway-certs/tls.crt
privateKey: /etc/istio/ingressgateway-certs/tls.key
hosts:
- istio.sklinux.com
VirtualService 主要是做一些http的匹配规则,然后匹配规则流向何处,比如流向DestinationRule中的哪个版本。
DestinationRule中主要定义了有哪些目标路由和版本,这些目标具体由Service定义。版本的标签是由多个标签组成的deployment构成。

编排好后使用

istioctl kube-inject -f注入yaml,然后kubectl create -f 即可!

istio-ingress-sds的一些障碍绕行方法

 

1.通过官网的by step 使用ingress-gateway发布ssl始终不成功,但是ingress-gateway的http服务暴露ok。

2.决定使用曲线救援方法,在外侧通过nginx来发布tls,内部回源使用http,但是遇见了http 426的错误。

➜ ~ curl https://192.168.1.25:443/ -H “Host: uat.sklinux.com” -i -k -v
* Trying 192.168.1.25…
* TCP_NODELAY set
* Connected to 192.168.1.25 (192.168.1.25) port 443 (#0)
* WARNING: disabling hostname validation also disables SNI.
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate: *.uat.sklinux.com
* Server certificate: Fishdrowned ROOT CA
> GET / HTTP/1.1
> Host: uat.sklinux.com
> User-Agent: curl/7.54.0
> Accept: */*
>
< HTTP/1.1 426 Upgrade Required
HTTP/1.1 426 Upgrade Required
< Server: nginx
Server: nginx
< Date: Mon, 27 May 2019 02:25:25 GMT
Date: Mon, 27 May 2019 02:25:25 GMT
< Content-Length: 0
Content-Length: 0
< Connection: keep-alive
Connection: keep-alive

经查原因为:

nginx 反向代理默认走的http 1.0版本

但是 被反向代理的服务器是1.1版本的!

所以在反向代理的时候加上一句:proxy_http_version 1.1;

即可!

但是最终通过SDS进行tls服务发布还没彻底解决,这个问题将持续跟进社区。

僵尸网络 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服务就新增成功了。

普罗米修斯监控

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等。 继续阅读普罗米修斯监控

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

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

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

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

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

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

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

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

值得关注的新特性:

linux文件系统高级权限属性

最近在cu论坛看见有同学在问,如何给一个目录设定root都不能删除的权限。

其实linux有高级权限,除了0777的权限位还有更高级的权限控制。在Linux下我们可以用lstat命令查看文件的相关属性信息,除了这些属性之外,Linux下的文件还有一些隐藏的属性,我们可以用lsattr命令来查看:

root@sklinux:/opt# lsattr
——a——e– ./src
如上面的a\e权限

上面这条命令的输出表示src文件具有扩展属性a和e,即只能向该文件添加数据,而不能删除,并且该文件使用extends来映射磁盘块。显然,将那些只允许增长但不允许修改和删除的文件设置为这样的隐藏属性是非常有利于保护数据安全的。 继续阅读linux文件系统高级权限属性