caoz的心得与分享,只此一家,别无分号.

创业公司如何做好信息安全(下)

发布日期:2015-09-29 07:19:36 +0000

先附上两篇旧文,作为参考,如果您没有浏览过这两篇,建议浏览完后再阅读本文。


信息安全常识科普

创业公司如何做好信息安全(上)


更新一下:根据多个网友的各种反馈,阿里云目前抗DDOS能力较强,但可能存在对部分正常请求的误杀,嗯,对国内的现状我确实不是特别了解了。


继续昨天的话题

数据


这又是一个我特别惭愧的话题,因为就在前几天,amazon的一台云主机崩溃,居然无法恢复,导致我们线上的一个游戏服务出现故障,原本是做了数据备份的,但是由于是一款长期没有维护的游戏,数据备份的机制不合理,恢复起来特别慢,而且,更加崩溃的是,由于开发商原团队多人离职,程序和资源备份已经非常难找了,以至于恢复周期极长。。。


今天先说一下关于备份的话题,前几天冯大辉也特别提过这个话题。

数据备份也存在一个悖论,因为创业者其实有两个担心,第一个担心,数据泄露怎么办?第二个担心,数据损坏怎么办? 而这两个担心在备份策略上是互斥的,如果你想防止泄露,理论上你要尽可能减少数据在不同地区存储的机会,尽可能让数据只存储在你完全信任的环境里,但,如果你担心数据损坏,那么你可能需要把数据更多放在不同地方保存备份。 防止比如说,机房失火,或者地震等重大事故,你可能一个地方的数据全部损坏,你仍然可以异地恢复起来。


此外,数据备份又分为热备和冷备一说,前者是保持实时有效性,一旦线上数据库出现访问故障或硬件故障,甚至可以自动切换完成故障转移,但热备也有显著的缺点,就是万一线上数据出现了严重的误操作,或者被SQL注入者执行了一条drop table,对不起,秒秒钟的事情你的热备就完蛋了! 这时候就只能靠冷备来救命,冷备往往存在一个时间差,会有丢失最新的数据,游戏行业常说的就是,回档。

所以,二者都存在风险,但也都有意义,因此正常情况下建议冷备热备最少各要保留一份,冷备务必要留一些时间差,并且最好要保留多个时间节点备份,防止出现重大的误操作或恶意操作后没有足够发现的时间冷备就被干掉了。


如果热备被误操作或攻击者干掉,最理想的恢复方法是基于最新的冷备先恢复,再用冷备后的数据库日志文件,手工摘除掉最后的错误操作命令然后执行增量恢复。


下面推荐一个平台,叫做多备份,www.dbfen.com,(利益相关,暂时还没利益相关,不知道他们会不会给我赞赏)。 想想连amazon都会有不可恢复的损坏,所以这种备份机制还是有必要的,当然,使用多备份,你必须想清楚,数据泄露的风险毕竟存在,备份越多,泄露风险越大。 所以再次强烈建议,用户密码的处理非常重要,明文保存是流氓行径,md5或md5+md5都保护不了绝大部分用户密码,随机salt是成本最低的高效密码保护策略。

其实,我一直觉得,如果是创业公司,我是不是要用户在我的平台有帐号密码呢?现在QQ,微博,乃至微信一键登录都那么成熟,国外更成熟,facebook, google一键登录什么的,多兼容第三方一键登录,自己不用管密码,就不用担心用户密码丢失了,至少丢了也找不到你这边来。 (当然,也要考虑用户的顾虑,很多用户怕你到他社交网络的时间线乱发消息,所以不希望用自己的社交网络帐号登录,特别是游戏,这个也是一种用户需求吧)

对你认为机密的数据做一些简单的加密存储,然后使用这种多备份平台,可能会极大减少数据泄露的风险。因为黑客也是有成本考虑的。

普通的数据库主从是一种常见备份方法,但主从其实并不能彻底保证数据的一致性,另外一种是通过原始的数据库日志文件,比如mysql的binlog恢复数据,一致性较好,但恢复效率极差。 所以很多时候,并没有绝对正确的方案,你必须评估自己的需求,选择适合自己的就好。

代码备份也是一种数据备份,其意义也非常重大,代码备份同时要兼顾版本管理,有些产品,比如游戏,发布到不同国家不同地区的版本都不一样,这个管理就更加复杂了,这一块我们目前做的也不是很好,所以这次灾难备份恢复的周期格外漫长。而且这里还涉及一个问题,开发商和运营商彼此如果配合不到位,开发商也担心运营商会获得原始代码,然后自己甩开开发商开私服,所以如何协调和保障双方的诉求就特别重要。


传奇私服为啥会起来呢?就是因为当时有一个遥远的国度的发行版本被泄露了,代码迅速在地下黑市扩散普及。。。 所以涉及代码版本备份的工作也相当具有挑战性,因为开发商对泄露的敏感度极高。这一块我只能说,目前我们也没有太好的办法来做到大家都能满意,只能说是尽量把这个问题先让双方都清楚,一旦代码服务器发生不可逆转的损坏,备份恢复机制如何进行。


