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

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

我和一位朋友正在考虑创办自己的业务,涉及代码和一些相当先进的 IP(至少,我们认为 IP 是先进的)。我想在家庭服务器系统上设置一个代码存储库(可能是 subversion)和一个错误跟踪服务器(可能是 fogbugz),我们俩都可以通过笔记本电脑从远程位置通过 VPN 进入。我还希望这台服务器是一个运行某种 hudson 脚本(可能通过 ant)的远程构建系统,以进行自动测试和构建验证。

我的问题是:设置此系统最安全的方法是什么?我的硬件和软件预算为 1000 美元。我有一个使用 Apple Wireless 基站的现有家庭无线网络、一台同时运行 10.5 和 Windows 7 的 MacBook Pro,以及一台运行 Windows 7 的家用机器,我实际上只是用它来玩游戏和闲逛。

具体来说:

  • 我应该使用 Linux 吗?哪个发行版?如何锁定它?我意识到这个问题可能会引发无数争论,但我只想得到一些关于如何设置运行这些服务的安全服务器的指示(仅此而已,因为假设更多服务 = 更多安全漏洞)。
  • 在哪里可以找到有关通过该路由器设置 VPN 的有用信息?我应该使用苹果路由器吗?还是应该考虑使用某些“黄金标准安全”路由器?
  • 静态 IP(这意味着要更改我的 ISP)还是动态 IP?是否可以使用动态 IP 执行此类操作?如果可以,我该如何设置服务器,以便通过动态 IP 安全地进行远程访问?
  • 我应该考虑哪种硬件?我考虑的硬件大概是 core2 duo 处理器(也许是 i7?)、普通硬盘、4 GB RAM,仅此而已,连接到其他备份驱动器,例如连接到系统的 USB 硬盘,使用 cron 作业每晚备份到第二个驱动器。这样合理吗?

我意识到这是一个很大的问题,而且不一定简单易懂。当我搜索这些问题的答案时,我得到了很多信息,但没有一个是完全简单的。所以,如果有人知道我错过的指南或几篇博客文章,我将不胜感激。

答案1

Linux 没有神奇的安全精灵粉尘。Linux 安装也可能配置不当。无论您使用哪种服务器操作系统,您都需要:

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

