这是关于服务器安全的规范问题- 响应违规事件(黑客攻击)
另请参见:
规范版本
我怀疑我的一台或多台服务器受到了黑客、病毒或其他机制的危害:
原版
2011.01.02 - 我在周日晚上 9.30 上班的路上,因为我们的服务器不知何故遭到入侵,导致对我们的供应商的 DOS攻击。访问 Internet 的服务器已关闭,这意味着我们的 5-600 多个客户站点现已关闭。现在这可能是 FTP 黑客攻击,或者某处代码中的一些弱点。我不确定,直到我到达那里。
我怎样才能快速追踪到这个?如果我不尽快备份服务器,我们将面临大量诉讼。任何帮助表示赞赏。我们正在运行 Open SUSE 11.0。
2011.01.03 - 感谢大家的帮助。幸运的是,我不是唯一负责这个服务器的人,只是最近的人。我们设法解决了这个问题,尽管它可能不适用于不同情况下的许多其他问题。我会详细说明我们做了什么。
我们从网络上拔掉了服务器。它正在印度尼西亚的另一台服务器上执行(试图执行)拒绝服务攻击,而犯罪方也在那里。
我们首先试图确定这是来自服务器上的哪个位置,考虑到我们服务器上有 500 多个站点,我们预计会在一段时间内兼职。然而,在 SSH 访问仍然存在的情况下,我们运行了一个命令来查找在攻击开始时编辑或创建的所有文件。幸运的是,有问题的文件是在寒假期间创建的,这意味着当时在服务器上创建的其他文件并不多。
然后,我们能够识别ZenCart网站内上传的图像文件夹内的违规文件。
在短暂的休息之后,我们得出结论,由于文件位置的原因,它一定是通过文件上传工具上传的,但该工具没有得到足够的保护。经过一番谷歌搜索,我们发现 ZenCart 管理面板中存在一个安全漏洞,允许上传文件以获取唱片公司的图片。(它从未真正使用过的部分),发布此表单只是上传了任何文件,它没有检查文件的扩展名,甚至没有检查用户是否已登录。
这意味着可以上传任何文件,包括用于攻击的 PHP 文件。我们在受感染站点上使用 ZenCart 保护漏洞,并删除了有问题的文件。
工作完成了,我在凌晨 2 点回家
道德 - 始终为 ZenCart 或任何其他 CMS 系统应用安全补丁。当安全更新发布时,全世界都意识到了这个漏洞。- 总是做备份,备份你的备份。- 雇用或安排在这种时候会在那里的人。防止任何人依赖服务器故障上的恐慌帖子。
这是一个关于 Linux Web 服务器上文件权限的规范问题。
我有一个运行 Apache2 的 Linux Web 服务器,该服务器托管多个网站。每个网站在 /var/www/ 中都有自己的文件夹。
/var/www/contoso.com/
/var/www/contoso.net/
/var/www/fabrikam.com/
Run Code Online (Sandbox Code Playgroud)
基本目录 /var/www/ 归 root:root 所有。Apache 以 www-data:www-data 运行。Fabrikam 网站由两位开发人员 Alice 和 Bob 维护。两个 Contoso 网站均由一位开发人员 Eve 维护。所有网站都允许用户上传图片。如果网站遭到入侵,其影响应尽可能地有限。
我想知道设置权限的最佳方法,以便 Apache 可以提供内容,网站不受攻击,并且开发人员仍然可以进行更改。其中一个网站的结构如下:
/var/www/fabrikam.com
/cache
/modules
/styles
/uploads
/index.php
Run Code Online (Sandbox Code Playgroud)
应该如何对这些目录和文件设置权限?我在某处读到你永远不应该在网站上使用 777 权限,但我不明白这会导致什么问题。在繁忙时期,网站会自动缓存一些页面并将结果存储在缓存文件夹中。网站访问者提交的所有内容都保存在上传文件夹中。
最近(但它也是一个反复出现的问题)我们看到了 3 个关于黑客和安全的有趣主题:
最后一个没有直接关系,但它强调了搞乱 Web 服务器管理是多么容易。
由于有几件事情可以做,在不好的事情发生之前,我想就限制攻击的背面影响的良好实践以及如何在不幸的情况下做出反应方面提出您的建议。
这不仅仅是保护服务器和代码的问题,也是审计、日志记录和反措施的问题。
您是否有任何好的做法列表,或者您更喜欢依赖软件或专家来持续分析您的 Web 服务器(或根本不分析)?
如果是,你能分享你的清单和你的想法/意见吗?
更新
我收到了几个很好的和有趣的反馈。
我想要一个简单的列表,这样既可以方便 IT 安全管理员使用,也可以方便网络事实管理员。
即使每个人都给出了很好和正确的答案,但目前我更喜欢Robert的一个,因为它最简单、清晰和简洁,而sysadmin1138的一个最完整和精确。
但是没有人考虑用户的观点和感知,我认为这是首先必须考虑的。
用户在访问我被黑网站时会怎么想,如果您拥有有关他们的合理数据,则更多。这不仅仅是在何处存储数据的问题,而是如何安抚愤怒的用户的问题。
数据、媒体、权威和竞争对手呢?
编辑 #2 2015 年 7 月 23 日:寻找一个新的答案,以识别以下设置中遗漏的重要安全项目,或者可以让我们有理由相信一切都已涵盖。
编辑 #3 2015 年 7 月 29 日:我特别在寻找可能的错误配置,例如无意中允许可能被利用来规避安全限制的东西,或者更糟的是却留下了一些大的漏洞。
这是多站点/共享主机设置,我们希望使用共享 Apache 实例(即在一个用户帐户下运行),但 PHP/CGI 以每个网站的用户身份运行,以确保没有站点可以访问另一个站点的文件,我们希望确保没有遗漏任何内容(例如,如果我们不知道符号链接攻击预防)。
这是我到目前为止所拥有的:
Options IncludesNOEXEC以防止 CGI 在您不希望它运行时能够运行(尽管如果使用 suexec,这应该不是什么大问题)。AllowOverride/配置AllowOverrideList为仅允许黑客无法利用的任何指令。我认为如果上述项目做得正确,这就不那么重要了。 如果 MPM ITK 不是那么慢并且不是以 root 身份运行,我会选择它,但我们特别想使用共享的 Apache,但要确保它安全地完成。
我找到了http://httpd.apache.org/docs/2.4/misc/security_tips.html,但它在这个主题上并不全面。
如果有帮助的话,我们计划将 CloudLinux 与 CageFS 和 mod_lsapi 一起使用。
还有什么需要确保做或知道的吗?
编辑 2015 年 7 月 20 日:人们提交了一些很好的替代解决方案,这些解决方案通常很有价值,但请注意,此问题仅针对共享 Apache …
我已经编写了我的第一个 IPtables 规则文件,以尝试在除 SSH 和 Web 所需的端口之外的所有端口上保护我的服务器。
这是我想出的:
i=/sbin/iptables
# Flush all rules
$i -F
$i -X
# Setup default filter policy
$i -P INPUT DROP
$i -P OUTPUT DROP
$i -P FORWARD DROP
# Allow unlimited traffic on loopback
$i -A INPUT -i lo -j ACCEPT
$i -A OUTPUT -o lo -j ACCEPT
# Open up ports for nginx
$i -A INPUT -p tcp --dport 443 -j ACCEPT
$i -A INPUT -p tcp --dport 80 -j ACCEPT
$i -A …Run Code Online (Sandbox Code Playgroud) 我将在 Amazon EC2 实例中托管一个网站,该实例将是一个 Linux 实例。我的 Web 应用程序将使用 PHP、Apache 和 MySql 开发。由于我是 Linux 和 Amazon EC2 环境的新手,我应该考虑哪些关键安全领域来保护我的服务器?这可能是一个非常笼统的问题,因为安全本身是一个广阔的领域。但我需要从最重要的几点开始。这样我就可以一一追踪所有这些区域。
security ×5
linux ×3
apache-2.2 ×2
hacking ×2
amazon-ec2 ×1
apache-2.4 ×1
debian ×1
iptables ×1
logging ×1
permissions ×1
php ×1
ssh ×1
virtualhost ×1
web-server ×1