更换笔电硬盘

回国后在京东上订了一块日立(昱科)的机械硬盘,因为我对我的笔电当前所使用的东芝硬盘不放心。

这种担心并非杞人忧天,因为这块东芝硬盘近期频繁的发出异样的声音,我从未听到一块正常工作的机械硬盘发出同样的声音,加之读写速度忽快忽慢。尽管使用CDI查询的S.M.A.R.T信息并无异常,我还是对此不放心。

然而,拆机后我发现这台电脑仅支持7mm硬盘,而我只有一块500GiB的7mm硬盘(SSD除外),并没有1TiB的。因而不得不购买。

结合BackBlaze的数据,日立的硬盘看起来最为可靠,尽管东芝在数据上看起来更好,但由于样本容量太小而无说服力。综上,我选择里日立的产品——值得注意的是,目前不存在一款同时满足以下三个条件的产品:

  • 7mm 2.5'
  • 7200rpm
  • 1TiB

收到货后,我将新旧硬盘同时连接至台式机,并通过Linux系统的dd命令将旧硬盘的数据克隆到新硬盘。此过程耗时近3小时,相比复制文件好处在于不会改变硬盘的GUID,进而导致垃圾Windows操作系统的激活失效(我曾尝试将台式机上的声卡停用,这导致Windows 8.1激活失效)。

将新的硬盘装入笔电,一切正常。


#20180218

这个硬盘比东芝的更安静些(尤其是启动时的声音),启动也更快。由于笔记本硬盘在闲置时会停转,启动更快使得在用到机械硬盘时,不再感到明显的卡顿。


*.磁盘克隆也可由Acronis Trueimage或Disk Genius(不可用于运行中的操作系统所在磁盘)完成

换用北京联通100Mbps光纤与家庭网络系统改造

网络拓扑结构

2018年2月,和垃圾宽带通的合约终于结束了。我们计划换为联通宽带,而不再使用宽带通等民营ISP。

去年联通光改时,家里联通的电话线路由铜缆改为光纤,并由此得到一台烽火的光猫。后来不想在使用固话,又因联通称"若将电话销号,光猫将被收回"而申请了停机保号。

在安装前我曾致电询问,是否能将光猫设置为桥接模式,原因有二

  1. 光猫的built-in wireless不支持5GHz
  2. 因此要使用自己的路由器,而光猫的NAT性能很差

对方称可改为桥接模式,修改后使用PPPoE,需自备路由器。我们申请了安装。

联通提供100/200/500M三种带宽,我们起初选择了200M,后来接到其客服人员电话,希望我们改为购买100M,如同意将赠送一张手机卡,我们同意了。(这是个正确的选择,见后文)


2月9日,安装人员上门,却发生了一些问题。对方表示无法改为桥接模式,因为其会使电话无法使用,联通有义务确保电话服务随时可复机——尽管电话已"停机保号"并不打算再使用。如果我们放弃固话(销号),则可换为"桥接型光猫"。我们同意了。

安装人员换了一台中兴的光猫,其背面贴有"桥接型光猫"的贴纸。

安装完后我用笔电配合USB网卡进行测试,不料垃圾微软的垃圾Windows 10不知道抽什么风,始终无法通过PPPoE连接,也不提供任何错误码,这令人束手无策。

安装人员下楼取来自己的笔电进行测试,能正常使用。 继续阅读“换用北京联通100Mbps光纤与家庭网络系统改造”

对某网络认证系统的研究

警告:技术无罪,莫用作非法用途。

如进行不合理使用所造成任何法律责任,笔者概不负责。

迁入大学校内的宿舍后,我对垄断该宿舍的网络公司所使用的认证系统进行了一番研究。


1.初探

该认证系统在未登录时封锁除80及443以外的所有TCP端口;UDP未予详细测试,但至少知道UDP/53(DNS)应该未被其封锁/篡改——经测试,未登录时DNS也能返回正确的记录。

该系统登录页面具有域名(下以a.net代称),并使用了HTTPS。值得注意的是,这个系统可以在未连接该网络时访问,此时登陆账户,不能上线,只能查看账户信息或充值等;通过nslookup可知其使用了CloudFlare的CDN。

