我想建立一个廉价的Linux机器作为Web服务器来托管各种Web技术(我想到PHP和Java EE,但我希望将来也可以尝试使用Ruby或Python)。

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

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

===============>>#1 票数:5 已采纳

本文介绍了一些锁定内容的最佳方法:

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

一些亮点:

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

本文还从本书中得到了一些建议:

Apache Securiy (O'Reilly出版社)

对于发行版,我运行Debain和Ubuntu,但这取决于你想要做多少。 我在没有X的情况下运行Debian,只要我需要任何东西就可以直接进入它。 这是一种降低开销的简单方法。 或者Ubuntu有一些很好的GUI,可以很容易地控制Apache / MySQL / PHP。

===============>>#2 票数:5

尽可能遵循安全最佳实践非常重要,但是您不希望为自己造成过分困难或者为了跟上最新漏洞而担心失眠。 根据我的经验,有两个关键的事情可以帮助保持您的个人服务器足够安全,以便在保持理智的同时上网:

1)通过默默无闻的安全

毋庸置疑,在“现实世界”中依赖于此是一个坏主意,而不是被娱乐。 但那是因为在现实世界中,坏人知道那里有什么,而且还有战利品。

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

2)包管理

除非绝对必要,否则不要自己编译和安装Apache或sshd。 如果您这样做,您将负责及时了解最新的安全补丁。 让来自Linux发行版(如Debian或Ubuntu)的优秀软件包维护者为您完成工作。 从发行版的预编译软件包安装,并保持最新状态变成偶尔发布apt-get update && apt-get -u dist-upgrade命令,或使用Ubuntu提供的任何花哨的GUI工具。

===============>>#3 票数:2

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

第1条
第2条

希望那些有所帮助。

===============>>#4 票数:2

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

===============>>#5 票数:2

您应该确定要考虑的一件事是哪些港口对世界开放。 我个人只需为SSH打开端口22,为ntpd打开端口123。 但是,如果您打开端口80(http)或ftp,请确保您学会了解至少为世界服务的内容以及谁可以做到这一点。 我对ftp了解不多,但有数百万篇优秀的Apache教程只是谷歌搜索。

===============>>#6 票数:1

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

===============>>#7 票数:1

它是安全可靠的,如果你对此保持低调(即,如果你只是在家庭连接上托管一个美化的webroot,很少有人会来到你的家庭服务器之后)并且你对你的配置有所了解(即,避免使用root对于一切,请确保您的软件保持最新)。

在这方面,虽然这个线程可能会减少到只是火焰,我对你的个人服务器的建议是坚持任何Ubuntu( 在这里获得Ubuntu服务器 ); 根据我的经验,最快可以从论坛上提问来获得答案(不知道该怎么说才能吸收)。

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

祝好运!

/ MP

===============>>#8 票数:1

打开SSH端口要小心。 如果这样做,请确保禁用root登录(一旦进入,您可以始终使用susudo )并考虑更合理的身份验证方法。 我在服务器日志中看到一个巨大的字典攻击,一个周末从我的SSH服务器发送到DynDNS家庭IP服务器。

话虽这么说,能够从工作或离开你的家庭外壳真的很棒......而且你可以在同一个端口上使用SFTP,我无法想象没有它的生活。 =)

===============>>#9 票数:1

您可以考虑使用AmazonEC2实例 这样你就可以轻松地测试出“东西”而不会搞乱生产。 并且只需支付您使用的空间,时间和带宽。

===============>>#10 票数:1

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

[编辑]

作为旁注,请确保不要违反ISP的可接受使用策略并且它们允许标准端口上的传入连接。 我曾经工作过的互联网服务提供商以其条款编写,除非您使用的是商务级帐户,否则您可以通过端口80/25断开连接以运行服务器。 虽然我们没有主动阻止这些端口(我们不关心,除非它导致问题),但是一些ISP不允许通过端口80或25进行任何流量,因此您将不得不使用备用端口。

===============>>#11 票数:0

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

===============>>#12 票数:0

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

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

如果您想进行实验,如果您需要远程处理服务器,那么您可以更好地保持服务器的私密性并使用VPN。

  ask by karlgrz translate from so

未解决问题?本站智能推荐: