对于托管网站的 Ubuntu 服务器,防火墙是否足以作为安全措施?

信息安全 服务器 ubuntu
2021-08-15 22:04:54

我最近有一个带有 Ubuntu 的 VPS,我想开始创建一个非常基本的网站。但是,我不知道应该采取哪些步骤来保护此服务器。

我是 Ubuntu 的新手,是安全的新手,也是创建网站的新手(网站可能只是 HTML、CSS、Django/Python 和一些数据库)。

我最担心的是一些黑客可能会尝试将其用作僵尸,我不知道。或者机器人可能会尝试登录并潜入我将存储在该机器上的任何数据,而我不知道。或者谁知道还有什么。

我在 Ubuntu 网站上找到了防火墙信息页面,但这是否足够?

PS:如果不可能给出答案,我也很感谢为 Ubuntu 和安全完整初学者推荐的书/网站

4个回答

对于托管网站的 Ubuntu 服务器,防火墙是否足以作为安全措施?

鉴于您想要使用的技术,您想要创建一个动态数据库支持的网站,而无需任何经验。这种设置对于容易被利用的站点来说是典型的:数据库支持通常允许 SQL 注入,不安全的上传可能允许代码执行等。Linux 上的普通数据包过滤防火墙无法防御任何这些应用程序级别的攻击,即防火墙一个安全措施是不够的

以您目前的经验水平,我强烈建议不要创建任何人都可以访问(并且可能被利用)的动态应用程序。如果这仅适用于您自己或某些选定的用户,您可能会尝试使用 Web 服务器已建立的机制(即 htpasswd 或类似机制)对站点进行密码保护,以至少通过限制谁可以访问您的网站来限制攻击面。

我也很感谢为 Ubuntu 和安全完整的初学者推荐一本书/网站

要了解有关 Web 安全的更多信息,您可以从十大 Web 应用程序安全风险开始。一般来说,不幸的是,这是一个相当复杂的话题,所以不要期望很快就足够熟悉它。

防火墙永远不够,它是最低限度的。那么拥有某种 IDS 是可取的。例如,如果你的 SSH 端口被暴露,你应该阻止暴力攻击,即使你有一个强密码。互联网上的典型服务器每天都会被探测、攻击数百、数千次。我知道,从我在一天内收到的所有警报中,只需阅读日志即可。顺便说一句,安全很容易成为全职工作。如果你有日志但从未阅读过它们,你可能会错过一些东西。

如果您要从头开始构建网站,我认为最大的危险来自您自己的代码。你最大的敌人就是你,如果你不知道自己在做什么。例如,如果您的代码允许 SQL 注入,那么 ufw 将无法保护您。使用框架应该可以帮助您避免一些新手错误,但不能保证代码的质量。您需要学习最佳实践以及如何编写安全代码。该框架不会教你。

既然您提到了 Python,我建议您使用 pylint来测试您的代码质量。还有其他工具,例如 Bandit 或 Mypy,可以进行更具体的检查。

WAF(Web 应用程序防火墙)也可能是有益的,但需要一些调整才能有效,但限制性太强。

您可以做很多事情来减少攻击面。谷歌:“Linux 强化”。如果我不得不推荐一本书,它会暴露在 Hacking上以获得全面的概述。

一件重要的事情是让您的系统保持最新漏洞一直在被发现,有时甚至是 0days,因此您必须迅速做出反应才能下载升级或补丁(最近想到的一个例子是 Exim)。因此,我强烈建议订阅一些有关计算机安全的邮件列表、网站或博客,以了解最新消息。

Equifax 因几个月前已修补的漏洞而遭到黑客攻击。他们的拖延使他们付出了沉重的代价。不维护您的系统会大大增加风险。所需要的只是一个可利用的缺陷。

最后,我建议你自己测试一下。测试 SQL 注入 SQLmap 是一个很棒的工具。但是要获得最佳结果,您需要了解这些工具的工作原理,大多数情况下仅使用默认选项运行它们并不足以发现缺陷(除非该站点的代码非常糟糕)。有时,网站管理员会在他们的服务器上留下敏感文件,例如 SQL 备份,因为他们在恢复数据库后忘记删除文件。目录列表可能会显示不应该存在的文件的存在。

许多网站都有一个 phpmyadmin 目录,并且没有任何针对暴力攻击的保护。因此,黑客可以通过这种方式访问​​您的数据库。如果您真的想在服务器上拥有 phpmyadmin,至少不要使用可预测的目录名称,并限制访问,以免它暴露给整个词以实现零收益。

入口:您的网站将在 tcp 端口 80 和 443 上向世界开放。您可能还需要打开一些其他端口以允许您管理网站(例如 ssh 的 tcp 端口 22,尽管您可以将源限制为您的管理站)。这意味着您的网络服务器将对这些端口上的应用程序级攻击开放。因此,测试这些端口是否存在应用程序级漏洞。

出口:如果有人管理对您的网络服务器的应用程序级攻击,他们可以欺骗它进行出站连接以允许远程控制。所以最好限制来自您的网络服务器的出口连接。

您可能需要出口端口 53 (DNS)。您可能需要一些出口来获取补丁更新(理想情况下,您可以指定目标 IP)。根据您的应用程序,您可能需要一些出口访问权限才能访问数据或身份验证资源。

单个防火墙是不够的,因为您需要拥有多个防御层安全性来强化整个解决方案或系统,使其免受 OSI 层中不同类型的攻击。

我的建议是以下设置。

  • 服务器应位于应用了 NAT 的 IP 防火墙和 Web 应用程序防火墙之后。
  • 删除服务器上所有不必要的服务。
  • 更改默认密码。
  • 关闭不必要的端口。
  • 仅打开 443 并使用 TLS。
  • 定期修补您的网络服务器。
  • 每年至少测试一次您的网站和服务器。
  • DDOS/DOS 解决方案也会有所帮助。

NIST 的以下文档将帮助您应用额外的安全措施。 https://csrc.nist.gov/publications/detail/sp/800-44/version-2/final \ https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-44ver2.pdf https:// /nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-123.pdf