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

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.)

《小谈过去的一年接的几个运维私活》有4个想法

    1. @灰常记忆 : 其实12年我第一次用VPS的时候,也是用的某个LAMP一键包来搭建WordPress运行环境的
      其实这些吧,个人觉得当需要时去检索,去研究,自然就明白了……

      1. @HardRain : 我比你用vps的时间早,大概是06-07的时候用过一次,之后全是虚拟主机,算起来也快十年没用过了。linux的确需要多使用才能更好的使用它,折腾无止境……

发表评论

电子邮件地址不会被公开。