我是否需要在Cisco设备上设置启用密钥?


16

我正在设置Cisco 2901路由器。我在控制台行上有一个登录密码,并且vty行配置为仅接受具有公钥身份验证的ssh连接。辅助线关闭。只有两个管理员将访问路由器,我们都被授权在路由器上执行任何配置。

我不是Cisco设备方面的专家,但是我认为这足以确保对路由器配置的访问安全。但是,我阅读的每本指南都指出,无论其他用户密码或线路密码如何,都应设置一个启用密钥。

还有我不知道的启用密码吗?除了控制台线,辅助线或vty线以外,还有其他访问路由器的方法吗?

编辑: 我已经添加了下面的实际配置,以更清楚地了解我的情况。以下工作方式需要一个启用密码,或者除中的username配置外的一个配置ip ssh pubkey-chain

aaa new-model

ip ssh time-out 60
ip ssh authentication-retries 2
ip ssh version 2
ip ssh pubkey-chain
 username tech
  key-hash ssh-rsa [HASH]
ip scp server enable

line vty 0 4
 transport input ssh

1
简短答案:不是必需的,但强烈建议您使用-因为这是完全特权的第一道防线
Ricky Beam

但是,如果我在控制台行和vtys上都有密码,为什么我还需要另一个密码?另外,启用秘密将必须在管理员之间共享,这只是要求将其记录下来,通过电子邮件发送等。每个管理员最好拥有自己的私人密码/密钥。
Marwan 2015年

enable提升priv。除非您通过aaa对其进行更改,否则只有在拥有命令行后它仍然适用。
Ricky Beam

Answers:


24

不,您不会-从技术上讲。但是,是否可以不进入启用模式取决于您的登录方式。

这是即时满足的版本:

您可以在没有启用密码的情况下通过控制台输入,但是如果您使用未设置启用密码的简单vty登录密码,则会陷入用户模式。

这是冗长的StackExchange答录器版本:

思科认证对于初学者来说有点混乱。那里有很多遗留的行李。让我尝试从现实的角度来分解这一点。

任何有任何业务登录路由器或交换机的人都将直接进入特权(启用)模式。用户模式基本上是一个前厅,其目的仅是将草稿拒之门外。在大型组织中,如果您拥有庞大的网络和同样庞大的劳动力资源,那么有人可以敲开前门并确保有人还在那是合理的。(也就是说,登录并运行最简单的命令只是为了看到该设备实际上在响应而不是着火。)但是在我曾经工作过的每个环境中,第1层至少都具有某种能力打破事情。

因此,尤其是在像您这样的情况下,必须知道启用密码才能完成任何事情。您可以说这是第二层安全性-一个用于输入设备的密码,另一个用于升级为管理权限的密码-但这对我来说有点愚蠢。

如前所述,您可以(而且很多人都可以)使用相同的密码,如果有人通过telnet / ssh获得了未经授权的访问,这将无济于事。每个人共享静态的全局密码可能是一个问题,而不是仅需要输入一个令牌即可。最后,大多数其他系统(服务,设备等)不需要第二层身份验证,因此通常不会被认为是不安全的。

好,那是我对这个话题的看法。您必须根据自己的安全立场自行决定是否有意义。让我们转到工作上。

思科(明智地)要求您默认设置一个远程访问密码。当您进入线路配置模式时...

router> enable
router# configure terminal
router(config)# line vty 0 15
router(config-line)#

...您可以告诉路由器跳过身份验证:

router(config-line)# no login

...并立即被黑客入侵,但攻击者最终将进入用户模式。因此,如果您设置了启用密码,则至少可以在一定程度上限制可能造成的损坏。(从技术上讲,如果没有启用密码,您也无法做任何进一步的工作。稍后,更多内容……)

自然,没有人会在现实生活中这样做。默认情况下,根据常识,您的最低要求是设置一个简单的密码:

router(config-line)# login
router(config-line)# password cisco

现在,将要求您输入密码,然后再次进入用户模式。如果您是通过控制台进入的,则只需键入enable即可获取访问权限,而无需输入其他密码。但是通过telnet,情况有所不同,您可能会在这里得到:

$ telnet 10.1.1.1
Trying 10.1.1.1...
Connected to 10.1.1.1.
Escape character is '^]'.


User Access Verification

Password: *****
router> enable
% No password set
router> 

继续...您可能已经知道,默认情况下,所有已配置的密码都以纯文本形式显示:

