不,这不足以保证您的安全。
它可能会让您在一段时间内保持安全,但安全性复杂且节奏快,因此您的方法对于长期安全性确实不够好。如果每个人都做出与您在问题中所做的相同的假设,那么互联网现在将成为一个大型僵尸网络。
所以不,我们不要将这个问题限制在包裹上。让我们从整体上看一下服务器安全性,这样任何阅读本文的人都会了解到底有多少移动部件。
APT(例如 Ubuntu 的存储库)仅涵盖您的软件堆栈的一部分。如果您使用(例如)Wordpress 或其他流行的 PHP 库并且不受 repo 控制,那么您也需要更新它。更大的框架有自动执行此操作的机制,但要确保您正在备份并监控服务状态,因为它们并不总是顺利进行。
你自己写的,所以你认为你对脚本小子是安全的?有自动 SQL 注入和 XSS 漏洞利用机器人到处乱跑,戳每个查询字符串和类似的形式。
这实际上是一个好的框架有助于防止不了解这些攻击细微差别的程序员的地方之一。让一个称职的程序员审核代码也有助于减轻这里的恐惧。
PHP(或 Python,或者你正在运行的任何东西)真的需要能够在任何地方编写吗?强化您的配置,您将减轻许多攻击。理想情况下,webapp 唯一能够写入的地方是数据库,以及永远不会执行脚本的地方(例如,只允许提供静态文件的 nginx 规则)。
PHP 默认值(至少人们如何使用它们)允许 PHP 在 webroot 的任何位置读取和写入 PHP。如果您的网站被利用,这将产生严重影响。
注意:如果您确实阻止了写访问,则 WordPress 之类的东西将无法自动更新自己。寻找类似的工具wp-cli
并让它们按计划运行。
而且您的更新计划非常有害。到底什么是“时常”?严重的远程安全漏洞的半衰期很短,但在 0 天和补丁可用性之间已经存在延迟,并且一些漏洞利用也从补丁中逆向工程(以捕捉慢戳)。
如果您每月只应用一次更新,那么您很可能会在野外运行可利用的软件。TL;DR:使用自动更新。
发行版的版本不会永远持续下去。如果您明智并选择了 LTS 版本的 Ubuntu,那么您距离初始版本还有 5 年时间。在那段时间内将推出另外两个 LTS 版本,这为您提供了选择。
如果您在设置服务器时处于“更新就是更好”的狂暴状态并使用 16.10,那么您有9 个月的时间。是的。然后你必须升级到 17.04、17.10 才能在 18.04 LTS 上放松。
如果您的 Ubuntu 版本失效,您可以整天进行 dist-upgrade,但您不会获得任何安全升级。
LAMP 堆栈本身并不是标准 Web 服务器的唯一攻击媒介。
- 你需要强化你的 SSH 配置:只使用 SSH 密钥、禁用密码、绕过端口、禁用 root 登录、监控暴力尝试并使用
fail2ban
.
ufw
使用(等)防火墙关闭任何其他服务。
- 永远不要暴露数据库(除非你需要,然后在防火墙中锁定传入的 IP)。
- 不要随意安装 PHP 脚本,否则你会忘记它们,它们会被黑客入侵。
您的描述中没有监控。你瞎了 如果那里确实发生了某些事情,并开始发送垃圾邮件、感染您的网页等,您怎么知道发生了不好的事情?过程监控。与 git 的计划文件比较(确保它是来自服务器的只读访问)。
考虑 ISP 的安全性(物理和远程)。一角钱的“主机”(又名 CPanel 海盗)——每月 2 美元的无限制托管计划——是否在安全方面投入了与专用服务器设施相同的资源?四处询问并调查违规历史。
注意:公开的违规行为不一定是坏事。小型主机往往没有任何记录,当事情被破坏时,没有许多知名主机和服务执行的公共“事后分析”。
然后就是你了。您编写所有这些内容的计算机的安全性几乎与服务器一样重要。如果您使用相同的密码,您将承担责任。使用物理 FIDO-UF2 密钥保护您的 SSH 密钥。
我已经从事 devops 大约 15 年了,这是你可以在工作中学到的东西,但实际上只需要一次违规——一个少年,一个机器人——就破坏了整个服务器并导致数周的工作对工作产品进行消毒。
只需了解正在运行的内容和暴露的内容,就可以帮助您对正在做的事情做出更好的决定。我只是希望这可以帮助某人开始审核他们的服务器的过程。
但是,如果你——普通的 web 应用程序程序员——不愿意深入研究这类东西,你甚至应该运行服务器吗?这是一个严肃的问题。我不会告诉你绝对不应该,但是当你忽略这一切,你的服务器被黑客入侵,你的客户损失了金钱,你暴露了个人客户信息(例如账单数据)并且你被起诉时,你会发生什么? 您是否为该级别的损失和责任风险投保?
但是,是的,这就是为什么托管服务比哑服务器成本高得多的原因。
关于备份的优点...
完整的系统备份可能是您可以保留的最糟糕的东西——为了安全——因为如果你被黑客入侵,你会很想使用它。他们唯一的地方是从硬件故障中恢复。
在 hack 中使用它们的问题是你重置到更早的时间点。然而,你的堆栈中的更多缺陷现在很明显,甚至更多的漏洞利用存在于你的漏洞中。如果您将该服务器重新上线,您可能会立即被黑客入侵。您可以对传入流量进行防火墙并进行软件包升级,这可能会对您有所帮助,但此时您仍然不知道是什么得到了您,或者什么时候得到了您。您的所有假设都基于您看到的症状(页面上的广告注入,垃圾邮件在您的 mailq 中被退回)。黑客攻击可能是在那之前的几个月。
它们显然总比没有好,并且在磁盘死机的情况下很好,但同样,它们对于安全性来说是垃圾。
好的备份是秘诀
你想要一些东西——只是一个简单的语言文档或像 Ansible/Puppet/Chef 例程这样的技术性东西——可以指导某人将整个站点恢复到一个全新的服务器。需要考虑的事项:
- 要安装的软件包列表
- 要进行的配置更改列表
- 如何从版本控制中恢复网站源。
- 如何恢复数据库转储*,以及您可能不受版本控制的任何其他静态文件。
您可以在这里越详细越好,因为这也可以作为个人备份。我的客户知道,如果我死了,他们有一个经过测试的计划,可以将他们的网站恢复到他们直接控制的硬件上。
一个好的脚本恢复应该不超过 5 分钟。因此,即使是脚本式还原和还原磁盘映像之间的时间差也是最小的。
*注意:也必须检查数据库转储。确保您的系统中没有任何新的管理员用户或随机脚本块。这与检查源文件一样重要,否则您将再次被黑客入侵。