安全使用 Linux 服务器

查看原文

为了打造安全的系统,我们需要考虑的东西有方方面面。本文介绍了一份安全检查的清单。

  • 访问控制列表 (ACLs): 系统架构必须按组和角色授权访问系统的不同部分。Linux 相关的命令:acl
  • 系统审计:用户登录机器,必须能够做到审计用户执行的所有命令。Linux 相关命令:auditd / go-audit
  • 静态分析:内存安全要用工具来保障,代码要审计,静态分析,甚至被 fuzzed。可以用各种静态分析的工具来做,甚至用 Rust 这种语言写。
  • 网络分区:服务器妥善地放在负载均衡后面。如果网络挂掉或者没有路由,这些主机应该可以存活。配置 VPN,给机器配置内网和公网地址。iptables, ufw.
  • Compartmentalization: 让员工将他们的电脑去分开工作和非工作的部分。工具可以是虚拟机:Qubes / VirtualBox.
  • 文件权限和 umask: 妥善设置好每个配置文件的 r, w, x.
  • 容器:确认谁有权限构建和推送镜像到生产环境。这些要被签名 …
read more

迁移 Python 2 to 3 的经验帖

查看原文

本文介绍一个团队将二十多万行的代码库升级到 Python 3 的经验帖。

  • Python2 → Six → Python3。2to3 这个库会导致代码坏掉。用 six 写一些兼容两个版本的代码会方便很多。
  • Python-modernize 把 py2 仓库转成 six-compatible 的仓库。
  • 依赖不太支持 Python3 的,上游不搞,就自己 fork 修一下先支持。
  • StringIO.StringIO 在 Python3 中需要思考是要用 io.StringIO, io.BytesIO 还是 six.StringIO。
  • 看上去 Python 3 的支持迟早要做,早晚的问题。
read more

做得不好的软件是要被吐槽的

查看原文

IBM Java CTO 宣称开发者才不需要学习 Docker, Kubernetes, 以及 30 多种工具来部署应用。从结论上来说,其实并没有什么问题。未来的部署工具必然是会收敛到几套成熟的方案上,操作也会更简单。不过比较惨的是,IBM 家的 WebSphere 这套解决方案被人称作 shitlord application。评论中,写出一个简单的 Hello World 程序,需要启动好几个小时的 IDE,搞清十几个概念,中间会遇到各种错误。

read more

Service Mesh 如何获取 Top-Line Service Metrics

查看原文

Service Mesh 是管理应用间通信的中间层。有了 Service Mesh,应用中可以丢掉的代码有:处理重试,超时,Tracing,服务发现,监控外部服务等等。Service Mesh 可以自动抓取目标服务的一些 top-line service mtrics,例如请求的成功率,latency 等等。使用 Kubernetes 的 DaemonSets 工具可以完成 sidecars 式的部署。

read more

Overlay Network 简介

查看原文

Overlay Network 是指一个网络构建于另一个网络上。上层网络用虚拟链接相连,每个链接路径 在下层网络中有相对应的(可能有多条)物理链接。一个很好的例子是过去互联网是构建在电话线路上,如今电话网络开始越来越多构建在互联网的光纤网络上。Overlay Network 是通信的概念,我们所使用的 IP 网络目前大多数 overlaid 在至少一个光纤层,一个传输层,一个 IP 或者 circuit switching 层。一般来说,Overlay 没办法决定数据包如何在节点中间传输,但能决定数据包到达目标节点的先后顺序。

read more

Linkerd 是什么

查看原文

Linkerd 是一款 service mesh 软件,它用于处理 service-to-service 通信的管理,控制,和监控。在复杂的系统中,最大的问题很有可能不是出在服务本身,而是出在服务间的通信。Linkerd 的解决方案是引入一个专门控制流量的中间层,负责通信相关的各种需求,例如 latency-aware 的负载均衡,instrumentation,TLS,控制,request-level routing 等等。

运行 linkerd 示例,配好地址后,应用先联系 linkerd,然后 linkerd 再 proxy 到目标服务。linkerd 在底层做的事情是应用路由规则,联系 service discovery,获得目标服务,然后负载均衡流量过去。引入 service mesh 的好处是:有一张生产环境所有服务的全局的拓扑图,服务 …

read more

Alpine 项目的来龙去脉

查看原文

Alpine Linux 是一个非常小的 Linux distro,它的核心理念是整个 distro 能装在内存中运行(甚至可以做到每次重启都重装)。Docker 的很多 official images 都从 alpine 开始构建。Alpine 的最突出的特性就是小而高效。当然缺点相对的,就是不如 RedHat / SUSE / Ubuntu 这样的系统打磨得非常易用。虽然 Alpine 源自 Gentoo,但目前是可以独立运行的,它的基本套件是 Linux Kernel + MuslC + BusyBox + LibreSSL + OpenRC。Alpine Package Keeper (apk) 是 Alpine 的包管理工具,不用 gentoo pacman 的原因还是 run-from-ram。打包后使用 …

read more

实战:Facebook 直播如何应对流量高峰

查看原文

视频直播服务很容易收到特殊事件的冲击导致出现流量高峰。对于 Facebook Live 服务,他们的系统有三种常见的模式:Routine(作息导致的高峰和低谷),完全无法预测的高峰(例如自然灾害或者灾难或者哪里枪击案了),预期的高峰(例如节日)。要让系统很好地应对流量高峰,首先需要对系统架构有认知,找出瓶颈,然后逐个测试其上限,平时做演练,最后真刀真枪时上备好的服务器增强容量。

对于 Facebook Live,他们的架构分三层,直播的客户端的 RTMPS TCP 流数据通过 Edge PoP 到达 Facebook Live Servers (FBLS), 完成 HD/SD encoding 以后永久存储到 Distributed Media Storage,同时数据会通过 Facebook CDN 到达 回放的客户端。

这个系统架构的主要资源消耗在这几个组件中:

  • Edge PoP …
read more

学习 IT 基础知识的重要性

查看原文

你可能随时都能搞到编译好的软件,配置好的数据库实例,甚至是一整个集群坏了就丢了重新搞起来一套。现在的技术把很多东西藏起来了,封装到完全不会接触到。但是,只要你愿意,你可以在任何地方潜下去,你都可以挖出很多知识来。你可以不用知道那些知识就能找到工作,但出了问题,这些知识将能让你找到问题所在。

read more

如何写出安全地 Shell 脚本?

查看原文

本文介绍了写出安全的 Shell 脚本的一些技巧。

  • 在输入密码的时候,使用 stty -echo 不显示用户输入。使用 read password 接受用户输入。使用 stty echo 重新显示用户输入。
  • 可以用 sed -E 's/[[:lower:]]//g' 处理用户输入做比对,看是否相同。如果不同,说明没有通过校验,没有含有特定类型的字符。
  • 使用 wc -c 测试密码长度
  • 定时检查 /etc/passwd 看看有没有新的账户被创建,有一定几率可以检测出服务器被人搞了。
  • 评论有人提到了 auditd。
read more

« Page 34 / 54 »