在通过一个体面的共享网络托管服务提供商(匹兹堡的那个)托管我的个人网站和应用程序近十年(yikes)之后,我决定是时候自己冒险尝试虚拟专用服务器了。
一直阻碍我的一件事是我知道我的共享网络主机有许多自定义构建的安全/指令检测系统设置来处理托管想要运行 PHP 应用程序的客户的常见问题。我不愿放弃这种安心,但我的管理技能的扩展正在通过配置进行因果风格的探索,并通过日志解析以查看“哦,这就是他们对我们的看法”。
该上下文设置,如果我要使用基于 linux 的 VPS 为 Apache 网络托管设置一个帐户
我将采取哪些步骤来保护机器?
我可以/应该安装哪些额外的监控包?
第 1 步:随着补丁的发布,更新您的软件。如果您使用的项目没有定期发布补丁,那么是时候寻找替代方案了。
第 2 步:异地日志记录。攻击者可能会使用 PHP 入侵机器,但如果您通过网络将日志导出到更强大的服务器,则很难掩盖踪迹。
第 3 步:保护 SSH 登录。在非标准端口上运行 SSH。需要强密码,甚至将登录限制为 SSH 密钥。安装 fail2ban 或其他一些蛮力检测工具,以防止不堪重负。如果您的发行版足够愚蠢以允许它,请禁用 root 访问。
第 4 步:更新您的软件。它值得重复。PHP 是出了名的糟糕,共享主机可以使它成为一个需要更新的巨大皮塔,从而根深蒂固的不良行为。您可能会在 PEAR 和更新中找到像 Debian 软件包这样的项目。订阅邮件列表并每天或每周安排时间进行地址修补。
第 5 步:备份。当您确实被黑客入侵时,从已知良好的系统中恢复是最安全的。增量备份可以帮助您解决此问题。
有大量的入侵检测包,比如 snort、aide 和 acidbase。还有像 nessus/openvas 这样的渗透测试工具。
我还喜欢在 VPS 上使用一个简单的正常运行时间工具来记录中断,以防需要退款。
这是我通常做的:
这些是其他人建议的项目的补充。存在许多更高级的工具,例如 snort - 我建议您查看它们。但是,此清单应该有助于您使用 VPS。
jldugger 提供了许多很棒的想法——我想补充一点,您可能想要研究 apache 的 mod_security 以及 suexec。Mod_security 带有一堆预制过滤器,用于检查对服务器的 http 调用,如果发现有问题则拒绝它们。Suexec 允许您以拥有它们的用户身份运行 php/perl/etc 脚本,而不是在 www-data 用户下运行它们。