安全不仅是一个技术问题;它更是良好的习惯和对风险的理解。本节讨论一些更常见的风险,还有一些增加安全或者减小被攻击后影响的良好习惯。
Web 应用的普遍性导致其剧增。往往是几个并行运行:网页邮件,维基,群件系统,论坛,图片库,博客等等。许多应用依赖于“LAMP”(Linux, Apache, MySQL, PHP)。不幸的是,很多这种应用在编写的时候没有考虑安全问题。而源于外部世界的数据通常很少或者不去验证。使用特别数值可以将一个调用暗中转换成一个指令,以便于执行另外的替代程序。许多明显的问题随着时间的推移都被修正了,然而新的安全问题又时不时的跳出来。
因此,定期更新 web 应用是必须的,以减少任何攻击者(无论是专业攻击者或者脚本小子)可以利用的已知漏洞。实际的风险取决于所处的情况,从数据销毁到执行任意代码,也包括网络涂改。
网页应用程序的弱点常常是攻击尝试的起点。下面简单的回顾一下可能的后果。
侵入的结果会留下各自痕迹,取决于攻击者的动机。脚本小子(Script-kiddies)只会用他们在网上找到的方法;常常是涂改页面或者删除数据。狡猾一点的,会在网页中添加无形内容,来提高他们自己网站在搜索引擎中的引用次数。
一个更高级别的攻击者远胜于此。灾难性的场景可能以下面的方式呈现:攻击者获得以 www-data
用户身份执行命令的能力,但是执行命令需要多次操作。为了简单化,他们还会安装专门为远程执行命令而设计的网页应用程序,例如浏览文件系统,检查权限许可,上传或者下载文件,执行命令,甚至是提供网络控制台。通常,漏洞会允许运行 wget
命令将恶意软件下载到 /tmp/
中并执行。恶意软件通常从一个已经攻陷的国外网站下载,这样可以掩盖其踪迹并使嗅探攻击的真正出处更加困难。
此时,攻击者就有足够的行动自由了,他们常常会安装一个 IRC 机器人-bot(一个连接到 IRC 服务器的机器人并且可以通过频道来控制)。该机器人常常用来共享非法文件(未授权的电影或软件拷贝,等等)。一个坚决的攻击者可能会走到更远。www-data
账户不允许对机器的完全存取,攻击者会尝试获取管理员权限。现在,这个还不可能,但是如果网页应用程序不是最新的,内核和其他程序有可能也是过期的;这有时候源于管理员的决断,尽管知道容易遭受攻击,由于没有本地用户仍然忽略更新。然后,攻击者就会利用第二个弱点来取得超级用户权限。
现在攻击者拥有了机器;他们将试图尽可能长时间的保持其权限。这就要安装 后门-rootkit,一个取代系统组件的程序,以便攻击者可以在随后的时间重新获取管理员特权;后门软件也会试图隐藏自己和入侵痕迹。被破坏的 ps
程序会漏掉一些进程,netstat
也不会列出一些活动链接,等等。拥有超级用户权限,攻击者可以观察整个系统,但是不一定能找到重要数据;因此他们会尝试侵入协作网络中其他的机器。分析管理员的账户和历史记录,攻击者会发现哪些机器被经常访问。使用被修改的程序替换 sudo
或者 ssh
,攻击者能截取到部分管理员密码,并将其用在探测到的服务器上...入侵就会传播开来。
这种噩梦可以通过几种方法阻止。接下来的章节会讲述几种方法。
一旦潜在的安全问题被暴露,就必须在配置服务的每个步骤都要考虑,特别是在选择安装软件的时候。许多网站,例如 SecurityFocus.com
,会列出最近发现的漏洞,在一些特殊软件部署之前会给出安全记录。当然,要平衡此信息和所述软件的普及程度:越是使用广泛的软件,越是诱人,因而审查也更严密。
在自由软件的世界里,有大量的选择。选择某一个软件而非另一个,应该基于具体的准则来做出决定。更多的特性暗含着代码背后隐藏着更多的漏洞风险;为某个任务选择最高级的程序实际上可能适得其反,较好的方法通常是选择满足需求最简单的程序。
大部分 Linux 发行版会默认安装许多 Unix 服务和工具。很多情况下,这些服务和工具在管理员设置机器的时候是不需要的。作为安全方面的一般原则,不需要的软件最好不要安装。实际上,如果未使用服务中的漏洞可以用于获取整个机器的管理员特权,那么保护 FTP 服务是没有意义的。
出于同样的原因,防火墙通常配置为只允许访问公共服务。
目前的计算机足以强大,可以在同一台物理机器上托管多个服务。从经济的观点来看,这种特性很有趣:只需管理一台计算机,更低的能源消耗,等等。从安全的观点来看,这么做会有问题。一个被攻陷的服务可能用来访问整个机器,反过来危机同一台电脑上的其他服务。这种风险可以通过隔离服务来减少。可以通过虚拟化(每个服务托管在专用虚拟机)或者 SELinux(每个守护进程有一套专门的许可集)来实现。
谈到安全,要马上考虑保护免受隐藏在互联网丛林里匿名破坏者的攻击;但是,经常被遗忘的事实是-风险也来自内部:离职雇员会下载重要敏感的项目文件并买给竞争对手;大意的销售可能在开前景规划会议时,离开电脑而没有锁定桌面;笨拙的用户可能误删目录;等等。
对付这些风险可以使用技术手段:授予用户的权限不多于所需求的权限,并且必须进行常规备份。但是在许多情况下,适当的保护也包含培训用户进而规避风险。
如果计算机本身没有受到保护,保护服务和网络是没有意义的。重要数据应该存储在 RAID 阵列可热交换硬盘上,即使硬盘失效,但是数据必须可用。如果送披萨的小伙子能进入大楼,溜进服务器房间并带着几块硬盘逃跑,那么安全的重要方面没有满足。谁可以进入服务器房间?出入被监控了吗?当评估物理安全时,需要考虑这些问题。
物理安全也包括考虑事故风险,例如火灾。这种特殊风险说明有理由将备份介质保存在单独的建筑物,或者至少保存在防火保险箱内。
管理员或多或少被用户和网络用户所信任。因此,应避免任何可能被恶人利用的漏洞。
攻击者控制你的机器,然后用它作为基础(称为“中继系统”)执行其他恶意活动,会导致你法律上的麻烦。因为被攻击方最初会看到攻击源于你的系统,会把你当做攻击者(或者共犯)。在许多情况下,攻击者会使用你的服务器作为垃圾邮件的中继,这并不会有大的影响(除了将你列为黑名单,并限制发送合法邮件),但也不舒服。其他情况下,可能从你的机器产生更大的麻烦,譬如拒绝服务攻击。因为正常服务不可用,数据被损坏,这有时会导致收入损失;有时这也包含着实实在在的成本,因为被攻击方可能启动法律程序。如果未授权的拷贝通过你的服务器共享,版权所有者可以起诉你,以及其他遵从服务级别协议的公司-如果从你的机器遭受攻击,他们必须受到惩罚。
如果此类情况发生了,自称清白通常是不够的;至少,你要出示在你系统上进行可疑活动源于指定 IP 的证据。这几乎是不可能的,如果你忽略了本章的建议,让攻击者获得特权账户(特别是超级用户)并使用它来掩盖痕迹。