请查看 Linux 文档项目网站 (http://www.tldp.org)——那里有一些不错的安全指南。您还应该查找要托管的每个应用程序的安全文档。

您的无线以太网应被视为不受信任的网络,您应在其上使用 VPN,或加密其上运行的所有内容。也不要使用破解的加密算法(WEP、WPA)。

正如您所说,您应该使用 VPN 将所有流量传输到 Internet 上。您可以使用便宜的硬件盒,尽管其中一些存在稳定性问题。您可以在主机上运行 OpenVPN,并将其暴露给 Internet,这是一种“廉价”的软件处理方式。您也可以使用 SSH 隧道来实现这一点。您也可以使用基于标准的 IPec VPN。这取决于您想要花在配置上的时间/精力。您绝对可以使用动态 IP 地址。尼克说,动态 DNS 是你的朋友。

很高兴看到你正在考虑备份。我对“备份到第二个驱动器”作为一种非常物理的容灾方案持怀疑态度,但也许是因为我的一个好朋友经历过一场火灾。我绝对建议使用某种类型的加密异地数据复制,或手动将多个外部硬盘驱动器(希望是加密的)异地旋转。如果数据合适,您可以考虑使用一组固态存储设备进行异地旋转,代替硬盘驱动器(拇指驱动器等)。

一些评论中提到了 RAID,所以我将在我的编辑中提到它。我会认真考虑将软件 RAID-1 用于此应用程序。您可以获得很多好处,而不会带来太多复杂性或由 RAID 系统本身引起的问题。但是,RAID 不是备份,所以不要将其视为备份。

还提到了 UPS,这是个好主意。您不必为此花费大量金钱,但我建议购买具有数据连接的 UPS,以便在断电时顺利关闭服务器计算机。

我并不认为服务器计算机中的处理器与安​​全性有很大关系。您需要的特定处理器应基于工作负载。

我并不是想纠正你,但值得一提的是,你并不真正想要“最安全的方式”。例如,你已经提到了预算。你真正想要的是提供你满意的安全程度、尽可能降低风险、符合你的预算并且使用起来不太麻烦的配置。

即使您不在此应用程序中使用 SSH 隧道,由于评论中提到了它,我也会支持它。您应该知道如何使用 SSH 隧道,因为它们太方便了,您不能不知道如何使用。

答案2

  • 你可以使用动态 IP 和类似动态域名系统或者可能简易DNS
  • Linux 很好。如果你不想太深入,你可以考虑Ubuntu 服务器版本;参考书籍:开始 Ubuntu 服务器管理
  • 对于硬件,如果您在家中设置,请考虑使用 UPS,除非您所在的地方永远不会发生任何形式的停电。
  • 您可能需要考虑配置 RAID 的冗余磁盘系统。
  • 一旦你有了一些稳定性,可以考虑使用内核强化补丁,例如grsecurity。您还可以查找其他强化补丁(请勿争论)。

答案3

首先,由于您谈论的是家庭服务器,并且预算非常紧张(几乎),所以不要考虑物理安全。将盒子放在您的配偶/孩子/宠物无法触及的地方,以免当有人拔掉这个东西的电源插头只是为了找个地方插上吸尘器时遇到麻烦。

给插头贴上标签,确保其绝对清晰!

我应该使用 Linux 吗?哪个发行版?如何锁定它?我意识到这个问题可能会引发无数争论,但我只想得到一些关于如何设置运行这些服务的安全服务器的指示(仅此而已,因为假设更多服务 = 更多安全漏洞)。

使用你知道如何保护的操作系统。如果你不知道如何保证安全。我最熟悉的操作系统是 Debian,所以我会使用它,您可能熟悉 Windows、Plan9、Solaris。使用您最熟悉的操作系统!

明确你的需求(你似乎已经这样做了 - 这很好),并考虑你是否绝对需要它超酷的服务器硬件。我认为你实际上不会这样做,而是把钱花在用于离线备份的备份设备或营销(或色情)。

在哪里可以找到有关通过该路由器设置 VPN 的有用信息?我应该使用苹果路由器吗?还是应该考虑使用某些“黄金标准安全”路由器?

我会选择 OpenVPN,因为它相对容易设置并将该端口(仅限该端口)从路由器转发到您使用的盒子。可能还会添加一些端口敲击(我只知道 Linux 解决方案)——尖叫者现在会说通过隐蔽性来实现安全性,他们是对的,但考虑到您的预算,我认为任何廉价的安全层都是值得的——但是使用这种方式,您需要将额外的端口转发到服务器。

使所需的服务仅侦听以下 IP/接口:未通过 VPN 连接则无法访问。我猜你唯一需要的服务就是 HTTPS(subversion 和 bugtracker)。

配置 OpenVPN 以使用用密码保护的证书和用户密码(是的,这是可能的)。

静态 IP(这意味着要更改我的 ISP)还是动态 IP?是否可以使用动态 IP 执行此类操作?如果可以,我该如何设置服务器,以便通过动态 IP 安全地进行远程访问?

不,不要浪费钱,使用免费服务,例如 dyndns(或者任何我能想到的服务)。正如你所说,你是一家初创公司,如果你真的不需要静态 IP,那么每月额外支付静态 IP 费用是没有任何好处的 - 除非你想在你的服务器上运行电子邮件服务,那么你不仅需要静态 IP,还要确保你也能控制你的反向 DNS。此外,如果要更换为提供比当前更便宜的静态 IP 的其他 ISP:那就去做吧!

可能当 IP 服务转换到新 IP 时可能会出现短暂的中断,但这应该是可行的,如果中断太多,您以后仍然可以切换到静态 IP。

我应该考虑哪种硬件?我考虑的硬件大概是 core2 duo 处理器(也许是 i7?)、普通硬盘、4 GB RAM,仅此而已,连接到其他备份驱动器,例如连接到系统的 USB 硬盘,使用 cron 作业每晚备份到第二个驱动器。这样合理吗?

我会选择相对便宜的硬件,例如戴尔的塔式服务器(确切地说是您能找到的最便宜的服务器),您节省的钱应该花在良好的支持合同上,以防硬件故障和专用的备份系统,并且可能至少有足够电力让您的服务器以合理的方式关闭的UPS。

鉴于您想要运行源代码存储库和错误跟踪器,我断定您正在本地开发并进行签入。通过错误跟踪器以正式方式进行沟通,这样您和您的业务伙伴就可以互相指责 :)。99% 的时间里您的服务器不会执行任何操作。

如果您想要进行一些自动化测试并添加一些 RAM,您实际上并不关心构建是否需要 2 名开发人员 5 分钟或 15 分钟,但如果每次构建运行时 OpenVPN 守护进程/服务由于 RAM 中断而被杀死,您就会发疯。

答案4

既然您不确定如何设置某些部分,为什么不让其他人来做呢?

考虑如下托管环境大会解开奥里戈XP开发项目锁代码空间比特桶, 或者github

让您无需设置和维护服务器和存储库,并且大多数托管站点的价格都足够便宜,您的 1000 美元就足够了。

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

相关内容