几个月前,我介绍了如何使用Google身份验证器向FreeRADIUS添加双因素身份验证(2FA)。今天,我将介绍它的TACACS +版本。
我写了一篇关于如何使用Ubuntu 构建tac_plus服务器的博客文章。该指南是在2011年编写的,虽然它是一篇旧博客文章,但使用Ubuntu Server 16.04仍然有效。请使用该指南,了解如何构建一个,然后使用本指南将多因素身份验证(MFA)添加到TACACS +。
在Ubuntu上安装Google身份验证器非常容易。以下是我们在Ubuntu上安装Google Authenticator PAM所需的命令。
1 | $ sudo apt-get install libpam-google-authenticator -y |
如前所述,我的旧博文中的说明仍然有效。我们将在这篇文章中仅使用其中一些仅用于演示。
默认情况下, / etc / tacacs + / tac_plus .conf 文件如下所示:
1 2 3 4 5 6 7 8 | accounting file = /var/log/tac_plus.acct key = testing123 user = DEFAULT { login = PAM service = ppp protocol = ip {} } |
让我们将密钥和用户信息字段更改为如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 | accounting file = /var/log/tac_plus.acct key = tacacskey1234 user = tacacsuser { member = Administrators } group = Administrators { default service = permit login = PAM enable = file /etc/passwd } |
由于我们对tac_plus配置文件进行了更改,因此我们需要重新启动服务才能使更改生效。发出以下命令。
1 2 | $ sudo /etc/init.d/tacacs_plus restart [ ok ] Restarting tacacs_plus (via systemctl): tacacs_plus.service. |
另一个命令如下所示。
1 | $ sudo service tacacs+ restart |
我的旧博客文章中介绍了此步骤,因此请转到生成密钥部分。或者,我们可以使用与Google身份验证器相同的其他系统中的密钥。但是,这不是推荐的做法。
要从其他系统获取密钥,只需复制并粘贴 每个用户的 $ 〜/ .google_authenticator 文件,如下所示。
1 2 3 4 5 6 7 8 9 10 | tacacsuser@tacplus:~$ more .google_authenticator UXQLCMOLT2QLSMVE " RATE_LIMIT 3 30 1436015893 " DISALLOW_REUSE 39787632 " TOTP_AUTH 55312114 13740459 80118802 81859009 79311140 |
如果将其复制并粘贴到文件中,请确保将权限设置为只读。
1 2 3 4 5 6 7 | tacacsuser@tacplus:~$ ls -l .google_authenticator -rw-rw-r-- 1 tacacsuser tacacsuser 129 May 29 17:54 .google_authenticator tacacsuser@tacplus:~$ chmod 400 .google_authenticator tacacsuser@tacplus:~$ ls -l .google_authenticator -r-------- 1 tacacsuser tacacsuser 129 May 29 17:54 .google_authenticator |
由于我们指示tac_plus使用PAM,我们现在需要创建一个名为 / etc / pam .d / tac_plus的文件,因此PAM知道该怎么做。该文件应如下所示:
1 2 3 | $ more /etc/pam.d/tac_plus auth requisite pam_google_authenticator.so forward_pass auth required pam_unix.so use_first_pass |
在我们验证我们的tac_plus配置是否正常工作之前,让我们配置运行IOS-XE的CSR1000V路由器。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | R1#conf t Enter configuration commands, one per line. End with CNTL/Z. R1(config)#aaa new-model R1(config)#aaa authentication login default group tacacs+ enable R1(config)#aaa authentication enable default group tacacs+ enable R1(config)#aaa session-id common R1(config)#tacacs-server host 192.168.250.250 Warning: The cli will be deprecated soon 'tacacs-server host 192.168.250.250' Please move to 'tacacs server <name>' CLI R1(config)#tacacs-server directed-request R1(config)#tacacs-server key tacacskey1234 R1(config)#end R1# |
虽然上面的配置仍然有效,但最好采用新的做事方式。以下是配置TACACS +的新方法:
1 2 3 4 5 6 7 8 9 10 11 | R1#conf t Enter configuration commands, one per line. End with CNTL/Z. R1(config)#aaa new-model R1(config)#aaa authentication login default group tacacs+ enable R1(config)#aaa authentication enable default group tacacs+ enable R1(config)#aaa session-id common R1(config)#tacacs server tac_plus R1(config-server-tacacs)# address ipv4 192.168.250.250 R1(config-server-tacacs)# key tacacskey1234 R1(config-server-tacacs)#end R1# |
此CSR1000V路由器使用15.4(2)版S映像。输出可能会有所不同,具体取决于平台和IOS版本。
1 2 3 4 5 | $ ssh tacacsuser@192.168.250.250 Password & verification code: R1>en Password: R1# |
为了完整起见,我将列出上面示例中输入的密码。tacacsuser帐户是运行TACACS +守护程序的Ubuntu服务器上的有效帐户。例如,tacacsuser帐户的密码为tacacsuserpassword1234。接下来,验证码是Google身份验证器应用中显示的六位数字。例如,六位数字是567 890.在此示例中,用户将在密码和验证提示中输入tacacsuserpassword1234567890。
要进入特权执行模式,我们将再次使用tacacsuser的密码。如果我们查看tac_plus配置文件,则 enable = file / etc / passwd 是我们定义的。
我对TACACS +非常偏向。其中一个原因是因为命令授权片。TACACS +身份验证和授权是完全独立的。也就是说,我们可以为用户或组分配不同的命令授权级别。
使用RADIUS,它结合了身份验证和授权。用户成功验证后,RADIUS服务器发送给设备的访问接受数据包也包含授权信息。如果我们将设备配置为类似于此处的示例,则用户将具有完全访问权限。
为了克服RADIUS的缺点,我们可以将设备配置为使用本地启用密钥。然后,此密码仅与必要的用户或组共享。这种方法的问题是密码是共享密码。许多信息安全专业人员不喜欢共享密码,因为它不安全。
说了这么多,我认为最好使用TACACS +,尤其是以思科为中心的环境。虽然许多供应商都支持TACACS +,但授权部分可能存在一些限制。
评论专区