未登录时,通过HTTP(TCP/80)访问任何网站,会被其网关302重定向至https://a.net,而使用HTTPS(TCP/443)访问任何网站,网关会发回https://a.netServerHello包,此时:

  • 一些浏览器提示"证书错误",阻止用户继续访问
  • 另一些(更聪明的)浏览器会提示WiFi需要登录,并询问是否跳转至登陆页面

我发现,此时访问https://a.net的IP与用手机网路访问时一样,都属于CloudFlare。于是我做了一个尝试。


2.猜测

  • 将HTTP无条件301到https://a.net
  • 对HTTPS试图识别访问的主机名,如不是a.net,则充当TCP代理,将用户的ClientHello发至https://a.net,并返回https://a.netServerHello等后续数据包……

    3.尝试

获取HTTPS所访问的主机名,方法大抵有两种:

  1. 通过TLS SNI扩展中的servername字段
  2. 通过证书的subjectAltName(下简称SAN)

于是我试图构建一个HTTPS连接,但其具有如下特点

  • SNI扩展中的servername字段为a.net
  • Host这一HTTP Header的值为hardrain980.com

返回了本站首页的HTML。由此证明,该系统是通过TLS SNI扩展来识别HTTPS所请求的主机名,并根据此做出对应操作。


4.后记

  1. 似乎Stunnel能自定义SNI。Server配合后端,将其监听于TCP/443,Client模式下使用a.net做主机名或能绕过此系统。
  2. 此系统若通过证书来识别HTTPS主机名,自签名一个SAN包含a.net的证书或仍可绕过。
  3. 若此系统同时通过PKI检查证书有效性,则无解。
  4. 不明白此计费系统在未登录时为何不使用IP白名单,是因为CloudFlare CDN的IP会变化吗?
  5. 我付费使用该公司提供的网路,未使用信息技术谋取非法利益。

这网路的无线覆盖很垃圾,AP看起来是后安装的(墙壁上有走明线的管子),既没安在房顶上,也没放在靠中间的位置。奇怪的是网络信号5格却时常掉线,令我不得不使用USB网卡(XPS15没有RJ45端口)。

小谈过去的一年接的几个运维私活

2018.1.9 开始填坑。突然发现这个坑还是我回国前开的,已经一个多月了……

过去的一年里我接了几个运维的私活(历时共半年)。收入微薄,能提供我的VPS、域名及SSL证书所需要之费用,除此之外所剩无几;主要目的则是积累经验。


一、客户背景&面试内容

注:"面试"内容不能完全记清,只能最大程度回忆。

客户性质 所用程序 "面试"内容 备注
个人
  • WordPress
  • Apache 2.2/CentOS 6
  1. Apache Rewrite Rules
  2. Apache 日志分析
  • Discuz X3.2
  • Apache 2.4/Ubuntu 16.04 LTS
  1. iptables - Reject与Drop掉来自特定IP的访问
  2. grep - 查找指定目录下所有包含特定字符串的文件
  3. find - 将某目录下所有文件和目录分别设置不同的权限码;查找特定大小、特定修改时间(段)、特定后缀名的文件
  4. sed - 注释与取消注释代码中指定的某几行
  • WordPress
  • Nginx/Ubuntu 16.04 LTS
(没面试)
  • WordPress
  • OwnCloud 9
  • Apache 2.4/Ubuntu 16.04 LTS
  1. Apache Rewrite Rules
  2. systemd 相关(systemctl:开始/停止/重启/重载/启用/停用/查看状态;journalctl:查看特定程序日志)
  • Typecho
  • Caddy/Ubuntu 16.04 LTS
  1. 正则表达式相关
  2. find - 查找指定修改时间(段)的文件
  3. systemd - service文件
