家庭服务器安全:我从哪里开始?

我的一位朋友正在考虑开始自己的业务,涉及代码和一些相当先进的IP(至less,我们喜欢认为IP是先进的)。 我想在家庭服务器系统上build立一个代码库(可能是Subversion)和一个bug跟踪服务器(可能是fogbugz),我们都可以通过笔记本电脑从远程位置进入VPN。 我也希望这个服务器是一个远程构build系统,运行某种哈德森脚本,也许通过ant,做自动testing和build立validation。

我的问题是:设置这个系统最安全的方法是什么? 硬件和软件的预算是1千美元。 我有一个现有的家庭无线networking使用苹果无线基站,运行10.5和Windows 7的MacBook Pro,以及一台运行Windows 7的家用机器,我真的只是用于游戏和搞乱。

Specificially:

  • 我应该使用Linux吗? 哪个发行版? 我如何locking它? 我意识到这个问题可能会引发无数的火焰战争,但是我只想指出如何build立一个安全的服务器来运行这些服务(而不是别的,假设更多的服务=更多的安全漏洞)。
  • 我在哪里可以获得有关通过该路由器build立VPN的良好信息? 我应该通过苹果路由器,还是有一些“金标准安全”的路由器,我应该看看?
  • 静态IP(这意味着更改我的ISP)或dynamicIP? 是否有可能使用dynamicIP做这些事情,如果是这样,我该如何设置服务器以便安全地通过dynamicIP远程访问?
  • 我应该看什么样的硬件? 我正在考虑一些与Core2双核处理器(也许是i7?),普通硬盘,4GB内存等有关的东西,连接到其他备份驱动器,如连接到USB连接的硬盘驱动器系统与cron作业每晚备份到第二个驱动器。 这是合理的吗?

我意识到这是一个巨大的问题,而不一定是直截了当的。 当我search这些问题的答案时,我得到了很多信息,但没有一个是完全简单的。 所以,如果有人知道我已经错过了一个指南或几个博客文章,我真的很感激。

Linux没有魔法安全的小精灵。 Linux安装也可能configuration不佳。 无论您使用哪种服务器操作系统,都需要:

  • closures不必要的服务/守护进程。
  • 检查以确保您确实closures了不必要的服务/守护进程。
  • 更改任何默认密码或禁用默认帐户。
  • 了解如何操作文件和目录的权限。
  • 创build并使用具有最低权限的用户帐户。
  • 跟上操作系统和应用程序的安全补丁。

