确保公共访问的Linux网络服务器

I'd like to set up a cheap Linux box as a web server to host a variety of web technologies (PHP & Java EE come to mind, but I'd like to experiment with ruby or Python in the future as well).

我很熟练地设置Tomcat在Linux上运行以提供Java EE应用程序,但我希望能够打开此服务器,即使这样我也可以创建一些工具,可以在我工作时使用它办公室。我配置Java EE站点的所有经验都用于Intranet应用程序,我们被告知不要专注于为外部用户保护页面。

你有什么建议以足够安全的方式建立一个个人Linux网络服务器来打开它的外部流量?

0

12 答案

小心打开SSH端口。如果你这样做,一定要禁止root登录(可以随时<�代码>苏</码>或<�代码>须藤</代码>一旦你的),并考虑在合理范围内更积极的身份验证方法。我看到我的服务器日志一个巨大的字典攻击一个周末从家里DynDNS的IP服务器我的SSH服务器后。

话虽如此,能够从工作中走出家门还是走开......真的很棒,而且可以通过同一个端口使用SFTP,我无法想象没有它的生活。 =)

0
额外

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

[编辑]

作为一个方面说明,请确保您不会违反您的ISP的可接受使用策略,它们允许标准端口上的传入连接。我曾经工作过的ISP用它的话来说,除非你是在一个企业级的账户上,否则你可能会因为运行80/25端口的服务器而断开连接。虽然我们并未主动阻止这些端口(我们并不在意,除非它引起问题),但某些ISP不允许通过端口80或25进行任何通信,因此您将不得不使用备用端口。

0
额外

如果你保持低调的话,它是安全和可靠的(例如,如果你只是在家庭连接上托管一个荣耀的webroot,你的家庭服务器很少会有人来)以及你的配置的智慧(即避免使用root对于所有事情,确保你的软件保持最新状态)。

在这一点上,虽然这个线程可能会缩小到只是燃烧,我个人的服务器的建议是坚持任何东西Ubuntu(在这里获得Ubuntu服务器);根据我的经验,最快可以从论坛上提问的问题得到答案(虽然不知道该怎么说)。

我的家庭服务器安全顺便说一句好处(我认为,或者我喜欢想)没有静态IP(运行在DynDNS上)。

祝你好运!

/ MP

0
额外

本文介绍了一些锁定事物的最佳方法:

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

一些亮点:

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

文章还从本书中提出了一些建议:

Apache Securiy (O'Reilly Press)

至于发行版,我已经运行了Debain和Ubuntu,但这取决于你想要做多少。我在没有X的情况下运行Debian,每当我需要任何东西时都会将其加入进来。这是一个简单的方法来降低管理费用。或者Ubuntu有一些很好的GUI东西,可以很容易地控制Apache / MySQL / PHP。

0
额外

您可以考虑来自亚马逊的EC2实例。这样你就可以轻松地测试出“东西”而不会干扰生产。只需支付您使用的空间,时间和带宽。

0
额外

有很多方法可以做到这一点,工作得很好。我通常会使用.htaccess文件。快速设置和保护足够。可能不是最好的选择,但它适用于我。我不会把我的信用卡号码放在它后面,但除此之外我不真正关心。

0
额外

哇,一旦你开始打开任何外部流量,你就会打开一堆蠕虫。请记住,你认为一个实验性的服务器,几乎就像一只牺牲性的羊肉,对于那些希望利用你的网络和资源来做坏事的人来说也是一件容易的事。

您对外部服务器的整体方法应该非常保守和彻底。它从防火墙策略等简单的事情开始,包括底层操作系统(保持打补丁,为安全配置等),并涉及您将要使用的每个堆栈的每一层。恐怕没有简单的答案或配方。

如果你想尝试一下,如果你需要远程处理它,你将会更好地保持服务器的私密性并使用VPN。

0
额外

你应该考虑的一件事是哪些港口向世界开放。我个人只是打开端口22的SSH和端口123的ntpd。但是,如果你打开80端口(http)或ftp,请确保你知道至少知道你在为世界服务,谁可以做到这一点。我对ftp不是很了解,但是有数以百万计的Apache教程只是Google搜索而已。

0
额外

尽可能遵循安全最佳实践很重要,但是您不希望让自己过分困难或失去了担心跟上最新漏洞的睡眠。根据我的经验,有两个关键的事情可以帮助您保持足够的个人服务器安全性,以保持您的理智:

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

毋庸置疑,在“现实世界”中依靠这一点是一个坏主意,不应受到欢迎。但那是因为在现实世界中,坏人知道那里有什么,并且有赃物。

On a personal server, the majority of 'attacks' you'll suffer will simply be automated sweeps from machines that have already been compromised, looking for default installations of products known to be vulnerable. If your server doesn't offer up anything enticing on the default ports or in the default locations, the automated attacker will move on. Therefore, if you're going to run a ssh server, put it on a non-standard port (>1024) and it's likely it will never be found. If you can get away with this technique for your web server then great, shift that to an obscure port too.

2)包裹管理

Don't compile and install Apache or sshd from source yourself unless you absolutely have to. If you do, you're taking on the responsibility of keeping up-to-date with the latest security patches. Let the nice package maintainers from Linux distros such as Debian or Ubuntu do the work for you. Install from the distro's precompiled packages, and staying current becomes a matter of issuing the occasional apt-get update && apt-get -u dist-upgrade command, or using whatever fancy GUI tool Ubuntu provides.

0
额外
只要它允许外部流量,它就是'真实世界'的一部分。
额外 作者 icedwater,

Bit-Tech.Net发布了一些关于如何使用Linux设置家庭服务器的文章。这里是链接:

Article 1
Article 2

希望这些帮助。

0
额外

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

0
额外

如果你打算这样做,花一点钱,至少购买一个专用的路由器/防火墙与单独的DMZ端口。您需要从您的服务器上关闭内部网络,以便在您的Web服务器受到威胁时(如果不是!),您的内部网络也不会立即受到攻击。

0
额外