不,你不会——从技术上讲。但是是否可以不进入启用模式取决于您的登录方式。
这是即时满足版本:
您可以在没有启用密码的情况下通过控制台进入,但是如果您使用简单的 vty 登录密码而没有设置启用密码,您将卡在用户模式中。
这是冗长的 StackExchange 回答者版本:
Cisco 身份验证对初学者来说有点麻烦。那里有很多遗留的包袱。让我试着在现实世界的意义上分解它。
每个有任何业务登录路由器或交换机的人几乎都会直接进入特权(启用)模式。用户模式基本上是一个前厅,除了保持草稿外没有什么作用。在拥有庞大网络和同样庞大劳动力的大型组织中,有一个可以敲前门并确保有人还在的人可能是合理的。(也就是说,登录并运行最简单的命令只是为了查看设备实际上正在响应而不是着火。)但是在我曾经工作过的每个环境中,第 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 password
和enable 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#
在这种情况下,无需使用启用密码(或机密)。
如果你还没有想,“哇......什么clusterfudge那是”,请记住有一个整体的其他长篇大论后仍潜伏在后面的命令aaa new-model
,你在哪里得到潜入之类的外部认证服务器(RADIUS 、TACACS+、LDAP 等)、身份验证列表(定义要使用的来源和使用顺序)、授权级别和用户活动记帐。
当您想暂时离开路由器时,请暂时保存所有这些内容。
希望有帮助!