router# show run | inc password
no service password-encryption
 password cisco

这是使具有安全意识的括约肌更紧密的那些事情之一。是否有正当理由又要由您自己决定。一方面,如果您有足够的权限来查看配置,则可能有足够的权限来更改配置。另一方面,如果您碰巧不小心将配置信息透露给本身没有能力的人,那么...嗯,现在他们确实有能力。

幸运的是,以上代码段中的第一行no service password-encryption是更改此代码的关键:

router(config)# service password-encryption
router(config)# line vty 0 15
router(config-line)# password cisco

现在,当您查看配置时,您将看到以下内容:

router(config-line)# do show run | begin line vty
line vty 0 4
 password 7 01100F175804
 login
line vty 5 15
 password 7 01100F175804
 login
!
!
end

这一点比纯文本密码要好一些,因为显示的字符串记忆不足,无法顺手冲浪。但是,解密很简单-在这里我宽松地使用该术语。您可以从字面上将该字符串粘贴到第一个Google结果页上的十二个JavaScript密码破解程序中的一个中,然后立即将原始文本取回。

这些所谓的“ 7”密码通常被认为是“模糊的”而不是“加密的”,以突显它仅比没有更好的事实。

事实证明,所有这些password命令均已弃用。(或者如果不是,则应该这样。)这就是为什么您有以下两个选择的原因:

router(config)# enable password PlainText
router(config)# enable secret Encrypted
router(config)# do show run | inc enable
enable secret 5 $1$sIwN$Vl980eEefD4mCyH7NLAHcl
enable password PlainText

秘密版本使用单向算法进行哈希处理,这意味着通过暴力破解来获取原始文本的唯一方法-也就是说,尝试所有可能的输入字符串,直到碰巧生成已知哈希值为止。

在提示符下输入密码时,它会使用相同的哈希算法,因此最终应生成相同的哈希,然后将其与配置文件中的哈希进行比较。如果它们匹配,则接受您的密码。这样,路由器不会知道纯文本,除非在创建或输入密码的短暂时间内。注意:总是有其他输入可以生成相同散列的机会,但是从统计上讲,这是非常低的(可忽略不计)。

如果您自己使用上述配置,则路由器将同时允许enable passwordenable secret并存,但密码提示中的密码将成为秘密。这是没有多大意义的思科主义之一,但事实就是如此。此外,在secret线路配置模式下没有等效的命令,因此您在这里只能使用混淆的密码。

好了,所以我们现在有一个无法(轻松)从配置文件中恢复的密码-但是仍然存在一个问题。通过telnet登录时,它以纯文本格式传输。不好。我们需要SSH。

SSH的设计考虑了更强大的安全性,需要做一些额外的工作-以及具有特定功能集的IOS映像。一个很大的区别是,简单的密码已经不够用了。您需要升级到基于用户的身份验证。然后,设置一个加密密钥对:

router(config)# username admin privilege 15 secret EncryptedPassword
router(config)# line vty 0 15
router(config-line)# transport input ssh
router(config-line)# no password
router(config-line)# login local
router(config-line)# exit
router(config)# ip ssh version 2
router(config)# crypto key generate rsa modulus 1024

现在您正在用煤气做饭!请注意,此命令使用secret密码。(是的,您可以但不应使用password)。该privilege 15部分允许您完全绕过用户模式。登录后,直接进入特权模式:

$ ssh admin@10.1.1.1
Password: *****

router#

在这种情况下,无需使用启用密码(或密码)。

如果您还没有想“哇... 是什么集群软糖”,请记住,在该命令后面还隐藏着其他冗长的文章aaa new-model,您可以在其中深入研究外部身份验证服务器(RADIUS) ,TACACS +,LDAP等),身份验证列表(定义要使用的源以及顺序),授权级别和用户活动计费。

将所有这些保存一段时间,以防您想暂时退出路由器。

希望有帮助!


1
欢迎!很棒的第一答案!
Digital Trauma 2015年

谢谢,这是一个非常有见地的答案。我知道各种密码加密设备,并且正在使用aaa new-model(我已经编辑了问题以反映这一点)。
Marwan 2015年

没有启用密钥对我来说似乎不是一个问题。无论我使用用户名/密码或公用密钥来telnet / ssh,我都可以轻松键入enable并起作用。同样,拥有特权15的用户名仍然需要我键入enable。这是由于aaa新型号造成的吗?
Marwan 2015年

