首页 > 代码库 > 一次DDOS攻击引起的安全漫谈

一次DDOS攻击引起的安全漫谈

    昨天,U-EEE的网站收到了持续数分钟的DDOS攻击,在数据库、虚拟磁盘和Web 服务器、SSH服务器依次满载之后,攻击依然持续了数分钟,在所有漏洞尝试无果后,攻击者放弃了攻击,系统恢复了正常访问。

    LogWatch发回的报告中显示,攻击针对常用的系统了漏洞均做了尝试,这些不仅仅包含了已有软件的漏洞,也包含了对人为过失漏洞的尝试。

    看到报告时,其实觉得有点好玩,因为,曾经我们都是脚本小子,甚至我在想如果对方留下某种形式的联系方式,也许我们可以聊一聊如何加固服务器,哈哈:)

    玩笑归玩笑,互联网上安全问题不可小视,即使你只想提供一个小清新的站点,依然面临网站被挂马,服务器被劫持,目标客户无法访问等等问题,这会让试图体验清新的人非常失望,互联网时代,大家都有点焦虑不是吗?:)

    虽然所有的程序都宣称自己安全、高效、可靠,但是事实却是,所有的应用都在不断发布安全补丁。只要是某种程度上开放的,在开放式环境中面对使用者的系统,都面临安全挑战,特别是网站,真正的安全只有物理隔绝。

    安全之所以让人头痛,是因为除非系统性的构建安全模型,否则很难把安全做到极致。这就像软件产品的开发一样,了不起的产品总是和了不起的管理者、设计者、执行人员之间的对抗和协作十分不开的。个人也许能提供不错的点子,但是要做到极致,没有一个完整的团队和执行保障团队是分不开的。如果要称得上伟大,那么可能还需要一批了不起的用户,不是吗?

    每个人对安全都有自己的理解,我不是安全专家,我觉得有些准则不错,

1. 安全的黄金准则是最小服务,这真是个了不起的观点,简单实用,暴露点越少,就越安全,用到美女身上,同样受用,哈哈。

  对于现有的独立主机,如果把端口开放作为服务开放的标准,那么可能最少要有两个端口,远程管理的SSH:22HTTPS:443HTTP:80在很长一段时间内还需要,所以通常需要 22,80,443三个端口,其它的都应该尽量控制开放,三个端口其中也大有文章。

    对于SSH,有多少人还在使用密码认证而非公钥认证,我认为这是极度危险的,特别是远程ROOT,很多人确实在远程ROOT对不对!!!现在的ISP通常并不会提示用户实施最佳安全准则,因为他们担心这会让用户觉得ISP本身是不安全的、极度复杂的,作为变通,ISP通常会加固自己的周边安全设施。我认为这远远不够的,这好比说,因为自己有一个好物业,出门就可以不上锁,除非这物业只为你家服务,对不对? 

    关于HTTPHTTPS过度的问题,这不关乎服务器的安全,但是关乎用户的安全。Web以开放为目标,但是安全必须有底线,你不希望有人访问你网站的时候,密码被拦截,进而用来做其他更多破解,对不对??? HTTPS是时候登上舞台了。我认为,保护安全的技术应该和保持开放技术一同进化,这种开发才能持续的发展,对不对?

    想想看,如果能够性感、迷人,又能足够安全,这样可餐的秀色就会越来越多对不对。相反,如果暴力和过激事件频发,女孩子是不是要穿着又灰又土的衣服,脸上还得抹点锅煤,那么男同胞就得大声抱怨生活的无趣了,说不定还会怀念纯美的学生时代了,这样着实不好。但是现在中国的基础设施和中国的网民数量有点不对称,只有更多的基础设施在本土被建立起来,Web创新才能持续创新,才会有更多好玩、有趣、精致的东西供大家来玩,要不然就太没意思了。

2. 安全的第二个准则是选用安全性高的应用系统

    表面看起来,这是有完美答案的问题,事实并附如此。安全问题更像是一个权衡问题,系统的安全对易用性、软件迭代速度、软件开发团队的构建都有影响,甚至是相互克制依赖的。