看看Linux文档项目网站( http://www.tldp.org) -这里有一些体面的安全指南。 您还应该查找您要托pipe的每个应用程序的安全性文档。

你的无线以太网应该被看作是一个不可信的networking,你应该使用一个VPN,或者对它上面运行的所有东西进行encryption。 不要使用破碎的encryptionalgorithm(WEP,WPA)。

正如你所说,你应该使用VPN来移动互联网上的所有stream量。 有便宜的硬件盒可以使用,但其中一些有稳定性问题。 你可以在主机上运行OpenVPN,并将其作为一种“廉价”的软件处理方式公开给Internet。 你也可以使用SSH隧道来完成这个任务。 你也可以使用基于标准的IPec VPN。 这是您想花费configuration的时间/精力的问题。 你绝对可以使用dynamicIP地址。 正如尼克所说,dynamicDNS是你的朋友。

很高兴看到您在考虑备份。 我对“二驱”的备份怀疑是一种非常物理的灾难情景,但也许这是因为我有一个好朋友,通过房子的火灾。 我肯定会推荐使用某种types的encryption场外数据复制,或者手动在场外旋转多个外部硬盘(希望encryption)。 如果数据适合,您可以考虑使用一组固态存储设备进行非现场旋转,以代替硬盘驱动器(拇指驱动器等)。

在某些评论中提到了RAID,所以我会在我的编辑中提到它。 我会认真考虑这个应用程序的软件RAID-1。 您获得了很多好处,没有太多复杂性或潜在的由RAID系统本身引起的问题。 尽pipeRAID不是备份,所以不要这样认为。

UPS也被提到,并且是一个好主意。 您不必花费大量的资金,但是我build议您获取一个具有数据连接的设备,以便在发生电源故障时正常closures服务器计算机。

我不特别看到服务器计算机中的处理器有很多安全问题。 您需要的特定处理器应该基于工作负载。

我不是想听起来像是在纠正你,但值得一提的是,你并不是真的想要“最安全的方式”。 例如,您已经提到了预算。 您真正想要的是提供一定程度的安全性的configuration,尽可能地减less风险,符合您的预算,并且不会太麻烦。

即使你没有在这个应用程序中使用SSH隧道,因为在评论中提到了,我会抛弃我的支持。 你应该知道如何使用SSH隧道,因为它们太方便,不知道如何使用。

  • 你可以使用dynamicIP和DynDNS或者EasyDNS 。
  • Linux很好。 而且,如果你不太深入,你可以考虑Ubuntu服务器版本 ; 图书参考: 开始Ubuntu服务器pipe理
  • 对于硬件,如果你在家里设置,除非你在一个永远不会有任何停电的地方,否则请考虑一下UPS。
  • 您可能需要考虑RAIDconfiguration的冗余磁盘系统。
  • 一旦你有一些稳定性,考虑像grsecurity一样的内核加固补丁。 还有其他硬化补丁,你可以查找太多(请不要火焰战争)。

首先,因为你正在谈论一个家庭服务器,并且有很强的预算限制(差不多)忘记了物理安全。 把盒子放在你的配偶/小孩/宠物无法到达的地方,当有人拔掉这个东西只是为了得到一个插入吸尘器的地方时不会碰到麻烦。

标签,以便它绝对清楚!

我应该使用Linux吗? 哪个发行版? 我如何locking它? 我意识到这个问题会引发无数的火焰战争,但是我只想指出如何build立一个运行这些服务的安全服务器(而不是别的,假设更多的服务=更多的安全漏洞)。

使用您知道如何保护的操作系统。 如果你不知道如何保持安全,那么用OpenBSD(它有很好的安全声誉)是不好的。 我对Debian最有信心的操作系统就是这样,你的知识可能在Windows,Plan9,Solaris上。 使用你最熟悉的操作系统!

定义你的需求(你似乎已经这样做了 – 这是非常好的),想想你绝对肯定需要超级酷的服务器硬件 。 我不认为你真的这样做,而是花钱在备份设备上进行脱机备份或营销(或色情)。

我在哪里可以获得有关通过该路由器build立VPN的良好信息? 我应该通过苹果路由器,还是有一些“金标准安全”的路由器,我应该看看?

我会使用OpenVPN来设置和转发(并且只有)端口从您的路由器到您使用的框相对容易。 可能会添加一些端口敲门声(我只知道linux的解决scheme) – 尖叫者现在将通过默默无闻的方式说安全,他们是正确的,但考虑到你有一个预算,我认为任何廉价的安全层是值得的 – 与此路线,你需要额外的端口转发到服务器。

使所需的服务仅侦听不通过VPN连接的 IP /接口。 我猜你唯一需要的服务将是HTTPS(颠覆和bugtracker)。

configurationOpenVPN以使用用户密码和密码保护的证书 (可以)。

静态IP(这意味着更改我的ISP)或dynamicIP? 是否有可能使用dynamicIP做这些事情,如果是这样,我该如何设置服务器安全地通过dynamicIP远程访问?

不,不要扔掉你的钱,使用免费的服务,如dyndns(或任何这是唯一的一个我脑海中)。 正如你所说,你是一个初创公司,每月为静态IP支付额外的费用,如果你真的不需要这么做,那就不会有什么好处 – 除非你想在你的服务器上运行电子邮件服务,那么你不仅需要一个静态的IP,但确保你也有控制你的反向DNS。 另外,如果改变提供静态IP比您目前更便宜的另一个ISP:去吧!

当IP服务正在过渡到新的IP时,您可能会有短暂的中断,但是这应该是可行的,如果过多,您以后仍然可以切换到静态IP。

我应该看什么样的硬件? 我正在考虑一些与Core2双核处理器(也许是i7?),普通硬盘,4GB内存等有关的东西,连接到其他备份驱动器,如连接到USB连接的硬盘驱动器系统与cron作业每晚备份到第二个驱动器。 这是合理的吗?

我会用相对便宜的硬件之一戴尔塔式服务器(您可以find最便宜的硬件),您节省的钱应该花在一个良好的支持合同,以防硬件故障和专用的备份系统,可能一个UPS将至less有足够的权力,让你的服务器以一种理智的方式closures。

鉴于你想运行一个源代码回购和一个错误跟踪器,我得出结论,你正在本地开发,并签入。 在错误跟踪器上以正式的方式进行沟通,这样你和你的生意伙伴就有责任相互指责了:)。 99%的时间你的服务器不会做任何事情。