企业
  • 未知(自行开发)
  • Apache 2.4/RHEL 7
  1. TCP/IP相关 - (二进制表示)子网掩码与IP段关系
  2. ifconfig - 设置静态IP
  3. iptables - reject来自特定IP到特定TCP port的连接。
  4. mod_security2 - 阻止分布式暴力破解密码(暴力破解频率达到阈值时仅白名单用户可访问登陆页面,其余全部返回HTTP 503),被卡(不会)
  5. find - 查找某目录下特定修改时间(段)且具有特定扩展名的文件
  6. grep - 查找某目录下有特定后缀名且包含特定pattern(需用正则表达式)的文件
  7. sed - 查找特定的pattern(需用正则表达式)并替换为特定string(无需正则表达式)、删除某几行
  8. 提供几个PHP文件,找出其中哪个有"后门" - 后门是通过语言生成器eval()实现的"一句话"木马。
 存在未能回答的问题(mod_security2)
未知
  1. sysctl - 禁止Ping(ICMP)、修改默认TTL、更改TCP拥塞算法
  2. iptables - 端口转发(内网穿透?)
  3. find - 删除某目录下指定修改时间(段)的文件
  4. sed - (问题很多,没记清)
  5. awk - (不会,因此被卡)
面试未通过.

二、感受

主要说那个企业吧,因为五个个人项目所用程序我都有使用过,唯独两点是例外

  1. CentOS 6(RHEL 6)不具有systemd。
  2. 我没有用过Caddy,但是其从安装到配置似乎十分简单且Documents完备。

这个企业给我的印象并不好,但我也毫无办法——毕竟是通过熟人介绍才令我获得面试的机会。我作为个人,又没有任何正经的工作经验抑或是认证,很难自行申请企业的职位。

1.他们欺骗了我——自称其业务是租赁,但实为网贷。

网贷给我的印象很不好,一是因为影响极其恶劣的借贷宝"裸条"事件;二是我的同学有人欠网贷平台的债导致我受到短信轰炸——后来我发现网贷平台的Android APP都要求通讯录权限,便知道他们是如何获取我的手机号了……

2.他们给我的薪资与交给我的任务并不对等。

这个公司的管理人员曾评价我"水平高,比全职的(运维)都高"——这并非是因为我有多么高的技术水平,而是因为他们交给我的差事比一般运维人员分内的多很多,并且我比较好地(至少是令对方满意地)将其完成了罢了。

我要负责的是他们的网页服务器,同时也为手机App提供API。倘若把TCP/IP四层模型再添加一个第五层——后端,即用于生成应用层内容,如PHP。那么我恐怕只有第一层(物理层)的东西未曾接触。试问一般的运维会去帮他们处理那些PHP的程序中的问题吗?他们的软件工程师去哪了?

3.他们很能造次,而"玩脱了"后又无法收拾自己的烂摊子,实乃烦人——后文会加以描述

4.极度吝啬——不愿购买操作系统的授权,不愿花钱购买SSL证书。


三、奇葩的系统环境

我接手时,这个公司的HTTP服务器用的是Apache 1.3.42,通过cygwin在Windows Server 2008(没有R2)运行。

众所周知,Apache 1.3最后一个版本(1.3.42)发布是在2010年,至今7年;而第一个版本发布则是上个世纪的事了。Google检索Apache 1.3.42,第一个联想到的关键词便是exploit,谈何安全?

于是我使用了由Apachelounge编译的用于Windows的Apache 2.4,并在解决一堆Apache 1.3与2.x的配置文件兼容性问题后,将其用作生产环境。PHP版本也从5.3.x升级至7.1,似乎未出现不兼容。

好景不长,不久这家的服务器不断被上传一句话木马,而我却无从得知骇客是如何上传的——尽管这家的PHP程序只用正则表达式检测文件名,甚至没有检测mime type或是文件内容,可文件名竟是.php的。

抓包分析后才发现,骇客是通过上传不被Windows的NTFS文件系统允许的文件名来挂马——其上传的文件名类似a.php.,而这个文件会被Windows改成a.php,这样既不被\.php$匹配,又可以被解析。鉴于此,我建议他们弃用Windows操作系统,转为使用RHEL——尽管我个人觉得RHEL/CentOS使用不如Debian/Ubuntu方便,软件源提供的程序又少又旧,但还是看中了10年的支持周期。

然而这家公司并不愿意支付RHEL的使用授权——甚至其之前使用的Windows Server也是盗版的。最后我只得使用CentOS。

(T.B.C.)