比如说就拿CMS系统来说吧,我不是CMS专家,我知道的有4个,WordPressJoomlaDrupalPlone。WordPress用户群最大,资料最好找,圈子最热闹。Joomla设计很酷,但是对于中文环境支持不太好,英文版的很好看,但是换上中文后,着实不好看。Drupal号称功能最强大,我不喜欢太强大的产品,强大意味着需要强大的自身实力来驾驭,我不是专业的网页设计师、也不擅长Web,所以就不去挑战了。Plone宣称很安全,但是感觉似乎用来建立企业内部的系统更合适,就Plone的定位而言,我宁可选择MediaWiki。  综合评价,我最喜欢WordPress因为,WordPress是唯一有中国团队的产品,这确实很赞。WordPress可以填ICP备案号,你知道吗?:) 

    官方的支持很重要,特别是在这个追求效率和极致的年代。试想,你的公司要构建一个系统,你用了一个超酷、超级强大的开源系统。你有个问题无法解决,官方没有支持。你发了一个问题在某个社团,几天后,稀稀落落的有个答复,让你提供这个现场,那个现场的,然后又是好几天,终于解决了。你的经理怒气匆匆的一声不吭,你小心意义的等待恢复,度过了悲催的几天。这种经理,我想说,非常不愉快,不是吗?

    虽然WordPress的漏洞可能遥遥领先其它几个候选,但是整体上看,它的安全系数,却比别人更高。广大的用户群和官方支持能间接的提升应用程序的安全评级。

3. 安全的第三个准则是系统安全,你要选一个可靠地系统,不是吗? 

    公平的讲WindowsLinux个有利弊,都有存在和选用的理由。但就某一应用场景而言,自然会有明确的优劣。我们的目标是构建一个LAPP系统,Linux上是最合适的了。

    我曾将尝试过Ubuntu,启动速度和使用体验确实超赞。不过,我自己一直用的是Debian, 主要是感觉Debian 的社团比较淡定,不偏激,也不赶时髦。用这样一个不常更新的系统可以让我专注自己关心的事情,而不因为系统升级和配置分了心。另一方面是,你要花时间去研读一些资料,把常见的问题记录下来。通常,这些投入的回报率很高,因为系统相对比较稳定,变更比较少,这些知识已知有效。

    在面临Linux相关的各种问题中,有几个社团对我帮助很大。

    a. 对于Linux一些比较大的方面,比如驱动、服务器配置等等,DebianWiki上如果有介绍,一般很全面,足够指导解决问题。搜索引擎固然强大,但是不断的GoogleBaidu, 会把思维被打散,不是吗。电话是一个了不起的发明,但是你猜一猜,贝尔办公室有没有装电话。那些干过拔电话线的小朋友,一定能深深的体味到不断被打断糟糕心情,你们懂得。

    b. ArchLinux是个好孩子,在遇到中文相关的问题时,ArchLinux官方的一些资料很是受用。相信一些Arch的中国用户,非常热心肠的完善了文档和说明,谢谢他们。

    c. 在指导我系统性的思考和排查问题方面,Gentoo帮助很大。Gentoo对普通用户不太适合,但是当你有什么好点子,想大干一场的时候,也许能能在Gentoo网站上找到短小、精悍、全面的参考手册。能随意定制的系统,一定是能让人全面理解、思考和行动的,要不然就只剩下漫天谩骂了,对不对?

    d. Mac OS和FreeBSD改变了我对技术和产品看法,一直以来不太喜欢Mac的系统,实际上也不太喜欢BSD。但是我知道Mac OS够简洁,够炫。 BSD是现代操作系统的鼻祖,这点也不假。

        有那么一段时间,研读了一下 Mac OS X and iOS Internals之后,态度发生了转变,我明白,这就是我要的系统,这就是我要的设计,简单、强大、不做作、不故弄玄虚、不臣服于技术、不困惑于技术。

        对于FreeBSD,真的是感慨颇多,没有那个技术社团的中文文档能做的那么好,那么细致,那么有延续性。想想看,你看到的中文资料,有多少是重复的,有多少是广告。但是FreeBSD的三个核心文档,绝对称得上简洁明了,我知道我跑题了,我忍不住推荐给你,  Architecture Handbook,Developers‘ Handbook,Handbook。 虽然,BSD更加的不友好,不推荐使用,但是几个中文文档,绝对值得一看。

        Windows, LinuxBSDMAC 几大平台各有存在的道理,根据你的需要选择你的系统。 Mac OS X and iOS Internals给我的最大启示是,要以能把事情做到极致的方式,引导你的产品。不要被世俗束缚,这种束缚也包括技术上的束缚,当你看到技术资料时,你也要问一下自己,这是不是能引导你思考,还是只是用来洗脑的?如果你明白你的目标,就没人能阻止你创造卓越的脚步。

        不好意思,我是一个永远处在入门级的技术控,对技术太有激情,一谈到技术就有点激动,极易跑题,赶紧回到正题上来。

4. 安全的第四个准则是环境安全,这跟ISP的能力有很大的关系

    个人感觉阿里云还是不错哦的,但是在带宽控制方面太吝啬了,不太灵活。

    在真正的网络环境中,仅仅依赖一个主机防火墙是远远不够的,更加常见的形态是通过一个网络整体上隔绝外部公共网络和主机公共网络。也就是说,如果一个互联网用户1.1.1.1的主机要访问一个2.2.2.2ISP主机,那么ISP可能在路由策略上通过一个10.0.0.1/8的网络实施隔离,隔离网络中不同的路由器节点上,分散处理安全逻辑。目标主机,并不是直接暴露在互联网中,而是有一堆哨兵协作,执行安全策略,这可以减少对网络关键节点的依赖,也可以更加灵活。想想看,你的ISP有这样隔离系统吗,还是直接把你暴露了?

