什么端口应该在Web服务器上保持打开状态?

我会尽快尝试部署我的第一个networking应用程序,所以我的经验是缺乏的。 我记得在某个地方读到机器人端口扫描发生在几分钟内暴露在互联网(也许这是一个Windows 95系统需要多less时间才能妥协,这是自从我阅读文章已经有一段时间了)。 这个特定的服务器在amd64上运行Ubuntu 9.10服务器版本。

networking应用程序本身应该完全通过https,根据这个问题, 我刚刚在这里问 。 此外,该网站还有一个file upload部分,现在通过http post完成,该文件最终通过单独的(无线的,不幸的)接口远程连接到另一台计算机,以处理实际的处理。

所以,在暴露在世界的实际networking接口上,我认为端口80和443应该被暴露,而不是别的。 正如我之前所说,80应该redirect到443.是理智的吗? 还有什么别的我不知道,我应该有一些其他的港口活跃? 这些文件通过端口9000和9001使用ruby DRb移动到处理系统,因此这些文件也需要打开,但只能在第二个界面上打开。

另外,我应该使用什么防火墙程序来处理这样的两个networking接口? 这里列出了一些 ,但我不确定哪些是适合服务的网页,或者即使这是一个特殊的情况。

听起来是正确的,如果你只提供https,那么这是你需要打开的。 但是,只有以root帐户开始的应用程序才能侦听1024以下的端口,因此您有两个选项:

  • 开始你的ruby应用程序的根 – 不是一个好主意
  • 有它背后的Apache – 可能会更好,但取决于你想做什么,这可能只是一个额外的开销
  • 运行ruby应用程序作为其他用户在不同的端口,说8443,并有iptables的前端请求从443到8443 – 这我想是你想要做的

下面是你如何做端口转发(例如你可以用80到8080做同样的事情):

iptables -t nat -A PREROUTING -i $EXT_IF -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8443 

除此之外,没有必要打开任何其他端口到互联网,只要确保你打开其他接口的ssh,这样你就可以访问和pipe理服务器。

至于防火墙应用程序,iptables随ubuntu一起使用,只是使用它,不需要任何其他奇特的工具,我会说。

你是对的,只有端口80/443需要暴露。 其他一切都应该closures。 你需要你的防火墙来做一些事情。

  1. 连接限制和速率限制。 你希望你的防火墙能够在发生DDoS攻击或重复尝试端口敲打或类似的事情时减慢速度。
  2. 阻止所有不必要的外出stream量。 这可以帮助防止您的机器因为大多数机器人需要连接到远程命令和控制服务器而受到危害。
  3. 阻止所有其他传入端口。 如果攻击者设法安装一些应用程序并打开一个后门端口,你应该还是会阻止其他事情。

这是一些想法。 我没有任何具体的软件build议。 也许读LARTC可能会有帮助。