8个保护Web应用程序服务器的重要提示

在大多数情况下,Web应用服务器需要公开访问,这意味着它们容易遭受各种威胁。

其中许多威胁是可预测且容易避免的,而其他一些威胁是未知的,可能会让你措手不及。为了尽量减少后一种情况的可能性,我们提供了一系列保持Web应用服务器尽可能安全的基本提示。

在开始提示列表之前,您需要明白一个Web应用服务器不是孤立的。服务器是Web应用程序集群中的中心组件,使Web应用程序的托管和运行成为可能。因此,要确保安全,您必须考虑周围的所有组件并保护整个Web应用程序环境。

用于托管和运行Web应用程序的基本环境包括操作系统(Linux,Windows),Web服务器软件(Apache,Nginx),数据库服务器。如果其中任何一个组件被入侵,攻击者可能会获得访问权限并执行任何他们想要的操作。

保护上述环境的第一个基本提示是阅读每个组件的安全指南和最佳实践清单。话虽如此,让我们回顾一些几乎适用于每个Web应用程序环境的常识安全指南。

解析防火墙的神秘

您可能会想要快速检查此项,然后想:“太好了,我已经有了一个保护我的网络的防火墙。”但您最好慢下来。

您的网络防火墙可能正在处理您网络的边界,将坏人拒之门外,让好人进入,但肯定会为攻击者打开攻破您的Web应用程序服务器的大门。

怎么做呢?

很简单:您的网络防火墙至少必须允许端口80和443上的传入流量(即HTTP和HTTPS),并且不知道谁或什么正在通过这些端口传递。

您需要保护应用程序的是一种特定分析Web流量并阻止任何试图利用跨站脚本或代码注入等漏洞的尝试的Web应用防火墙(WAF)。WAF的工作原理类似于典型的防病毒和防恶意软件:它在数据流中寻找已知的模式,并在检测到恶意请求时阻止它。

为了有效,WAF需要不断更新其数据库,以便能够阻止这些威胁。基于模式的攻击预防的问题在于,您的Web应用程序可能是WAF尚未意识到的新威胁的首要目标之一。

出于这些原因,您的Web应用程序需要除了网络防火墙之外的其他保护层。

扫描Web特定漏洞

同样,不要认为您的Web应用程序服务器没有漏洞,仅仅因为您的network security scanner如此说。

网络扫描工具无法检测应用程序特定的漏洞。要检测和消除这些漏洞,您必须对应用程序进行一系列的测试和审核,例如渗透测试、黑盒扫描和源代码审核。然而,这些方法都不是万无一失的。理想情况下,您应该尽可能进行多种测试,消除所有漏洞。

例如,安全扫描工具,如Invicti,确保没有可利用的代码进入生产环境。但可能存在只能通过手动代码审核才能检测到的逻辑漏洞。手动审核不仅成本高昂,而且是一种容易出错的方法。为了在不浪费大量资金的情况下进行这种审核,一个好主意是将其嵌入到开发过程中,主要是通过教育开发人员。

教育开发人员

开发人员往往认为他们的应用程序运行在理想的世界中,资源无限,用户不会犯错,也没有恶意的人。不幸的是,在某个时候,他们需要面对现实世界的问题,尤其是与信息安全相关的问题。

在开发Web应用程序时,开发人员必须了解并实施安全机制,以确保其免受漏洞的影响。这些安全机制应该是开发团队必须遵守的最佳实践指南的一部分。

使用Software quality auditing来确保遵守最佳实践。最佳实践和审计是检测逻辑漏洞的唯一方法,例如(例如)在URL中传递非加密和可见的参数,攻击者可以轻松更改以实现他或她想要的目的。

关闭不必要的功能

假设Web应用程序尽可能无错误,Web服务器已经安全,让我们看看可以在服务器本身上采取哪些措施来保护它免受攻击。

一个基本的常识提示是减少潜在的易受攻击的入口点的数量。如果攻击者可以利用Web服务器的任何组件,整个Web服务器可能受到威胁。

列出服务器上所有开放的端口和正在运行的服务或守护程序,并关闭、禁用或关闭不必要的端口。服务器不应该用于除运行Web应用程序外的任何目的,因此考虑将所有附加功能移动到网络中的其他服务器上。

为开发、测试和生产使用不同的环境

开发人员和测试人员在他们工作的环境上需要特权,而这些特权在实际应用服务器上是不应该有的。即使您完全信任他们,他们的密码可能很容易泄漏并落入不希望的人手中。

除了密码和特权之外,在开发和测试环境中通常存在后门、日志文件、源代码或其他调试信息,这些信息可能泄露敏感数据,例如数据库用户名和密码。Web应用部署过程应由管理员完成,管理员必须确保在将应用程序安装在实际服务器上后,不会暴露任何敏感信息。

相同的隔离概念需要应用于应用程序的数据。测试人员和开发人员总是更喜欢使用真实数据进行工作,但是授予他们访问生产数据库甚至其副本并不是一个好主意。除了明显的隐私问题,数据库可能包含揭示内部服务器设置的配置参数,例如终端地址或路径名,只是其中的一部分。

保持服务器软件更新

尽管这看起来很明显,但这是最容易被忽视的任务之一。据SUCURI发现,59%的CMS应用程序已过时,这是存在风险的。

每天都会出现新的威胁,防止它们危害服务器的唯一方法是始终安装最新的安全补丁。

我们之前提到过网络防火墙和网络安全扫描器不足以防止对Web应用程序的攻击。但是它们对于保护您的服务器免受常见的网络安全威胁(如DDoS attacks)是必要的。因此,请确保始终更新这类应用程序,并确保它们有效地保护您的业务应用程序。

限制访问和特权

一项基本的安全措施是保持远程访问流量(例如RDP和SSH)加密和隧道化。另外,将允许远程访问的IP地址列表减少到最少,确保任何尝试从其他IP远程登录都会被阻止。

管理员有时会给服务账户赋予所有可能的权限,因为他们知道这样做会使“一切正常”。但这不是一个好的做法,因为服务可以利用这些权限侵入服务器。如果这些服务以管理员权限运行,它们可以控制整个服务器。

安全和实用之间的一个良好平衡要求每个账户(包括登陆账户和服务账户)都具备完成其工作所需的权限,而且不多不少。

例如,您可以为管理员定义不同的账户来完成不同的任务:一个用于备份,另一个用于清理日志文件,其他用于更改服务配置等等。数据库账户也是一样:应用程序通常只需要读写数据的权限,而不需要创建或删除表的权限。因此,它应该以具备执行所需任务的权限限制的账户运行。

密切关注服务器日志

日志文件是有原因的。

管理员应该定期监控它们,以便在造成任何损害之前发现任何可疑行为。通过检查,您可以发现很多信息,以帮助您更好地保护应用程序。如果发生攻击,日志文件可以显示攻击何时开始以及如何开始,从而有助于更好地控制损害。

您还必须有一个自动化的程序来删除旧的日志文件或修剪过时的信息,以防止它们占用服务器中的所有可用存储空间。

额外提示:保持自己的信息

互联网上有很多免费和有用的信息,您可以为您的网络应用程序的利益而使用。不要错过任何有声誉的安全博客(比如这个)上的新文章,并时刻关注安全和网络行业的最新动态。

链接、视频和书籍也是有用知识的来源。每周花一两个小时的时间来了解行业新闻,这将给您带来放心,让您知道您正在采取正确的措施来保护您的应用程序。

类似文章