到这里插播一个本应昨天的话题,作为创业公司,如果开发是外包的,务必要求源代码。我见过这样的案例,有个公司外包开发了一套系统,这个系统是php开发的,代码做了加密,后来他们要修改的时候找不到开发者了,来求助我,我帮他们解开了源代码。不看不知道,里面赤果果的留着一个非常显眼的远程控制的炸弹,就是从地址栏输入一个参数可以直接删除数据库,这种后门主要是开发者防止发包商拖欠尾款的,但是这样的后门性质还是相当恶劣的。虽然没有被引爆,但当时他们的技术人员也震惊了。 在这里推荐一个对php加密代码能做解密的工具,利益关联,这个真的一点关联都没有关联了,http://zendecode.com/ 不同加密方式的解密途径不同,这个是一个比较好用的工具。


员工管理


1、电脑严禁裸奔,不管自称多么懂电脑懂互联网,必须装杀毒软件和安全工具,而且必须装主流的杀毒软件和安全工具。 你说你就不花钱你用360可以,你说你不信360你装卡巴斯基也可以,但必须保持不断更新病毒库和保持付费可用状态。


2、保持公司的邮件帐号密码和其他第三方网站的不一致,这也是硬性规定,防止撞库,有些人在第三方网站也就是普通用户,密码丢了也没啥影响,他自己也不知道,黑客也不去改他密码,但是可能在公司里是个管理员,黑客借用第三方网站的盗号撞库杀入你公司系统,可能就有大麻烦。


3、对外合作方式和一些第三方帐号管理

公司员工对外合作经常留有QQ,或者微信,邮件地址。

QQ,微信这个如果让员工换掉有些强人所难,创业毕竟也要人性化。 (部分有条件的公司可以使用企业QQ服务,便于公司统一管理,而对外合作微信可以考虑使用企业公众号来处理,将在职员工设置为公众号客服,这样企业对外合作可以不用因员工变化而改变微信联系方式,但目前这种配置也不是很流行,所以不做硬性推荐),但是邮件务必要用公司的企业邮箱,大公司这一点都不会觉得有问题,有些创业公司会觉得我搞企业邮箱好麻烦,干脆大家用私人邮件干活吧,但如果存在人员流失和离职这个麻烦就很大,有些重要的业务合作邮件可能就无法追溯了。企业邮箱其实有很多免费和廉价的方式,QQ企业邮局,网易企业邮局,google企业邮局,等等。管理员把权限设置好,后续可以省很多麻烦。


我以前助理经常要跟各个业务伙伴进行邮件沟通,该助理离职后,我直接设置将旧邮件地址所有收到的邮件转发给新助理,这样一些合作伙伴的问询和沟通就完全没障碍的转了过来,我甚至没有通知他们联系人发生了变更。


一些重要的邮件账户也要做好备份,管理员应该可以有设置的能力,这样防止主要员工离职后会删除重要资料。 目前我身边听到多个案例有员工遭辞退后删除所有信息的情况。

公司发展业务时,经常需要设置和安排一些第三方的帐号,比如google 开发者帐号,苹果开发者帐号,域名管理的帐号,很多帐号里还要设置多个权限角色,因为不同目标的员工需要上去做一些设置和调整的工作,这里之强调一点,这些帐号务必使用公司邮箱来注册,而不是个人邮箱,这样才能保证公司在人员流动的时候不会突然出现某些第三方平台你需要重新申请重新配置的麻烦。


这种问题对于大公司来说似乎都是理所当然的,但是对于很多刚开始起步的创业团队,他们一开始很可能疏忽了这些,你一个帐号,我一个帐号就开干了,中间一旦产生人员变化,这麻烦折腾的就大了。


4、关于公司的一些机密的维护


其实从我角度讲,我不喜欢防备员工,公司收入,支出,几乎都是公开的,大部分人都可以看得到,只要业务需要,申请一些第三方平台的权限我也基本上都给开,那么,这里是否存在数据及业务泄露的风险呢?其实肯定会有,不过我觉得对于创业公司,你还真别太在意这个,真正有价值的一定不是冷冰冰的信息和数据,而是人对信息的思考和反馈的能力,我不喜欢那种公司里面各种藏着掖着的作风,如果公司规模大了,竞争环境复杂了,我觉得这个当然还是重要的,但是现在我就琢磨,我们这点小破生意,腾讯这样的肯定懒得看吧,我把我数据给他估计他都懒得瞅一眼,同行?和我们差不多的?大家合一起连腾讯的零头都比不上,我们彼此叫啥劲呢。


但不排除有些企业有些领域有核心竞争力的信息是需要保密的,这一点我也没太好的办法,以前朋友的公司做了款产品叫做铁卷,是干这个的,但是,实话说,不是创业公司玩的。


