标签: shared-hosting

限制 Linux 用户访问他拥有的文件

想象一下共享虚拟主机公司的服务器设置,其中多个(约 100 个)客户可以访问单个服务器。

许多网络“软件”建议使用chmod 文件 0777。我很担心我们的客户不明智地遵循这些教程,向我们的其他客户开放他们的文件。(我cmod 0777自己当然不会无谓地使用!)有没有一种方法可以确保客户只能访问他们自己的文件并防止他们访问其他用户的世界可读文件?

我查看了AppArmor,但它与一个进程紧密耦合,该进程在该环境中似乎失败了。

security linux file-permissions shared-hosting

24
推荐指数
3
解决办法
9825
查看次数

调整 Apache2 prefork MaxClients ServerLimit

我有一台 128 GB Ram 的机器,它使用 Apache2 作为 Web 服务器(在这台机器上没有数据库服务器,数据库机器是一台 64 GB Ram 机器,可以处理 2000 个最大连接)。我使用监控工具看到目前大约有 44 个忙碌的工作人员和 12 个空闲的工作人员,我的 prefork 模块的最佳理论值是多少?

我有时会在高负载时间加载网站时出现空白页面,并在我的 apache 错误日志中出现此错误:

【注意】child pid 13595 exit signal Segmentation fault (11)

如何解决这个问题呢?

我的 Apache2 Prefork 模块配置:

StartServers          3
MinSpareServers       3
MaxSpareServers       5
ServerLimit           3200
MaxClients            3100
MaxRequestsPerChild   0
Run Code Online (Sandbox Code Playgroud)

在 www 机器上免费 -h

总计:128 G 空闲空间:97GB(运行 apache2)共享 0b 缓冲区 1.9G 缓存 23G

Apache2 和其他程序使用的 Ram:

Private  +   Shared  =  RAM used    Program

 96.0 KiB +  61.0 KiB = 157.0 …
Run Code Online (Sandbox Code Playgroud)

hosting mpm-prefork shared-hosting segmentation-fault apache-2.2

23
推荐指数
1
解决办法
6万
查看次数

将 Apache 虚拟主机与系统的其余部分隔离

我正在设置一个 Web 服务器,它将托管许多不同的网站作为 Apache VirtualHosts,每个网站都可以运行脚本(主要是 PHP,可能还有其他)。

我的问题是如何将这些 VirtualHosts 与彼此以及系统的其余部分隔离开来?我不希望网站 X 读取网站 Y 的配置或任何服务器的“私有”文件。

