21

我想设置一个便宜的 Linux 机器作为 Web 服务器来托管各种 Web 技术(想到 PHP 和 Java EE,但我也想在未来尝试使用 Ruby 或 Python)。

我相当精通将 Tomcat 设置为在 Linux 上运行以提供 Java EE 应用程序,但我希望能够打开这个服务器,即使我可以创建一些我在工作时可以使用的工具办公室。我在配置 Java EE 站点方面的所有经验都是针对 Intranet 应用程序的,在这些应用程序中,我们被告知不要专注于保护外部用户的页面。

您对以足够安全的方式设置个人 Linux Web 服务器以开放外部流量有什么建议?

4

12 回答 12

5

这篇文章有一些锁定事情的最佳方法:

http://www.petefreitag.com/item/505.cfm

一些亮点:

  • 确保没有人可以浏览目录
  • 确保只有 root 对所有内容具有写入权限,并且只有 root 对某些配置文件具有读取权限
  • 运行 mod_security

这篇文章还从本书中获得了一些建议:

Apache Securiy(奥莱利出版社)

至于发行版,我运行过 Debain 和 Ubuntu,但这取决于你想要做多少。我在没有 X 的情况下运行 Debian,只要我需要任何东西就可以 ssh 进入它。这是一种降低开销的简单方法。或者 Ubuntu 有一些不错的 GUI 功能,可以轻松控制 Apache/MySQL/PHP。

于 2008-08-07T18:26:07.207 回答
5

尽可能遵循安全最佳实践很重要,但您不想让事情变得过于困难或因担心跟上最新的漏洞而失眠。根据我的经验,有两个关键因素可以帮助您确保个人服务器足够安全,以便在保持理智的同时投放到互联网上:

1) 通过默默无闻的安全性

不用说,在“现实世界”中依赖它是一个坏主意,而且不值得娱乐。但那是因为在现实世界中,坏人知道那里有什么,并且有战利品。

在个人服务器上,您将遭受的大多数“攻击”只是自动扫描已经受到攻击的机器,寻找已知易受攻击的产品的默认安装。如果您的服务器在默认端口或默认位置没有提供任何诱人的东西,那么自动攻击者就会继续前进。因此,如果您要运行 ssh 服务器,请将其放在非标准端口 (>1024) 上,它很可能永远找不到。如果您可以在 Web 服务器上使用这种技术,那就太好了,也可以将其转移到一个不起眼的端口。

2) 包管理

除非绝对必要,否则不要自己从源代码编译和安装 Apache 或 sshd。如果你这样做了,你就有责任跟上最新的安全补丁。让来自 Linux 发行版(如 Debian 或 Ubuntu)的优秀软件包维护者为您完成工作。从发行版的预编译包安装,保持最新状态只需偶尔发出apt-get update && apt-get -u dist-upgrade命令,或使用 Ubuntu 提供的任何精美的 GUI 工具。

于 2008-08-12T20:33:45.253 回答
2

您应该确保考虑的一件事是哪些端口对世界开放。我个人只是为 SSH 打开端口 22,为 ntpd 打开端口 123。但是,如果您打开端口 80 (http) 或 ftp,请确保您学会了至少了解您为世界提供的服务以及谁可以使用它来做什么。我对 ftp 知之甚少,但只要用 Google 搜索一下,就有数百万很棒的 Apache 教程。

于 2008-08-12T19:52:09.723 回答
2

Bit-Tech.Net 发表了几篇关于如何使用 linux 设置家庭服务器的文章。以下是链接:

第 1
条 第 2 条

希望这些对您有所帮助。

于 2008-08-15T22:48:00.427 回答
2

@svrist 提到了 EC2。EC2 提供了一个用于远程打开和关闭端口的 API。这样,您可以保持您的盒子运行。如果您需要在咖啡店或客户办公室进行演示,您可以获取您的 IP 并将其添加到 ACL。

于 2008-08-23T22:37:56.557 回答
1

如果您对它保持低调(即,如果您只是在家庭连接上托管一个荣耀的 webroot,很少有人会追随您的家庭服务器)并且您对您的配置有智慧(即避免使用 root对于所有事情,请确保您的软件是最新的)。

关于这一点,虽然这个线程可能会缩小到只是燃烧,我对你的个人服务器的建议是坚持任何 Ubuntu(在此处获取 Ubuntu Server);以我的经验,最快从论坛上提问的地方得到答案(虽然不知道该说什么关于吸收)。

我的家庭服务器安全 BTW 有点好处(我认为,或者我喜欢认为)没有静态 IP(在 DynDNS 上运行)。

祝你好运!

/mp

于 2008-08-07T18:18:29.343 回答
1

小心开放 SSH 端口。如果这样做,请确保禁用 root 登录(您可以随时susudo一旦进入)并在合理范围内考虑更积极的身份验证方法。一个周末,我在我的服务器日志中看到一个巨大的字典攻击,该攻击从 DynDNS 家庭 IP 服务器跟踪我的 SSH 服务器。

话虽这么说,能够在工作或外出时回到家里的 shell 真是太棒了……再加上你可以在同一个端口上使用 SFTP,我无法想象没有它的生活。=)

于 2008-08-07T18:26:15.037 回答
1

您可以考虑来自 Amazon 的 EC2 实例。这样你就可以轻松地测试出“东西”,而不会影响生产。并且只需为您使用的空间、时间和带宽付费。

于 2008-08-07T18:55:40.733 回答
1

如果您确实在家中运行 Linux 服务器,请在其上安装ossec以获得运行良好的轻量级 IDS。

[编辑]

作为旁注,请确保您不违反 ISP 的可接受使用政策并且它们允许标准端口上的传入连接。我以前工作的 ISP 用他们的条款写过,除非您使用的是企业级帐户,否则您可能会因为在端口 80/25 上运行服务器而被断开连接。虽然我们没有主动阻止这些端口(除非它引起问题,否则我们不在乎)一些 ISP 不允许端口 80 或 25 上的任何流量,因此您必须使用备用端口。

于 2008-08-07T21:08:39.607 回答
1

如果您要这样做,请花一点钱,至少购买带有单独 DMZ 端口的专用路由器/防火墙。您需要将内部网络与服务器隔离开来,这样当(不是如果!)您的网络服务器受到威胁时,您的内部网络也不会立即受到攻击。

于 2008-08-15T22:33:40.567 回答
0

有很多方法可以做到这一点,效果很好。我通常会使用 .htaccess 文件。快速设置且足够安全。可能不是最好的选择,但它对我有用。我不会把我的信用卡号码放在后面,但除此之外我真的不在乎。

于 2008-08-07T18:12:47.077 回答
0

哇,一旦您开始向外部流量开放任何东西,您就会打开一罐蠕虫。请记住,您认为的实验服务器几乎就像一只献祭的羔羊,对于那些希望利用您的网络和资源做坏事的人来说也是很容易的选择。

您对外部可用服务器的整个方法应该非常保守和彻底。它从防火墙策略之类的简单事物开始,包括底层操作系统(对其进行修补、对其进行安全配置等),并涉及您将使用的每个堆栈的每一层。恐怕没有简单的答案或食谱。

如果您想进行实验,最好将服务器保密并在需要远程工作时使用 VPN。

于 2008-08-07T18:18:36.473 回答