这里多说一点,安全性和便利性肯定是矛盾的存在,如果你过于刻意强调安全,可能很多工作的复杂度就会增加很多,大家也看到我的介绍里,更多推荐使用第三方平台的产品和服务,也是为了创业团队能专心打磨自己的竞争力,没有必要在安全上投入太大精力,实际上,有个安全大牛说过这样一句话,其实除了极少数安全公司的范例,虽然你看每年互联网安全事故那么多,死于安全事故的公司还真不太能找出来。所以,注意安全是必要的,但是,我们也不是说为了安全,弄得人人自危,大家都不安生,那就有点过犹不及了。


好吧,坦白说,死于私服+外挂的大作游戏还是有几款的,要说如何彻底解决这种问题,我真没办法。我只能说,如果你担心这种事情会发生,你只能尽量让你的竞争力不依赖于这个了,比如快速调整的能力,快速应变的能力,即便出现了比较严重的版本外泄,你升级更快,性能调优更强,版本迭代更迅猛,总还是有机会的,之前那些案例,主要还是因为开发商和运营平台不齐心,遇到问题的应对缓慢,策略保守。


5、辞退及离职


创业公司遇到骨干离职会很头大,如果他手里有一些重要的帐号资源,那真是非常紧张和危险的事情。

这就是之前提到的,全部使用公司邮件地址,辞退离职的时候,只要邮件权限拿回,所有帐号都可以通过密码找回重设。


但问题是,你确认你知道他有多少账户么?很可能不知道的。

这需要平时做好记录。谁在什么系统拥有什么帐号,拥有什么权限,平时需要有个记录,当员工辞退或离职时,应明确这些帐号已经被收回。


当然,这里还有一个重点,缘聚缘散都是缘分,大家同事一场,一起创业,尽可能不要出现不愉快的收场,作为公司创始人或者管理者,即便你认为有人不适合这个公司,请他离开,也应尊重和善待每一个伙伴,这样可能比你加很多条安全策略还要重要。你就想一下,就算员工有不对的,当你决定招聘他进来的时候,首先是你看走眼了对不对,所以第一个责任肯定在你身上,这样去思考,就会减少很多冲突的可能,事实上,非常高比例的企业内部安全事件,是由心存报复的离职员工发起的。


6、办公软件和工具

前文提到,员工应使用正版或来源有保障的软件,包括但不限于

编译器,远程管理工具,邮件客户端,办公软件,图形制作软件。 并且,应及时跟进最新安全补丁。


在家办公或远程办公,涉及帐号密码操作,以及登录操作,应尽可能使用加密传输协议,有条件的建立vpn线路。


最后一个话题


应急处理及响应

这是特别难的一个话题。

涉及很多领域

数据损坏

数据泄露

遭受拒绝服务攻击

域名劫持

服务器被入侵

网站被挂马

等等等等

你跑来问我,对不起,我也没招,找专业安全人士处理。

那么你说,你去哪里找啊?

下面,我告诉你一个大绝招,这是我这样低水平的人还能横行的一个重要原因,一般人绝不外传的!

做好信息安全,三分靠技术,七分靠人脉!

别笑,别笑,真的。


遇到好多次险情,危急时刻,都是我还毫不知情的时候被朋友发来消息,“你们服务器出大篓子了,赶紧处理!” 嗯,这事遇到过,还不止一次呢。

这就是几次死里逃生的真相。

这里我必须再度强调一次,如果你选择了一些巨头的云服务,遇到紧急情况可以请他们支援,无论是ucloud,还是阿里云,或腾讯云,几个比较大牌的云服务商背后,都有业内非常顶级的安全专家镇守,或者与非常专业的安全公司有深度合作。第二是可以去找乌云求助,让他们帮你做一次紧急的评测和加固服务,那,上一篇文章评论里,乌云的朋友给了一个福利:

报caoz的名字过来的乌云众测,免3个高危漏洞的奖金。微信id:2036234

有兴趣的自行联系勾兑。


留个彩蛋吧,名词解释,云服务穿透。

云服务其实也是一种虚拟空间,每个人认为自己获得了一台独立的服务器,但是很多是彼此共存在同一个系统中的,这就存在一个风险,如果这个虚拟机系统出现一些安全漏洞,就可能被人利用漏洞穿透虚拟机,进入上层的实际系统,然后再进入其他虚拟机,我猜你一定想到了,没错,就跟黑客帝国一样,穿透了自己的世界,进入zion,另一台虚拟机。这是云服务目前最大的风险之一。

不过还好,这样的风险出现过,但是大规模的破坏还没发生过。


另外,任何云服务商的数据存储和系统都不是100%安全的,选择时要知道这一点,不能完全信任任何一个平台,个人建议在其他云平台搭建一个同样的系统,数据完成热备,但不用启用,这样成本其实也不高,最低成本运作就好,在dns服务上做好一个备份的域名,也不启用,一旦主力云平台出现非常重大的事故的时候,可以dns直接cname到备份域名上,然后快速增加资源,启动完整的备份平台。尽可能减少运营损失。


当然,实话说,我自己还没完全实现这个,只是部分做了一点。