总结- 我有一个 rooted Linux 机器,我想在上面运行 tomcat 作为服务器(没有 Apache Web 服务器),如何设置才能避免常见的安全陷阱?
我编写了一个 Grails 应用程序,希望在我租用的 VPS 上运行。该 VPS 内存非常小,我使用它的唯一目的是运行此应用程序,因此我不需要 apache web 服务器。
这是我第一次涉足服务器管理,我肯定会陷入一些众所周知的陷阱。
- 我应该使用 iptables 将请求从端口 80 重定向到 8080 吗?
- 我应该以 root 身份还是以其自己的用户身份运行 tomcat?
- 对于预期并发用户少于 10 个的低内存系统来说,哪些配置设置比较合适?
希望这对你来说很容易!任何能链接到教程的人都将成为注定成就大事的个人英雄,毫无疑问。
加夫
答案1
以 tomcat 用户身份运行 tomcat。我认为您永远不应该以 root 身份运行 tomcat。与以非特权用户身份运行相比,这样做可能存在更大的安全风险。
Tomcat 的 HTTP 服务在某些方面有点欠缺,所以我总是建议你使用 http 服务器作为前端。如果你不想使用 apache,那么 Nginx 总是不错的选择。如果你想要 HTTP Basic 或 Digest 身份验证,这一点尤其正确。
我建议您从 tomcat 的默认内存设置开始,然后在需要时进行调整。如果不了解应用程序的内存配置文件,很难给您提供任何固定的数字。
如果您在 vps 上使用 Ubuntu,则只需 apt-get install tomcat6 即可,它应该可以立即使用。即使在 Centos5.4 上,yum 中的 tomcat5 包也只需进行最少的配置更改即可运行。
不过,我强烈建议您在 tomcat 实例前使用轻量级服务器。这比 Tomcat 的“安全管理器”能让您更好地控制安全性
我在运行我的 hudson CI 服务器的虚拟机上运行着 Tomcat6,我想我给它分配了大约 256MB 的 RAM,它运行非常顺畅。
答案2
即使你没有足够的空间在 Tomcat 前面运行一个完整的 Web 服务器,你也可以考虑运行一个反向代理,比如磅。至少,如果配置正确,它可以快速停止对服务器的随机连接。只需指向磅到 Tomcat 监听的内部端口 8080。