如果你想得到一些自动化的testing添加一些内存,你实际上不关心如果build设需要5分钟或15分钟与2名开发人员,但是如果OpenVPN守护进程/服务因RAM每次构build正在运行时都会停止运行。

帮你一个忙,并得到一个良好的VPN支持硬件路由器。 即使像Netgear ProSafe系列那样价格便宜,价格也可以达到70美元左右。

http://www.netgear.com/Products/VPNandSSL/WiredVPNFirewallRouters/FVS114.aspx

这些types的单位将非常容易设置和configuration。 如果您最终需要dynamicIP服务(您可以轻松完成),请按照build议使用DynDNS。

既然你不确定如何设置一些部分,为什么不让其他人去做呢?

考虑像Assembla , Unfuddle , Origo , XP-Dev , ProjectLocker , CodeSpaces , bitbucket或github等托pipe环境。

让您远离服务器和存储库的安装和维护,而且大多数托pipe站点都价格便宜,您的$ 1k将会走得更远。

缺点是你可能不得不寻找一个单独的持续集成解决scheme。 从上面的列表中,只有ProjectLocker提到了持续集成工具作为一个function。

几句关于备份。

如果你不确定你可以阅读它们,你还没有备份。

如果你没有异地备份(你的朋友的房子会这样做),那么你没有很好的备份。

如果备份在线(RAID或热服务器),则不是备份。

确定什么样的事件可以擦除系统和备份,并确保您会接受风险。 如果你在你的朋友家和你的服务器上有很好的备份,那么一个单独的事件将不得不相当大(并且很less)将它们取出。 例如,如果我所居住的城市被蒙上了阴影,我可能不会过多地担心业务。

低成本的备份媒体都不是经久耐用的,所以不要因为各种各样的原因而只备份一个备份。

而且,如果您决定使用托pipe服务,请保留自己的备份。 如果您的托pipe公司丢失了您的数据,他们伤害了客户,这不好,但是您的业务已经死了,而且更糟。 如果您的服务停业,您可能再也看不到您的数据。

最关心你的备份的人是你,这是你通常可以为自己做的事情。 这样做。

这正是我的开始,我仍然运行家庭服务器沙箱。

至于硬件方面:我的家用沙箱运行在64位服务器品质塔上,配有两个SATA RAIDarrays(系统,服务)和2个RAM,这对于这个应用来说是非常有用的。 你build议的规格可能是过度的,但如果你能负担得起,一定要去。 从长远来看,你只需要更多的权利。

至于备份,您可以放弃一些现金,放弃USB硬盘驱动器,只是放在第二个硬盘驱动器,复制在相同的基于cron的方式。 但请注意,我并不是build议使用RAID镜像arrays,因为这不是一个备份,而只是第二个硬盘。 你会省钱在shell上,传输速度会比外部传输速度高一些。 卓越的备份方法不在现场或NAS设备上。

和安全:学习如何隧道的一切。 你可能只需要打开80(也许443)和22到外面的世界。 通过SSH隧道远程pipe理。 您甚至可以将您需要的所有服务进行隧道传输,从而节省VPN路由器的成本。

编辑创build一个SSH隧道:

ssh remote.host.com -L local_port:remote_network_address:remote_port 

所以,从我的networking外部,如果我想从我局域网外的笔记本电脑访问我的路由器的networking接口,我使用

 ssh my-home.com -L 8081:192.168.0.1:80 

然后打开浏览器,在远程主机的局域网上点击http:// localhost:8081和voilà – 从localhost:8081到192.168.0.1:80的encryption隧道。 如果您需要从Windows执行此操作,PuTTY(恕我直言, 事实上的 Windows ssh客户端)将允许您在连接之前configuration它们。 上面的代码适用于任何* nix(包括Mac OS X)。