互联网上的每个人都建议禁用通过SSH的 root登录,因为这是一种不好的做法,并且会给系统造成安全漏洞,但是没有人解释为什么会这样做。
启用root登录(尤其是禁用密码登录)有何危险?
从安全的角度来看,如果允许密码认证,那么X符号用户名和Y符号密码或根用户名和X + Y符号密码有什么区别?
su -
或sudo -i
使他们的实际登录可以记录。这使得撤消对个人的所有访问变得更加简单,因此,即使他们拥有root密码,也无法对其进行任何操作。
互联网上的每个人都建议禁用通过SSH的 root登录,因为这是一种不好的做法,并且会给系统造成安全漏洞,但是没有人解释为什么会这样做。
启用root登录(尤其是禁用密码登录)有何危险?
从安全的角度来看,如果允许密码认证,那么X符号用户名和Y符号密码或根用户名和X + Y符号密码有什么区别?
su -
或sudo -i
使他们的实际登录可以记录。这使得撤消对个人的所有访问变得更加简单,因此,即使他们拥有root密码,也无法对其进行任何操作。
Answers:
有很多僵尸程序试图通过SSH登录到您的计算机。这些机器人的工作方式如下。
他们执行类似的操作ssh root@$IP
,然后尝试使用标准密码,例如“ root”或“ password123”。他们会尽其所能,直到找到正确的密码。在全球可访问的服务器上,您可以在日志文件中看到很多日志条目。我可以提高到每分钟20个或更多。
当攻击者有运气(或足够的时间)并找到密码时,他们将具有root用户访问权限,这意味着您很麻烦。
但是,当您禁止root用户通过SSH登录时,僵尸程序需要首先猜测用户名,然后再猜测匹配的密码。因此,可以说合理的密码列表中有N
条目,而合理的用户列表中的M
条目很大。该机器人具有一组N*M
要测试的条目,因此与仅具有一组size的根情况相比,它使该机器人更加困难N
。
有人会说,这M
并不是安全性的真正收获,我同意这只是对安全性的一小部分改进。但是,我更认为这是因为这些小挂锁本身并不安全,但它们阻碍了许多人的便捷使用。当然,这仅在您的计算机没有其他标准用户名(例如tor或apache)时才有效。
不允许使用root的更好原因是root对计算机的损害比标准用户可能造成的损害大得多。因此,如果运气不好,他们找到了您的密码,那么整个系统就会丢失,而使用标准用户帐户,您只能操作该用户的文件(这仍然非常糟糕)。
在评论中提到,普通用户可以使用该权限sudo
,如果可以猜到该用户的密码,系统也将完全丢失。
总而言之,我想说攻击者获得哪个用户密码都没有关系。当他们猜出一个密码时,您将不再信任该系统。攻击者可以利用该用户的权限通过执行命令sudo
,攻击者还可以利用系统中的漏洞并获得root特权。如果攻击者可以访问您的系统,那么您将不再信任它。
这里要记住的是,系统中允许通过SSH登录的每个用户都是另一个弱点。通过禁用root,可以消除一个明显的弱点。
禁用密码的原因非常简单。
尝试输入密码的整个想法仅在密码可猜测时才起作用。因此,当用户使用密码“ pw123”时,您的系统将变得不安全。人们选择的密码的另一个问题是,他们的密码永远不会真正是随机的,因为那样很难记住。
同样,用户倾向于重用他们的密码,用它登录Facebook或他们的Gmail帐户以及您的服务器。因此,当黑客获得该用户的Facebook帐户密码时,他就可以进入您的服务器。用户很容易通过网络钓鱼将其丢失,否则Facebook服务器可能会被黑客入侵。
但是,当您使用证书登录时,用户不会选择其密码。证书基于从1024位到4096位(〜128-512个字符的密码)的非常长的随机字符串。此外,该证书仅用于登录您的服务器,并且不与任何外部服务一起使用。
http://bsdly.blogspot.de/2013/10/the-hail-mary-cloud-and-lessons-learned.html
本文来自评论,我想给它一个更突出的位置,因为它对尝试通过SSH登录的僵尸网络,它的工作方式,日志文件的外观和怎样制止他们。它是由彼得·汉斯汀(Peter Hansteen)撰写的。
N*M > N
。由于大多数* nix主机都有root
用户,因此,如果允许root用户直接从远程主机登录,则测试矩阵的大小就是尝试输入的密码数;禁止直接root登录,可能的组合数量乘以您要测试的用户名数量(并且仍然不能保证您将测试有效的用户名!)。
# of X length words
*种# of Y length words
可能的组合。如果用户名是固定的(例如root),但密码的长度是X + Y符号,则# of X+Y length words
可能有密码。和# of X+Y length words
=# of X length words * # of Y length words
这些可能是为什么不允许直接root登录的一些原因。
但这只是冰山一角。您需要配置其他限制和配置,例如:
sudo
设置相比,则不是。真正的杀手is是当您没有任何可用于任何给定主机的有效用户名的多重效果。
没错,root用户名和X + Y符号密码在密码上至少与X符号用户名+ Y符号密码一样安全。实际上,它甚至更安全,因为人们的名字很容易被猜到(机器人可能只是尝试使用john,mike,bill等……和顺便说一句:这就是他们中许多人所做的,而不是尝试使用root)。而且,如果这是有针对性的攻击,那么您尤其不走运,因为如果有人想破坏公司的服务器,那么找出sysadmin的名字(昵称)就不是问题。
并且,一旦攻击者有权访问sysadmin用于ssh登录的帐户(然后使用su
或sudo
执行其任务),他就可以使用该程序感染该用户的会话,该程序将在sysadmin键入下一个命令时发送攻击者的根密码。时间。
从安全角度来看,这是(或应该)视为不良做法的任何类型的root登录。“普通”用户登录-> su / sudo链添加了审计跟踪。用简单的英语来说:这使得找出谁做了什么成为可能。
一种特殊情况可能是只有一个人具有root访问权限的情况。在那种情况下,使用额外的“普通”用户不会增加太多价值(至少我从未看到过该价值)。但是无论如何-无论如何,您应该在系统上拥有一个简单的用户(用于非管理任务,运行wget等;-))。
启用root登录(尤其是禁用密码登录)有何危险?
攻击者(僵尸程序/僵尸网络/黑客)仅需要猜测密码即可对您的系统进行完全控制(如果您可以访问Internet)。同样,出于相同的原因,所有系统帐户(www-data,proxy等)都不能通过SSH登录。
如果您禁用了密码登录(例如,使用公共密钥),请考虑到谁掌握了私有密钥都可以完全控制您的系统。请参阅下面为什么与用户一起使用公共密钥更好。
从安全的角度来看,如果允许密码认证,那么X符号用户名和Y符号密码或根用户名和X + Y符号密码有什么区别?
额外的用户名可以增加一层安全性,因为:a)攻击者应该知道密码对,用户名和密码;b)万一攻击者破坏了您的系统,它将无法立即访问特权帐户,从而为攻击者增加了一些细微差别。
在这种情况下,公钥也是一个加号,因为:
只要您采取安全预防措施,这并不是完全不好。例如,您可以安装CSF(配置服务器防火墙)并设置允许的失败尝试次数,因此,如果有人尝试了5次以上的失败尝试,那么它们将被自动阻止。因此,最佳回答者的整个第一部分根本不会成为问题。这件事在我身上发生过很多次,幸运的是所有介绍者都被永久封锁了。我想对于服务器来说,如果您是唯一管理服务器的人,这不是什么大问题,但是,当然,如果有很多系统管理员,或者您在组织中工作,那么显然不要使用根。同样对于台式机,我猜使用另一个帐户会更好,因为存在安全风险,因为您使用了大量软件,但是在服务器中,您不会 不要购买您不信任的随机软件,请确保将其尽可能降低。因此,结论是:不,如果您知道如何正确管理服务器,那并不是真的有害。