互联网上的每个人都建议通过SSH禁用root登录,因为这是一种不好的做法,并且会给系统造成安全漏洞,但是没有人解释为什么会这样做。

启用root登录非常危险(特别是在禁用密码登录的情况下?)

从安全的角度来看,如果允许密码认证,那么X符号用户名和Y符号密码或根用户名和X + Y符号密码有什么区别?

评论

在大多数系统中拥有root用户本身是不好的,请不用理会为该用户启用SSH登录!

对于ehealth-aussie.blogspot.com/2012/01/…,必须通过ssh进行根登录。一切都是妥协。

嗯...我们应该把这个问题移到安全性上吗?由于该主题更倾向于安全性,因此* nix系统。

出于行政原因,需要禁用root用户。在商用服务器上,您始终希望按人控制访问。根永远都不是一个人。即使允许某些用户具有root用户访问权限,也应强制他们通过自己的用户登录,然后再通过su-或sudo -i进行登录,以便可以记录其实际登录信息。这使得撤消对个人的所有访问变得更加简单,因此,即使他们拥有root密码,也无法对其进行任何操作。

#1 楼

为什么通过SSH进行root攻击很不好
那里有很多僵尸程序试图通过SSH登录到您的计算机。
这些僵尸程序的工作方式如下。
它们执行类似ssh root@$IP和然后他们尝试使用“ root”或“ password123”之类的标准密码。
他们会尽其所能,直到找到正确的密码。
在全球可访问的服务器上,您会看到很多日志文件中的日志条目。我可以达到每分钟20次或更高的速度。
如果攻击者(如果有足够的时间)(或足够的时间)找到密码,他们将具有root用户访问权限,这意味着您很麻烦。当您禁止root用户通过SSH登录时,僵尸程序首先需要猜测一个用户名,然后是匹配的密码。
因此,可以说,合理的密码列表中有N个条目,而合理的用户列表中则有M个条目大。该机器人具有一组要测试的N*M条目,因此,与仅具有一组N的根情况相比,它会使该机器人变得有点困难。
有人会说,这额外的M不是安全性并不是真正的收获,我同意这只是对安全性的一小部分改进。但是,我更认为这是因为这些小挂锁本身并不安全,但它们阻碍了许多人的便捷访问。当然,这仅在您的计算机没有其他标准用户名(例如tor或apache)的情况下才有效。
不允许root的更好原因是root对计算机的破坏程度要比标准用户大得多。 。因此,如果运气不好,他们找到了密码,那么整个系统就会丢失,而使用标准用户帐户,您只能操作该用户的文件(这仍然非常糟糕)。
在评论中提到普通用户可能有权使用sudo,并且如果猜中该用户的密码,系统也将完全丢失。
总而言之,我想说攻击者获得哪个用户密码都没有关系。当他们猜出一个密码时,您将不再信任该系统。攻击者可能使用该用户的权限通过sudo执行命令,攻击者还可能利用系统中的漏洞并获得root特权。如果攻击者可以访问您的系统,那么您将不再信任它。
这里要记住的是,系统中允许通过SSH登录的每个用户都是另一个弱点。
禁用root可以消除一个明显的弱点。
为什么SSH上的密码不正确
禁用密码的原因很简单。

用户选择了错误的密码!

/>尝试密码的整个想法只有在密码容易猜到的情况下才有效。
因此,当用户使用密码“ pw123”时,系统将变得不安全。
人们选择密码的另一个问题是他们的密码永远不会真正随机,因为那样很难记住。
这种情况下,用户往往会重用其密码,并使用密码登录到Facebook或Gmail帐户以及您的服务器。
因此黑客获取此用户的Facebook帐户密码后,便可以进入您的服务器。用户很容易通过网络钓鱼将其丢失,否则Facebook服务器可能会遭到黑客攻击。
但是当您使用证书登录时,用户不会选择密码。
证书是基于随机的字符串,长度范围从1024位到4096位(〜128-512个字符的密码)。
此外,此证书仅用于登录服务器,并且不与任何外部服务一起使用。
监视root用户访问权限
@Philip Couling的评论应该是一个答案:

出于行政原因,需要禁用root用户。在商用服务器上,您始终希望按人控制访问。根永远都不是一个人。即使允许某些用户具有root用户访问权限,也应强制他们通过自己的用户登录,然后再通过su-或sudo -i进行登录,以便可以记录其实际登录信息。这使得撤消对个人的所有访问变得更加简单,因此,即使他们拥有root密码,也无法对其进行任何操作。 – Philip Couling

我还要补充一点,它允许团队以适当的sudo配置执行最低特权原则(但是编写一个听起来容易些)。这样一来,团队就可以更好地分配不重要的信息,而不必付出通往城堡的钥匙。
链接
http://bsdly.blogspot.de/2013/10/the-hail-mary-cloud-and -lessons-learned.html
本文来自评论,我想给它一个更突出的位置,因为它对尝试通过SSH登录的僵尸网络的问题进行了更深入的介绍这样做,日志文件的外观以及如何阻止它们。它是由彼得·汉斯汀(Peter Hansteen)撰写的。

评论


好总结。但是ssh私钥也可能被盗。

– Faheem Mitha
13年7月11日在17:07

@Faheem Mitha是的,但被盗却与猜测不同,机器人会这样做。同样,您的私钥仅在您的手上(或硬盘驱动器),而不在诸如Stack Exchange或Google之类的第三方手上。

–拉斐尔·阿伦斯(Raphael Ahrens)
13年7月11日在17:12

+1。这个答案实际上可以简化为N * M>N。由于大多数* nix主机都有root用户,因此,如果允许root直接从远程主机登录,则测试矩阵的大小就是尝试输入的密码数量。 ;禁止直接root登录,可能的组合数量乘以您要测试的用户名数量(并且仍然不能保证您将测试有效的用户名!)。

–用户
13年7月11日在17:39



@MichaelKjörling我要补充一点,获取用户名并不难,因为通常用户名不是秘密,我可能会问任何人到达那里。但这有助于抵御Bot和简单尝试。

–拉斐尔·阿伦斯(Raphael Ahrens)
13年7月11日在17:45

我同意,对于有针对性的攻击,用户名不提供任何真正的额外安全性。但是,对于尝试使用前门门把手(这与机器人一直在做的事情更相似)从门到门的谚语来说,这确实使攻击变得更加困难。

–用户
13年7月11日在17:50

#2 楼

这些可能是为什么不允许直接root登录的某些原因。

Bruteforce尝试。直接root登录可能会在成功的蛮力攻击中造成更多损失。
“无密码” SSH密钥上的错误配置(发生人为错误)可能会使您的计算机暴露于Internet

,但这仅仅是冰山的提示。您需要配置其他限制和配置,例如:


更改默认端口(22)
强密码和密码
禁用基于主机的身份验证
创建允许的用户列表
配置空闲超时
强制SSHv2协议
禁用空密码
再次使用fail2ban作为衡量标准
记录所有内容
配置SSH密钥,并且仅信任.ssh / authorized_keys上的公钥


评论


@MichaelKjörling-是的,肯定是,混乱的sudo可能和PermitRoot一样有害;)

–user34720
13年7月11日在17:58

参见unix.stackexchange.com/a/2944/9454

–马丁·施罗德(MartinSchröder)
13年7月17日在8:43

实际上,更改端口本身在许多情况下都是有害的。而且,无非就是安全。

– 0xC0000022L
2015年6月10日19:41

+1代表fail2ban,因为暴力攻击不仅与SSH有关,而且与计算机上的其他任何事物有关。出于实际目的,您无需获得任何root或系统权限即可“接管”计算机(访问私有数据,用作文件转储,用于网络钓鱼等)。

–埃里克·格兰奇
19 Mar 5 '19 at 13:30

#3 楼

没错,root用户名和X + Y符号密码在密码上至少与X符号用户名+ Y符号密码一样安全。实际上,它甚至更安全,因为人们的名字很容易被猜到(机器人可能只是尝试使用john,mike,bill等……以及顺便说一句:这就是他们中许多人所做的,而不是尝试使用root)。而且,如果这是有针对性的攻击,那么您尤其不走运,因为如果有人想要破坏公司的服务器,那么找出sysadmin的名称(昵称)就不是问题。

