将具有ssh的个人服务器开放到Internet会有多大的风险?


25

标题的延续将是“同时对互联网安全的了解有限”。

我最近用一台运行debian的低端计算机建立了一个小型服务器,目的是将其用作个人git存储库。我启用了ssh,并且对它遭受暴力攻击之类的及时性感到非常惊讶。然后我读,这是很常见的,并了解基本的安全措施,以抵御这些攻击(与它serverfault交易问题,并重复很多,例如见这一个这一个)。

但是现在我想知道所有这些是否值得付出努力。我决定主要是出于娱乐目的而设置自己的服务器:我可以依靠第三方解决方案,例如gitbucket.org,bettercodes.org等提供的解决方案。虽然部分乐趣是关于学习Internet安全性,但我还没有有足够的时间致力于成为专家,几乎可以肯定我已采取了正确的预防措施。

为了决定我是否将继续玩这个玩具项目,我想知道自己这样做的真正风险。例如,连接到我的网络的其他计算机在多大程度上也受到威胁?这些计算机中的某些计算机所使用的知识要比运行Windows的知识要少。

如果我遵循一些基本准则,例如强密码,禁用ssh的root访问权限,禁用ssh的非标准端口以及可能禁用密码登录并使用fail2ban,denyhosts或iptables规则之一,那么我真正陷入麻烦的可能性有多大?

换句话说,是否有一些我应该担心的大灰狼,或者主要是关于丢掉脚本小子?


我认为当您提到自己没有时间或意愿成为$ TECHNOLOGY安全专家时,您的想法就很刺耳。这是使用托管解决方案的主要原因。评估内部与托管之间唯一唯一的共同点是成本。由于github之类的东西是免费的,因此您实质上是在浪费自己的时间,只是为了了解如何运行git repo。我们无法告诉您您应该如何处理自己的私人时间,但是在专业情况下,这毫无意义。(空洞的抢夺者:复杂的情况具有更多的变量)。
克里斯·S

1
如果您决定运行自己的服务器,则还应将常规代码添加到待办事项列表中,以检查所运行的每个服务的更新和安全漏洞。仅设置它是不够的。
一周

两个词:公钥,就像@Stephane所说的那样。禁用keyboard-interactive身份验证,仅使用pubkey身份验证。
kostix

Answers:


14

IMO SSH是在开放的Internet上收听的最安全的方法之一。如果您真的很担心,可以在非标准的高端端口上收听。我仍然需要在设备和实际Internet之间使用(设备级别)防火墙,并且仅将端口转发用于SSH,但这是对其他服务的预防措施。SSH本身非常可靠。

不得不让人打我家的SSH服务器偶尔(开放时代华纳有线)。从未产生过实际影响。

您可以采取其他一些措施来提高SSH的安全性,以防止在家用计算机的同一IP地址上重复尝试,例如

MaxStartups 2:30:10

在/ etc / ssh / sshd_config中,它将限制在成功登录之前可以连续创建多少个连接。


我的Internet服务提供商提供了一个防火墙,该防火墙在打开ssh端口时看到的参数。是你指的吗?
Alfred M.

2
可能是,某些ISP给您提供了一个愚蠢的设备,某些使您具有了内置防火墙的路由器。我只是说,这是从来没有一个好主意,直接放一个通用的操作系统在互联网上,无论你采取什么预防措施。您想要在自己和讨厌的人之间使用某种硬件设备(或类似DD-WRT的设备)。
TheFiddlerWins

1
如另一个答案中所述设置公共密钥身份验证,并在/ etc / ssh / sshd_config中关闭ChallengeResponseAuthentication和PasswordAuthentication。
兰迪·奥里森

我知道这是一个愚蠢的问题,但是我是否需要购买一个域名才能通过互联网访问我的服务器(通过ssh或浏览器)?
TheRookierLearner's

@TheRookierLearner-不,您可以使用ISP提供的IP地址。但是,根据您家庭网络的配置,可以通过称为PNAT的东西在您的所有设备上共享(大多数人称之为NAT)。如果您像大多数人一样,则需要找出要从Internet访问的特定设备的“ NATed” IP(仅系统上的ifconfig / ipconfig,它将是10.xxx,172.16。 XX或192.168.xx的地址见RFC 1918的比你更关心这些数字),然后告诉你的路由器“端口转发”或“DMZ”端口22
TheFiddlerWins

10

使用SSH设置公钥认证系统确实很简单,大约需要5分钟的时间

如果您强制所有SSH连接都使用它,那么它将使您的系统具有尽可能多的弹性,而无需在安全基础结构上投入很多资金。坦白说,它是如此简单和有效(只要您没有200个帐户-就会变得混乱),因此不使用它应该是一项公共罪行。


3
要在设置后强制SSH连接使用公共密钥身份验证,请确保在/ etc / ssh / sshd_config中关闭ChallengeResponseAuthentication和PasswordAuthentication。我忘记了一次,非常遗憾(只有一次,再也没有)。
兰迪·奥里森

8

我还运行了一个通过SSH向世界开放的个人git服务器,并且我也遇到了与您相同的暴力问题,因此我可以同情您的情况。

TheFiddlerWins已经解决了在公众可访问的IP上打开SSH的主要安全隐患,但是应对暴力尝试的最佳工具IMO是Fail2Ban-监视您的身份验证日志文件,检测入侵尝试并向防火墙添加防火墙规则的软件。机器的本地iptables防火墙。您可以配置禁令前的尝试次数以及禁令的时间(我的默认值为10天)。


正如我对前一篇文章的评论所述,这就是我的NAS在家里使用的方式,几个月后,尝试次数已大大降低。
mveroone

2

处理此问题的另一种方法是设置VPN。您无需直接连接到家庭服务器上的SSH端口,而是先连接到VPN,然后通过加密的安全连接运行所有流量。

解决此问题的理想方法是使用包含VPN端点的防火墙,但是您也可以将Windows计算机设置为VPN服务器。

这是一个例子:

http://www.howtogeek.com/135996/

现在请记住,正确的安全配置将涉及与您的内部网络隔离的公用(或半公用)计算机。Web服务器或托管公共服务的任何计算机应位于家庭或办公室的安全网络之外。您将使用2个路由器在您和Internet之间创建一个安全区域或DMZ。

这样,如果您的服务器被黑客入侵,则不能将其用作攻击其他计算机的媒介。

因此设置如下所示:

DMZ配置


抱歉,图片太小...我不知道该如何编辑帖子。
TomXP411

2

答案非常好,我只建议两件事:

  • 考虑仅通过密钥认证系统进行访问
  • 使用Denyhosts:它将禁止尝试使用无效身份验证访问服务器的主机
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.