目前,我已经按照此处所述(http://x10hosting.com/forums/vps-tutorials/148894-debian-apache-2-2-fastcgi-php-5-suexec)设置了带有 FastCGI、PHP 和 SUExec 的 VirtualHosts -easy-way.html ),但 SUExec 仅阻止用户编辑/执行除他们自己之外的文件 - 用户仍然可以读取敏感信息,例如配置文件。

我曾考虑删除服务器上所有文件的 UNIX 全局读取权限,因为这将解决上述问题,但我不确定是否可以安全地执行此操作而不会中断服务器功能。

我也研究过使用 chroot,但似乎这只能在每个服务器的基础上完成,而不能在每个虚拟主机的基础上完成。

我正在寻找任何将我的 VirtualHosts 与系统其余部分隔离的建议。

PS 我正在运行 Ubuntu 12.04 服务器

我的回答:我几乎按照我当前的配置结束,但是为所有虚拟主机做一个 chroot jail,例如在 chroot jail/var/www,然后将所有用户的数据放在子文件夹中,每个子文件夹都具有 group/others r/w/x 权限禁用。此选项是可取的,特别是因为无需对源代码进行任何修改即可实现。

我选择了@Chris 的答案,因为它写得很透彻,而且还考虑了 FTP 和 SELinux

security ubuntu php shared-hosting apache-2.2

11
推荐指数
3
解决办法
2万
查看次数

多站点托管 - 错过重要漏洞以保护站点彼此之间的安全?

编辑 #2 2015 年 7 月 23 日:寻找一个新的答案,以识别以下设置中遗漏的重要安全项目,或者可以让我们有理由相信一切都已涵盖。

编辑 #3 2015 年 7 月 29 日:我特别在寻找可能的错误配置,例如无意中允许可能被利用来规避安全限制的东西,或者更糟的是却留下了一些大的漏洞。

这是多站点/共享主机设置,我们希望使用共享 Apache 实例(即在一个用户帐户下运行),但 PHP/CGI 以每个网站的用户身份运行,以确保没有站点可以访问另一个站点的文件,我们希望确保没有遗漏任何内容(例如,如果我们不知道符号链接攻击预防)。

这是我到目前为止所拥有的:

  • 确保 PHP 脚本作为网站的 Linux 用户帐户和组运行,并且被监禁(例如使用 CageFS)或至少使用 Linux 文件系统权限进行适当限制。
  • 使用 suexec 确保 CGI 脚本不能以 Apache 用户身份运行。
  • 如果需要服务器端包含支持(例如在 shtml 文件中),请使用Options IncludesNOEXEC以防止 CGI 在您不希望它运行时能够运行(尽管如果使用 suexec,这应该不是什么大问题)。
  • 具有符号链接攻击保护,以便黑客无法欺骗 Apache 以纯文本形式提供另一个网站的文件并披露可利用的信息,例如数据库密码。
  • 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 …

php virtualhost shared-hosting apache-2.2 apache-2.4

9
推荐指数
1
解决办法
1758
查看次数

有哪些方法可以防止用户 cron 作业破坏服务器?

共享服务器上的用户 cron 作业同时运行并陷入争用中的情况相当频繁(正如我所知)。所以负载爆炸,Nagios 生气,Apache 停止响应,由于超时而无法通过 SSH 登录,等等。我不能单方面决定用户不能运行 crons,但我想解决这个问题,其中 pgrep crond|wc -l 返回 >50。

似乎应该可以通过限制在任何给定时间或类似时间运行的 crond 进程的数量来错开它们(例如发送 SIGSTOP 直到它们中的一些只清除较少的hacky),但我还没有找到任何好的线索。

硬件:4 个 CPU 及以上,低端是 Dell 1435s,内存约 8GB,RAID 10 WD EADS 主要是 Plesk 和 cPanel,但也有一些邪恶的 Sphera 系统。

你怎么处理这个问题,sf?

linux cron shared-hosting

7
推荐指数
1
解决办法
2147
查看次数

通过 SSH 访问共享主机上的 mercurial 存储库

我有一个具有 SSH 访问权限的共享主机帐户。我已经设置了一个虚拟 Python 安装,并在以下位置拥有系统文件夹的副本$HOME~/bin, ~/lib...

我已经通过 easy_install 安装了 mercurial,一切都很好:hg可执行文件位于,~/bin/hg$PATH知道这一点。我可以在服务器上创建并提交到存储库。

但是,当我尝试通过 SSH 将我的 repo 克隆到我的笔记本电脑时,我收到了一个hg找不到的错误。

$ hg clone ssh://myuser@server/hg/foobar
remote: jailshell: hg: command not found
abort: no suitable response from remote hg!
Run Code Online (Sandbox Code Playgroud)

如何告诉 mercurial(或 SSH 或 jailshell)在哪里查找可执行文件?

unix ssh mercurial shared-hosting

6
推荐指数
1
解决办法
1434
查看次数

在哪里可以找到托管服务提供商的 IP 地址列表?

我试图抵御针对我运行的 Web api 的垃圾邮件攻击,并希望获取垃圾邮件发送者从中发起攻击的公共网络托管提供商的 IP 地址列表。我指的是像 bluehost、rackspace、hostgator、godaddy、Amazon AWS 等网站。我的客户从不通过这些服务的 IP 地址访问我,而是通过 DSL、电缆和移动电话网络等访问我。

我查看了 Spamhaus,但据我所知,这是关于电子邮件的。

谢谢!

spam ip-address shared-hosting

6
推荐指数
1
解决办法
7846
查看次数

为什么这个网站DNS更改在美国某些地区失败

背景

我们将共享主机从本地妈妈和流行音乐切换到了 Crystaltech。该站点已全部复制并准备好进行 DNS 更改。妈妈和流行网站没有提供自己管理 DNS 的工具,所以我们不得不打电话,并在他们更改 DNS 时确定数据库的最后一步。

俄勒冈州康卡斯特和俄勒冈州地区光纤提供商的旧主机发生了什么。旧主机更新了他们的 DNS 服务器以指向我们的新 IP 地址。他们将其从 207.xxx 更改为 67.xxx

在俄勒冈州,我在两台计算机上的 Windows 7 机器上刷新了我的 DNS,在不到 30 秒的时间内,域名 site.com 就按预期工作了。Ping tracert 确认域名正在解析为新主机上的新 IP。

在佛罗里达州,客户报告域名正在解析到旧站点。(我们在旧主机服务器上放置了“我们正在移动”页面。)她的 mac ping 域名并解析到旧主机。我们重新启动,然后在终端中刷新 DNS。6 小时后,她的计算机仍然无法解析到新的 IP 地址。

佛罗里达州办公室的一台机器可以正确访问新站点。South FL 地区的其他机器无法访问该站点。致电 AT&T 技术人员确认他所在地区(同一网络)的 ping 和 tracert 解析正常。

到底有什么问题?

为什么我客户端的 mac 不使用名称服务器来获取 IP 地址?IP 地址是不同的,只有记录在案的名称服务器知道它。

是 AT&T 吗?是OSX吗?是旧主机DNS吗?是新的主机DNS吗?是不是因为旧主机在其 DNS 服务器上的 TTL 是 72 小时?

我已经更改了域名注册商的名称服务器,所以几天后这一切都会结束,但我仍然好奇到底发生了什么。

相关问题

如何更改网络主机并最大限度地减少电子邮件停机时间

如何以最少的停机时间为我的小网站更改网络主机

https://superuser.com/questions/96425/convince-my-bosss-mac-the-website-has-moved

domain-name-system migration shared-hosting

5
推荐指数
1
解决办法
703
查看次数

托管 IP 更改,预计停机时间是多少?

我正在将我的托管站点(同一主机)移动到静态 IP,我知道由于 DNS 缓存会有一些停机时间 - 有没有人有任何提示如何最大限度地减少这段时间并避免我的用户看到“找不到页面”?

提前致谢

domain-name-system ip static-ip shared-hosting

5
推荐指数
1
解决办法
3852
查看次数

共享主机的动态 DNS - 是否存在?

似乎某些家用路由器固件旨在与动态 DNS 服务(例如 noip 和 dyndns)一起使用,以从消费者 ISP 后面的服务器提供子域。同样,是否有任何动态 dns 服务可以与共享网络托管帐户一起使用?

例子

例如,Dreamhost 有一个 API 可以检索域名的 IP 地址。理论上,动态 DNS 服务会定期向 Dreamhost API 请求网站的 IP 地址。如果 Dreamhost 上的 IP 地址发生变化,DNS 主机会在发现差异后立即自动对该网站的区域文件进行必要的更改。

为什么?

过去,我为共享主机上的静态 IP 地址付费,我的域名在 GoDaddy 上注册,名称服务器设置为 EveryDNS。由于共享主机上的灾难性硬件故障,我的站点被移动并更改了 IP 地址。

在上面的示例设置中,DNS 记录会自动更新。相反,我不得不手动更新我的 A 记录。

问题总结

  1. 是否有允许这样做的动态 DNS 托管服务和共享网络主机?

  2. 上面例子中提出的解决方案是否可行?

  3. 奖励(冒着暴露我对这个主题的无知的风险):除了 DNS 之外,还有其他方法可以检测网站的 IP 地址吗?也许共享主机目录中的脚本可以检测 IP 更改并通知 DNS 主机?

提前致谢!

domain-name-system dynamic-ip dynamic-dns shared-hosting

5
推荐指数
1
解决办法
1693
查看次数