确保公共访问的Linuxnetworking服务器

我想build立一个廉价的Linux机器作为一个Web服务器来托pipe各种networking技术(PHP和Java EE的想法,但我想在未来尝试与Ruby或Python)。

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

你有什么build议,build立一个安全的个人Linuxnetworking服务器的方式来打开它的外部stream量?

Solutions Collecting From Web of "确保公共访问的Linuxnetworking服务器"

本文有一些最好的方法来锁定事情:

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

一些亮点:

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

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

Apache Securiy (O'Reilly出版社)

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

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

1)通过默默无闻的安全

毋庸置疑,在“现实世界”中依靠这一点是一个坏主意,不能被娱乐。 但是那是因为在现实世界里,坏人知道那里有什么东西,而且还有赃物。

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

2)包装管理

除非你绝对必须,否则不要自己编译和安装Apache或sshd。 如果你这样做,你将承担与最新的安全补丁保持同步的责任。 让Linux发行版(如Debian或Ubuntu)的软件包维护者为您做好工作。 从发行版的预编译包中安装,并保持最新状态成为偶发apt-get update && apt-get -u dist-upgrade命令,或使用Ubuntu提供的任何华丽的GUI工具。

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

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

第1条
第二条

希望这些帮助。

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

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

在这个说明中,虽然这个线程可能会减少到只是燃烧,我个人的服务器的建议是坚持任何东西的Ubuntu( 得到Ubuntu服务器在这里 ); 根据我的经验,最快速地从论坛上提问的问题得到答案(不知道有什么关于吸收,但)。

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

祝你好运!

/ MP

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

话虽如此,能够从工作或离开的地方到达您的家庭壳真是太棒了…并且添加了一个事实,即您可以在同一个端口上使用SFTP,但我无法想象没有它的生活。 =)

你可以考虑从亚马逊的EC2实例 。 这样你可以很容易地测试出“东西”而不会搞乱生产。 只支付您使用的空间,时间和带宽。

如果你在家里运行一个Linux服务器,安装ossec就可以得到一个很好的轻量级IDS。

[编辑]

另外,请注意,不要违反ISP的“可接受使用策略”,并且允许标准端口上的传入连接。 我曾经工作过的ISP用它的话来说,除非你是在一个企业级的账户上,否则你可能会因为运行80/25端口的服务器而断开连接。 虽然我们并没有主动阻止这些端口(我们不关心,除非是造成问题),有些ISP不允许通过端口80或25的任何流量,所以你将不得不使用备用端口。

如果你要这样做,花一点钱,至少要购买一个专用的路由器/防火墙与一个单独的DMZ端口。 你会想从你的服务器上关闭你的内部网络,这样当你的web服务器被攻破时,你的内部网络也不会立刻受到攻击。

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

哇,一旦你开始打开任何对外交通,你就会开一罐蠕虫。 请记住,你认为一个实验性的服务器,几乎像一个牺牲的羊羔,对于那些希望在你的网络和资源上做坏事的人来说也是一件容易的事情。

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

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