C0reFast记事本

to inspire confidence in somebody.

0%

最近需要修改一下Apache的BasicAuth模块,顺便简单分析一下。

首先是 mod_authn_file, 这个模块从文件中读取用户名和密码组合,并逐一check看用户名和密码是否符合。代码在 modules/aaa/mod_authn_file.c

static const authn_provider authn_file_provider =
{
    &check_password,
    &get_realm_hash,
};

//注册一个叫file的AuthProvider,主要是两个函数check_password和get_realm_hash
static void register_hooks(apr_pool_t *p)
{
    ap_register_provider(p, AUTHN_PROVIDER_GROUP, "file", "0",
                         &authn_file_provider);
}
阅读全文 »

前几天拿到了京东云的代金券,87块钱,刚好能用一台1核1G的虚拟机一个月,外加1M的外网带宽。于是就随便试用了一下,感觉还行,说说感受吧。

首先是镜像,目前镜像不是很多,主要集中在CentOS、Ubuntu、Windows。CentOS还是比较全的,从5.8到7.3都有,Ubuntu只用12.04和14.04两个LTS版本,Windows还是有一些的,不过没怎么关注。除了官方的镜像,还有安全镜像,不过我不敢选。不知道里面加了些啥~
我是直接选了一个CentOS 7.3的镜像。

然后是硬盘,87块钱的代金券只能用系统盘了,30G,数据盘不够加了,也没加。

目前网络只有非BGP可选,创建好了之后我是分配了一个电信的IP,地域是华北,不知道会不会有其他运营商可以选择了。带宽也只能选择1M,不然钱不够了~

创建的过程还是挺简单的,我是绑了SSH key,可以直接ssh登录了。

进去了主机看了一下系统信息:

阅读全文 »

某天收到报警,发现某台PHP Web机器的CPU比较高,压力比较大,登录到机器看了一下,发现,user的CPU还行,但是system的CPU比较高,导致了整个机器的负载比较高,于是就怀疑是不是系统某些地方存在性能瓶颈。

于是先用perf+FlameGraph生成了一下火焰图看一下:
火焰图

发现有很多 __lxstat64 调用占用了很多的CPU时间,这个调用是 stat 函数在64位Linux下的实现,正常情况下,PHP不应该会有这么多类似的调用,这是为什么呢?

阅读全文 »

很久之前,对于磁盘的了解,就知道一个很关键的指标MTBF,即相邻两次故障之间的平均工作时间,也称为平均故障间隔,这个值越大越好,越大意味着硬盘更不容易坏。
对于RAID,也是很相信,觉得大多数情况下,使用RAID,就能保证数据的安全性,几乎不会有数据丢失的风险。

突然的,读到一篇对于RAID 6的文章 Why RAID 6 stops working in 2019,这是一篇2010年的文章,很遗憾到目前才读到。
这篇文章里提到了一个指标,叫URE,也就是Unrecoverable Read Error Rate,不可恢复读取错误,一般普通的桌面级别硬盘,这个指标的值为1 × 10^-14,意味着每读取10^14bit的数据,就有可能产生1bit的错误。

问题在于,这个错误是无法被检测和修复的。10^14bit,大约相当于12.5TB的数据,也就是说,每读取12.5TB的数据,就有可能产生一个错误的读取。而对于目前现在硬盘的容量越来越大,4TB,6TB硬盘的价格越来越低,这种现象会越来越严重。

在RAID5中,当整个集群有一块硬盘出现损坏需要替换时,需要进行重建,重建时,需要读取其他硬盘的数据,计算出替换的那块硬盘的数据,在重建过程中,除了需要考虑重建的时间之外,还要考虑的就是URE的影响,如果集群的容量足够大,比如超过10TB,那么,其实是有很大的概率出现读取错误的,而一旦读取出错,则RAID的重建就会失败,基本也就意味着,数据能恢复的可能性变得相当低了。所以在使用RAID5时,就需要考虑重建的问题。