一旦攻击者访问了sysadmin用于ssh登录的帐户(然后使用susudo来执行其任务),他就可以使用该程序感染该用户的会话,该程序将在sysadmin键入以下内容时发送攻击者根密码:下次。

从安全角度来看,这是(或应被)视为不良做法的任何类型的root登录。 “普通”用户登录-> su / sudo链添加了审计跟踪。用简单的英语来说:它使找出谁做了什么成为可能。

可能只有一个人具有root访问权限。在那种情况下,使用额外的“普通”用户不会增加太多价值(至少我从未看到过该价值)。但是无论如何-无论如何,您应该在系统上有一个简单的用户(用于非管理任务,运行wget等;-))。

#4 楼


启用root登录(尤其是禁用密码登录)的危险性是什么?


攻击者(bot / botnet / hacker)只需要猜测密码即可,并且具有完整的密码。如果您可以访问互联网,则可以控制您的系统。同样,出于相同的原因,所有系统帐户(www-data,proxy等)也不能通过SSH登录。

如果禁用密码登录(例如,使用公钥) ),请注意,只要掌握私钥的人都能完全控制您的系统。从下面的角度了解为什么对用户使用公钥更好。在允许密码认证的情况下查看?


额外的用户名可以增加一层安全性,因为:a)攻击者应该同时知道密码对,用户名和密码; b)如果攻击者破坏了您的系统,它将无法立即访问特权帐户,从而为攻击者增加了一些细微差别。在这种情况下,公钥也是一个加号,因为: />

攻击者需要您的公共密钥
攻击者需要密码(或身份验证方法)才能获得更高的特权


评论


我使用的密码很少少于20个随机字母数字字符(设置[A-Za-z0-9]加上一些特殊字符)。 20个这样的字符(所以40个字符集中的长度为20个)为您提供10 ^ 32个组合的数量级。 128位的熵约为10 ^ 38。考虑到所有因素,这并没有太大的区别,并且SSH服务器可以自由地实现它喜欢的任何类型的速率限制,因此,这并不意味着您在进行脱机蛮力攻击。如果您可以忍受与128位密钥一样难以记住的密码,那么密码并没有什么错。

–用户
13年7月11日在17:48

@michael shh ...不给范围,现在黑客知道他们应该使用长度为20个字符的彩虹表...?

–脑袋
13年7月11日在21:44

@Braiam Rainbow表仅在攻击者有权访问散列以进行脱机搜索时才有用。在这种情况下,攻击者只有服务器响应可以进行验证,这很可能仅限于这么多尝试,而且速度慢得多。

–彼得
13年7月11日在22:58

如果您想尝试一些1.8 * 10 ^ 35密码(并且仅用于40个字符集中的18-22个随机字符,并且您不知道该字符集中的哪个字符[A-Za-z0- 9](我使用),我几乎说过玩得开心。大约相当于117.1位的熵(2 ^ 117.1〜1.78 * 10 ^ 35),就像@Peter指出的那样,您很可能需要执行在线攻击。存储所有这些密码(不求助于压缩)大约需要3.6 * 10 ^ 36字节或3 * 10 ^ 24 TiB(如果这个数字有几个数量级错误,谁在乎呢?)。关键字随机。

–用户
13年7月12日在12:21

@aCVn对您有好处。大多数用户使用12345或qwerty

– vonbrand
20-2-12在18:13

#5 楼

只要您采取安全预防措施,这并不是完全不好。例如,您可以安装CSF(配置服务器防火墙)并为其设置允许的失败尝试次数,因此,如果有人尝试了5次以上的失败尝试,那么它们将被自动阻止。因此,最佳答题器的整个第一部分根本不会成为问题。这件事在我身上发生过很多次,幸运的是所有介绍者都被永久封锁了。我想对于服务器来说,如果您是唯一管理服务器的人,这不是一个大问题,但是,当然,如果有很多系统管理员,或者如果您在组织中工作,那么显然不要使用根。同样对于台式机,我猜使用另一个帐户会更好,因为存在安全风险,因为您使用了大量软件,但是在服务器中,您不要购买不信任的随机软件,请确保尽量降低它们。因此,结论是:不,如果您知道如何正确管理服务器,那并不是真的有害。