本文概述
- 防火墙变得神秘
- 扫描特定于Web的漏洞
- 教育你的开发人员
- 关闭不必要的功能
- 使用单独的环境进行开发, 测试和生产
- 保持服务器软件更新
- 限制访问和特权
- 密切注意服务器日志
这些威胁中有许多是可以预见的, 而且很容易避免, 而其他威胁是未知的, 可以使你措手不及。为了最大程度地降低后一种情况的可能性, 我们提供了一些基本提示, 以确保Web应用程序服务器尽可能的安全。
在从技巧列表开始之前, 你需要了解Web应用程序服务器不是孤岛。服务器是Web应用程序场中的核心组件, 它使Web应用程序的托管和操作成为可能。因此, 为了确保安全, 你必须考虑围绕它的所有组件并保护整个Web应用程序环境。
托管和运行Web应用程序的基本环境包括操作系统(Linux, Windows), Web服务器软件(Apache, Nginx)和数据库服务器。如果将这些组件中的任何一个破坏了, 攻击者就可以访问并执行他们想要的所有恶意操作。
保护上述环境的第一个基本提示是, 阅读每个组件的安全准则和最佳实践列表。话虽这么说, 让我们回顾一下适用于几乎每个Web应用程序环境的一些常识性安全准则。
防火墙变得神秘 你可能会想快速检查此项目, 以为:” 幸运的是, 我已经有了保护我的网络的防火墙。” 但是你最好抱马。
你的防火墙可能会照顾你的网络的边界, 保持坏人和好人, 但是可以肯定的是留下了门大开攻击者在你的Web应用程序服务器打破。
怎么样?
简单:你的网络防火墙必须至少允许端口80和443(即HTTP和HTTPS)上的传入流量, 并且不知道通过这些端口的是谁或什么。
文章图片
保护应用程序所需的是Web应用程序防火墙(WAF), 该防火墙专门分析Web流量并阻止任何利用漏洞的尝试, 例如跨站点脚本或代码注入。 WAF的运行方式类似于典型的防病毒和防恶意软件:WAF查找数据流中的已知模式, 并在检测到恶意请求时将其阻止。
为了有效, WAF需要不断用新的威胁模式更新其数据库, 以便能够阻止它们。基于模式的攻击防范的问题在于, 你的Web应用程序可能是WAF尚未意识到的新威胁的首要目标之一。
由于这些原因, 你的Web应用程序除网络防火墙外还需要其他保护层。
扫描特定于Web的漏洞 同样, 不要仅仅因为你的网络安全扫描仪就这么认为你的Web应用程序服务器没有漏洞。
网络扫描程序无法检测到特定于应用程序的漏洞。为了检测并消除这些漏洞, 你必须对应用程序进行一系列测试和审核, 例如渗透测试, 黑盒扫描和源代码审核。但是, 这些方法都不是防弹的。理想情况下, 你应执行尽可能多的操作以消除所有漏洞。
文章图片
例如, 安全扫描程序(如Netsparker)可确保没有可利用的代码进入生产环境。但是可能存在只能通过手动代码审核才能检测到的逻辑漏洞。人工审核除了花费很多之外, 还是一种人工操作, 因此容易出错。在不浪费大量资金的情况下进行这种审核的一个好主意就是将其嵌入开发过程中, 主要是通过培训开发人员。
教育你的开发人员 开发人员倾向于认为他们的应用程序可以在理想的环境中运行, 那里的资源是无限的, 用户不会犯错误, 而且没有人有残酷的意图。不幸的是, 在某些时候, 他们需要面对现实问题, 尤其是有关信息安全的问题。
文章图片
在开发Web应用程序时, 编码人员必须了解并实施安全机制, 以确保它没有漏洞。这些安全机制应该??是开发团队必须遵守的最佳实践指南的一部分。
软件质量审核用于确保遵守最佳实践。最佳实践和审核是检测逻辑漏洞的唯一方法, 例如(例如)在URL内传递未加密和可见的参数, 攻击者可以轻松地更改这些参数以执行其所需的操作。
关闭不必要的功能 【保护Web应用程序服务器的8个基本技巧】假设网络应用程序尽可能没有错误并且网络服务器场是安全的, 那么让我们看看可以在服务器本身上做些什么来保护它免受攻击。
一个基本的常识性提示是减少潜在易受攻击的入口点的数量。如果攻击者可以利用Web服务器的任何组件, 则整个Web服务器都将处于危险之中。
文章图片
列出服务器上所有打开的端口以及正在运行的服务或守护程序的列表, 然后关闭, 禁用或关闭不必要的端口。该服务器除了用于运行Web应用程序外, 不得用于其他任何目的, 因此请考虑将所有其他功能移至网络中的其他服务器。
使用单独的环境进行开发, 测试和生产 开发人员和测试人员需要在其工作的环境上拥有特权, 而这些特权不应在实时应用程序服务器上拥有。即使你盲目地信任它们, 它们的密码也很容易泄漏并落入不需要的手。
在开发和测试环境中, 除了密码和特权外, 通常还有一些后门程序, 日志文件, 源代码或其他调试信息可能会泄露敏感数据, 例如数据库用户名和密码。 Web应用程序部署过程应由管理员完成, 该管理员必须确保在将应用程序安装到实时服务器上后不会暴露任何敏感信息。
文章图片
需要将相同的隔离概念应用于应用程序的数据。测试人员和开发人员始终喜欢使用实际数据, 但授予他们对生产数据库甚至其副本的访问权限不是一个好主意。除了明显的隐私问题之外, 数据库还可以包含显示内部服务器设置的配置参数, 例如端点地址或路径名。
保持服务器软件更新 看起来似乎很明显, 这是最被忽略的任务之一。 SUCURI发现59%的CMS应用程序已过时, 这存在风险。
文章图片
每天都会出现新的威胁, 防止威胁到服务器的唯一方法是始终安装最新的安全补丁。
我们之前提到过, 网络防火墙和网络安全扫描程序不足以防止对Web应用程序的攻击。但是它们对于保护服务器免受常见的网络安全威胁(如DDoS攻击)是必不可少的。因此, 请确保你具有始终更新的此类应用程序, 并且它们正在有效地保护你的业务应用程序。
限制访问和特权 一种基本的安全措施是使远程访问通信(例如RDP和SSH)保持加密和隧道传输状态。最好保留允许远程访问的IP地址的列表, 以确保阻止从任何其他IP远程登录的任何尝试。
管理员偶尔会赋予服务帐户所有可能的特权, 因为他们知道这样做” 一切都会起作用” 。但这不是一个好习惯, 因为攻击者可以利用服务中的漏洞来穿透服务器。如果这些服务以管理员特权运行, 则它们可以占用整个服务器。
文章图片
安全性和实用性之间的良好平衡要求每个帐户(登录帐户和服务帐户)都具有执行其工作所需的特权, 而没有其他特权。
例如, 你可以为管理员定义不同的帐户以执行不同的任务:一个帐户进行备份, 另一个帐户清理日志文件, 其他帐户更改服务的配置, 等等。这同样适用于数据库帐户:应用程序通常仅需要读取和写入数据的权限, 而无需创建或删除表。因此, 它应使用具有受限权限的帐户运行, 以执行其需要执行的任务。
密切注意服务器日志 日志文件存在是有原因的。
管理员应定期对其进行监视, 以在其造成任何损害之前检测出任何可疑行为。通过分析日志文件, 你可以发现许多信息, 以帮助你更好地保护应用程序。如果发生攻击, 日志文件可以向你显示攻击的时间和方式, 从而有助于更好地控制损失。
文章图片
你还必须具有一个自动过程, 以删除旧的日志文件或删节过时的信息, 以防止它们消耗服务器中的所有可用存储空间。
奖励提示:随时了解最新情况
互联网上有很多免费有用的信息, 你可以利用这些信息来受益于Web应用程序。不要错过信誉良好的安全博客上的任何新帖子(例如该博客), 并随时了解安全和网络行业的最新动态。
教程, 课程, 视频和书籍也是有用知识的来源。练习一周花费一两个小时, 以便随时了解行业新闻-知道你在做正确的事情来保护应用程序安全, 这会让你放心。
推荐阅读
- 保护Smartwatch的四个基本技巧
- 为什么以及如何保护API端点()
- 使用X-Content-Type-Options在Apache和Nginx中保护MIME类型
- 使用Set-Cookies安全标志保护Tomcat
- 如何自动扫描网站安全漏洞()
- 8种最佳机密管理软件,可提高应用程序安全性
- 我被迫使用Apple In-App Purchase API
- 如何从Android Google Play中删除测试IAP购买
- Google Apps脚本传递网址参数Google信息中心