2008-08-07 44 views
19

我想建立一个廉价的Linux机器作为Web服务器来承载各种Web技术(PHP & Java EE的浮现在脑海中,但我想用Ruby实验或将来的Python)。保护Linux的Web服务器,供公众查阅

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

什么是你在一个足够安全的方式来打开它进行外部通信建立个人的Linux Web服务器的建议?

回答

5

这篇文章有一些最好的方式来锁定下来的东西:

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

一些亮点:

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

文章还需要一些指针从这本书:

Apache Securiy(奥赖利出版社)

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

0

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

1

它的安全和可靠,如果你保持你的声音(即,如果你只是在家庭连接上托管一个荣耀的webroot很少有人会来你的家庭服务器后)和你的智慧你的配置(即,避免对所有内容使用root,确保你的软件保持最新状态)。在这个说明中,虽然这个线程可能会缩小到仅仅燃烧,但我对你的个人服务器的建议是坚持任何东西Ubuntu(get Ubuntu Server here);根据我的经验,最快可以从论坛上提问的问题得到答案(虽然不知道该怎么说)。

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

祝你好运!

/MP

0

哇,你尽快开放一罐蠕虫,你开始打开任何东西到外部流量。请记住,你认为有经验的服务器,几乎像一个牺牲品,也是找人做坏事与您的网络和资源容易采摘。

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

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

1

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

这就是说,真的很棒,能够从工作中或离开你的家庭外壳...并添加了一个事实,即你可以在同一个端口上使用SFTP,我无法想象没有它的人生。 =)

1

你可以考虑一个EC2 instance from Amazon。这样你就可以轻松地测试出“东西”而不会干扰生产。只需支付您使用的空间,时间和带宽。

1

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

[编辑]

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

2

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

5

尽可能遵循安全最佳实践很重要,但是您不想让自己过分困难或失去担心跟上最新漏洞的睡眠。在我的经验中,有两个关键的东西,可以帮助保护您的个人服务器的安全性足以在互联网上扔了,同时保持自己的清醒:

1)安全通过隐藏

不用多说,依靠这在'现实世界'是一个坏主意,不被娱乐。但那是因为在现实世界中,坏人知道那里有什么,并且有赃物。

在个人服务器上,您将遭受的大多数“攻击”将仅仅是自动扫描来自已经受损的机器,寻找已知易受攻击的产品的默认安装。如果您的服务器没有提供任何诱骗默认端口或默认位置的内容,自动攻击者将继续前进。因此,如果你打算运行一个ssh服务器,把它放在一个非标准的端口上(> 1024),它很可能永远找不到。如果你可以用这种技术为你的Web服务器脱颖而出,那就把它转移到一个不起眼的端口上。

2)包管理

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

+0

只要它允许外部流量,它就是'真实世界'的一部分。 – icedwater 2013-10-24 07:53:10

1

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

2

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

Article 1
Article 2

希望那些有一定的帮助。

2

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