保护Linux Web服务器以供公众访问

时间:2020-03-05 18:38:25  来源:igfitidea点击:

我想设置一个廉价的Linux盒子作为Web服务器来承载各种Web技术(想到了PHP和Java EE,但我也希望将来也可以使用Ruby或者Python进行试验)。

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

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

解决方案

回答

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

回答

如果我们保持低调,它是安全可靠的(例如,如果我们只是在家庭连接上托管美化的Webroot,很少有人会追随家庭服务器),并且明智地配置(例如,避免使用root对于所有内容,请确保软件保持最新)。

关于这一点,尽管该线程可能会逐渐减少,但我对个人服务器的建议是坚持使用任何Ubuntu(请在此处获取Ubuntu服务器);以我的经验,最快从论坛上提问的地方得到答案(虽然不确定要说些什么)。

我的家庭服务器安全性BTW有点(我认为,或者我想认为)受益于没有静态IP(在DynDNS上运行)。

祝你好运!

/ mp

回答

哇,我们一打开蠕虫罐头就可以对外开放。请记住,对于想要利用网络和资源做坏事的人来说,我们认为实验服务器几乎就像是牺牲羔羊一样,也是一件容易的事。

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

如果我们想进行实验,则可以更好地保持服务器私有并在需要远程处理时使用VPN。

回答

本文提供了一些将事情锁定的最佳方法:

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

一些重点:

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

本文还借鉴了本书的一些指导:

Apache Securiy(O'Reilly出版社)

就发行版而言,我已经运行过Debain和Ubuntu,但这仅取决于我们要执行多少操作。我在没有X的情况下运行Debian,只要我需要任何东西,就将它切入。这是降低开销的一种简单方法。或者Ubuntu拥有一些不错的GUI功能,可以轻松控制Apache / MySQL / PHP。

回答

小心打开SSH端口。如果这样做,请确保禁用root登录(进入后始终可以使用" su"或者" sudo"),并在合理范围内考虑采用更具攻击性的身份验证方法。我看到一个周末,我的服务器日志中发生了一次巨大的字典攻击,该攻击发生在从DynDNS家用IP服务器访问SSH服务器之后。

话虽这么说,能下班或者离开家都真好,而且还可以在同一端口上使用SFTP,我无法想象没有它的生活。 =)

回答

我们可以考虑来自Amazon的EC2实例。这样一来,我们就可以轻松测试"材料",而不会影响生产。只需支付我们使用的空间,时间和带宽。

回答

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

[编辑]

附带说明,请确保我们没有违反ISP的"可接受的使用策略",并且确保它们允许在标准端口上进行传入连接。我曾经工作过的ISP按照其术语编写,除非我们使用企业级帐户,否则我们可能会因为通过端口80/25运行服务器而被断开连接。尽管我们没有积极地阻止这些端口(除非引起问题,我们才在乎),但某些ISP不允许通过端口80或者25进行任何通信,因此我们将不得不使用备用端口。

回答

我们应该确定的一件事是哪些港口向世界开放。我个人只是为SSH打开端口22,为ntpd打开端口123. 但是,如果我们打开端口80(http)或者ftp,请确保我们学会了至少了解为世界服务的内容以及谁可以使用该功能。我对ftp知之甚少,但是就在Google搜索之后,就有数百万个很棒的Apache教程。

回答

尽可能遵循安全性最佳做法很重要,但是我们不想让自己过分困难,也不必担心因跟上最新漏洞而失去睡眠。以我的经验,有两个关键事项可以帮助确保个人服务器足够安全,从而可以在保持理智的情况下在Internet上运行:

1)默默无闻的安全

毋庸置疑,在"现实世界"中依靠它是一个坏主意,不要被娱乐。但这是因为在现实世界中,坏人知道那里有什么,并且有很多战利品。

在个人服务器上,我们将遭受的大多数"攻击"将仅仅是对已经受到威胁的计算机进行自动扫描,以寻找已知易受攻击的产品的默认安装。如果服务器在默认端口或者默认位置上没有提供诱人的功能,则自动攻击者将继续前进。因此,如果要运行ssh服务器,请将其放在非标准端口(> 1024)上,可能永远找不到。如果我们可以在Web服务器上摆脱这种技术的困扰,那就把它也转移到一个晦涩的端口上。

2)包裹管理

除非绝对必要,否则不要自己从源代码编译和安装Apache或者sshd。如果这样做,我们将负责保持最新的安全补丁程序。让Linux发行版(如Debian或者Ubuntu)的出色软件包维护者为我们完成这项工作。从发行版的预编译软件包进行安装,保持最新状态成为偶尔发出apt-get update && apt-get -u dist-upgrade命令或者使用Ubuntu提供的任何高级GUI工具的问题。

回答

如果要执行此操作,请花一些钱,至少要购买带有单独的DMZ端口的专用路由器/防火墙。我们需要将内部网络与服务器防火墙隔离,以便在(如果不是!)网络服务器受到威胁时,内部网络也不会立即受到攻击。

回答

Bit-Tech.Net刊登了几篇有关如何使用Linux设置家庭服务器的文章。这里是链接:

第1条
第二条

希望这些对我们有所帮助。

回答

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