不过对于企业级的硬盘,URE普遍能做到1×10^-15,就意味着大约能读取125TB的数据,容量有比较大的提升,对于SSD,这个值会更加优秀,有些SSD能达到1×10^-17甚至1×10^-18,能提供更好的数据安全性。

所以,稳定点的话,还是RAID10吧。

默认的Thunderbird设置签名后,会在新建邮件时在前面自动添加两个短横线,类似:

--
xxxxxx

如果要去掉这两个短横线分割符,需要在 工具-> 选项-> 高级-> 配置编辑 中,将 mail.identity.default.suppress_signature_separator 配置项的值修改为 true。即可去掉分割符。

原文在 Signatures - Thunderbird

If you don’t want a “– “ signature separator (the divider between the message body and the signature)
use the config editor to change mail.identity.default.suppress_signature_separator from false to true.
This requires Thunderbird 5.0 or later. If you are using Windows go to Tools → Options → Advanced → General
and press the Config Editor button. Enter suppress_signature_separator in the Filter: field and press return.
Find mail.identity.default.suppress_signature_separator in the results and double click on false in its Value column
to toggle it to true, then close the config editor and press the OK button.

新浪云的PHP 7版本运行环境上线了,相对于PHP 5,PHP 7的性能,在官方宣传和实际应用测试中,都有极好的性能表现,大多数的主流应用和框架都有超过1倍的性能提升。

随着新浪云支持PHP 7运行环境,将应用切换到PHP 7版本运行无疑是更好的选择,但是,由于PHP 7的修改十分巨大,因此,有极少部分的代码是不兼容的,需要针对性的进行修改,想比较巨大的性能提升,这些小的修改就变得微不足道了~

阅读全文 »

为什么说也许是最简单的Channel服务教程呢?因为真的很简单啊,总共只有两个文件,一共只有不到30行代码,但是已经完整的实现了HelloWorld了,除了把代码全写在一行里,不然恐怕这已经是最短的例子了~

阅读全文 »

SAE内部的一些服务,比如MySQL,包括独享型和共享型,默认是无法在外网访问的,这给本地调试带来了一些麻烦,但是,有了VPN隧道服务之后,可以利用VPN隧道服务连接到SAE的内网环境,这时候,就可以在本地计算机直接连接这些服务了。

阅读全文 »

2016年5月3号,一个被广泛使用的图片处理库ImageMagick被爆出存在一处远程命令执行漏洞(CVE-2016–3714),当其处理的上传图片带有攻击代码时,攻击代码中的远程命令将会被执行,进而可能控制服务器。
这个漏洞被命名为ImageTragick,甚至还有了一个属于这个漏洞自己的网站(https://imagetragick.com/)
同样,SAE上也是安装了这个库的,在PHP运行环境中,也是有PHP-Imagick这个扩展的,这就意味着SAE的PHP环境也是有相同的远程命令执行漏洞的。
因此SAE在第一时间修复了该漏洞,并执行了更严格的策略,和官方提供的解决方案相比,更加严格的杜绝了类似现象的发生。下面就来看看这个漏洞的产生,以及SAE是如何修复这个漏洞的。

阅读全文 »

事情的原因,是发生在某个晚上的9点30左右,SAE的报警系统突然报出了异常,所有的Web服务器的负载突然变得很高,流量也变得异常的大。
这个是很有问题的,在SAE最前面的反向代理上,是部署了SAE自己开发的‘CC防火墙’的,如果出现了异常的被攻击的情况,这些异常的流量是不会到达
Web服务器的,现在这些流量都到达了Web服务器,说明要么是攻击没有被正常判断,要没就是这不是一次攻击。

事实上确实这也不是一次攻击。

随后的分析,我们发现了一堆比较‘奇怪’的应用,为什么说‘奇怪’呢,因为这些应用的访问趋势是这样子的:

这是其中一个应用的数据,然而在这个应用的帐号下面,大约有十个类似的应用,都是这样的趋势,所以对于我们的Web服务器来说,在特定的时刻要接受
接近10倍左右的流量,对于当前的规模就有点‘顶不住’了。

阅读全文 »