5. 安全的第五个准则是,关注安全的参与者要想成一个社团,通力协作,抵御风险。

    现代系统面临各种挑战,任何一个网络公民都无法自保,并且也没有绝对的安全。必须建立一种系统,能够快速的响应网络安全挑战。不仅仅是服务器,也包括各种网络基础设施,比如路由器,DNS服务器,只有他们通力协作才能真正的快速阻击不法的攻击者。

    现在所有的开源系统,都有安全披露和安全公告类似的系统,只要订阅了,就能够够及时得到通知。道高一尺,魔高一丈,虽然基础设施更好,现在软件的漏洞披露每次都能弄出一场大戏来,对不对?不过,话又说回来,服务器管理员能做的也就这些了。

    网络基础设施团队应该在全国乃至全世界范围内协作,抵御各种网络风险,比如非法主机、垃圾邮件、僵尸网路等等。如果掌握大量基础设施的企业,没有这个意识,那么网络安全只是个传说。我们所说的安全,不仅仅是主机的安全,也包括用户的安全,还有ISP本身的安全。主机可以尽量封闭,但是封闭意味着服务范围缩小。用户可以尽量封闭,但是封闭会导致能够享受的服务、便利、和创新减少。ISP可以使用白名单策略,保证自身安全,但是这样又导致网络误杀和扼杀创新的风险。如果要达到开放和安全的双重目标,就必须互相合作、挟制,能够有技术进行细粒度的控制和管控,包容多样性。能够有技术力量平衡风险和收益。我认为真正的网络时代,需要参与者能够在一张会议桌上谈判,开放合作,加强监管,促进和保护创造创新。

6. 安全的第六个准则是,主动出击。

    想想看,如果手机垃圾短信防火墙只能保护某一手机不受侵扰,却没有协调其它参与者射杀不法者,那么这件事情就会没完没了。用户会陷入一种,垃圾短信越来越多,防御软件越来越强,但是生活却无法平静、屡被骚扰的病态循环。但是,如果运营商、安全软件、手机制造商合作,这些攻击着很容易被灭掉,作恶成本也会越来越高。想想看,如果微软仅仅依靠自己的防火墙,怎么可能真正阻止得了垃圾邮件。 他必须和其它的ISP和基础设施拥有者通力合作,快速剿灭垃圾邮件制造者,状况才能真正有所缓解。 

7. 安全的第七个准则是,只选择用专业的组件。

    这是一个大问题,现在国内的产品,大多属于适用面广,但是并不精致,宛如鸡肋。但是,如果要做一些更有意义的事情,我们就需要一个好帮手好团队,是不是?我们必须要相信他们,并且帮助他们改善他们的系统,相信他们明天能做的更好。

    对任何网站而言,评论系统的选择都是个难题,如果人们享受分享的快乐,享受创造的快乐,享受讨论的快乐,应用系统自带的评论系统应该都能满足要求。很不幸,现实生活中,有人以破坏为快乐,有时候这种破也不是恶意的,我们曾经都是脚本小子,不是吗?问题是,这种破会,确实会伤害我们的系统,我们必须要阻止破坏。

    解决专业问题最好的办法不是自己上,而是让专业的团队去解决。有困难,找度娘,没想到社会化评论系统已经发展到如此了不起的境地了,试用了一下多说,确实不错。看到同行有超酷超炫的系统,着实让人开心。

    故事总是结束的太突然,总结一下,为了打造一个安全的服务器,以下事项值得考虑,

    a. ISP的网络系统是否值得信赖

    b. 你的服务器操作系统是否值得信赖

    c. 你的应用服务器是否可靠

    d. 你的应用程序是否值得信赖 

    e. 你是否在一个关注安全的圈子里

    最后,提示一个安全级别翻转的问题。如果你的服务器超级安全,但是,却对另外一台主机做了安全例外,请注意,这台主机一旦被攻破,可能波及到你的安全主机。这种情况下,不安全的主机,拖累了安全主机,让你的努力付之东流。对安全而言,一旦出现问题,通常都是溃于蚁穴的故事。无论你设置多么严格的密码,一旦你把你的密码告诉不靠谱的人,你的系统安全可能就是一个问题。无论门多么强大、结实、安全,都挡不住有钥匙的人,对不对? 

    无论如何,祝愿所有互联网的公民,不管你是服务器、设备、网站、用户、应用、甚至是一种无形的信仰,玩的开心点,有你们真好,不是吗?

U-EEE

一次DDOS攻击引起的安全漫谈