我正在设置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


评论

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

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

使能提升特权。除非您通过aaa对其进行更改,否则只有在拥有命令行后它仍然适用。

#1 楼

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

这是即时满足版本:

您可以通过控制台进入而无需启用密码,但是如果您使用简单的vty登录密码但未设置启用密码,则会陷入用户模式。一团糟的初学者。那里有很多遗留的行李。让我尝试从现实的角度来解释这一点。用户模式基本上是前厅,其目的仅是将草稿拒之门外。在大型组织中,如果您拥有庞大的网络和同样庞大的劳动力资源,那么有人可以敲开前门并确保有人还在那是合理的。 (也就是说,登录并运行最简单的命令只是为了看到设备实际上在响应而不是着火。)但是在我曾经工作过的每个环境中,第1层至少都具有某种能力因此,尤其是在像您这样的情况下,必须知道启用密码才能完成任何操作。您可以说这是第二层安全性-一个用于输入设备的密码,另一个用于升级为管理特权的密码-但这对我来说似乎有点愚蠢。

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

好的,这是我对该主题的看法。您必须根据自己的安全立场自行决定是否有意义。让我们开始做生意。

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

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 $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等),身份验证列表(定义要使用的源以及顺序),授权级别和用户活动计费。

将所有内容保存为一段时间,您想被路由器锁住。

希望有帮助!

评论


欢迎!很棒的第一答案!

–数字创伤
2015年1月8日,0:34

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

– Marwan
2015年1月8日,12:31

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

– Marwan
2015年1月8日,12:34

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

– SirNickity
15年1月8日在19:23

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

– SirNickity
15年1月8日在19:56

#2 楼

是的,您需要将其设置为某些内容。这就是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


评论


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

– jwbensley
2015年1月7日在16:07

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

–罗恩·托恩(Ron Trunk)
15年1月7日在20:09

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

– Marwan
2015年1月8日,12:35

去工作吧。显然,我需要指定aaa授权exec默认本地以自动输入特权exec。

– Marwan
2015年1月8日14:51

#3 楼

要在此处添加现有信息。

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 $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 $dXjOMeJPYKOFblq4312078qD4.ItXi8yrjp.A9dt7Ew6tTgr3LYmMlzD672d.LjFk


这绝对是最好的。

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

#4 楼

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

#5 楼

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