1
您是否尝试过定义身份验证列表?使用“ aaa身份验证登录默认本地”和“ aaa授权exec默认本地”。或者,在后者上使用“ if-authenticated”而不是“ local”。
SirNickity 2015年

我尝试在运行IOS 15.1(4)M的2811上复制您的配置,发现一些有趣的结果。如果尚未定义aaa身份验证/作者行,则可以使用公共密钥登录,而无需使用全局用户名语句。如果我在上一条注释中定义了authen / author行,那么我将无法仅使用公共密钥进行SSH —需要global username命令(否则授权失败。)如果我做错了一些,然后输入OUT输入全局用户名SSH是一个密钥,但telnet可以使用密码,但telnet可以使用密钥-所以不要这样做。
SirNickity 2015年

4

是的,您需要将其设置为某些内容。这就是IOS工作的方式。如果需要,可以使其与登录密码相同。

对于多个用户,我建议您设置AAA身份验证,这将使您无需输入其他密码即可直接进入启用模式。它还将允许您跟踪各个管理员的活动。(但是您仍然需要将启用秘密密码设置为某种值。)

aaa new model
aaa authentication login default local
aaa authorization enable default local

username chen-li password foo privilege 15
username safar password bar privilege 15

2
要备份罗恩的答案,如果要进入特权执行模式,必须将其启用,除非您将VTY配置为直接进入15级。
jwbensley 2015年

@jwbensley。好主意。我已经忘记了。
罗恩·

我正在使用aaa new-model,但是设置特权15仍然需要我使用enable命令。我也不需要启用秘密/密码(我已经测试了所有这些)。
Marwan 2015年

去工作吧。显然,我需要指定aaa authorization exec default local自动输入特权执行。
Marwan

1

在此处添加到现有信息。

enable

设置enable密码的第一个选项是enable password

Switch(config)#enable password passfoo
Switch#show running-config | include enable
enable password passfoo

如您所见,密码以纯文本格式存储。这不好

第二个是enable secret

Switch(config)#enable secret ?
  0      Specifies an UNENCRYPTED password will follow
  5      Specifies a MD5 HASHED secret will follow
  8      Specifies a PBKDF2 HASHED secret will follow
  9      Specifies a SCRYPT HASHED secret will follow
  LINE   The UNENCRYPTED (cleartext) 'enable' secret
  level  Set exec level password
Switch(config)#enable secret passfoo
Switch#show running-config | include enable
enable secret 5 $1$cSF4$uydOsfi3J2vGT.77tuYWh1

这样比较。至少我们现在有了密码的哈希值。但是,这仍然只使用盐腌的MD5,因此使用大单词列表和openssl可能很容易破解。

第三个选项(以及此答案的目的)是enable algorithm-type允许我们使用PBKDF2或SCRYPT。

Switch(config)#enable algorithm-type ?
  md5     Encode the password using the MD5 algorithm
  scrypt  Encode the password using the SCRYPT hashing algorithm
  sha256  Encode the password using the PBKDF2 hashing algorithm
Switch(config)#enable algorithm-type scrypt secret ?
  LINE   The UNENCRYPTED (cleartext) 'enable' secret
  level  Set exec level password
Switch(config)#enable algorithm-type scrypt secret passfoo
Switch#show running-config | include enable
enable secret 9 $9$dXjOMeJPYKOFbl$0D4.ItXi8yrjp.A9dt7Ew6tTgr3LYmMlzD672d.LjFk

这绝对是最好的

Philip D'Ath写了一篇很好的总结,说明了为什么选择9型。Thomas PorninIlmari Karonen提供了更深入的信息。


0

基本上,这是额外的安全层。如果您没有支持服务密码加密的IOS版本,则仅启用密码被加密,而控制台密码和VTY密码为纯文本。如果有人能够(例如从备份或远程登录的无人值守的计算机)获取您的配置副本,则加密的启用密码将使控制路由器变得更加困难,即使他们可以远程登录也是如此。

即使使用加密的VTY和控制台密码,您也应该使用其他启用密码来保证安全,并提供额外的保护。


0

关闭2位管理员用户中的1位。cisco的用户可以通过connect拥有任何种类的任何黑客入侵点。有两个管理员。连接后的cisco会认为入侵者也已连接,并且在没有正确登录的情况下阻止了进一步的进程。一旦重新建立控制,您应该可以添加管理员的

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.